Compare commits
3 Commits
5f28e53542
...
93ee31c9ee
Author | SHA1 | Date |
---|---|---|
weiz | 93ee31c9ee | |
unknown | e4f6a62b16 | |
unknown | 42af6df23e |
|
@ -5,6 +5,8 @@ namespace app\adminapi\controller\user;
|
||||||
use app\adminapi\controller\BaseAdminController;
|
use app\adminapi\controller\BaseAdminController;
|
||||||
use app\adminapi\lists\user\UserLists;
|
use app\adminapi\lists\user\UserLists;
|
||||||
use app\adminapi\logic\user\UserLogic;
|
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 app\common\validate\user\UserValidate;
|
||||||
use think\response\Json;
|
use think\response\Json;
|
||||||
|
|
||||||
|
@ -23,4 +25,22 @@ class UserController extends BaseAdminController
|
||||||
$detail = UserLogic::detail($params['id']);
|
$detail = UserLogic::detail($params['id']);
|
||||||
return $this->success('', $detail);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -12,27 +12,26 @@ class UserLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||||
public function setSearch(): array
|
public function setSearch(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'=' => ['user_status'],
|
'=' => ['status'],
|
||||||
'%like%' => ['user_account','user_nickname','user_phone'],
|
'%like%' => ['nick_name','phone'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取用户列表
|
// 获取用户列表
|
||||||
public function lists(): array
|
public function lists(): array
|
||||||
{
|
{
|
||||||
$field = "id,user_avatar,user_account,user_nickname,user_phone,user_gender,user_status,create_time";
|
$field = "id,phone,avatar,nick_name,real_name,id_card,gender,age,total_balance,total_integral,status,create_time";
|
||||||
$lists = User::field($field)->where($this->searchWhere)->where('user_status','<>',2)
|
return User::field($field)->where($this->searchWhere)->where('status','<>',2)
|
||||||
->limit($this->limitOffset, $this->limitLength)
|
->limit($this->limitOffset, $this->limitLength)
|
||||||
->order('id desc')->select()->each(function($item){
|
->order('id desc')->select()->each(function($item){
|
||||||
$item['user_status_text'] = $item->user_status_text;
|
$item['status_text'] = $item->status_text;
|
||||||
$item['user_gender_text'] = $item->user_gender_text;
|
$item['gender_text'] = $item->gender_text;
|
||||||
})->toArray();
|
})->toArray();
|
||||||
return $lists;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取数量
|
// 获取数量
|
||||||
public function count(): int
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,17 +3,73 @@
|
||||||
namespace app\adminapi\logic\user;
|
namespace app\adminapi\logic\user;
|
||||||
|
|
||||||
use app\common\logic\BaseLogic;
|
use app\common\logic\BaseLogic;
|
||||||
|
use app\common\model\systems\System;
|
||||||
use app\common\model\user\User;
|
use app\common\model\user\User;
|
||||||
|
use app\common\model\user\UserBalance;
|
||||||
|
use app\common\model\user\UserIntegral;
|
||||||
|
|
||||||
class UserLogic extends BaseLogic
|
class UserLogic extends BaseLogic
|
||||||
{
|
{
|
||||||
//用户详情
|
//用户详情
|
||||||
public static function detail(int $userId): array
|
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::field($field)->where(['id' => $userId])->findOrEmpty();
|
||||||
$user['user_gender_text'] = $user->user_gender_text;
|
$user['address'] = $user->province_text.$user->city_text.$user->area_text.$user->street_text.$user->village_text.$user->brigade_text.$user->address;
|
||||||
$user['user_status_text'] = $user->user_status_text;
|
$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();
|
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
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -3,22 +3,76 @@
|
||||||
namespace app\common\model\user;
|
namespace app\common\model\user;
|
||||||
|
|
||||||
use app\common\model\BaseModel;
|
use app\common\model\BaseModel;
|
||||||
|
use think\facade\Db;
|
||||||
|
|
||||||
class User extends BaseModel
|
class User extends BaseModel
|
||||||
{
|
{
|
||||||
protected $name = 'user';
|
protected $name = 'user';
|
||||||
|
|
||||||
// 获取用户状态
|
// 获取用户状态
|
||||||
public function getUserStatusTextAttr($value,$data): string
|
public function getStatusTextAttr($value,$data): string
|
||||||
{
|
{
|
||||||
$user_status = [0=>'正常',1=>'冻结',2=>'删除'];
|
$status = [0=>'正常',1=>'冻结',2=>'删除'];
|
||||||
return $user_status[$data['user_status']];
|
return $status[$data['status']];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取用户性别
|
// 获取用户性别
|
||||||
public function getUserGenderTextAttr($value,$data): string
|
public function getGenderTextAttr($value,$data): string
|
||||||
{
|
{
|
||||||
$user_gender = [0=>'男',1=>'女',2=>'未知'];
|
$gender = [0=>'男',1=>'女',2=>'未知'];
|
||||||
return $user_gender[$data['user_gender']];
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,7 +16,7 @@ class UserBalance extends BaseModel
|
||||||
|
|
||||||
public function getPayTypeTextAttr($value,$data): string
|
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']];
|
return $pay_type[$data['pay_type']];
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,8 +12,11 @@ class UserBalanceValidate extends BaseValidate
|
||||||
'record_table' => 'require',
|
'record_table' => 'require',
|
||||||
'amount' => 'require|float|gt:0',
|
'amount' => 'require|float|gt:0',
|
||||||
'type' => 'require|in:0,1',
|
'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',
|
'mark' => 'require',
|
||||||
|
'uid' => 'require',
|
||||||
|
'page_no' => 'require|number|gt:0',
|
||||||
|
'page_size' => 'require|number|gt:0'
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $message = [
|
protected $message = [
|
||||||
|
@ -28,8 +31,20 @@ class UserBalanceValidate extends BaseValidate
|
||||||
'pay_type.require' => '请选择支付方式',
|
'pay_type.require' => '请选择支付方式',
|
||||||
'pay_type.in' => '支付方式值错误',
|
'pay_type.in' => '支付方式值错误',
|
||||||
'mark.require' => '请填写金额变更具体详情',
|
'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
|
public function sceneAdd(): UserBalanceValidate
|
||||||
{
|
{
|
||||||
return $this->only(['record_id','record_table','amount','type','pay_type','mark']);
|
return $this->only(['record_id','record_table','amount','type','pay_type','mark']);
|
||||||
|
|
|
@ -13,20 +13,35 @@ class UserIntegralValidate extends BaseValidate
|
||||||
'amount' => 'require|float|gt:0',
|
'amount' => 'require|float|gt:0',
|
||||||
'type' => 'require|in:0,1',
|
'type' => 'require|in:0,1',
|
||||||
'mark' => 'require',
|
'mark' => 'require',
|
||||||
|
'uid' => 'require',
|
||||||
|
'page_no' => 'require|number|gt:0',
|
||||||
|
'page_size' => 'require|number|gt:0'
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $message = [
|
protected $message = [
|
||||||
'id.require' => '缺少数据主键',
|
'id.require' => '缺少数据主键',
|
||||||
'record_id.require' => '请填写本地记录id',
|
'record_id.require' => '请填写本地记录id',
|
||||||
'record_table.require' => '请填写本地记录表名',
|
'record_table.require' => '请填写本地记录表名',
|
||||||
'amount.require' => '请填写金额',
|
'amount.require' => '请填写积分数目',
|
||||||
'amount.float' => '金额数据格式错误',
|
'amount.float' => '积分数目数据格式错误',
|
||||||
'amount.gt' => '金额必须大于零',
|
'amount.gt' => '积分数目必须大于零',
|
||||||
'type.require' => '请选择金额变更类型',
|
'type.require' => '请选择积分数目变更类型',
|
||||||
'type.in' => '金额变更类型值错误',
|
'type.in' => '积分数目变更类型值错误',
|
||||||
'mark.require' => '请填写金额变更具体详情',
|
'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
|
public function sceneAdd(): UserIntegralValidate
|
||||||
{
|
{
|
||||||
return $this->only(['record_id','record_table','amount','type','mark']);
|
return $this->only(['record_id','record_table','amount','type','mark']);
|
||||||
|
|
|
@ -9,6 +9,7 @@ use app\common\validate\BaseValidate;
|
||||||
class UserValidate extends BaseValidate
|
class UserValidate extends BaseValidate
|
||||||
{
|
{
|
||||||
protected $rule = [
|
protected $rule = [
|
||||||
|
'id' => 'require',
|
||||||
'phone' => 'require|mobile|unique:user',
|
'phone' => 'require|mobile|unique:user',
|
||||||
'code' => 'require',
|
'code' => 'require',
|
||||||
'age' => 'number|gt:0',
|
'age' => 'number|gt:0',
|
||||||
|
@ -24,6 +25,7 @@ class UserValidate extends BaseValidate
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $message = [
|
protected $message = [
|
||||||
|
'id.require' => '请选择用户',
|
||||||
'phone.require' => '请输入手机号码',
|
'phone.require' => '请输入手机号码',
|
||||||
'phone.mobile' => '请输入正确的手机号码',
|
'phone.mobile' => '请输入正确的手机号码',
|
||||||
'phone.unique' => '该手机号码已注册',
|
'phone.unique' => '该手机号码已注册',
|
||||||
|
@ -42,6 +44,11 @@ class UserValidate extends BaseValidate
|
||||||
'brigade.number' => '小组编码值错误',
|
'brigade.number' => '小组编码值错误',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function sceneDetail(): UserValidate
|
||||||
|
{
|
||||||
|
return $this->only(['id']);
|
||||||
|
}
|
||||||
|
|
||||||
public function sceneChangeMobile(): UserValidate
|
public function sceneChangeMobile(): UserValidate
|
||||||
{
|
{
|
||||||
return $this->only(['phone','code']);
|
return $this->only(['phone','code']);
|
||||||
|
|
Loading…
Reference in New Issue