request->post('mobile'); $code = $this->request->post('code'); if (!$mobile || !$code) { $this->error('请填写手机号和验证码'); } if (!Validate::regex($mobile, "^1\d{10}$")) { $this->error('手机号格式不正确'); } if ($code !== '123456') { $this->error('验证码不正确'); } $user = \app\common\model\User::getByMobile($mobile); if ($user) { if ($user['status'] !== 'normal') { $this->error('账号已被禁用'); } $this->auth->direct($user['id']); } else { $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, []); if (!$ret) { $this->error($this->auth->getError() ?: '注册失败'); } } $this->success('登录成功', [ 'token' => $this->auth->getToken(), 'expires' => 2592000, 'userinfo' => $this->profileData(), ]); } /** * 我的信息(含角色与师傅状态) */ public function profile() { $this->success('', $this->profileData()); } /** * 组装个人信息 */ protected function profileData() { $uid = $this->uid(); $user = Db::name('user')->field('id,nickname,mobile,avatar,money,score,createtime')->where('id', $uid)->find(); $master = Db::name('master')->where('user_id', $uid)->find(); $couponCount = Db::name('user_coupon')->where('user_id', $uid)->where('status', 'unused')->count(); $unread = Db::name('message')->where('receive_type', 'user')->where('receive_id', $uid)->where('is_read', 0)->count(); $masterInfo = null; if ($master) { $masterInfo = [ 'id' => (int)$master['id'], 'realname' => $master['realname'], 'verify_status' => $master['verify_status'], 'audit_msg' => $master['audit_msg'], 'work_status' => $master['work_status'], 'level' => (int)$master['level'], 'score' => (float)$master['score'], 'order_count' => (int)$master['order_count'], 'money' => (float)$master['money'], 'can_take' => $master['verify_status'] === 'pass', ]; } return [ 'id' => (int)$user['id'], 'nickname' => $user['nickname'] ?: ('用户' . substr((string)$user['mobile'], -4)), 'mobile' => $user['mobile'], 'avatar' => $user['avatar'] ?: '', 'balance' => (float)$user['money'], 'coupon_count' => (int)$couponCount, 'unread_count' => (int)$unread, 'is_master' => $master ? true : false, 'master' => $masterInfo, ]; } }