when($request->filled('id'), fn ($q) => $q->where('id', $request->id)) ->when($request->filled('mobile'), fn ($q) => $q->where('mobile', $request->mobile)) ->when($request->filled('username'), fn ($q) => $q->where('username','like', "%$request->username%")); } // 查询列表 public function select(Request $request) { $user_id = $request->user()->id; $page = new Pages($request, AdminUsers::query()); $page->withRelations(['member_level']); $page->before(function ($query) use ($request, $user_id) { if (!AdminUsers::isAdmin($user_id)) { $directChildrens = AdminUsers::getDirectChildrens($user_id); // 获取全部下级,不包括自己 $query->whereIn('id', $directChildrens); } $query->select(AdminUsers::$selectFields); return $this->whens($query, $request); }); $page->after(function ($data) use ($user_id) { if (!AdminUsers::isAdmin($user_id)) { $data->makeHidden(['id']); } }); $result = $page->paginate(); return $result; } // 导出 public function export(Request $request) { $request->validate([ 'created_at_start' => 'required', 'created_at_end' => 'required', ]); $header = [ '用户编码' => 'user_id', '用户名' => 'username', '头衔' => 'member_level_id', '手机号码' => 'mobile', '地址' => 'address', '剩余佣金' => 'yj', '邀请码' => 'share_code', '联系电话' => 'contact_number', '号卡抽成类型' => 'yj_type', '号卡抽成比例' => 'yj_p', '号卡抽成金额' => 'yj_a', '宽带抽成类型' => 'kd_yj_type', '宽带抽成比例' => 'kd_yj_p', '宽带抽成金额' => 'kd_yj_a', '设备抽成类型' => 'iot_yj_type', '设备抽成比例' => 'iot_yj_p', '号卡默认抽成类型' => 'default_yj_type', '号卡默认抽成比例' => 'default_yj_p', '号卡默认抽成金额' => 'default_yj_a', '宽带默认抽成类型' => 'default_kd_yj_type', '宽带默认抽成比例' => 'default_kd_yj_p', '宽带默认抽成金额' => 'default_kd_yj_a', '设备默认抽成类型' => 'default_iot_yj_type', '设备默认抽成比例' => 'default_iot_yj_p', ]; sys_log($request, '用户导出', '用户管理'); $user_id = $request->user()->id; $query = AdminUsers::select(array_values($header)); if (!AdminUsers::isAdmin($user_id)) { $directChildrens = AdminUsers::getDirectChildrens($user_id); // 获取全部下级,不包括自己 $query->whereIn('id', $directChildrens); } $query = $this->whens($query, $request); $query->orderBy('created_at', 'desc'); $getEnValue = $this->getEnValue(); $excel = new SpoutExport($header); $excel->setQuery($query); $result = $excel->setEnum($getEnValue) ->setProcessStyle() // ->setDownload() ->spoutToExcel('团队列表'); // return $result; return $result ? success($result['url']) : error(); } // 导入 public function import(Request $request) { $header = [ '用户名' => 'username', '密码' => 'password', '名称' => 'name', '头像' => 'avatar', '真实密码' => 'real_password', '联系电话' => 'mobile', '地址' => 'address', '剩余佣金' => 'yj', '佣金比例' => 'yj_p', '已提现佣金' => 'al_yj', '是否是代理' => 'is_agent', '邀请码' => 'share_code', '角色' => 'role_ids', '代理等级:0合伙人 1代理' => 'agent_level', '上级id' => 'pid', '客服类型 1:链接 2:图片' => 'kefu_type', '客服链接' => 'kefu_url', '客服图片' => 'kefu_image', '小店头像图片' => 'small_shop_image', '联系电话' => 'contact_number', '联系二维码' => 'contact_qrcode', '集客仓用户id' => 'jkc_user_id', '分成类型 1:比例 2:金额' => 'yj_type', '合伙人默认抽成比例' => 'default_yj_p', '备注' => 'remark', '删除时间' => 'deleted_at', '下级分销是否强制关注' => 'is_follow', '是否发送套餐短信' => 'is_package_sms', '是否实名' => 'is_real', '身份证姓名' => 'id_name', '身份证号码' => 'id_card', '身份证家庭地址' => 'id_card_address', '身份证正面' => 'id_card_front', '身份证反面' => 'id_card_back', '合伙人运营' => 'agent_operate', '合伙人客服' => 'agent_kefu', '合伙人主播' => 'agent_anchor', '公众号open_id' => 'gzh_open_id', '小程序open_id' => 'xcx_open_id', 'unionid' => 'unionid', '是否接口提单' => 'is_api', '状态' => 'status', '合伙人默认抽成类型 0不启用 1比例 2金额' => 'default_yj_type', '套餐分成开关 0关 1开(默认)' => 'package_yj_status', '显示首冲信息开关' => 'show_first_charge', '会员等级id' => 'member_level_id', '是否允许下单 0禁止下单 1可以下单' => 'is_put_order', '设备抽成类型 1比例 2金额' => 'iot_yj_type', '设备抽成比例' => 'iot_yj_p', '默认设备抽成类型 1比例 2金额' => 'default_iot_yj_type', '默认设备抽成比例' => 'default_iot_yj_p', '宽带抽成类型 1比例 2金额' => 'kd_yj_type', '宽带抽成比例' => 'kd_yj_p', '默认宽带抽成类型 1比例 2金额' => 'default_kd_yj_type', '默认宽带抽成比例' => 'default_kd_yj_p', '是否快照授权 0否 1是' => 'is_snapshotuser', ]; $getEnValue = $this->getEnValue(); $SpoutImport = new SpoutImport($header); $dataList = $SpoutImport->setRequest($request)->getExcelData(); return $dataList; } // 获取枚举值 public function getEnValue() { $data = [ 'yj_type' => SystemSetting::$drawType, 'kd_yj_type' => SystemSetting::$drawType, 'iot_yj_type' => SystemSetting::$drawType, 'default_yj_type' => SystemSetting::$drawType, 'default_kd_yj_type' => SystemSetting::$drawType, 'default_iot_yj_type' => SystemSetting::$drawType, 'member_level_id' => AdminUsersMemberLevel::pluck('name', 'id') ]; return $data; } // 查询一条 public function find(Request $request) { $request->validate([ 'id' => 'required|integer', ]); $result = AdminUsers::where(['id' => $request->id])->select(AdminUsers::$selectFields)->first(); return success($result); } // 添加 public function insert(Request $request) { sys_log($request, '用户添加', '用户日志'); $request->validate([ 'name' => 'required', ]); $result = AdminUsers::create($request->all()); if ($result) { return success(); } else { return error(); } } // 修改 public function update(Request $request) { sys_log($request, '用户修改', '用户日志'); $request->validate([ 'id' => 'required|integer', ]); $result = AdminUsers::where(['id' => $request->id])->update($request->all()); if ($result) { return success(); } else { return error(); } } // 删除 public function delete(Request $request) { $request->validate([ 'ids' => 'required', ]); sys_log($request, '用户删除', '用户日志'); $id_str = $request->ids; $arr = explode(",", $id_str); // 查询是否存在子数据 // $count = Shop::whereIn('tm_id',$arr)->count(); // if($count > 0){ // return ['code'=>0,'msg'=>"存在子数据,禁止删除"]; // } $result = AdminUsers::whereIn('id', $arr)->delete(); if ($result) { return success(); } else { return error(); } } // 密码登录 public function userLogin(Request $request) { $request->validate([ 'mobile' => 'required', 'password' => 'required', 'login_type' => 'required', ], [ 'mobile.required' => '手机号码不能为空', 'password.required' => '密码不能为空', 'login_type.required' => '登录类型不能为空', ]); sys_log($request, '用户登录', '用户日志'); // 检查黑名单 if (BlackList::checkUser(null, $request->mobile)) { return error("账号异常"); } $password = md5($request->password); $user = AdminUsers::where(['mobile' => $request->mobile, 'password' => $password])->select('id', 'username', 'user_id', 'mobile', 'password', 'share_code', 'member_level_id')->first(); if ($user) { $data = $user->only([ 'id', 'user_id', 'username', 'mobile', 'share_code', 'member_level_id', ]); $data['token'] = $user->createToken('BackSaler')->plainTextToken; return success($data,'登录成功'); } else { return error("密码错误"); } } // 获取登录用户信息 public function getUserLoginInfo(Request $request) { $user_id = $request->user()->id; $user = AdminUsers::where(['id' => $user_id])->select('username', 'user_id', 'mobile', 'share_code', 'member_level_id', 'yj as balance')->first(); if ($user) { $data = $user->only([ 'user_id', 'username', 'mobile', 'share_code', 'member_level_id', 'balance', ]); return success($data); } return error(); } // 验证码登录 public function userLoginByCode(Request $request) { $request->validate([ 'mobile' => 'required', 'sms_code' => 'required', 'login_type' => 'required', ], [ 'mobile.required' => '手机号码不能为空', 'sms_code.required' => '验证码不能为空', 'login_type.required' => '登录类型不能为空', ]); sys_log($request, '用户验证码登录', '用户日志'); // 检查黑名单 if (BlackList::checkUser(null, $request->mobile)) { return error("账号异常"); } $notSmsMobile = AdminUsers::$notSmsMobile; if (!in_array($request->mobile, $notSmsMobile)) { $smsCodeHelper = new TencentSmsHelper(); $res = $smsCodeHelper->validSmsCode($request); if ($res['code'] == 0) return $res; } $user = AdminUsers::where(['mobile' => $request->mobile])->select('id', 'username', 'user_id', 'mobile', 'password', 'share_code', 'member_level_id')->first(); if ($user) { $data = $user->only([ 'id', 'user_id', 'username', 'mobile', 'share_code', 'member_level_id', ]); $data['token'] = $user->createToken('BackSaler')->plainTextToken; return success($data,'登录成功'); } else { return error("账号未注册"); } } // 退出登录 public function userLogout(Request $request) { sys_log($request, '用户退出', '用户日志'); $user = $request->user(); if ($user) { $request->user()->currentAccessToken()->delete(); // 删除当前token // $user->tokens()->delete();// 撤销所有token return success(); } else { return error(); } } // 生成邀请码 验证用户唯一 public function setUserShareCode(Request $request) { sys_log($request, '生成邀请码', '用户日志'); // $user_id = $request->input('user_id', auth()->id()); // $share_code = $request->input('share_code', (new UtilsHelper)->generateNextCode()); $user_id = auth()->id(); $share_code = (new UtilsHelper)->generateNextCode(); $share_code_status = AdminUsers::where('share_code', $share_code)->exists(); if ($share_code_status) { return error("邀请码已被使用"); } $info = AdminUsers::where('user_id', $user_id)->first(); if (!$info || !empty($info->share_code)) { return error("邀请码已存在"); } $result = $info->update(['share_code' => $share_code]); if ($result) { return success([],'修改邀请码成功'); } else { return error('修改邀请码失败'); } } // 自定义邀请码 public function setUserShareCodeCustomization(Request $request) { $request->validate([ 'user_id' => 'required', 'share_code' => 'required', ]); sys_log($request, '自定义邀请码', '用户日志'); if (!AdminUsers::isAdmin($request->user()->id)) { return error('权限不足'); } $share_code = $request->input('share_code', (new UtilsHelper)->generateNextCode()); $share_code_status = AdminUsers::Where('share_code', $share_code)->exists(); if ($share_code_status) { return error('邀请码被使用'); } $result = AdminUsers::where('id', $request->user_id)->update(['share_code' => $share_code]); if ($result) { return success([],'修改邀请码成功'); } else { return error('修改邀请码失败'); } } // 海报秘钥获取邀请码 public function getPosterShareCode(Request $request) { $request->validate([ 'poster_key' => 'required', ]); $poster_key = decrypt($request->poster_key); parse_str($poster_key, $poster_key_arr); return success($poster_key_arr['share_code']); } // 邀请码注册 public function userRegister(Request $request) { $request->validate([ 'mobile' => 'required', 'password' => 'required', 'sms_code' => 'required', ]); sys_log($request, '用户注册', '用户日志'); if ($request->has('share_code')){ $share_code = $request->share_code; $notSmsMobile = AdminUsers::$notSmsMobile; if (!in_array($request->mobile, $notSmsMobile)) { $smsCodeHelper = new TencentSmsHelper(); $res = $smsCodeHelper->validSmsCode($request); if ($res['code'] == 0) return $res; } $user = AdminUsers::where('mobile', $request->mobile)->exists(); if ($user) { return error('该手机号已注册'); } $parent_user = AdminUsers::where('share_code', $share_code)->first(); if ($parent_user) { $yj_type = $parent_user['default_yj_type']; $yj_a = $parent_user['default_yj_a']; $yj_p = $parent_user['default_yj_p']; $iot_yj_type = $parent_user['default_iot_yj_type']; $iot_yj_p = $parent_user['default_iot_yj_p']; $kd_yj_type = $parent_user['default_kd_yj_type']; $kd_yj_p = $parent_user['default_kd_yj_p']; $kd_yj_a = $parent_user['default_kd_yj_a']; } else { $parent_user = AdminUsers::where('id', AdminUsers::ADMINID)->first(); $defaultYjConfig = AdminUsers::$defaultYjConfig; $yj_type = $defaultYjConfig['default_yj_type']; $yj_a = $defaultYjConfig['default_yj_a']; $yj_p = $defaultYjConfig['default_yj_p']; $iot_yj_type = $defaultYjConfig['default_iot_yj_type']; $iot_yj_p = $defaultYjConfig['default_iot_yj_p']; $kd_yj_type = $defaultYjConfig['default_kd_yj_type']; $kd_yj_p = $defaultYjConfig['default_kd_yj_p']; $kd_yj_a = $defaultYjConfig['default_kd_yj_a']; } } else{ $request->validate([ 'poster_key' => 'required', ]); $poster_key = decrypt($request->poster_key); parse_str($poster_key, $poster_key_arr); $notSmsMobile = AdminUsers::$notSmsMobile; if (!in_array($request->mobile, $notSmsMobile)) { $smsCodeHelper = new TencentSmsHelper(); $res = $smsCodeHelper->validSmsCode($request); if ($res['code'] == 0) return $res; } $user = AdminUsers::where('mobile', $request->mobile)->exists(); if ($user) { return error('该手机号已注册'); } $parent_user = AdminUsers::where('share_code', $poster_key_arr['share_code'])->first(); if (!$parent_user) { return error('邀请码不存在'); } $defaultYjConfig = AdminUsers::$defaultYjConfig; if (!isset($poster_key_arr['default_yj_type']) || $poster_key_arr['default_yj_type'] == 0) { $yj_type = $defaultYjConfig['default_yj_type']; $yj_a = $defaultYjConfig['default_yj_a']; $yj_p = $defaultYjConfig['default_yj_p']; } else { $yj_type = $poster_key_arr['default_yj_type']; $yj_a = $poster_key_arr['default_yj_a']; $yj_p = $poster_key_arr['default_yj_p']; } if (!isset($poster_key_arr['default_iot_yj_type']) || $poster_key_arr['default_iot_yj_type'] == 0) { $iot_yj_type = $defaultYjConfig['default_iot_yj_type']; $iot_yj_p = $defaultYjConfig['default_iot_yj_p']; } else { $iot_yj_type = $poster_key_arr['default_iot_yj_type']; $iot_yj_p = $poster_key_arr['default_iot_yj_p']; } if (!isset($poster_key_arr['default_kd_yj_type']) || $poster_key_arr['default_kd_yj_type'] == 0) { $kd_yj_type = $defaultYjConfig['default_kd_yj_type']; $kd_yj_p = $defaultYjConfig['default_kd_yj_p']; $kd_yj_a = $defaultYjConfig['default_kd_yj_a']; } else { $kd_yj_type = $poster_key_arr['default_kd_yj_type']; $kd_yj_p = $poster_key_arr['default_kd_yj_p']; $kd_yj_a = $poster_key_arr['default_kd_yj_a']; } } DB::beginTransaction(); try { $userCreate = AdminUsers::create([ 'user_id' => UtilsHelper::user_id(), 'mobile' => $request->mobile, 'username' => "用户" . substr($request->mobile, -4), 'password' => md5($request->password), 'real_password' => $request->password, 'share_code' => (new UtilsHelper)->generateNextCode(), 'yj_type' => $yj_type, // 分成类型 1:比例 2:金额 'yj_a' => $yj_a, // 分成金额 'yj_p' => $yj_p, // 佣金比例 'iot_yj_type' => $iot_yj_type, // 设备抽成类型 1比例 2金额 'iot_yj_p' => $iot_yj_p, // 设备抽成比例 'kd_yj_type' => $kd_yj_type, // 宽带抽成类型 1比例 2金额 'kd_yj_p' => $kd_yj_p, // 宽带抽成比例 'kd_yj_a' => $kd_yj_a, // 宽带抽成金额 'parent_id' => $parent_user->id, 'agent_level' => $parent_user->agent_level + 1, ]); if ($userCreate) { $up_level_path = $parent_user->level_path; $level_path = $up_level_path . ',' . "[$userCreate->id]"; $userCreate->update(['level_path' => $level_path]); DB::commit(); return success([],'注册成功'); } else { DB::rollBack(); return error('注册失败'); } } catch (\Throwable $th) { DB::rollBack(); Log::error("注册失败:" . $th); return error('注册失败'); } } // 用户注销 public function userCancel(Request $request) { sys_log($request, '用户注销', '用户日志'); $user_id = auth()->id(); if (!AdminUsers::isAdmin($user_id)) { return error('注销失败'); } $userInfo = AdminUsers::where('id', $user_id)->first(); if (empty($userInfo)) { return error('用户不存在'); } $request['user_cancel_info'] = $userInfo->toArray(); $result = $userInfo->update([ 'mobile' => null, 'id_name' => null, //身份证姓名 'id_card' => null, //身份证号码 'status' => 1, // 注销 ]); if ($result) { $userInfo->tokens()->delete(); return success([],'注销成功'); } else { return error('注销失败'); } } // 修改密码 public function updatePassword(Request $request) { $request->validate([ 'old_password' => 'required', 'new_password' => 'required|min:6', 're_password' => 'required|same:new_password', ]); sys_log($request, '修改密码', '用户日志'); $user_id = auth()->id(); $userInfo = AdminUsers::where('id', $user_id)->first(); if (empty($userInfo)) { return error('用户不存在'); } if (md5($request->old_password) != $userInfo['password']) { return error('原密码错误'); } $result = $userInfo->update([ 'password' => md5($request->new_password), 'real_password' => $request->new_password, ]); if ($result) { $userInfo->tokens()->delete(); return success([],'修改成功'); } else { return error('修改失败'); } } // 重置密码 public function resetPassword(Request $request) { $request->validate([ 'new_password' => 'required|min:6', 'user_id' => 'required', ]); sys_log($request, '重置密码', '用户日志'); if (!AdminUsers::isAdmin(auth()->id())) { return error("无权操作"); } $user_id = $request->user_id; $userInfo = AdminUsers::where('id', $user_id)->first(); if (empty($userInfo)) { return error("用户不存在"); } $result = $userInfo->update([ 'password' => md5($request->new_password), 'real_password' => $request->new_password, ]); if ($result) { $userInfo->tokens()->delete(); return success($request->new_password,'重置成功'); } else { return error('重置失败'); } } // 忘记密码 public function forgetPassword(Request $request) { $request->validate([ 'mobile' => 'required|min:11', 'sms_code' => 'required', 'new_password' => 'required' ]); $smsCodeHelper = new TencentSmsHelper(); $res = $smsCodeHelper->validSmsCode($request); if ($res['code'] == 0) return $res; $userInfo = AdminUsers::where('mobile', $request->mobile)->first(); if (empty($userInfo)) { return error("手机号不存在"); } $result = $userInfo->update([ 'password' => md5($request->new_password), 'real_password' => $request->new_password, ]); if ($result) { $userInfo->tokens()->delete(); return success([],'重置成功'); } else { return error('重置失败'); } } // 设置下级用户抽成 public function setUserYjType(Request $request) { $request->validate([ 'user_id' => 'required|integer', 'yj_type' => 'in:1,2', 'yj_a' => 'numeric', 'yj_p' => 'integer', 'iot_yj_type' => 'in:1,2', 'iot_yj_p' => 'integer', 'kd_yj_type' => 'in:1,2', 'kd_yj_p' => 'integer', 'kd_yj_a' => 'numeric', ]); $op_user_id = auth()->id(); sys_log($request, '设置下级用户抽成', '用户日志'); $parent_id = AdminUsers::where('id', $request->user_id)->value('parent_id'); if (!(AdminUsers::isAdmin($op_user_id) || $parent_id == $op_user_id)) { return ['code' => 0, 'msg' => "设置失败"]; } $data = $request->only([ 'yj_type', 'yj_a', 'yj_p', 'iot_yj_type', 'iot_yj_p', 'kd_yj_type', 'kd_yj_p', 'kd_yj_a', ]); $result = AdminUsers::where('id', $request->user_id)->update($data); return $result ? ['code' => 1, 'msg' => "设置成功"] : ['code' => 0, 'msg' => "设置失败"]; } // 批量设置下级用户抽成 public function batchSetUserYjType(Request $request) { $request->validate([ 'user_ids' => 'required|String', 'yj_type' => 'in:1,2', 'yj_a' => 'numeric', 'yj_p' => 'integer', 'iot_yj_type' => 'in:1,2', 'iot_yj_p' => 'integer', 'kd_yj_type' => 'in:1,2', 'kd_yj_p' => 'integer', 'kd_yj_a' => 'numeric', ]); sys_log($request, '批量设置下级用户抽成', '用户日志'); $op_user_id = auth()->id(); $user_ids = explode(',', $request->user_ids); $parent_id = AdminUsers::whereIn('id', $user_ids)->pluck('parent_id')->toArray(); if (!((in_array($op_user_id, array_unique($parent_id)) && reset($parent_id) === $op_user_id) || AdminUsers::isAdmin($op_user_id))) { return ['code' => 0, 'msg' => "设置失败"]; } $data = $request->only([ 'yj_type', 'yj_a', 'yj_p', 'iot_yj_type', 'iot_yj_p', 'kd_yj_type', 'kd_yj_p', 'kd_yj_a', ]); $result = AdminUsers::whereIn('id', $user_ids)->update($data); return $result ? ['code' => 1, 'msg' => "设置成功"] : ['code' => 0, 'msg' => "设置失败"]; } // 用户设置默认抽成 public function setDefaultYjType(Request $request) { $request->validate([ 'default_yj_type' => 'in:1,2', 'default_yj_a' => 'numeric', 'default_yj_p' => 'integer', 'default_iot_yj_type' => 'in:1,2', 'default_iot_yj_p' => 'integer', 'default_kd_yj_type' => 'in:1,2', 'default_kd_yj_p' => 'integer', 'default_kd_yj_a' => 'numeric', ]); sys_log($request, '用户设置默认抽成', '用户日志'); $result = AdminUsers::where('id', auth()->id())->update($request->only([ 'default_yj_type', 'default_yj_a', 'default_yj_p', 'default_iot_yj_type', 'default_iot_yj_p', 'default_kd_yj_type', 'default_kd_yj_p', 'default_kd_yj_a', ])); return $result ? ['code' => 1, 'msg' => "设置成功"] : ['code' => 0, 'msg' => "设置失败"]; } // 用户充值或扣除余额 public function userChangeBalance(Request $request) { $request->validate([ 'user_id' => 'required', 'status' => 'required|in:0,1', 'money' => 'required|numeric', 'type' => 'required|in:' . implode(',', array_keys(UserYjrecord::$type)), ]); sys_log($request, '用户充值或扣除余额', '用户日志'); $user_id = $request->user_id; $status = $request->status; $money = $request->money; $type = $request->type; $remark = $request->input('remark', null); if (!AdminUsers::isAdmin($request->user()->id)) { return ['code' => 0, 'msg' => "操作失败"]; } list($status, $msg, $data) = (new UserYjrecord())->recharge([ 'user_id' => $user_id, 'status' => $status, 'yj' => $money, 'remark' => $remark, 'type' => $type, 'source' => '用户充值或扣除余额', ]); return $status ? ['code' => 1, 'msg' => "操作成功"] : ['code' => 0, 'msg' => $msg]; } // 实名认证 public function realNameAuth(Request $request) { $request->validate([ 'id_card_front' => 'required|string', 'id_card_back' => 'required|string', ]); sys_log($request, '实名认证', '用户日志'); $user_id = auth()->id(); $user = AdminUsers::where('id', $user_id)->first(); if ($user->is_real == 1) { return ['code' => 0, 'msg' => "已认证"]; } $id_card_front = (new TencentOcrHelper)->idCardCheck($request->id_card_front, 1); if (!$id_card_front) { return ['code' => 0, 'msg' => "身份证正面识别失败"]; } $id_card_front = json_decode($id_card_front, true); $id_card_back = (new TencentOcrHelper)->idCardCheck($request->id_card_back, 2); if (!$id_card_back) { return ['code' => 0, 'msg' => "身份证反面识别失败"]; } $id_card_back = json_decode($id_card_back, true); $exists = AdminUsers::where('id_card', $id_card_front['IdNum'])->where('is_real', AdminUsers::IS_REAL_YES)->where('id', "!=", $user_id)->exists(); if ($exists) { return ['code' => 0, 'msg' => "信息已被使用"]; } $dbData = [ 'is_real' => 1, 'id_name' => $id_card_front['Name'], 'id_card' => $id_card_front['IdNum'], 'id_card_address' => $id_card_front['Address'], 'id_card_front' => $request->id_card_front, 'id_card_back' => $request->id_card_back, ]; $result = $user->update($dbData); return $result ? success() : error(); } // 用户加入黑名单 public function joinBlackList(Request $request) { $request->validate([ 'user_id' => 'required|integer', ]); sys_log($request, '用户加入黑名单', '用户日志'); $user = AdminUsers::select([ 'id', 'mobile', ])->where('id', $request->user_id)->first(); if (!$user) { return error("用户不存在"); } $blacklist = BlackList::where('user_id', $request->user_id)->first(); if ($blacklist) { return ['code' => 0, 'msg' => "已加入黑名单"]; } else { $result = BlackList::create([ 'user_id' => $request->user_id, 'phone' => $user->mobile, 'remark' => $request->input('remark', null), ]); } return $result ? success() : error(); } // 用户移除黑名单 public function removeBlackList(Request $request) { $request->validate([ 'user_id' => 'required|integer', ]); sys_log($request, '用户移除黑名单', '用户日志'); $result = BlackList::where('user_id', $request->user_id)->delete(); return $result ? success() : error(); } // 头衔晋升 public function titlePromotion() { // 获取上个月的开始结束时间 $startOfLastMonth = Carbon::now()->subMonth()->startOfMonth(); $endOfLastMonth = Carbon::now()->subMonth()->endOfMonth(); // 获取所有会员等级信息 $memberLevel = AdminUsersMemberLevel::orderBy('level', 'asc')->get(); $userList = AdminUsers::select(['id', 'member_level_id'])->whereNotIn('id', [1])->get(); foreach ($userList as $user) { Log::info('头衔校验用户', ['user_id' => $user->id]); $finallyLevelId = null; // 最终等级id foreach ($memberLevel as $level) { $orderCount = 0; // 满足条件单数 $userList = AdminUsers::getChildrens($user->id); // 校验提单数 if ($level->check_type == AdminUsersMemberLevel::check_type_put) { $orderCount = Orders::whereIn('user_id', $userList)->whereBetween('created_at', [$startOfLastMonth, $endOfLastMonth])->count(); Log::info('校验提单数', ['user_id' => $user->id, 'user_list' => $userList, 'order_count' => $orderCount]); } // 校验激活数 if ($level->check_type == AdminUsersMemberLevel::check_type_active) { $orderCount = Orders::whereIn('user_id', $userList)->where('active_status', Orders::ACTIVE_STATUS_SUCCESS)->whereBetween('created_at', [$startOfLastMonth, $endOfLastMonth])->count(); Log::info('校验激活数', ['user_id' => $user->id, 'user_list' => $userList, 'order_count' => $orderCount]); } if ($orderCount >= $level->check_ordernum && $level->is_promotion) { $finallyLevelId = $level->id; Log::info('获取最终等级id', ['user_id' => $user->id, 'finallyLevelId' => $finallyLevelId]); } } if ($finallyLevelId) { $result = $user->update(['member_level_id' => $finallyLevelId]); Log::info('更新用户等级', ['user_id' => $user->id, 'finallyLevelId' => $finallyLevelId, 'result' => $result ? '成功' : '失败']); } } } }