<?php // +---------------------------------------------------------------------- // | likeshop开源商城系统 // +---------------------------------------------------------------------- // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 // | gitee下载:https://gitee.com/likeshop_gitee // | github下载:https://github.com/likeshop-github // | 访问官网:https://www.likeshop.cn // | 访问社区:https://home.likeshop.cn // | 访问手册:http://doc.likeshop.cn // | 微信公众号:likeshop技术社区 // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识 // | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识 // | 禁止对系统程序代码以任何目的,任何形式的再发布 // | likeshop团队版权所有并拥有最终解释权 // +---------------------------------------------------------------------- // | author: likeshop.cn.team // +---------------------------------------------------------------------- namespace app\api\controller; use app\api\logic\LoginLogic; use app\common\basics\Api; use app\common\enum\NoticeEnum; use app\common\server\JsonServer; use app\common\server\ConfigServer; use app\api\validate\RegisterValidate; use app\api\validate\LoginValidate; use think\exception\ValidateException; use app\api\validate\OaLoginValidate; use think\response\Json; class Account extends Api { public $like_not_need_login = ['silentLogin', 'authLogin', 'register', 'login','mnplogin', 'codeurl', 'oalogin', 'oplogin','logout','smslogin', 'uinAppLogin', 'silentLogin', 'authLogin', 'scanCode', 'scanLogin', 'apiLogin']; /** * 注册 */ public function register() { $post = $this->request->post(); $post['check_code'] = ConfigServer::get('register', 'captcha', 0); $post['message_key'] = NoticeEnum::REGISTER_NOTICE; try{ validate(RegisterValidate::class)->check($post); }catch(ValidateException $e) { return JsonServer::error($e->getError()); } $result = LoginLogic::register($post); if($result !== false) { return JsonServer::success('注册成功', $result); } return JsonServer::error('注册失败:'.LoginLogic::getError()); } /** * Notes: 小程序登录(旧系统用户,返回用户信息,否则返回空) * @author 段誉(2021/4/19 16:50) */ public function silentLogin() { $post = $this->request->post(); if (empty($post['code'])) { return JsonServer::error('参数缺失'); } $data = LoginLogic::silentLogin($post); if(false === $data) { $error = LoginLogic::getError() ?? '登录失败'; return JsonServer::error($error); } return JsonServer::success('', $data); } /** * Notes: 小程序登录(新用户登录->需要提交昵称和头像参数) * @author 段誉(2021/4/19 16:49) */ public function authLogin() { $post = $this->request->post(); if (empty($post['code']) || empty($post['nickname'])) { return JsonServer::error('参数缺失'); } $data = LoginLogic::authLogin($post); if(false === $data) { $error = LoginLogic::getError() ?? '登录失败'; return JsonServer::error($error); } return JsonServer::success('', $data); } /** * 手机号密码登录 */ public function login() { $post = $this->request->post(); (new LoginValidate)->goCheck('mpLogin', $post); $data = LoginLogic::mpLogin($post); return JsonServer::success('登录成功',$data); } /** * showdoc * @catalog 接口/账号 * @title 获取获取向微信请求code的链接 * @description * @method get * @url /account/codeurl * @param url 必填 varchar 前端当前url * @return_param url string codeurl * @remark 这里是备注信息 * @number 0 * @return {"code":1,"msg":"获取成功","data":{"url":'http://mp.weixin……'}} */ public function codeUrl() { $url = $this->request->get('url'); return JsonServer::success('获取成功', ['url' => LoginLogic::codeUrl($url)]); } /** * showdoc * @catalog 接口/账号 * @title 微信H5登录 * @description 微信H5登录 * @method post * @url /account/oalogin * @return {"code":1,"msg":"登录成功","data":["token":"3237676fa733d73333341",//登录令牌"nickname":"好象cms-小林",//昵称"avatar":"http://b2c.yixiangonline.com/uploads/user/avatar/3f102df244d5b40f21c4b25dc321c5ab.jpeg",//头像url"level":0,//等级],"show":0,"time":"0.775400"} * @param code 必填 string code * @return_param token string 登录令牌 * @return_param nickname string 昵称 * @return_param avatar string 头像 * @remark * @number 1 */ public function oaLogin() { $post = $this->request->post(); (new OaLoginValidate())->check($post); $data = LoginLogic::oaLogin($post); return JsonServer::success('登录成功', $data); } /** * Notes: uniapp微信登录 */ public function uinAppLogin() { $post = $this->request->post(); $data = LoginLogic::uinAppLogin($post); if(is_string($data )){ return JsonServer::error($data); } $data = [ 'code' => 1, 'show' => 0, 'msg' => '登录成功', 'data' => $data ]; return json($data); } /*** * 短信登录 * @return Json */ public function smsLogin() { $post = $this->request->post(); (new LoginValidate())->goCheck('smsLogin'); $data = LoginLogic::login($post); return JsonServer::success('登录成功', $data); } /*** * 退出登录 * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function logout() { LoginLogic::logout($this->user_id, $this->client); //退出登录只有成功 return JsonServer::success(); } /** * @notes 扫码登录 * @return Json * @author 段誉 * @date 2021/10/29 11:50 */ public function scanCode() { $result = LoginLogic::scanCode(); if (false === $result) { return JsonServer::error(LoginLogic::getError() ?? '未知错误'); } return JsonServer::success('', ['url' => $result]); } /** * @notes PC端扫码登录 * @return Json * @author 段誉 * @date 2021/10/29 18:00 */ public function scanLogin() { $params = $this->request->post(); $result = LoginLogic::scanLogin($params); if (false === $result) { return JsonServer::error(LoginLogic::getError() ?? '未知错误'); } return JsonServer::success('', $result); } /** * AppID登录 * 开放给第三方使用 */ public function apiLogin(): Json { $post = $this->request->post(); if (empty($post['app_id']) || empty($post['app_secret'])) { return JsonServer::error('参数错误'); } $data = LoginLogic::apiLogin($post); if (false === $data) { return JsonServer::error(LoginLogic::getError() ?? '未知错误'); } return JsonServer::success('登录成功',$data); } }