diff --git a/app/admin/form/User.php b/app/admin/form/User.php
index b11866496..0a1bf7e77 100644
--- a/app/admin/form/User.php
+++ b/app/admin/form/User.php
@@ -68,6 +68,18 @@ class User
'where_type' => '=',
],
],
+ [
+ 'label' => '系统类型',
+ 'view_type' => 'field',
+ 'view_key' => 'system_type',
+ 'is_sort' => 1,
+ 'search_config' => [
+ 'form_type' => 'select',
+ 'where_type' => 'in',
+ 'data' => $this->UserSystemTypeList(),
+ 'is_multiple' => 1,
+ ],
+ ],
[
'label' => '头像',
'view_type' => 'module',
@@ -269,5 +281,18 @@ class User
}
return $value;
}
+
+ /**
+ * 用户系统类型列表
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2022-04-14
+ * @desc description
+ */
+ public function UserSystemTypeList()
+ {
+ return Db::name('User')->group('system_type')->column('system_type', 'system_type');
+ }
}
?>
\ No newline at end of file
diff --git a/app/admin/view/default/user/save_info.html b/app/admin/view/default/user/save_info.html
index c31c07443..09c2c1228 100755
--- a/app/admin/view/default/user/save_info.html
+++ b/app/admin/view/default/user/save_info.html
@@ -9,6 +9,10 @@
用户{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}
返回
+
+
+
+
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']));