_valid([ "code.require" => trans("empty.require"), "pid.default" => 0 ],$request->method()); if (!is_array($param)) return error($param); $userinfo = (new Crypt([ "appid" => sConf("wechat.mini_appid"), "appsecret" => sConf("wechat.mini_secret") ]))->session($param['code']); if (!isset($userinfo['openid'])) return error("获取数据失败"); $map = ['openid' => $userinfo['openid']]; $userOpen = $this->model->where($map)->findOrEmpty(); if ($userOpen->isEmpty()) return error("new"); $userAuth = get_object_vars(AuthMode::guard("member")->login($userOpen->toArray())); return success("ok",['token' => $userAuth]); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 新用户登录-自动完成注册 * @param Request $request * @return Response */ #[Route(path: "login",methods: "post")] public function loginMobile(Request $request): Response { try { $param = $this->_valid([ "code.require" => trans("empty.require"), "login.require" => trans("empty.require"), "pid.default" => 0 ],$request->method()); if (!is_array($param)) return error($param); $userinfo = (new Crypt([ "appid" => sConf("wechat.mini_appid"), "appsecret" => sConf("wechat.mini_secret") ]))->session($param['login']); if (!isset($userinfo['openid'])) return error("获取数据失败"); $mobile = (new UserInfo([ "appid" => sConf("wechat.mini_appid"), "appsecret" => sConf("wechat.mini_secret") ]))->getPhoneNumber($param['code']); if ($mobile['errcode'] <> 0) return error($mobile['errmsg']); $map = ['openid' => $userinfo['openid'],'mobile' => $mobile['phone_info']['purePhoneNumber']]; $userOpen = $this->model->where($map)->findOrEmpty(); if ($userOpen->isEmpty()) { $userOpen->insertGetId([ 'openid' => $userinfo['openid'], 'parent' => $param['pid'], 'uuid' => CodeExtend::uniqidNumber(), 'mobile' => $mobile['phone_info']['purePhoneNumber'], "create_ip" => $request->getRealIp(), "nickname" => "微信用户", "headimg" => "https://blue-data.oss-cn-guangzhou.aliyuncs.com/logo.png" ]); $userOpen = $this->model->where($map)->findOrEmpty(); } $userAuth = get_object_vars(AuthMode::guard("member")->login($userOpen->toArray())); return success("ok",['token' => $userAuth]); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } #[Route(path: "data",methods: "get")] public function getUserData(Request $request): Response { try { $data = $this->model->where("openid",$request->user['openid'])->field("uuid,nickname,headimg,openid")->with(['star' => function($query) { $query->field("openid,group_id,level_exp")->with(['level' => function($query) { $query->field("id,level,name,exp"); }]); }])->append(['fans','job','income','level','sign'])->withAttr([ "fans" => function($query,$resp) { $fans = (new BlueExpertPlatform)->where("openid",$resp['openid'])->sum("follower_count"); return formatMoneyKw($fans); // 全网粉丝数 }, "job" => function($query,$resp) { return "0"; // 任务数 }, "income" => function($query,$resp) { $income = (new BlueTaskRevenue)->where("openid",$resp['openid'])->sum("indicator_agg_data_20022"); return formatMoneyKw($income/1000); // 收益 }, "sign" => function($query,$resp) { if ($resp['star']) return 1; return 0; }, "level" => function($query,$resp) { if ($resp['star']) { return [ "level_exp" => $resp['star']['level_exp'], "level_num" => $resp['star']['level']['level']??'0', "level_name" => $resp['star']['level']['name']??'0', "need_exp" => $resp['star']['level']['exp']??'0', ]; } else { return []; } } ])->findOrEmpty(); if ($data->isEmpty()) return errorTrans("error.data"); $return = $data->toArray(); unset($return['star'],$return['openid']); return success("ok",$return); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 收益 * @param Request $request * @return Response */ #[Route(path: "income",methods: "get")] public function getIncomeData(Request $request): Response { try { } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } }