From 70840cda9c3311a44a900a23bf19bc6201738123 Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Mon, 11 Apr 2022 17:03:36 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=81=94=E5=8A=A8=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/static/common/js/common.js | 52 ++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/public/static/common/js/common.js b/public/static/common/js/common.js index 0ec4f691e..eda00f543 100755 --- a/public/static/common/js/common.js +++ b/public/static/common/js/common.js @@ -2132,6 +2132,37 @@ function OpenWindow(url, name = '', width = 850, height = 600) window.open(url, name, 'height='+height+',innerHeight='+height+',width='+width+',innerWidth='+width+',top='+top+',left='+left+',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no'); } +/** + * 地址联动初始化 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2022-04-11 + * @desc description + */ +function RegionLinkageInit() +{ + if($('.region-linkage select').length > 0) + { + // 省初始化 + RegionNodeData(0, 'province', 'province'); + + // 市初始化 + var value = $('.region-linkage select[name=province]').attr('data-value') || 0; + if(value != 0) + { + RegionNodeData(value, 'city', 'city'); + } + + // 区/县初始化 + var value = $('.region-linkage select[name=city]').attr('data-value') || 0; + if(value != 0) + { + RegionNodeData(value, 'county', 'county'); + } + } +} + // 公共数据操作 @@ -2619,25 +2650,8 @@ $(function() RegionNodeData(value, name, next_name); } }); - if($('.region-linkage select').length > 0) - { - // 省初始化 - RegionNodeData(0, 'province', 'province'); - - // 市初始化 - var value = $('.region-linkage select[name=province]').attr('data-value') || 0; - if(value != 0) - { - RegionNodeData(value, 'city', 'city'); - } - - // 区/县初始化 - var value = $('.region-linkage select[name=city]').attr('data-value') || 0; - if(value != 0) - { - RegionNodeData(value, 'county', 'county'); - } - } + // 地址初始化 + RegionLinkageInit(); // 根据字符串地址获取坐标位置 $('#map-location-submit').on('click', function() -- Gitee From 72074df3e7ffb277de9cf3774bf46105a4911ea0 Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Mon, 11 Apr 2022 17:04:07 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E8=8E=B7=E5=8F=96=E6=89=8B=E6=9C=BA=E5=92=8C=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=AF=BC=E5=85=A5=E5=A2=9E=E5=8A=A0=E5=8F=AF=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/Appconfig.php | 10 +++++-- app/admin/controller/Config.php | 15 +++-------- app/admin/controller/Pluginsadmin.php | 2 +- app/admin/controller/Site.php | 14 +--------- app/admin/view/default/appconfig/app.html | 33 +++++++++++++++++------ app/service/ConfigService.php | 28 +++++++++++++++++++ app/service/SystemBaseService.php | 7 ++--- 7 files changed, 70 insertions(+), 39 deletions(-) diff --git a/app/admin/controller/Appconfig.php b/app/admin/controller/Appconfig.php index 7e9108a46..4474372f1 100755 --- a/app/admin/controller/Appconfig.php +++ b/app/admin/controller/Appconfig.php @@ -52,8 +52,9 @@ class AppConfig extends Common // 配置信息 MyViewAssign('data', ConfigService::ConfigList()); - // 是否 + // 静态数据 MyViewAssign('common_is_text_list', MyConst('common_is_text_list')); + MyViewAssign('common_platform_type', MyConst('common_platform_type')); // 导航/视图 $nav_type = input('nav_type', 'base'); @@ -70,7 +71,12 @@ class AppConfig extends Common */ public function Save() { - return ConfigService::ConfigSave($_POST); + // 空字段处理 + $field_list = [ + 'common_user_onekey_bind_mobile_list', + 'common_user_address_platform_import_list', + ]; + return ConfigService::ConfigSave(ConfigService::FieldsEmptyDataHandle($_POST, $field_list)); } } ?> \ No newline at end of file diff --git a/app/admin/controller/Config.php b/app/admin/controller/Config.php index 62863b1e8..c2db15930 100755 --- a/app/admin/controller/Config.php +++ b/app/admin/controller/Config.php @@ -92,28 +92,19 @@ class Config extends Common $params = $_POST; // 字段不存在赋值 - $empty_value_field_list = []; + $field_list = []; // 页面类型 $view_type = empty($this->data_request['view_type']) ? 'index' : $this->data_request['view_type']; switch($view_type) { case 'store' : - $empty_value_field_list['common_customer_store_qrcode'] = ''; + $field_list[] = 'common_customer_store_qrcode'; break; } // 空字段处理 - if(!empty($empty_value_field_list)) - { - foreach($empty_value_field_list as $fk=>$fv) - { - if(!isset($params[$fk])) - { - $params[$fk] = $fv; - } - } - } + $params = ConfigService::FieldsEmptyDataHandle($params, $field_list); // 默认值字段处理 $default_value_field_list = [ diff --git a/app/admin/controller/Pluginsadmin.php b/app/admin/controller/Pluginsadmin.php index feef2f539..163a632c4 100755 --- a/app/admin/controller/Pluginsadmin.php +++ b/app/admin/controller/Pluginsadmin.php @@ -48,7 +48,7 @@ class Pluginsadmin extends Common } /** - * [Index 配置列表] + * 列表 * @author Devil * @blog http://gong.gg/ * @version 0.0.1 diff --git a/app/admin/controller/Site.php b/app/admin/controller/Site.php index 34ddbba5a..ef19011f6 100755 --- a/app/admin/controller/Site.php +++ b/app/admin/controller/Site.php @@ -372,20 +372,8 @@ class Site extends Common break; } - // 开始处理空值 - if(!empty($field_list)) - { - foreach($field_list as $field) - { - if(!isset($params[$field])) - { - $params[$field] = ''; - } - } - } - // 基础配置 - $ret = ConfigService::ConfigSave($params); + $ret = ConfigService::ConfigSave(ConfigService::FieldsEmptyDataHandle($params, $field_list)); // 清除缓存 if($ret['code'] == 0) diff --git a/app/admin/view/default/appconfig/app.html b/app/admin/view/default/appconfig/app.html index ffee14baa..69280f571 100644 --- a/app/admin/view/default/appconfig/app.html +++ b/app/admin/view/default/appconfig/app.html @@ -26,20 +26,37 @@
- - + {{foreach $common_platform_type as $v}} + {{if in_array($v['value'], ['weixin', 'baidu'])}} + + {{/if}} {{/foreach}}
-

1. 获取当前小程序平台账户或者本本机的手机号码一键登录绑定

-

2. 无需用户输入手机号码进行验证绑定

-

3. 依赖需要开启《强制绑定手机》有效

+

1. 获取当前小程序平台账户或者本本机的手机号码一键登录绑定,目前仅支持【微信小程序、百度小程序】

+

2. 依赖需要开启《强制绑定手机》有效

+

3. 部分小程序平台可能需要申请权限、请根据小程序平台要求申请后再对应开启

+
+
+
+ + +
+ +

1. 获取当前小程序平台app账户的收货地址,目前仅支持【小程序】

+

2. 确认导入后直接添加为系统用户收货地址

+

3. 部分小程序平台可能需要申请权限、请根据小程序平台要求申请后再对应开启

-
+
diff --git a/app/service/AppMiniUserService.php b/app/service/AppMiniUserService.php index 613fd214a..781f0176b 100644 --- a/app/service/AppMiniUserService.php +++ b/app/service/AppMiniUserService.php @@ -21,6 +21,33 @@ use app\service\UserService; */ class AppMiniUserService { + /** + * 读取站点配置信息 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2020-09-13 + * @desc description + * @param [string] $key [索引名称] + * @return [mixed] [配置信息值,没找到返回null] + */ + public static function AppMiniConfig($key) + { + // 获取配置 + $value = MyC($key); + + // 小程序配置信息读取钩子 + $hook_name = 'plugins_service_appmini_config_value'; + MyEventTrigger($hook_name, [ + 'hook_name' => $hook_name, + 'is_backend' => true, + 'key' => $key, + 'value' => &$value, + ]); + + return $value; + } + /** * 支付宝用户授权 * @author Devil @@ -36,7 +63,7 @@ class AppMiniUserService if(!empty($params['authcode'])) { // 授权 - $result = (new \base\Alipay())->GetAuthSessionKey(MyC('common_app_mini_alipay_appid'), $params['authcode']); + $result = (new \base\Alipay())->GetAuthSessionKey(self::AppMiniConfig('common_app_mini_alipay_appid'), $params['authcode']); if($result['status'] == 0) { // 先从数据库获取用户信息 @@ -130,7 +157,7 @@ class AppMiniUserService public static function WeixinUserAuth($params = []) { // 授权 - $result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->GetAuthSessionKey($params); + $result = (new \base\Wechat(self::AppMiniConfig('common_app_mini_weixin_appid'), self::AppMiniConfig('common_app_mini_weixin_appsecret')))->GetAuthSessionKey($params); if($result['status'] == 0) { // unionid @@ -243,9 +270,9 @@ class AppMiniUserService public static function BaiduUserAuth($params = []) { $config = [ - 'appid' => MyC('common_app_mini_baidu_appid'), - 'key' => MyC('common_app_mini_baidu_appkey'), - 'secret' => MyC('common_app_mini_baidu_appsecret'), + 'appid' => self::AppMiniConfig('common_app_mini_baidu_appid'), + 'key' => self::AppMiniConfig('common_app_mini_baidu_appkey'), + 'secret' => self::AppMiniConfig('common_app_mini_baidu_appsecret'), ]; $result = (new \base\Baidu($config))->GetAuthSessionKey($params); if($result['status'] == 0) @@ -320,9 +347,9 @@ class AppMiniUserService if($ret === true) { $config = [ - 'appid' => MyC('common_app_mini_baidu_appid'), - 'key' => MyC('common_app_mini_baidu_appkey'), - 'secret' => MyC('common_app_mini_baidu_appsecret'), + 'appid' => self::AppMiniConfig('common_app_mini_baidu_appid'), + 'key' => self::AppMiniConfig('common_app_mini_baidu_appkey'), + 'secret' => self::AppMiniConfig('common_app_mini_baidu_appsecret'), ]; $result = (new \base\Baidu($config))->DecryptData($auth_data['encrypted_data'], $auth_data['iv'], $params['openid']); @@ -366,8 +393,8 @@ class AppMiniUserService public static function ToutiaoUserAuth($params = []) { $config = [ - 'appid' => MyC('common_app_mini_toutiao_appid'), - 'secret' => MyC('common_app_mini_toutiao_appsecret'), + 'appid' => self::AppMiniConfig('common_app_mini_toutiao_appid'), + 'secret' => self::AppMiniConfig('common_app_mini_toutiao_appsecret'), ]; $result = (new \base\Toutiao($config))->GetAuthSessionKey($params); if($result['status'] == 0) @@ -460,7 +487,7 @@ class AppMiniUserService if(!empty($params['authcode'])) { // 授权 - $result = (new \base\QQ(MyC('common_app_mini_qq_appid'), MyC('common_app_mini_qq_appsecret')))->GetAuthSessionKey($params['authcode']); + $result = (new \base\QQ(self::AppMiniConfig('common_app_mini_qq_appid'), self::AppMiniConfig('common_app_mini_qq_appsecret')))->GetAuthSessionKey($params['authcode']); if($result['status'] == 0) { // 先从数据库获取用户信息 @@ -535,7 +562,7 @@ class AppMiniUserService $ret = ParamsChecked($auth_data, $p); if($ret === true) { - $result = (new \base\QQ(MyC('common_app_mini_qq_appid'), MyC('common_app_mini_qq_appsecret')))->DecryptData($auth_data['encrypted_data'], $auth_data['iv'], $params['openid']); + $result = (new \base\QQ(self::AppMiniConfig('common_app_mini_qq_appid'), self::AppMiniConfig('common_app_mini_qq_appsecret')))->DecryptData($auth_data['encrypted_data'], $auth_data['iv'], $params['openid']); if(is_array($result)) { $result['nickname'] = isset($result['nickName']) ? $result['nickName'] : ''; diff --git a/app/service/OrderSplitService.php b/app/service/OrderSplitService.php index 04ad6fe75..ce1f895a6 100644 --- a/app/service/OrderSplitService.php +++ b/app/service/OrderSplitService.php @@ -54,7 +54,7 @@ class OrderSplitService } // 商品仓库集合 - $warehouse_goods = self::GoodsWarehouseAggregate($params['goods']); + $warehouse_goods = self::GoodsWarehouseAggregate($params); // 分组商品基础处理 $data = self::GroupGoodsBaseHandle($warehouse_goods, $params); @@ -233,16 +233,16 @@ class OrderSplitService * @version 1.0.0 * @date 2020-07-18 * @desc description - * @param [array] $data [商品数据] + * @param [array] $params [输入参数] */ - public static function GoodsWarehouseAggregate($data) + public static function GoodsWarehouseAggregate($params) { // 默认仓库 $warehouse_default = []; // 数据分组 $result = []; - foreach($data as $v) + foreach($params['goods'] as $v) { // 不存在规格则使用默认 $spec = empty($v['spec']) ? [['type' => '默认规格','value' => 'default']] : $v['spec']; @@ -259,6 +259,17 @@ class OrderSplitService $field = 'distinct w.id,w.name,w.alias,w.lng,w.lat,w.province,w.city,w.county,w.address,wgs.inventory,w.is_default,w.level'; $warehouse = Db::name('WarehouseGoodsSpec')->alias('wgs')->join('warehouse_goods wg', 'wgs.warehouse_id=wg.warehouse_id')->join('warehouse w', 'wg.warehouse_id=w.id')->where($where)->field($field)->order('w.level desc,w.is_default desc,wgs.inventory desc')->select()->toArray(); + // 商品仓库分配仓库组合钩子 + $hook_name = 'plugins_service_buy_group_goods_warehouse_handle'; + MyEventTrigger($hook_name, [ + 'hook_name' => $hook_name, + 'is_backend' => true, + 'params' => $params, + 'spec' => $spec, + 'where' => $where, + 'data' => &$warehouse, + ]); + // 商品仓库分组 if(!empty($warehouse)) { @@ -304,6 +315,17 @@ class OrderSplitService { $warehouse_default = Db::name('Warehouse')->where(['is_default'=>1, 'is_enable'=>1, 'is_delete_time'=>0])->field('id,name,alias,lng,lat,province,city,county,address')->find(); } + + // 商品仓库分配默认仓库组合钩子 + $hook_name = 'plugins_service_buy_group_goods_default_warehouse_handle'; + MyEventTrigger($hook_name, [ + 'hook_name' => $hook_name, + 'is_backend' => true, + 'params' => $params, + 'data' => &$warehouse_default, + ]); + + // 存在默认仓库则继续分配 if(!empty($warehouse_default)) { if(!array_key_exists($warehouse_default['id'], $result)) diff --git a/app/service/PluginsService.php b/app/service/PluginsService.php index d65c3604b..587395f0a 100755 --- a/app/service/PluginsService.php +++ b/app/service/PluginsService.php @@ -426,13 +426,7 @@ class PluginsService // 移除私有字段及数据 if(!empty($v['data']) && is_array($v['data']) && !empty($private_field) && is_array($private_field)) { - foreach($private_field as $pv) - { - if(array_key_exists($pv, $v['data'])) - { - unset($v['data'][$pv]); - } - } + $v['data'] = self::ConfigPrivateFieldsHandle($v['data'], $private_field); } } @@ -447,6 +441,31 @@ class PluginsService return $data; } + /** + * 插件配置隐私字段处理 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2022-04-13 + * @desc description + * @param [array] $config [配置数据] + * @param [array] $fields [字段列表] + */ + public static function ConfigPrivateFieldsHandle($config, $fields) + { + if(!empty($config) && is_array($config) && !empty($fields) && is_array($fields)) + { + foreach($fields as $pv) + { + if(array_key_exists($pv, $config)) + { + unset($config[$pv]); + } + } + } + return $config; + } + /** * 插件更新信息 * @author Devil diff --git a/app/service/SafetyService.php b/app/service/SafetyService.php index 713ec6bec..a0249f73a 100755 --- a/app/service/SafetyService.php +++ b/app/service/SafetyService.php @@ -65,7 +65,7 @@ class SafetyService } // 获取用户账户信息 - $user = Db::name('User')->field('id,pwd,salt,username,mobile,email')->find($params['user']['id']); + $user = UserService::UserInfo('id', intval($params['user']['id']), 'id,pwd,salt,username,mobile,email'); // 原密码校验 if(LoginPwdEncryption($params['my_pwd'], $user['salt']) != $user['pwd']) @@ -103,11 +103,11 @@ class SafetyService public static function UserLoginPwdUpdate($accounts, $user_id, $pwd) { $salt = GetNumberCode(6); - $data = array( - 'pwd' => LoginPwdEncryption(trim($pwd), $salt), - 'salt' => $salt, - 'upd_time' => time(), - ); + $data = [ + 'pwd' => LoginPwdEncryption(trim($pwd), $salt), + 'salt' => $salt, + 'upd_time' => time(), + ]; if(Db::name('User')->where(['id'=>$user_id])->update($data) !== false) { // 用户登录密码修改钩子 @@ -117,7 +117,7 @@ class SafetyService 'is_backend' => true, 'params' => ['accounts'=>$accounts, 'pwd'=>$pwd], 'user_id' => $user_id, - 'user' => Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user_id])->find(), + 'user' => UserService::UserInfo('id', $user_id, 'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'), ])); if(isset($ret['code']) && $ret['code'] != 0) { @@ -141,7 +141,7 @@ class SafetyService private static function IsExistAccounts($accounts, $type) { $field = ($type == 'sms') ? 'mobile' : 'email'; - $user = Db::name('User')->where([$field=>$accounts])->field('id')->find(); + $user = UserService::UserInfo($field, $accounts, 'id'); if(!empty($user)) { $msg = ($type == 'sms') ? '手机号码已存在' : '电子邮箱已存在'; @@ -393,7 +393,7 @@ class SafetyService { return $ret; } else { - $user = Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$params['user']['id']])->find(); + $user = UserService::UserInfo('id', intval($params['user']['id']), 'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'); } // 验证码校验 @@ -426,7 +426,7 @@ class SafetyService 'upd_time' => time(), ); // 更新数据库 - if(Db::name('User')->where(['id'=>$params['user']['id']])->update($data) !== false) + if(Db::name('User')->where(['id'=>intval($params['user']['id'])])->update($data) !== false) { // 更新用户session数据 UserService::UserLoginRecord($params['user']['id']); @@ -444,7 +444,7 @@ class SafetyService 'is_backend' => true, 'params' => ['accounts'=>$user[$field], 'new_accounts'=>$params['accounts'], 'field'=>$field], 'user_id' => $user['id'], - 'user' => Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user['id']])->find(), + 'user' => UserService::UserInfo('id', $user['id'], 'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'), ])); if(isset($ret['code']) && $ret['code'] != 0) { diff --git a/app/service/UserService.php b/app/service/UserService.php index 01c2803eb..9f527d5f5 100755 --- a/app/service/UserService.php +++ b/app/service/UserService.php @@ -356,6 +356,7 @@ class UserService // 更新数据 $data = [ + 'system_type' => empty($params['system_type']) ? 'default' : $params['system_type'], 'username' => isset($params['username']) ? $params['username'] : '', 'nickname' => isset($params['nickname']) ? $params['nickname'] : '', 'mobile' => isset($params['mobile']) ? $params['mobile'] : '', @@ -402,7 +403,7 @@ class UserService if(!empty($params['id'])) { // 获取用户信息 - $user = Db::name('User')->field('id,integral')->find($params['id']); + $user = self::UserInfo('id', intval($params['id']), 'id,integral'); if(empty($user)) { return DataReturn('用户信息不存在', -10); @@ -532,7 +533,7 @@ class UserService { if(!empty($user_id)) { - $user = Db::name('User')->find($user_id); + $user = self::UserInfo('id', $user_id); if(!empty($user)) { // 用户数据处理 @@ -855,8 +856,7 @@ class UserService } // 获取用户账户信息 - $where = [$ac['data'] => $params['accounts'], 'is_delete_time'=>0]; - $user = Db::name('User')->where($where)->find(); + $user = self::UserInfo($ac['data'], $params['accounts']); if(empty($user)) { return DataReturn('帐号不存在', -3); @@ -958,7 +958,7 @@ class UserService $body_html = []; // 用户登录后钩子 - $user = Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user_id])->find(); + $user = self::UserInfo('id', $user_id, 'id,system_type,username,nickname,mobile,email,gender,avatar,province,city,birthday'); $hook_name = 'plugins_service_user_login_end'; $ret = EventReturnHandle(MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, @@ -1218,8 +1218,8 @@ class UserService */ private static function IsExistAccounts($accounts, $field = 'mobile') { - $id = Db::name('User')->where(array($field=>$accounts))->value('id'); - return !empty($id); + $temp = self::UserInfo($field, $accounts, 'id'); + return !empty($temp); } /** @@ -1707,7 +1707,7 @@ class UserService } // 获取用户信息 - $user = Db::name('User')->where([$ret['data']=>$params['accounts']])->find(); + $user = self::UserInfo($ret['data'], $params['accounts']); if(empty($user)) { return DataReturn('用户信息不存在', -12); @@ -1776,7 +1776,7 @@ class UserService 'gender' => intval($params['gender']), 'upd_time' => time(), ]; - if(Db::name('User')->where(array('id'=>$params['user']['id']))->update($data)) + if(Db::name('User')->where(['id'=>$params['user']['id']])->update($data)) { // 更新用户session数据 self::UserLoginRecord($params['user']['id']); @@ -2149,7 +2149,12 @@ class UserService return ''; } - return Db::name('User')->where([$where_field=>$where_value, 'is_delete_time'=>0])->field($field)->find(); + $where = [ + ['system_type', '=', SYSTEM_TYPE], + [$where_field, '=', $where_value], + ['is_delete_time', '=', 0], + ]; + return Db::name('User')->where($where)->field($field)->find(); } /** @@ -2167,13 +2172,13 @@ class UserService // 账号是否存在,以用户名 手机 邮箱 作为唯一 if(!empty($data['username'])) { - $temp = Db::name('User')->where(['username'=>$data['username'], 'is_delete_time'=>0])->find(); + $temp = self::UserInfo('username', $data['username']); } else if(!empty($data['mobile'])) { - $temp = Db::name('User')->where(['mobile'=>$data['mobile'], 'is_delete_time'=>0])->find(); + $temp = self::UserInfo('mobile', $data['mobile']); } else if(!empty($data['email'])) { - $temp = Db::name('User')->where(['email'=>$data['email'], 'is_delete_time'=>0])->find(); + $temp = self::UserInfo('email', $data['email']); } if(!empty($temp)) { @@ -2217,7 +2222,7 @@ class UserService $body_html = []; // 注册成功后钩子 - $user = Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user_id])->find(); + $user = self::UserInfo('id', $user_id, 'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'); $hook_name = 'plugins_service_user_register_end'; $ret = EventReturnHandle(MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, @@ -2255,6 +2260,10 @@ class UserService */ public static function UserBaseHandle($data, $params) { + // 系统类型 + $data['system_type'] = SYSTEM_TYPE; + + // 基础参数处理 if(!empty($params) && is_array($params)) { // 是否存在基信息 @@ -2380,10 +2389,7 @@ class UserService $is_appmini = array_key_exists(APPLICATION_CLIENT_TYPE, MyConst('common_appmini_type')); // 手机号码获取用户信息 - $mobile_user = Db::name('User')->where([ - ['mobile', '=', $data['mobile']], - ['is_delete_time', '=', 0], - ])->find(); + $mobile_user = self::UserInfo('mobile', $data['mobile']); // 额外信息 if(empty($mobile_user)) @@ -2424,10 +2430,7 @@ class UserService $data[$accounts_field] = $params[$accounts_field]; // 小程序请求获取用户信息 - $current_user = Db::name('User')->where([ - [$accounts_field, '=', $params[$accounts_field]], - ['is_delete_time', '=', 0], - ])->find(); + $current_user = self::UserInfo($accounts_field, $params[$accounts_field]); } else { // 当前登录用户 $current_user = self::LoginUserInfo(); diff --git a/public/core.php b/public/core.php index 34b624a7c..3f0e97e42 100755 --- a/public/core.php +++ b/public/core.php @@ -82,6 +82,9 @@ define('ROOT', substr(ROOT_PATH, 0, -7)); // 定义应用目录 define('APP_PATH', ROOT.'app'.DS); +// 系统类型 [default] 默认default、可根据终端区分系统类型 +define('SYSTEM_TYPE', empty($_REQUEST['system_type']) ? 'default' : trim($_REQUEST['system_type'])); + // 请求应用 [web, app] 默认web(ios|android|小程序 均为app) define('APPLICATION', empty($_REQUEST['application']) ? 'web' : trim($_REQUEST['application'])); -- Gitee From 81eb6a5ff0b2cf2560583f173a69ac0f3bcf0204 Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Thu, 14 Apr 2022 23:46:34 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E9=80=82=E9=85=8D=E7=B3=BB=E7=BB=9F=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/User.php | 71 +------------------------ app/service/AppMiniUserService.php | 83 ++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 70 deletions(-) diff --git a/app/api/controller/User.php b/app/api/controller/User.php index 2b67fa5f3..ec626c4cf 100755 --- a/app/api/controller/User.php +++ b/app/api/controller/User.php @@ -786,76 +786,7 @@ class User extends Common */ public function OnekeyUserMobileBind() { - // 参数校验 - $p = [ - [ - 'checked_type' => 'empty', - 'key_name' => 'openid', - 'error_msg' => 'openid为空', - ], - [ - 'checked_type' => 'empty', - 'key_name' => 'encrypted_data', - 'error_msg' => '解密数据为空', - ], - [ - 'checked_type' => 'empty', - 'key_name' => 'iv', - 'error_msg' => 'iv为空,请重试', - ] - ]; - $ret = ParamsChecked($this->data_post, $p); - if($ret === true) - { - // 根据不同平台处理数据解密逻辑 - $mobile = ''; - $error_msg = ''; - switch(APPLICATION_CLIENT_TYPE) - { - // 微信 - case 'weixin' : - $result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->DecryptData($this->data_post['encrypted_data'], $this->data_post['iv'], $this->data_post['openid']); - if($result['status'] == 0 && !empty($result['data']) && !empty($result['data']['purePhoneNumber'])) - { - $mobile = $result['data']['purePhoneNumber']; - } else { - $error_msg = $result['msg']; - } - break; - - // 百度 - case 'baidu' : - $config = [ - 'appid' => MyC('common_app_mini_baidu_appid'), - 'key' => MyC('common_app_mini_baidu_appkey'), - 'secret' => MyC('common_app_mini_baidu_appsecret'), - ]; - $result = (new \base\Baidu($config))->DecryptData($this->data_post['encrypted_data'], $this->data_post['iv'], $this->data_post['openid'], 'mobile_bind'); - if($result['status'] == 0 && !empty($result['data']) && !empty($result['data']['mobile'])) - { - $mobile = $result['data']['mobile']; - } else { - $error_msg = $result['msg']; - } - break; - - // 默认 - default : - $error_msg = APPLICATION_CLIENT_TYPE.'平台还未开发手机一键登录'; - } - if(empty($mobile) || !empty($error_msg)) - { - $ret = DataReturn(empty($error_msg) ? '数据解密失败' : $error_msg, -1); - } else { - // 用户信息处理 - $this->data_post['mobile'] = $mobile; - $this->data_post['is_onekey_mobile_bind'] = 1; - $ret = UserService::AuthUserProgram($this->data_post, APPLICATION_CLIENT_TYPE.'_openid'); - } - } else { - $ret = DataReturn($ret, -1); - } - return ApiService::ApiDataReturn($ret); + return ApiService::ApiDataReturn(AppMiniUserService::AppMiniOnekeyUserMobileBind($this->data_post)); } } ?> \ No newline at end of file diff --git a/app/service/AppMiniUserService.php b/app/service/AppMiniUserService.php index 781f0176b..baec3fd4e 100644 --- a/app/service/AppMiniUserService.php +++ b/app/service/AppMiniUserService.php @@ -591,5 +591,88 @@ class AppMiniUserService } return $ret; } + + /** + * 小程序用户手机一键绑定 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2022-04-14 + * @desc description + * @param [array] $params [输入参数] + */ + public static function AppMiniOnekeyUserMobileBind($params = []) + { + // 参数校验 + $p = [ + [ + 'checked_type' => 'empty', + 'key_name' => 'openid', + 'error_msg' => 'openid为空', + ], + [ + 'checked_type' => 'empty', + 'key_name' => 'encrypted_data', + 'error_msg' => '解密数据为空', + ], + [ + 'checked_type' => 'empty', + 'key_name' => 'iv', + 'error_msg' => 'iv为空,请重试', + ] + ]; + $ret = ParamsChecked($params, $p); + if($ret === true) + { + // 根据不同平台处理数据解密逻辑 + $mobile = ''; + $error_msg = ''; + switch(APPLICATION_CLIENT_TYPE) + { + // 微信 + case 'weixin' : + $result = (new \base\Wechat(self::AppMiniConfig('common_app_mini_weixin_appid'), self::AppMiniConfig('common_app_mini_weixin_appsecret')))->DecryptData($params['encrypted_data'], $params['iv'], $params['openid']); + if($result['status'] == 0 && !empty($result['data']) && !empty($result['data']['purePhoneNumber'])) + { + $mobile = $result['data']['purePhoneNumber']; + } else { + $error_msg = $result['msg']; + } + break; + + // 百度 + case 'baidu' : + $config = [ + 'appid' => self::AppMiniConfig('common_app_mini_baidu_appid'), + 'key' => self::AppMiniConfig('common_app_mini_baidu_appkey'), + 'secret' => self::AppMiniConfig('common_app_mini_baidu_appsecret'), + ]; + $result = (new \base\Baidu($config))->DecryptData($params['encrypted_data'], $params['iv'], $params['openid'], 'mobile_bind'); + if($result['status'] == 0 && !empty($result['data']) && !empty($result['data']['mobile'])) + { + $mobile = $result['data']['mobile']; + } else { + $error_msg = $result['msg']; + } + break; + + // 默认 + default : + $error_msg = APPLICATION_CLIENT_TYPE.'平台还未开发手机一键登录'; + } + if(empty($mobile) || !empty($error_msg)) + { + $ret = DataReturn(empty($error_msg) ? '数据解密失败' : $error_msg, -1); + } else { + // 用户信息处理 + $params['mobile'] = $mobile; + $params['is_onekey_mobile_bind'] = 1; + $ret = UserService::AuthUserProgram($params, APPLICATION_CLIENT_TYPE.'_openid'); + } + } else { + $ret = DataReturn($ret, -1); + } + return ApiService::ApiDataReturn($ret); + } } ?> \ No newline at end of file -- Gitee From bb0a08892d3c63d11ae136030ca702b88c19b5de Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Thu, 14 Apr 2022 23:52:13 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E9=80=82=E9=85=8D=E7=B3=BB=E7=BB=9F=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/AppMiniUserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/service/AppMiniUserService.php b/app/service/AppMiniUserService.php index baec3fd4e..ca2da9306 100644 --- a/app/service/AppMiniUserService.php +++ b/app/service/AppMiniUserService.php @@ -672,7 +672,7 @@ class AppMiniUserService } else { $ret = DataReturn($ret, -1); } - return ApiService::ApiDataReturn($ret); + return $ret; } } ?> \ No newline at end of file -- Gitee