$userId])->field($field) ->findOrEmpty(); $user['channel'] = UserTerminalEnum::getTermInalDesc($user['channel']); $user->sex = $user->getData('sex'); //加载企业信息 $user['company_name'] = Surveys::where('user_id', $user['id'])->value('company_name') ?? ''; // 累计充值金额 $user['sum_price'] = GiftPackageOrder::where('user_id', $userId)->where('pay_status', 1)->sum('order_amount'); $user['orders'] = []; // 累计算力使用次数 $user['tokens_times'] = UserTokensLog::where('user_id', $userId)->where('task_id', '<>', '')->count('DISTINCT task_id'); 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(); } } /** * @notes 调整用户算力 * @param array $params * @return bool|string * @author 段誉 * @date 2023/2/23 14:25 */ public static function adjustUserTokens(array $params) { Db::startTrans(); try { $user = User::find($params['user_id']); if (AccountLogEnum::INC == $params['action']) { //调整可用余额 $user->tokens += $params['num']; $user->save(); //记录日志 AccountLogLogic::add( $user->id, AccountLogEnum::TOKENS_INC_ADMIN, AccountLogEnum::INC, $params['num'], '1', '', !empty($params['remark']) ? $params['remark'] : '管理员增加算力' ); } else { $user->tokens -= $params['num']; $user->save(); //记录日志 AccountLogLogic::add( $user->id, AccountLogEnum::TOKENS_DEC_ADMIN, AccountLogEnum::DEC, $params['num'], '1', '', !empty($params['remark']) ? $params['remark'] : '管理员扣除算力' ); } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); return $e->getMessage(); } } /** * @notes 更新用户信息 * @param array $params * @return User * @author 段誉 * @date 2022/9/22 16:38 */ public static function setUserPas(array $params) { $user = User::findOrEmpty($params['id']); if (empty($user)) { return false; } if (!empty($params['password'])) { $passwordSalt = Config::get('project.unique_identification'); $params['password'] = create_password($params['password'], $passwordSalt); } return User::update([ 'id' => $params['id'], 'password' => $params['password'] ]); } public static function createUser(array $params): bool { try { $userSn = User::createUserSn(); $passwordSalt = Config::get('project.unique_identification'); $password = create_password($params['password'], $passwordSalt); if ($params['password'] != $params['password_confirm']) { throw new Exception('两次密码不一致'); } $modelUser = new User(); $isMobile = $modelUser->where(['mobile' => $params['mobile']])->findOrEmpty(); if (!$isMobile->isEmpty()) { throw new Exception('手机已被占用,换一个吧!'); } if (empty($params['nickname'])) { $params['nickname'] = '用户' . $userSn; } if (empty($params['avatar'])) { $params['avatar'] = ConfigService::get('default_image', 'user_avatar'); } $user = User::create([ 'sn' => $userSn, 'avatar' => FileService::setFileUrl($params['avatar']), 'real_name' => $params['real_name'] ?? '', 'nickname' => $params['nickname'] ?? '', 'mobile' => $params['mobile'] ?? '', 'account' => $params['mobile'] ?? '', 'password' => $password, 'channel' => UserTerminalEnum::ADMIN, ]); return true; } catch (Exception $e) { self::setError($e->getMessage()); return false; } } }