240 lines
8.1 KiB
PHP
240 lines
8.1 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | likeadmin快速开发前后端分离管理后台(PHP版)
|
||
// +----------------------------------------------------------------------
|
||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||
// | 开源版本可自由商用,可去除界面版权logo
|
||
// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
|
||
// | github下载:https://github.com/likeshop-github/likeadmin
|
||
// | 访问官网:https://www.likeadmin.cn
|
||
// | likeadmin团队 版权所有 拥有最终解释权
|
||
// +----------------------------------------------------------------------
|
||
// | author: likeadminTeam
|
||
// +----------------------------------------------------------------------
|
||
namespace app\admin\logic\user;
|
||
|
||
use app\common\enum\OrderEnum;
|
||
use app\common\enum\user\UserTerminalEnum;
|
||
use app\common\enum\YesNoEnum;
|
||
use app\common\logic\BaseLogic;
|
||
use app\common\model\finance\CapitalFlow;
|
||
use app\common\model\store_finance_flow\StoreFinanceFlow;
|
||
use app\common\model\user\User;
|
||
use app\common\model\user\UserAddress;
|
||
use app\common\model\user\UserRecharge;
|
||
use app\common\model\user_label\UserLabel;
|
||
use app\common\model\user_sign\UserSign;
|
||
use app\common\model\vip_flow\VipFlow;
|
||
use think\facade\Db;
|
||
use app\common\service\FileService;
|
||
use Webman\Config;
|
||
|
||
/**
|
||
* 用户逻辑层
|
||
* Class UserLogic
|
||
* @package app\admin\logic\user
|
||
*/
|
||
class UserLogic extends BaseLogic
|
||
{
|
||
/**
|
||
* @notes 添加用户列表
|
||
* @param array $params
|
||
* @return bool
|
||
* @author likeadmin
|
||
* @date 2024/04/25 10:20
|
||
*/
|
||
public static function add(array $params)
|
||
{
|
||
$passwordSalt = Config::get('project.unique_identification');
|
||
$password = create_password($params['password'], $passwordSalt);
|
||
$defaultAvatar = config('project.default_image.admin_avatar');
|
||
$avatar = !empty($params['avatar']) ? FileService::setFileUrl($params['avatar']) : $defaultAvatar;
|
||
|
||
Db::startTrans();
|
||
try {
|
||
$res=User::create([
|
||
'avatar' => $avatar,
|
||
'real_name' => $params['real_name'],
|
||
'nickname' => $params['nickname'],
|
||
'account' => $params['account'],
|
||
'password' => $password,
|
||
'mobile' => $params['mobile'],
|
||
'sex' => $params['sex'],
|
||
'is_disable' => $params['is_disable'],
|
||
]);
|
||
|
||
Db::commit();
|
||
return $res;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
self::setError($e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public static function StoreAdd(array $params)
|
||
{
|
||
$passwordSalt = Config::get('project.unique_identification');
|
||
$password = create_password(123456, $passwordSalt);
|
||
$defaultAvatar = config('project.default_image.admin_avatar');
|
||
$avatar = !empty($params['avatar']) ? FileService::setFileUrl($params['avatar']) : $defaultAvatar;
|
||
|
||
Db::startTrans();
|
||
try {
|
||
$data=[
|
||
'avatar' => $avatar,
|
||
'real_name' => $params['real_name']??"",
|
||
'nickname' => '用户'.time(),
|
||
'account' => $params['mobile'],
|
||
'password' => $password,
|
||
'mobile' => $params['mobile'],
|
||
'user_ship' => $params['user_ship']??0,
|
||
|
||
];
|
||
$res=User::create($data);
|
||
UserAddress::create([
|
||
'uid' => $res['id'],
|
||
'real_name' => $params['real_name']??"",
|
||
'mobile' => $params['mobile'],
|
||
'province' => $params['province'],
|
||
'city' => $params['city'],
|
||
'area' => $params['area'],
|
||
'street' => $params['street'],
|
||
'village' => $params['village'],
|
||
'brigade' => $params['brigade'],
|
||
'is_default' => 1,
|
||
]);
|
||
Db::commit();
|
||
return $res;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
self::setError($e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
/**
|
||
* @notes 编辑用户列表
|
||
* @param array $params
|
||
* @return bool
|
||
* @author likeadmin
|
||
* @date 2024/04/25 10:20
|
||
*/
|
||
public static function edit(array $params): bool
|
||
{
|
||
Db::startTrans();
|
||
try {
|
||
User::where('id', $params['id'])->update([
|
||
// 'avatar' => $params['avatar'] ?? '',
|
||
// 'real_name' => $params['real_name'],
|
||
// 'nickname' => $params['nickname'],
|
||
// 'account' => $params['account'],
|
||
// 'password' => $params['password'] ?? '',
|
||
// 'mobile' => $params['mobile'] ?? '',
|
||
// 'sex' => $params['sex'] ?? 0,
|
||
// 'is_disable' => $params['is_disable'] ?? 0,
|
||
'label_id'=>$params['label_id']
|
||
]);
|
||
|
||
Db::commit();
|
||
return true;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
self::setError($e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @notes 用户详情
|
||
* @param int $userId
|
||
* @return array
|
||
* @author 乔峰
|
||
* @date 2022/9/22 16:32
|
||
*/
|
||
public static function detail(int $userId): array
|
||
{
|
||
$field = [
|
||
'id', 'account', 'nickname', 'avatar', 'real_name','integral','label_id',
|
||
'sex', 'mobile', 'create_time', 'login_time', 'channel','now_money','purchase_funds'
|
||
];
|
||
|
||
$user = User::where(['id' => $userId])->field($field)
|
||
->findOrEmpty();
|
||
|
||
$user['channel'] = UserTerminalEnum::getTermInalDesc($user['channel']);
|
||
$user->sex = $user->getData('sex');
|
||
$user['number']=StoreFinanceFlow::where('other_uid',$userId)->where(['status'=>0,'financial_pm'=>1,'type'=>1])->sum('number');
|
||
$user['label_name']=$user->label_id?UserLabel::where('label_id',$user->label_id)->value('label_name'):"";
|
||
return $user->toArray();
|
||
}
|
||
|
||
|
||
/**
|
||
* @notes 更新用户信息
|
||
* @param array $params
|
||
* @return User
|
||
* @author 乔峰
|
||
* @date 2022/9/22 16:38
|
||
*/
|
||
public static function setUserInfo(array $params)
|
||
{
|
||
return User::update([
|
||
'id' => $params['id'],
|
||
$params['field'] => $params['value']
|
||
]);
|
||
}
|
||
|
||
public static function dealDetails($params)
|
||
{
|
||
switch ($params['type']){
|
||
case 1:
|
||
//采购款明细
|
||
$query =CapitalFlow::where(['uid'=>$params['id']]);
|
||
$count = $query->count();
|
||
$data = $query
|
||
->page($params['page_no'],$params['page_size'])
|
||
->select()->toArray();
|
||
break;
|
||
case 2:
|
||
//余额明细
|
||
|
||
$query = StoreFinanceFlow::with(['store'])
|
||
->where([
|
||
'other_uid'=>$params['id'],'financial_type'=> OrderEnum::VIP_ORDER_OBTAINS,
|
||
'financial_pm'=>YesNoEnum::YES
|
||
]);
|
||
$count = $query->count();
|
||
$data = $query
|
||
->page($params['page_no'],$params['page_size'])
|
||
->select()->toArray();
|
||
|
||
break;
|
||
case 3:
|
||
//礼品券明细
|
||
$query = UserSign::where(['uid'=>$params['id']]);
|
||
$count = $query->count();
|
||
$data =$query
|
||
->page($params['page_no'],$params['page_size'])
|
||
->select()->toArray();
|
||
break;
|
||
case 4:
|
||
//返还金明细 -todo back
|
||
$query = VipFlow::with('store')->where(['user_id'=>$params['id']]);
|
||
$count = $query->count();
|
||
$data = $query
|
||
->page($params['page_no'],$params['page_size'])
|
||
->select()->toArray();
|
||
break;
|
||
default:
|
||
$data = [];
|
||
$count = 0;
|
||
}
|
||
return [
|
||
'lists' => $data,
|
||
'count' => $count
|
||
];
|
||
|
||
|
||
}
|
||
}
|