| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  | <?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; | 
					
						
							| 
									
										
										
										
											2023-09-26 09:59:15 +08:00
										 |  |  |  | use think\response\Json; | 
					
						
							| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | class Account extends Api | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-26 09:59:15 +08:00
										 |  |  |  |     public $like_not_need_login = ['silentLogin', 'authLogin', 'register', 'login','mnplogin', 'codeurl', 'oalogin', | 
					
						
							|  |  |  |  |         'oplogin','logout','smslogin', 'uinAppLogin', 'silentLogin', 'authLogin', 'scanCode', 'scanLogin', 'apiLogin']; | 
					
						
							| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * 注册 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     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); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /*** | 
					
						
							|  |  |  |  |      * 短信登录 | 
					
						
							| 
									
										
										
										
											2023-09-26 09:59:15 +08:00
										 |  |  |  |      * @return Json | 
					
						
							| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  |      */ | 
					
						
							|  |  |  |  |     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 扫码登录 | 
					
						
							| 
									
										
										
										
											2023-09-26 09:59:15 +08:00
										 |  |  |  |      * @return Json | 
					
						
							| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  |      * @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端扫码登录 | 
					
						
							| 
									
										
										
										
											2023-09-26 09:59:15 +08:00
										 |  |  |  |      * @return Json | 
					
						
							| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  |      * @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); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-26 09:59:15 +08:00
										 |  |  |  |     /** | 
					
						
							|  |  |  |  |      * 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); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-08-10 14:59:52 +08:00
										 |  |  |  | } |