WokerTask/app/adminapi/logic/user/UserLogic.php

193 lines
6.4 KiB
PHP
Raw Normal View History

2023-12-27 14:06:33 +08:00
<?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\adminapi\logic\user;
use app\common\enum\user\AccountLogEnum;
use app\common\enum\user\UserTerminalEnum;
use app\common\logic\AccountLogLogic;
use app\common\logic\BaseLogic;
use app\common\model\contract\Contract;
use app\common\model\dict\DictData;
use app\common\model\user\User;
use app\common\service\ConfigService;
use think\facade\Config;
use think\facade\Db;
/**
* 用户逻辑层
* Class UserLogic
* @package app\adminapi\logic\user
*/
class UserLogic extends BaseLogic
{
/**
* @notes 用户详情
* @param int $userId
* @return array
* @author 段誉
* @date 2022/9/22 16:32
*/
public static function detail(int $userId): array
{
// $field = [
// 'id', 'sn', 'account', 'nickname', 'avatar', 'real_name',
// 'sex', 'mobile', 'create_time', 'login_time', 'channel',
// 'user_money',
// ];
$user = User::where(['id' => $userId])
->findOrEmpty();
$user['channel'] = UserTerminalEnum::getTermInalDesc($user['channel']);
// $user->sex = $user->getData('sex');
$user['qualification']=json_decode($user->qualification,true);
if($user->is_contract==1){
$user['contract']=Contract::where(['type'=>2,'party_b'=>$userId])->with(['party_a_info','contractType'])->find();
}
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']
]);
}
/**
* @notes 调整用户余额
* @param array $params
* @return bool|string
* @author 段誉
* @date 2023/2/23 14:25
*/
public static function adjustUserMoney(array $params)
{
Db::startTrans();
try {
$user = User::find($params['user_id']);
if (AccountLogEnum::INC == $params['action']) {
//调整可用余额
$user->user_money += $params['num'];
$user->save();
//记录日志
AccountLogLogic::add(
$user->id,
AccountLogEnum::UM_INC_ADMIN,
AccountLogEnum::INC,
$params['num'],
'',
$params['remark'] ?? ''
);
} else {
$user->user_money -= $params['num'];
$user->save();
//记录日志
AccountLogLogic::add(
$user->id,
AccountLogEnum::UM_DEC_ADMIN,
AccountLogEnum::DEC,
$params['num'],
'',
$params['remark'] ?? ''
);
}
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
return $e->getMessage();
}
}
public static function addUser($params)
{
// 手机号已被使用
$mobileUser = User::where(['account' => $params['account']])->find();
if (!empty($mobileUser)) {
self::setError('手机号已被注册');
return false;
}
$count = User::where('company_id', $params['company_id'])->count();
$value = DictData::where('id', 28)->value('value');
if ($count >= $value) {
self::setError('你创建的账号已达上限');
return false;
}
$group_id = $params['group_id'];
// 每个公司市场部长只有1个
if($group_id == 16) {
$marketManger = User::where(['group_id' =>$group_id,'company_id'=>$params['company_id']])->findOrEmpty();
if (!$marketManger->isEmpty()) {
self::setError('公司已创建市场部长账号');
return false;
}
}
// 每个公司服务部长只有1个
if($group_id == 14) {
$marketManger = User::where(['group_id' =>$group_id,'company_id'=>$params['company_id']])->findOrEmpty();
if (!$marketManger->isEmpty()) {
self::setError('公司已创建服务部长账号');
return false;
}
}
$userSn = User::createUserSn();
$passwordSalt = Config::get('project.unique_identification');
$password = create_password(123456, $passwordSalt);
if ($params['avatar'] != '') {
$avatar = $params['avatar'];
} else {
$avatar = ConfigService::get('default_image', 'user_avatar');
}
User::create([
'sn' => $userSn,
'avatar' => $avatar,
'is_captain' => $group_id == 2? 1: 0,
'nickname' => $params['nickname'],
'account' => $params['account'],
'mobile' => $params['account'],
'id_card' => $params['id_card'],
'password' => $password,
'channel' => 0,
'sex' => $params['sex'],
'province' => $params['province'],
'city' => $params['city'],
'area' => $params['area'],
'street' => $params['street'],
'village' => $params['village'],
'brigade' => $params['brigade'],
'address' => $params['address'],
'qualification' => json_encode($params['qualification']),
'company_id' => $params['company_id'],
'group_id' => $group_id,
]);
return true;
}
}