diff --git a/app/adminapi/controller/user/UserController.php b/app/adminapi/controller/user/UserController.php index 0743851f..f9e06294 100644 --- a/app/adminapi/controller/user/UserController.php +++ b/app/adminapi/controller/user/UserController.php @@ -5,6 +5,8 @@ namespace app\adminapi\controller\user; use app\adminapi\controller\BaseAdminController; use app\adminapi\lists\user\UserLists; use app\adminapi\logic\user\UserLogic; +use app\common\validate\user\UserBalanceValidate; +use app\common\validate\user\UserIntegralValidate; use app\common\validate\user\UserValidate; use think\response\Json; @@ -23,4 +25,22 @@ class UserController extends BaseAdminController $detail = UserLogic::detail($params['id']); return $this->success('', $detail); } + + // 获取用户余额列表 + public function balance(): Json + { + //获取参数 + $params = (new UserBalanceValidate())->get()->goCheck('list'); + $data = UserLogic::balanceList($params); + return $this->success('', $data); + } + + // 获取用户积分列表 + public function integral():Json + { + //获取参数 + $params = (new UserIntegralValidate())->get()->goCheck('list'); + $data = UserLogic::integralList($params); + return $this->success('', $data); + } } \ No newline at end of file diff --git a/app/adminapi/lists/user/UserLists.php b/app/adminapi/lists/user/UserLists.php index 98e7bdc6..e409ba61 100644 --- a/app/adminapi/lists/user/UserLists.php +++ b/app/adminapi/lists/user/UserLists.php @@ -12,27 +12,26 @@ class UserLists extends BaseAdminDataLists implements ListsSearchInterface public function setSearch(): array { return [ - '=' => ['user_status'], - '%like%' => ['user_account','user_nickname','user_phone'], + '=' => ['status'], + '%like%' => ['nick_name','phone'], ]; } // 获取用户列表 public function lists(): array { - $field = "id,user_avatar,user_account,user_nickname,user_phone,user_gender,user_status,create_time"; - $lists = User::field($field)->where($this->searchWhere)->where('user_status','<>',2) + $field = "id,phone,avatar,nick_name,real_name,id_card,gender,age,total_balance,total_integral,status,create_time"; + return User::field($field)->where($this->searchWhere)->where('status','<>',2) ->limit($this->limitOffset, $this->limitLength) ->order('id desc')->select()->each(function($item){ - $item['user_status_text'] = $item->user_status_text; - $item['user_gender_text'] = $item->user_gender_text; + $item['status_text'] = $item->status_text; + $item['gender_text'] = $item->gender_text; })->toArray(); - return $lists; } // 获取数量 public function count(): int { - return User::field('id')->where($this->searchWhere)->where('user_status','<>',2)->count(); + return User::field('id')->where($this->searchWhere)->where('status','<>',2)->count(); } } \ No newline at end of file diff --git a/app/adminapi/logic/user/UserLogic.php b/app/adminapi/logic/user/UserLogic.php index f8a85dd5..9842426f 100644 --- a/app/adminapi/logic/user/UserLogic.php +++ b/app/adminapi/logic/user/UserLogic.php @@ -3,17 +3,73 @@ namespace app\adminapi\logic\user; use app\common\logic\BaseLogic; +use app\common\model\systems\System; use app\common\model\user\User; +use app\common\model\user\UserBalance; +use app\common\model\user\UserIntegral; class UserLogic extends BaseLogic { //用户详情 public static function detail(int $userId): array { - $field = ['id','user_phone','user_avatar','user_name','user_gender','user_age','user_status','user_last_login_time','user_last_login_ip','create_time']; + //获取用户信息 + $field = ['id','phone','avatar','nick_name','real_name','id_card','gender','age','total_balance','total_integral','province','city','area','street','village','brigade','address','status','last_login_time','last_login_ip','create_time']; $user = User::field($field)->where(['id' => $userId])->findOrEmpty(); - $user['user_gender_text'] = $user->user_gender_text; - $user['user_status_text'] = $user->user_status_text; + $user['address'] = $user->province_text.$user->city_text.$user->area_text.$user->street_text.$user->village_text.$user->brigade_text.$user->address; + $user['gender_text'] = $user->gender_text; + $user['status_text'] = $user->status_text; + //获取用户余额列表 + $user['balance_list'] = UserBalance::field('id,record_id,amount,total_amount,type,pay_type,mark,appid,create_time')->where('user_id',$userId)->limit(10)->order('create_time desc')->select()->each(function($item){ + $item['app'] = System::where('app_id',$item['appid'])->value('name'); + $item['type_text'] = $item->type_text; + $item['pay_type_text'] = $item->pay_type_text; + unset($item['appid']); + })->toArray(); + //获取用户积分列表 + $user['integral_list'] = UserIntegral::field('id,record_id,amount,total_amount,type,mark,appid,create_time')->where('user_id',$userId)->limit(10)->order('create_time desc')->select()->each(function($item){ + $item['app'] = System::where('app_id',$item['appid'])->value('name'); + $item['type_text'] = $item->type_text; + })->toArray(); + unset($user['province'],$user['city'],$user['area'],$user['street'],$user['village'],$user['brigade']); return $user->toArray(); } + + //用户余额列表 + public static function balanceList($params): array + { + //获取用户余额列表 + $fields = 'id,record_id,amount,total_amount,type,pay_type,mark,appid,create_time'; + $lists = UserBalance::field($fields)->where('user_id',$params['uid'])->page($params['page_no'],$params['page_size'])->order('create_time desc')->select()->each(function($item){ + $item['app'] = System::where('app_id',$item['appid'])->value('name'); + $item['type_text'] = $item->type_text; + $item['pay_type_text'] = $item->pay_type_text; + unset($item['appid']); + })->toArray(); + $count = UserBalance::field('id')->where('user_id',$params['uid'])->count(); + return [ + 'count' => $count, + 'page_no' => $params['page_no'], + 'page_size' => $params['page_size'], + 'lists' => $lists + ]; + } + + //用户积分列表 + public static function integralList($params): array + { + //获取用户积分列表 + $fields = 'id,record_id,amount,total_amount,type,mark,appid,create_time'; + $lists = UserIntegral::field($fields)->where('user_id',$params['uid'])->page($params['page_no'],$params['page_size'])->order('create_time desc')->select()->each(function($item){ + $item['app'] = System::where('app_id',$item['appid'])->value('name'); + $item['type_text'] = $item->type_text; + })->toArray(); + $count = UserIntegral::field('id')->where('user_id',$params['uid'])->count(); + return [ + 'count' => $count, + 'page_no' => $params['page_no'], + 'page_size' => $params['page_size'], + 'lists' => $lists + ]; + } } \ No newline at end of file diff --git a/app/common/model/user/User.php b/app/common/model/user/User.php index abf90b4f..fb062193 100644 --- a/app/common/model/user/User.php +++ b/app/common/model/user/User.php @@ -3,22 +3,76 @@ namespace app\common\model\user; use app\common\model\BaseModel; +use think\facade\Db; class User extends BaseModel { protected $name = 'user'; // 获取用户状态 - public function getUserStatusTextAttr($value,$data): string + public function getStatusTextAttr($value,$data): string { - $user_status = [0=>'正常',1=>'冻结',2=>'删除']; - return $user_status[$data['user_status']]; + $status = [0=>'正常',1=>'冻结',2=>'删除']; + return $status[$data['status']]; } // 获取用户性别 - public function getUserGenderTextAttr($value,$data): string + public function getGenderTextAttr($value,$data): string { - $user_gender = [0=>'男',1=>'女',2=>'未知']; - return $user_gender[$data['user_gender']]; + $gender = [0=>'男',1=>'女',2=>'未知']; + return $gender[$data['gender']]; + } + + public function getProvinceTextAttr($value,$data): string { + $data = Db::name('geo_province')->where('province_code',$data['province'])->findOrEmpty(); + if(empty($data)){ + return ''; + } + return $data['province_name']; + } + + public function getCityTextAttr($value,$data): string { + $data = Db::name('geo_city')->where('city_code',$data['city'])->findOrEmpty(); + if(empty($data)){ + return ''; + } + return $data['city_name']; + } + + public function getAreaTextAttr($value,$data): string { + $data = Db::name('geo_area')->where('area_code',$data['area'])->findOrEmpty(); + if(empty($data)){ + return ''; + } + return $data['area_name']; + } + + public function getStreetTextAttr($value,$data): string { + $data = Db::name('geo_street')->where('street_code',$data['street'])->findOrEmpty(); + if(empty($data)){ + return ''; + } + return $data['street_name']; + } + + public function getVillageTextAttr($value,$data): string { + $data = Db::name('geo_village')->where('village_code',$data['village'])->findOrEmpty(); + if(empty($data)){ + return ''; + } + return $data['village_name']; + } + + public function getBrigadeTextAttr($value,$data): string { + $data = Db::name('geo_brigade')->where('id',$data['brigade'])->findOrEmpty(); + if(empty($data)){ + return ''; + } + return $data['brigade_name']; + } + + public function getLastLoginTimeAttr($value): string + { + return date('Y-m-d H:i:s',$value); } } \ No newline at end of file diff --git a/app/common/model/user/UserBalance.php b/app/common/model/user/UserBalance.php index 1d5b426b..10266586 100644 --- a/app/common/model/user/UserBalance.php +++ b/app/common/model/user/UserBalance.php @@ -16,7 +16,7 @@ class UserBalance extends BaseModel public function getPayTypeTextAttr($value,$data): string { - $pay_type = [ 0=>'微信支付', 2=>'支付宝支付', 3=>'银行卡支付', 4=>'余额支付', 5=>'其他']; + $pay_type = [ 0=>'微信支付', 1=>'支付宝支付', 2=>'银行卡支付', 3=>'余额支付', 4=>'其他']; return $pay_type[$data['pay_type']]; } } \ No newline at end of file diff --git a/app/common/validate/user/UserBalanceValidate.php b/app/common/validate/user/UserBalanceValidate.php index cd9b9014..83ff75c9 100644 --- a/app/common/validate/user/UserBalanceValidate.php +++ b/app/common/validate/user/UserBalanceValidate.php @@ -12,8 +12,11 @@ class UserBalanceValidate extends BaseValidate 'record_table' => 'require', 'amount' => 'require|float|gt:0', 'type' => 'require|in:0,1', - 'pay_type' => 'require|in:0,1,2,3,4,5', + 'pay_type' => 'require|in:0,1,2,3,4', 'mark' => 'require', + 'uid' => 'require', + 'page_no' => 'require|number|gt:0', + 'page_size' => 'require|number|gt:0' ]; protected $message = [ @@ -28,8 +31,20 @@ class UserBalanceValidate extends BaseValidate 'pay_type.require' => '请选择支付方式', 'pay_type.in' => '支付方式值错误', 'mark.require' => '请填写金额变更具体详情', + 'uid.require' => '缺少用户id', + 'page_no.require' => '缺少分页页码', + 'page_no.number' => '分页页码数据格式错误', + 'page_no.gt' => '分页页码必须大于0', + 'page_size.require' => '缺少分页条数', + 'page_size.number' => '分页条数数据格式错误', + 'page_size.gt' => '分页条数必须大于0', ]; + public function sceneList(): UserBalanceValidate + { + return $this->only(['uid','page_no','page_size']); + } + public function sceneAdd(): UserBalanceValidate { return $this->only(['record_id','record_table','amount','type','pay_type','mark']); diff --git a/app/common/validate/user/UserIntegralValidate.php b/app/common/validate/user/UserIntegralValidate.php index 97fcee72..715a7c2e 100644 --- a/app/common/validate/user/UserIntegralValidate.php +++ b/app/common/validate/user/UserIntegralValidate.php @@ -13,20 +13,35 @@ class UserIntegralValidate extends BaseValidate 'amount' => 'require|float|gt:0', 'type' => 'require|in:0,1', 'mark' => 'require', + 'uid' => 'require', + 'page_no' => 'require|number|gt:0', + 'page_size' => 'require|number|gt:0' ]; protected $message = [ 'id.require' => '缺少数据主键', 'record_id.require' => '请填写本地记录id', 'record_table.require' => '请填写本地记录表名', - 'amount.require' => '请填写金额', - 'amount.float' => '金额数据格式错误', - 'amount.gt' => '金额必须大于零', - 'type.require' => '请选择金额变更类型', - 'type.in' => '金额变更类型值错误', - 'mark.require' => '请填写金额变更具体详情', + 'amount.require' => '请填写积分数目', + 'amount.float' => '积分数目数据格式错误', + 'amount.gt' => '积分数目必须大于零', + 'type.require' => '请选择积分数目变更类型', + 'type.in' => '积分数目变更类型值错误', + 'mark.require' => '请填写积分数目变更具体详情', + 'uid.require' => '缺少用户id', + 'page_no.require' => '缺少分页页码', + 'page_no.number' => '分页页码数据格式错误', + 'page_no.gt' => '分页页码必须大于0', + 'page_size.require' => '缺少分页条数', + 'page_size.number' => '分页条数数据格式错误', + 'page_size.gt' => '分页条数必须大于0', ]; + public function sceneList(): UserIntegralValidate + { + return $this->only(['uid','page_no','page_size']); + } + public function sceneAdd(): UserIntegralValidate { return $this->only(['record_id','record_table','amount','type','mark']); diff --git a/app/common/validate/user/UserValidate.php b/app/common/validate/user/UserValidate.php index cac9e510..88b78a76 100644 --- a/app/common/validate/user/UserValidate.php +++ b/app/common/validate/user/UserValidate.php @@ -9,6 +9,7 @@ use app\common\validate\BaseValidate; class UserValidate extends BaseValidate { protected $rule = [ + 'id' => 'require', 'phone' => 'require|mobile|unique:user', 'code' => 'require', 'age' => 'number|gt:0', @@ -24,6 +25,7 @@ class UserValidate extends BaseValidate ]; protected $message = [ + 'id.require' => '请选择用户', 'phone.require' => '请输入手机号码', 'phone.mobile' => '请输入正确的手机号码', 'phone.unique' => '该手机号码已注册', @@ -42,6 +44,11 @@ class UserValidate extends BaseValidate 'brigade.number' => '小组编码值错误', ]; + public function sceneDetail(): UserValidate + { + return $this->only(['id']); + } + public function sceneChangeMobile(): UserValidate { return $this->only(['phone','code']);