$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 (\Throwable $e) { Db::rollback(); throw new BusinessException($e->getMessage()); } } public static function checkAddress(array $params) { $user_ship = $params['user_ship'] ?? 0; if ($user_ship == 2) { if (!isset($params['village'])) { throw new BusinessException('请设置村参数'); } $arr = User::where('user_ship', $user_ship)->alias('user')->join('user_address address', 'user.id=address.uid and village=' . $params['village'])->find(); if ($arr) { throw new BusinessException('该区域已有村长请重新选择'); } } elseif ($user_ship == 3) { if (!isset($params['brigade'])) { throw new BusinessException('请设置队参数'); } $arr = User::where('user_ship', $user_ship)->alias('user')->join('user_address address', 'user.id=address.uid and village=' . $params['village'] . ' and brigade=' . $params['brigade'])->find(); if ($arr) { throw new BusinessException('该区域已有队长请重新选择'); } } return true; } public static function StoreAdd(array $params) { self::checkAddress($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'], 'label_id' => $params['label_id'] ?? 0, 'store_id' => $params['store_id'] ?? 0, ]; if (isset($params['user_ship']) && $params['user_ship'] == 4) { $data['user_ship'] = 4; } $res = User::create($data); UserCreateLog::create([ 'uid' => $res['id'], 'create_uid' => $params['create_uid'] ?? 0, 'store_id' => $params['store_id'] ?? 0, 'staff_id' => $params['staff_id'] ?? 0, 'user_ship' => $data['user_ship'] ?? 0, ]); 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(); throw new BusinessException($e->getMessage()); } } /** * @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(); throw new BusinessException($e->getMessage()); } } /** * @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', 'user_ship', '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['user_ship_name'] = $user->user_ship > 0 ? UserShip::where('id', $user->user_ship)->value('title') : "一般用户"; 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 PurchaseFunds(array $params) { $find = User::where(['id' => $params['id']])->find(); Db::startTrans(); try { $capitalFlowDao = new CapitalFlowLogic($find, 'user'); if ($params['type'] == 1) { $capitalFlowDao->userIncome('system_purchase_add', 'system', 0, $params['purchase_funds'],$params['mark']??'',1); User::where(['id' => $params['id']])->update(['purchase_funds' => bcadd($params['purchase_funds'], $find['purchase_funds'], 2)]); } else { $capitalFlowDao->userExpense('system_purchase_dec', 'system', 0, $params['purchase_funds'],$params['mark']??''); User::where(['id' => $params['id']])->update(['purchase_funds' =>bcsub($find['purchase_funds'],$params['purchase_funds'], 2)]); } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); throw new BusinessException($e->getMessage()); } } /** * 更新余额 */ public static function nowMoney(array $params) { $find = User::where(['id' => $params['id']])->find(); Db::startTrans(); try { $capitalFlowDao = new CapitalFlowLogic($find, 'user'); if ($params['type'] == 1) { $capitalFlowDao->userIncome('system_balance_add', 'system', 0, $params['now_money'],$params['mark']??''); User::where(['id' => $params['id']])->update(['now_money' => bcadd($params['now_money'], $find['now_money'], 2)]); } else { $capitalFlowDao->userExpense('system_balance_reduce', 'system', 0, $params['now_money'],$params['mark']??''); User::where(['id' => $params['id']])->update(['now_money' =>bcsub($find['now_money'],$params['now_money'], 2)]); } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); throw new BusinessException($e->getMessage()); } } public static function dealDetails($params) { switch ($params['type']) { case 1: //采购款明细 $categories = ['user_balance_recharge', 'user_order_purchase_pay', 'system_purchase_add', 'user_balance_recharge_refund','purchase_refund','system_purchase_dec']; $query = CapitalFlow::where('uid', $params['id']) ->whereIn('category', $categories); $count = $query->count(); $data = $query ->page($params['page_no'], $params['page_size']) ->order('id', 'desc') ->select()->toArray(); foreach ($data as &$value) { if (in_array($value['category'],['user_order_purchase_pay','purchase_refund'])) { $value['order_sn'] = StoreOrder::where('id', $value['link_id'])->value('order_id'); } elseif ($value['category'] == 'user_balance_recharge') { $value['order_sn'] = UserRecharge::where('id', $value['link_id'])->value('order_id'); } } break; case 2: //余额明细 $category = ['system_balance_add', 'user_order_balance_pay','now_money_refund','user_withdrawal']; $query = CapitalFlow::where('uid', $params['id']) ->whereIn('category', $category); $count = $query->count(); $data = $query ->page($params['page_no'], $params['page_size']) ->order('id', 'desc') ->select()->toArray(); foreach ($data as &$value) { $value['order_sn'] = StoreOrder::where('id', $value['link_id'])->value('order_id'); } break; case 3: //礼品券明细 $query = UserSign::where(['uid' => $params['id']]); $count = $query->count(); $data = $query ->page($params['page_no'], $params['page_size']) ->order('id', 'desc') ->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']) ->order('id', 'desc') ->select()->toArray(); foreach ($data as &$value) { if ($value['status'] == 0) { $value['title'] = "购买商品" . $value['all'] . "元获得" . $value['number'] . "元返还金"; } else { //退回到余额、微信、采购款 $back = self::dealTitleCate($value['pay_type']); $value['title'] = "返还金解冻" . $value['number'] . "元退回到" . $back; } } break; default: $data = []; $count = 0; } return [ 'lists' => $data, 'count' => $count ]; } public static function giftList($uid, $params) { $query = StoreProductGift::with(['store', 'user', 'goodsName'])->where('uid', $uid); $count = $query->count(); $list = $query->page($params['page_no'], $params['page_size']) ->order('id', 'desc') ->select()->toArray(); return [ 'lists' => $list, 'count' => $count ]; } public static function dealTitleCate($pay_type) { switch ($pay_type) { case 18: $title = "采购款"; break; case 17: $title = "现金"; break; case 3: $title = "余额"; break; case 7: case 9: $title = "微信"; break; case 13: $title = "支付宝"; break; default: $title = "默认"; } return $title; } }