1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027 |
- <?php
- /*
- * @Description: 用户表
- * @Version: *
- * @Autor: lexuan
- * @Date: 2024-11-23 16:33:47
- * @LastEditors: lexuan
- * @LastEditTime: 2024-11-23 16:33:47
- */
- namespace App\DataApiNew\Helper;
- use App\DataApiNew\Models\AdminUsers;
- use App\Models\Pages;
- use App\Models\SpoutExport;
- use App\Models\SpoutImport;
- use App\DataApiNew\Models\AdminUserLevel;
- use App\DataApiNew\Models\AdminUsersMemberLevel;
- use App\DataApiNew\Models\BlackList;
- use App\DataApiNew\Models\Orders;
- use App\DataApiNew\Models\SystemSetting;
- use App\DataApiNew\Models\UserYjrecord;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Token;
- class AdminUsersHelper
- {
- // 查询条件
- public function whens($query, $request)
- {
- return $query
- ->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 ? '成功' : '失败']);
- }
- }
- }
- }
|