From 4c09a708d6da02803bd04c7f849ac591b02cd917 Mon Sep 17 00:00:00 2001 From: devil_gong Date: Fri, 24 May 2019 17:21:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/Service.php | 18 +++--- application/service/UserService.php | 64 ++++++++++++------- 2 files changed, 50 insertions(+), 32 deletions(-) diff --git a/application/plugins/weixinwebauthorization/service/Service.php b/application/plugins/weixinwebauthorization/service/Service.php index 6e9aa8e88..5235c545e 100755 --- a/application/plugins/weixinwebauthorization/service/Service.php +++ b/application/plugins/weixinwebauthorization/service/Service.php @@ -48,22 +48,24 @@ class Service if(!empty($user)) { // 用户登录 - $ret = UserService::Login(['accounts'=>$user['username'], 'pwd'=>$user['username']]); - if($ret['code'] == 0) - { - return DataReturn('登录成功', 0, $ret['data']); - } - return $ret; + return UserService::UserLoginHandle($user['id'] $params); } } else { return DataReturn('用户openid为空', -1); } + // 用户名 + $username = empty($params['nickname']) ? '微信'.RandomString(6) : $params['username'].RandomString(6); + if(mb_strlen($username, 'utf-8') > 18) + { + $username = mb_substr($username, 0, 18); + } + // 游客数据 $salt = GetNumberCode(6); $data = [ 'weixin_web_openid' => $params['openid'], - 'username' => $params['openid'], + 'username' => $username, 'nickname' => empty($params['nickname']) ? '' : $params['nickname'], 'gender' => empty($params['sex']) ? 0 : (isset($params['sex']) && $params['sex'] == 1) ? 2 : 1, 'province' => empty($params['province']) ? '' : $params['province'], @@ -71,7 +73,7 @@ class Service 'avatar' => empty($params['headimgurl']) ? '' : $params['headimgurl'], 'status' => 0, 'salt' => $salt, - 'pwd' => LoginPwdEncryption($params['openid'], $salt), + 'pwd' => LoginPwdEncryption($username, $salt), 'add_time' => time(), 'upd_time' => time(), ]; diff --git a/application/service/UserService.php b/application/service/UserService.php index 0579e9d28..18cfad0d7 100755 --- a/application/service/UserService.php +++ b/application/service/UserService.php @@ -949,33 +949,49 @@ class UserService ); if(Db::name('User')->where(['id'=>$user['id']])->update($data) !== false) { - // 登录记录 - if(self::UserLoginRecord($user['id'])) - { - // 返回前端html代码 - $body_html = []; + return self::UserLoginHandle($user['id'], $params); + } + return DataReturn('登录失效,请重新登录', -100); + } - // 用户登录后钩子 - $hook_name = 'plugins_service_user_login_end'; - $ret = Hook::listen($hook_name, [ - 'hook_name' => $hook_name, - 'is_backend' => true, - 'params' => &$params, - 'user_id' => $user['id'], - 'user' => Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user['id']])->find(), - 'body_html' => &$body_html, - ]); - if(isset($ret['code']) && $ret['code'] != 0) - { - return $ret; - } + /** + * 登录处理 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2019-05-24 + * @desc description + * @param [int] $user_id [用户id] + * @param [array] $params [输入参数] + */ + public static function UserLoginHandle($user_id, $params) + { + // 登录记录 + if(self::UserLoginRecord($user_id])) + { + // 返回前端html代码 + $body_html = []; - // 登录返回 - $result = [ - 'body_html' => is_array($body_html) ? implode(' ', $body_html) : $body_html, - ]; - return DataReturn('登录成功', 0, $result); + // 用户登录后钩子 + $hook_name = 'plugins_service_user_login_end'; + $ret = Hook::listen($hook_name, [ + 'hook_name' => $hook_name, + 'is_backend' => true, + 'params' => &$params, + 'user_id' => $user_id, + 'user' => Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user_id])->find(), + 'body_html' => &$body_html, + ]); + if(isset($ret['code']) && $ret['code'] != 0) + { + return $ret; } + + // 登录返回 + $result = [ + 'body_html' => is_array($body_html) ? implode(' ', $body_html) : $body_html, + ]; + return DataReturn('登录成功', 0, $result); } return DataReturn('登录失效,请重新登录', -100); } -- GitLab