From 826f07b188480cc4a09ae31fbf7ca7c1011e66a5 Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Fri, 18 Nov 2022 22:30:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E4=BF=AE=E6=94=B9=E5=92=8C=E5=A4=B4=E5=83=8F=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0api+=E5=85=B6=E4=BB=96=E7=BB=86=E8=8A=82=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/User.php | 3 - app/admin/form/User.php | 3 +- app/admin/view/default/lib/gender.html | 2 +- app/admin/view/default/user/save_info.html | 4 +- app/api/controller/Answer.php | 2 +- app/api/controller/Banner.php | 2 +- app/api/controller/Cart.php | 2 +- app/api/controller/Index.php | 2 +- app/api/controller/Message.php | 2 +- app/api/controller/Navigation.php | 2 +- app/api/controller/Order.php | 2 +- app/api/controller/Ordernotify.php | 2 +- app/api/controller/Personal.php | 91 +++++++++++++ app/api/controller/Region.php | 2 +- app/api/controller/Search.php | 2 +- app/api/controller/User.php | 2 +- app/api/controller/Useraddress.php | 2 +- app/api/controller/Usergoodsbrowse.php | 2 +- app/api/controller/Usergoodsfavor.php | 2 +- app/api/controller/Userintegral.php | 2 +- app/index/controller/Personal.php | 18 ++- app/index/controller/User.php | 19 --- app/index/view/default/personal/index.html | 2 +- .../view/default/personal/save_info.html | 74 +++++++--- app/index/view/default/public/user_menu.html | 2 +- app/service/ConstService.php | 4 +- app/service/NavigationService.php | 5 +- app/service/UserService.php | 127 +++++++++++------- 28 files changed, 270 insertions(+), 114 deletions(-) create mode 100644 app/api/controller/Personal.php diff --git a/app/admin/controller/User.php b/app/admin/controller/User.php index e8add43e6..0f4ef42a3 100755 --- a/app/admin/controller/User.php +++ b/app/admin/controller/User.php @@ -91,9 +91,6 @@ class User extends Base { return $this->error('用户信息不存在', MyUrl('admin/user/index')); } - - // 生日 - $data['birthday_text'] = empty($data['birthday']) ? '' : date('Y-m-d', $data['birthday']); } // 模板数据 diff --git a/app/admin/form/User.php b/app/admin/form/User.php index 385e0cdd6..37d2ffe05 100644 --- a/app/admin/form/User.php +++ b/app/admin/form/User.php @@ -200,11 +200,10 @@ class User [ 'label' => '生日', 'view_type' => 'field', - 'view_key' => 'birthday_text', + 'view_key' => 'birthday', 'is_sort' => 1, 'search_config' => [ 'form_type' => 'date', - 'form_name' => 'birthday', 'is_point' => 1, ], ], diff --git a/app/admin/view/default/lib/gender.html b/app/admin/view/default/lib/gender.html index 4df22e19b..de847fd78 100755 --- a/app/admin/view/default/lib/gender.html +++ b/app/admin/view/default/lib/gender.html @@ -1,6 +1,6 @@
- +
{{foreach :MyConst('common_gender_list') as $v}}
diff --git a/app/index/view/default/public/user_menu.html b/app/index/view/default/public/user_menu.html index f204ffc46..62c551249 100755 --- a/app/index/view/default/public/user_menu.html +++ b/app/index/view/default/public/user_menu.html @@ -39,7 +39,7 @@ ×
-
+
Picture diff --git a/app/service/ConstService.php b/app/service/ConstService.php index 0cccaf56d..2b7b494c8 100644 --- a/app/service/ConstService.php +++ b/app/service/ConstService.php @@ -549,11 +549,11 @@ class ConstService 'name' => '性别', 'type' => 'string', ], - 'birthday_text'=> [ + 'birthday' => [ 'name' => '生日', 'type' => 'string', ], - 'status_text'=> [ + 'status_text' => [ 'name' => '状态', 'type' => 'string', ], diff --git a/app/service/NavigationService.php b/app/service/NavigationService.php index bfb5f6656..b9abfb44e 100755 --- a/app/service/NavigationService.php +++ b/app/service/NavigationService.php @@ -750,10 +750,13 @@ class NavigationService 'nickname' => [ 'name' => '昵称' ], + 'address_info' => [ + 'name' => '地址' + ], 'gender_text' => [ 'name' => '性别' ], - 'birthday_text' => [ + 'birthday' => [ 'name' => '生日' ], 'mobile_security' => [ diff --git a/app/service/UserService.php b/app/service/UserService.php index 6b690f0aa..d571f8816 100755 --- a/app/service/UserService.php +++ b/app/service/UserService.php @@ -207,7 +207,7 @@ class UserService // 生日 if(array_key_exists('birthday', $v)) { - $v['birthday_text'] = empty($v['birthday']) ? '' : date('Y-m-d', $v['birthday']); + $v['birthday'] = empty($v['birthday']) ? '' : date('Y-m-d', $v['birthday']); } // 头像 @@ -371,7 +371,7 @@ class UserService 'province' => empty($params['province']) ? '' : $params['province'], 'city' => empty($params['city']) ? '' : $params['city'], 'county' => empty($params['county']) ? '' : $params['county'], - 'address' => isset($params['address']) ? $params['address'] : '', + 'address' => empty($params['address']) ? '' : $params['address'], 'gender' => intval($params['gender']), 'integral' => intval($params['integral']), 'locking_integral' => intval($params['locking_integral']), @@ -587,29 +587,35 @@ class UserService // 基础数据处理 if(isset($user['add_time'])) { - $user['add_time_text'] = date('Y-m-d H:i:s', $user['add_time']); + $user['add_time_text'] = date('Y-m-d H:i:s', $user['add_time']); } if(isset($user['upd_time'])) { - $user['upd_time_text'] = date('Y-m-d H:i:s', $user['upd_time']); + $user['upd_time_text'] = date('Y-m-d H:i:s', $user['upd_time']); } if(isset($user['gender'])) { - $user['gender_text'] = MyConst('common_gender_list')[$user['gender']]['name']; + $user['gender_text'] = MyConst('common_gender_list')[$user['gender']]['name']; } if(isset($user['birthday'])) { - $user['birthday_text'] = empty($user['birthday']) ? '' : date('Y-m-d', $user['birthday']); + $user['birthday'] = empty($user['birthday']) ? '' : date('Y-m-d', $user['birthday']); } // 邮箱/手机 if(isset($user['mobile'])) { - $user['mobile_security']= empty($user['mobile']) ? '' : mb_substr($user['mobile'], 0, 3, 'utf-8').'***'.mb_substr($user['mobile'], -3, null, 'utf-8'); + $user['mobile_security'] = empty($user['mobile']) ? '' : mb_substr($user['mobile'], 0, 3, 'utf-8').'***'.mb_substr($user['mobile'], -3, null, 'utf-8'); } if(isset($user['email'])) { - $user['email_security'] = empty($user['email']) ? '' : mb_substr($user['email'], 0, 3, 'utf-8').'***'.mb_substr($user['email'], -3, null, 'utf-8'); + $user['email_security'] = empty($user['email']) ? '' : mb_substr($user['email'], 0, 3, 'utf-8').'***'.mb_substr($user['email'], -3, null, 'utf-8'); + } + + // 地址信息 + if(isset($user['province']) && isset($user['city']) && isset($user['county']) && isset($user['address'])) + { + $user['address_info'] = $user['province'].$user['city'].$user['county'].$user['address']; } // 显示名称,根据规则优先展示 @@ -658,31 +664,6 @@ class UserService { // 请求参数 $p = [ - [ - 'checked_type' => 'empty', - 'key_name' => 'img_width', - 'error_msg' => '图片宽度不能为空', - ], - [ - 'checked_type' => 'empty', - 'key_name' => 'img_height', - 'error_msg' => '图片高度不能为空', - ], - [ - 'checked_type' => 'isset', - 'key_name' => 'img_x', - 'error_msg' => '图片裁剪x坐标有误', - ], - [ - 'checked_type' => 'isset', - 'key_name' => 'img_y', - 'error_msg' => '图片裁剪y坐标有误', - ], - [ - 'checked_type' => 'empty', - 'key_name' => 'img_field', - 'error_msg' => '图片name字段值不能为空', - ], [ 'checked_type' => 'empty', 'key_name' => 'user', @@ -695,6 +676,14 @@ class UserService return DataReturn($ret, -1); } + // 缓存key、是否操作频繁 + $cache_key = 'cache_user_avatar_upload_frequency_'.$params['user']['id']; + $cache_value = MyCache($cache_key); + if(!empty($cache_value) && $cache_value['time']+3600 > time() && $cache_value['count'] >= 5) + { + return DataReturn('操作频繁,请稍后再试!', -1); + } + // 开始处理图片存储 // 定义图片目录 $root_path = ROOT.'public'.DS; @@ -711,7 +700,14 @@ class UserService return DataReturn($error, -2); } - $original = $images_obj->GetCompressCut($_FILES[$params['img_field']], $root_path.$img_path.'original'.$date, 800, 800, $params['img_x'], $params['img_y'], $params['img_width'], $params['img_height']); + // 是否指定裁剪信息 + $original_dir = $root_path.$img_path.'original'.$date; + if(!empty($params['img_width']) && !empty($params['img_height']) && isset($params['img_x']) && isset($params['img_y'])) + { + $original = $images_obj->GetCompressCut($_FILES[$params['img_field']], $original_dir, 800, 800, $params['img_x'], $params['img_y'], $params['img_width'], $params['img_height']); + } else { + $original = $images_obj->GetOriginal($_FILES[$params['img_field']], $original_dir); + } if(!empty($original)) { $compr = $images_obj->GetBinaryCompress($root_path.$img_path.'original'.$date.$original, $root_path.$img_path.'compr'.$date, 200, 200); @@ -719,17 +715,33 @@ class UserService } if(empty($compr) || empty($small)) { - return DataReturn('图片有误,请换一张', -3); + return DataReturn('图片有误,请换一张!', -3); + } + $avatar = DS.$img_path.'compr'.$date.$compr; + + // 缓存记录 + if(empty($cache_value)) + { + $cache_value = ['count'=>1, 'time'=>time()]; + } else { + $cache_value['count']++; + } + MyCache($cache_key, $cache_value, 3600); + + // app则直接返回图片地址 + if(APPLICATION == 'app') + { + return DataReturn(MyLang('common.upload_success'), 0, ResourcesService::AttachmentPathViewHandle($avatar)); } // 更新用户头像 $data = [ - 'avatar' => DS.$img_path.'compr'.$date.$compr, + 'avatar' => $avatar, 'upd_time' => time(), ]; if(Db::name('User')->where(['id'=>$params['user']['id']])->update($data)) { - // 设置session + // web端用户登录纪录处理 self::UserLoginRecord($params['user']['id']); return DataReturn(MyLang('common.upload_success'), 0); } @@ -968,7 +980,7 @@ class UserService $body_html = []; // 用户登录后钩子 - $user = self::UserInfo('id', $user_id, 'id,number_code,system_type,username,nickname,mobile,email,gender,avatar,province,city,birthday'); + $user = self::UserInfo('id', $user_id, 'id,number_code,system_type,username,nickname,mobile,email,gender,avatar,province,city,county,birthday'); // 会员码生成处理 if(empty($user['number_code'])) @@ -1762,7 +1774,7 @@ class UserService 'checked_type' => 'length', 'checked_data' => '2,16', 'key_name' => 'nickname', - 'error_msg' => '昵称 2~16 个字符之间', + 'error_msg' => '昵称2~16个字符之间', ], [ 'checked_type' => 'isset', @@ -1792,16 +1804,32 @@ class UserService 'birthday' => empty($params['birthday']) ? '' : strtotime($params['birthday']), 'nickname' => $params['nickname'], 'gender' => intval($params['gender']), + 'province' => empty($params['province']) ? '' : $params['province'], + 'city' => empty($params['city']) ? '' : $params['city'], + 'county' => empty($params['county']) ? '' : $params['county'], + 'address' => empty($params['address']) ? '' : $params['address'], 'upd_time' => time(), ]; + // 是否存在头像 + if(!empty($params['avatar'])) + { + $data['avatar'] = ResourcesService::AttachmentPathHandle($params['avatar']); + } + + // 更新用户信息 if(Db::name('User')->where(['id'=>$params['user']['id']])->update($data)) { - // 更新用户session数据 - self::UserLoginRecord($params['user']['id']); + // // web端用户登录纪录处理 + if(APPLICATION == 'web') + { + self::UserLoginRecord($params['user']['id']); + } - return DataReturn(MyLang('common.edit_success'), 0); + // 成功并返回用户信息 + $user = self::UserHandle(self::UserInfo('id', $params['user']['id'])); + return DataReturn(MyLang('common.change_success'), 0, $user); } - return DataReturn(MyLang('common.edit_fail'), -100); + return DataReturn(MyLang('common.change_fail'), -100); } /** @@ -1824,6 +1852,7 @@ class UserService 'gender' => empty($params['gender']) ? 0 : intval($params['gender']), 'province' => empty($params['province']) ? '' : $params['province'], 'city' => empty($params['city']) ? '' : $params['city'], + 'county' => empty($params['county']) ? '' : $params['county'], 'mobile' => empty($params['mobile']) ? '' : $params['mobile'], 'referrer' => isset($params['referrer']) ? $params['referrer'] : 0, ]; @@ -2250,7 +2279,7 @@ class UserService $body_html = []; // 注册成功后钩子 - $user = self::UserInfo('id', $user_id, 'id,number_code,system_type,username,nickname,mobile,email,gender,avatar,province,city,birthday'); + $user = self::UserInfo('id', $user_id, 'id,number_code,system_type,username,nickname,mobile,email,gender,avatar,province,city,county,birthday'); $hook_name = 'plugins_service_user_register_end'; $ret = EventReturnHandle(MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, @@ -2337,6 +2366,10 @@ class UserService 'key' => 'city', 'type' => 'string' ], + 'county' => [ + 'key' => 'county', + 'type' => 'string' + ], 'gender' => [ 'key' => 'gender', 'type' => 'int', @@ -2462,6 +2495,10 @@ class UserService { $data['city'] = $params['city']; } + if(empty($mobile_user['county']) && !empty($params['county'])) + { + $data['county'] = $params['county']; + } if(empty($mobile_user) && isset($params['gender'])) { $data['gender'] = intval($params['gender']); @@ -2704,7 +2741,7 @@ class UserService } if(!empty($user_ids)) { - $data = Db::name('User')->where(['id'=>$user_ids])->column('id,number_code,system_type,username,nickname,mobile,email,avatar,province,city', 'id'); + $data = Db::name('User')->where(['id'=>$user_ids])->column('id,number_code,system_type,username,nickname,mobile,email,avatar,province,city,county', 'id'); } // 数据处理 -- GitLab