checkBody(); $check = \app\common\library\Sms::check($params["username"], $params["sms_code"] ?? "1234", "user_login"); if (!$check) $this->error("短信验证码不正确!"); $userModel = new \app\api\model\User(); $user = $userModel->where("mobile", $params["username"])->find(); $parent_id = isset($params["parent_id"]) ? $params["parent_id"] : null; if ($parent_id > 0) { $parent = $userModel->get($parent_id); if (is_null($parent)) $this->error("推荐人不存在!"); } $invite_store_id = isset($params["invite_store_id"]) ? $params["invite_store_id"] : null; if (is_null($user)) { $params['password'] = '123456'; $result = $this->auth->register("U{$params["username"]}", $params['password'], null, $params["username"], [ "parent_id" => $parent_id, "invite_store_id" => $invite_store_id, ]); if (!$result) $this->error("手机号码数据库中已经存在!"); $login = $this->auth->login($params["username"], $params['password']); if (!$login) $this->error("账号或者密码错误!"); $user = $this->auth->getUser(); GrantVoucher::grant_voucher("register", $user->id); if (!is_null($parent_id)) { GrantVoucher::grant_voucher("invite", $parent_id); } } $login = $this->auth->direct($user->id); if (!$login) $this->error("账号或者密码错误!"); $user = \app\api\model\User::fmtUser($user); $user['token'] = $this->auth->getToken(); if ($invite_store_id) { RedisClient::of()->set("scan:qr:codes:{$user["id"]}", $invite_store_id, 60 * 10); } $this->success($user); } /** * 微信APP登录 */ public function wxAppLogin() { $params = (new BaseApiValidate([ "openId" => "require", "unionId" => "require", "nickName" => "require", "avatarUrl" => "require", "parent_id" => "number", ]))->checkBody(); $userModel = new \app\api\model\User(); $parent_id = isset($params["parent_id"]) ? $params["parent_id"] : null; if ($parent_id > 0) { $parent = $userModel->get($parent_id); if (is_null($parent)) $this->error("推荐人不存在!"); } $invite_store_id = isset($params["invite_store_id"]) ? $params["invite_store_id"] : null; $existUser = $userModel->findByUnionId($params["unionId"]); if (!$existUser) { $username = "U" . time(); $result = $this->auth->register($username, "123456", null, "", [ "app_openid" => $params["openId"], "union_id" => $params["unionId"], "group_id" => 1, "avatar" => $params["avatarUrl"], "parent_id" => $parent_id, "invite_store_id" => $invite_store_id, ], $params["nickName"]); if (!$result) $this->error("手机号码数据库中已经存在!"); $login = $this->auth->login($username, "123456"); if (!$login) $this->error("账号或者密码错误!"); $user = $this->auth->getUser(); GrantVoucher::grant_voucher("register", $user->id); if (!is_null($parent_id)) { GrantVoucher::grant_voucher("invite", $parent_id); } } else { $userModel->update([ "app_openid" => $params["openId"], "avatar" => $params["avatarUrl"], "nickname" => $params["nickName"] ], ["id" => $existUser["id"]]); $user = $userModel->get($existUser["id"]); } $this->auth->direct($user->id); $user = \app\api\model\User::fmtUser($user); $user['token'] = $this->auth->getToken(); if ($invite_store_id) { RedisClient::of()->set("scan:qr:codes:{$user["id"]}", $invite_store_id, 60 * 10); } $this->success($user); } /** * 微信Web登录 */ public function wxWebLogin() { $params = (new BaseApiValidate([ "code" => "require" ]))->checkBody(); $r = (new WxService())->wxLoginByWeb($params["code"]); if (0 === $r->code()) $this->error($r->msg()); $userinfo = $r->data(); if (!isset($userinfo["unionid"]) || !isset($userinfo["openid"])) $this->error("微信登录错误! unionid|openid 不能为空!"); $userModel = new \app\api\model\User(); $parent_id = $params["parent_id"] ?? null; if ($parent_id > 0) { $parent = $userModel->get($parent_id); if (is_null($parent)) $this->error("推荐人不存在!"); } $invite_store_id = $params["invite_store_id"] ?? null; $existUser = $userModel->findByUnionId($userinfo["unionid"]); if (!$existUser) { $username = "U" . time(); $result = $this->auth->register($username, "123456", null, "", [ "web_openid" => $userinfo["openid"], "union_id" => $userinfo["unionid"], "group_id" => 1, "avatar" => $userinfo["headimgurl"], "parent_id" => $parent_id, "invite_store_id" => $invite_store_id ], $userinfo["nickname"]); if (!$result) $this->error("手机号码数据库中已经存在!"); $login = $this->auth->login($username, "123456"); if (!$login) $this->error("账号或者密码错误!"); $user = $this->auth->getUser(); GrantVoucher::grant_voucher("register", $user->id); if (!is_null($parent_id)) { GrantVoucher::grant_voucher("invite", $parent_id); } } else { $userModel->update([ "web_openid" => $userinfo["openid"], "avatar" => $userinfo["headimgurl"], "nickname" => $userinfo["nickname"] ], ["id" => $existUser["id"]]); $user = $userModel->get($existUser["id"]); } $this->auth->direct($user["id"]); $user = \app\api\model\User::fmtUser($user); $user['token'] = $this->auth->getToken(); if ($invite_store_id) { RedisClient::of()->set("scan:qr:codes:{$user["id"]}", $invite_store_id, 60 * 10); } $this->success($user); } }