123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505 |
- <?php
- namespace Modules\Service\Http\Controllers;
- use Modules\Service\Events\ChangeRecom;
- use App\Models\AgentOperationLog;
- use App\Models\User;
- use App\Models\Warea;
- use App\Models\WareaApply;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- class WareaApplyController extends Controller
- {
- public function Apply(Request $request){
- $user_id=$request->input('id');
- $type=$request->input('type',0);
- $remark=$request->input('remark');
- $imgList=$request->input('imgList');
- $audioList=$request->input('audioList');
- $count=WareaApply::where('user_id',$user_id)->where('type',$type)->where('status',0)->count();
- if ($count>0){
- return $this->error(5002141,'当前代理的申请尚未处理完毕!');
- }
- $num=User::where('recom_id',$user_id)->where('level','!=',3)->whereNull('deleted_at')->count();
- if ($type==1){
- if ($num>0){
- return $this->error(5002101,'该代理团队有人,不允许变更!!');
- }
- }
- if ($type==2){
- $res=AgentOperationLog::where('user_id',$user_id)
- ->where('type',4)->orderByDesc('created_at')->first();
- if ($res){
- $remarks=$res->remark;
- if (is_numeric(stripos($remarks,'违反'))){
- return $this->error(500214,'违规的代理不能够恢复');
- }
- if (is_numeric(stripos($remarks,'违规'))){
- return $this->error(500214,'违规的代理不能够恢复');
- }
- }
- }
- $re=new WareaApply();
- $re->user_id=$user_id;
- $re->remark=$remark;
- $re->imgList=$imgList;
- $re->audioList=$audioList;
- $re->status=0;
- $re->type=$type;
- $re->apply_id=Auth::user()->id;
- $re->mobile=$request->input('mobile');
- $re->save();
- $data=[];
- if ($type==1){
- $data=['id'=>$re->id];
- }
- return $this->success($data);
- }
- /*
- * 获取列表信息
- * ***/
- public function GetApplyList(Request $request){
- $type=$request->input('type')??-1;
- $status=$request->input('status')??-1;
- $search_name=$request->input('search_name',null);
- $re=WareaApply::query();
- if (Auth::user()->role_id==23){
- $re->where('apply_id',Auth::user()->id);
- }
- if ($search_name){
- $ids=User::where('mobile','like',"%$search_name%")->orwhere('nickname','like',"%$search_name%")
- ->orwhere('realname','like',"%$search_name%")->withTrashed()->pluck('id');
- $re->whereIn('user_id',$ids);
- }
- if ($type>=0){
- $re->where('type',$type);
- }
- if ($status>=0){
- $re->where('status',$status);
- }
- $count=$re->count();
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $num=($page_index-1)*$page_size;
- $re=$re->with(['user'])->orderByDesc('id')->take($page_size)->skip($num)->get();
- foreach ($re as $k=>$v){
- $counts=User::where('recom_id',$v->user_id)->whereNull('deleted_at')->whereIn('cert_status',[3,6])->count();
- $re[$k]->count=$counts;
- if ($v->type==2){
- $re[$k]->deleted_info=AgentOperationLog::where('user_id',$v->user_id)
- ->where('type',4)->orderByDesc('created_at')->first();
- }
- }
- return $this->success_list($re,'',$count);
- }
- public function GetUserInfo(Request $request){
- $user_id=$request->input('user_id');
- $re=User::where('recom_id',$user_id)->whereNull('deleted_at')->whereIn('cert_status',[3,6])->select('id','nickname','level','headimgurl','mobile')->get();
- return $this->success($re);
- }
- /*
- * 获取列表信息
- * ***/
- public function GetApplyListCount(Request $request){
- $re=WareaApply::query();
- if (Auth::user()->role_id==23){
- $re->where('apply_id',Auth::user()->id);
- }
- $re->whereIn('status',[0,2]);
- $count=$re->count();
- return $this->success(['count'=>$count]);
- }
- /*
- * 修改申请
- * ***/
- public function UpdateApply(Request $request){
- $input=$request->all();
- $result=WareaApply::find($input['id']);
- $result->mobile=$input['mobile'];
- $result->remark=$input['remark'];
- $result->imgList=$input['imgList'];
- $result->audioList=$input['audioList'];
- $result->type=$input['type'];
- $result->status=0;
- $result->save();
- return $this->success([]);
- }
- /*
- * 通过或者拒绝
- * **/
- public function RejectAccept(Request $request){
- /**0表示拒绝,1表示通过***/
- $status=$request->input('status');
- $id=$request->input('id');
- $re=WareaApply::find($id);
- if ($status){
- if ($re->type==0){
- $s=$this->destoryUser($id);
- }else if($re->type==1){
- $s=$this->updateRecom($id);
- }else if($re->type==2){
- $s=$this->restoreUserInfo($re->mobile);
- }
- if (is_numeric($s)){
- $re->status=1;
- $re->save();
- return $this->success([]);
- }else{
- return $this->error(500214,$s);
- }
- }else{
- $cause=$request->input('cause');
- $re->cause=$cause;
- $re->status=2;
- $re->save();
- return $this->success([]);
- }
- }
- //恢复误删除人员信息
- public function restoreUserInfo($mobile){
- $rules = [
- 'mobile' => [
- 'required',
- 'regex:/^1[3456789][0-9]{9}$/'
- ],
- ];
- $messages = [
- 'mobile.required' => '手机号不能为空.',
- 'mobile.regex' => '手机号格式有误.',
- ];
- $uuu = new User();
- DB::beginTransaction();
- try {
- $result1=User::where('mobile',$mobile)->first();
- if($result1){
- return '该手机号用户未被删除,核对后再操作';
- }
- $result=User::onlyTrashed()->where('mobile',$mobile)->first();
- if(!$result){
- return'手机号信息有误,核对后再操作';
- }
- User::withTrashed()->where('mobile',$mobile)->restore();
- $re_id=$result->recom_id;
- $ag_id=$result->agent_id;
- $recom_ids=$this->RecomInfo($result->recom_id);
- $result->recom_id=$recom_ids;
- if ($result->level==3){
- $result->agent_id=1;
- }else{
- $result->agent_id=$this->AgentInfo($recom_ids,$result->level);
- }
- $result->save();
- $this->addAgentOperationLog('6', $result->id, '代理恢复后,更新了邀请人和上级的信息',
- '原邀请人id为:'.$re_id.'、上级id为:'.$ag_id.'修改后的邀请人ID为:'.$recom_ids.'、上级ID为:'.$result->agent_id);
- $this->addAgentOperationLog('41', $result->id, '撤销删除状态', '撤销删除状态');
- Log::info('用户'.$mobile.'被恢复');
- DB::commit();
- return 1;
- }catch(\Exception $e){
- DB::rollBack();
- return $e->getMessage();
- }
- }
- /**查看邀请人是否删除**/
- public function RecomInfo($id){
- $user=User::withTrashed()->where('id',$id)->first();
- $recom_id=$id;
- if ($user->deleted_at){
- $recom_id=$this->RecomInfo($user->recom_id);
- }
- return $recom_id;
- }
- /**查看上级是否删除**/
- public function AgentInfo($id,$level,$k=0){
- $user=User::withTrashed()->where('id',$id)->first();
- $agent_id=$user->id;
- if ($k>5){
- throw new \Exception('代理关系有误,请联系开发人员');
- }
- if ($user->level<=$level){
- $k++;
- $agent_id=$this->AgentInfo($user->agent_id,$level,$k);
- }
- return $agent_id;
- }
- /**变更邀请人**/
- public function updateRecom($id)
- {
- $data=WareaApply::find($id);
- $input['id'] = $data->user_id;
- $input['mobile'] = $data->mobile;
- Log::error('1111');
- $uuu = new User();
- $user = User::find($input['id']);//当前用户
- if ($user->recom_id) {
- $recom_id = $user->recom_id;
- } else {
- $recom_id = '暂无';
- }
- if ($user->agent_id) {
- $up_id = $user->agent_id;
- } else {
- $up_id = '暂无';
- }
- $agentCount = User::where(function ($query) use ($input) {
- $query->where('recom_id', '=', $input['id'])
- ->orWhere('agent_id', '=', $input['id']);
- })->count();
- //代理邀请人员后,或者成为上级后不能变更推荐人
- // if($agentCount>0){
- // return $this->error('400112','当前用户邀请人信息不能修改');
- // }
- $recomUser = User::where("mobile", $input['mobile'])->first();//新邀请人信息
- if (empty($recomUser)) {
- return '邀请人信息不存在';
- }
- if ($user->recom_id == $recomUser->id) {
- return '要更改的邀请人与当前邀请人相同';
- }
- if ($user->id == $recomUser->id) {
- return '邀请人的手机号不能为自己本人';
- }
- if ($user->id == $recomUser->recom_id) {
- return '要更改的邀请人的邀请人为自己';
- }
- if ($user->id == $recomUser->id) {
- return '要更改的邀请人不能为自己';
- }
- $uuu = new User();
- $rechecking = $uuu->changeRecomSystem($input['id'], $input['mobile']);
- if ($rechecking == '222') {
- return '要更改的邀请人为当前代理邀请人系统体系内部成员';
- }
- DB::beginTransaction();
- try {
- if ($user->level == '3') {
- $user->recom_id = $recomUser->id;
- $user->agent_id = '1';
- $user->crown_id = '';
- if ($user->warea_id != $recomUser->warea_id) {
- $user->warea_id = $recomUser->warea_id;
- $one_agent = User::where('agent_id', $user->id)->pluck('id');
- if (count($one_agent) > 0) {
- User::whereIn('id', $one_agent)->update(['warea_id' => $recomUser->warea_id]);
- foreach ($one_agent as $key => $val) {
- $two_agent = User::where('agent_id', $val)->pluck('id');
- if (count($two_agent) > 0) {
- User::whereIn('id', $two_agent)->update(['warea_id' => $recomUser->warea_id]);
- }
- }
- }
- }
- } else {
- if ($recomUser->level == '3') {
- $user->recom_id = $recomUser->id;
- $user->agent_id = $recomUser->id;
- $user->crown_id = $recomUser->id;
- $user->warea_id = $recomUser->warea_id;
- if ($user->level == '2') {
- $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->id);
- } elseif ($user->level == '1') {
- $uuu->changeAgentLevelInfoThree($user->id, $recomUser->id, $recomUser->id);
- }
- $uuu->changeAgentRecomCrown($user->id, $recomUser->id, $recomUser->warea_id);
- } elseif ($recomUser->level == '2') {
- if ($user->level == '2') {
- $user->recom_id = $recomUser->id;
- $user->agent_id = $recomUser->agent_id;
- $user->crown_id = $recomUser->crown_id;
- $user->warea_id = $recomUser->warea_id;
- $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->agent_id);
- } elseif ($user->level == '1') {
- $user->recom_id = $recomUser->id;
- $user->agent_id = $recomUser->id;
- $user->crown_id = $recomUser->crown_id;
- $user->warea_id = $recomUser->warea_id;
- $uuu->changeAgentLevelInfoThree($user->id, $recomUser->agent_id, $recomUser->id);
- }
- $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
- } elseif ($recomUser->level == '1') {
- $recomAgent = User::find($recomUser->agent_id);
- if ($user->level == '2') {
- if ($recomAgent->level == $user->level) {
- $user->recom_id = $recomUser->id;
- $user->agent_id = $recomAgent->agent_id;
- $user->crown_id = $recomUser->crown_id;
- $user->warea_id = $recomUser->warea_id;
- $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->agent_id);
- } elseif ($recomAgent->level == 3) {
- $user->recom_id = $recomUser->id;
- $user->agent_id = $recomAgent->id;
- $user->crown_id = $recomUser->crown_id;
- $user->warea_id = $recomUser->warea_id;
- $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->id);
- }
- } elseif ($user->level == '1') {
- $user->recom_id = $recomUser->id;
- $user->agent_id = $recomUser->agent_id;
- $user->crown_id = $recomUser->crown_id;
- $user->warea_id = $recomUser->warea_id;
- $uuu->changeAgentLevelInfoThree($user->id, $recomAgent->agent_id, $recomUser->agent_id);
- }
- $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
- }
- }
- $row = $user->save();
- $remark = $data->remark;
- $before = User::where('id', $recom_id)->select('id', 'nickname', 'mobile')->first();
- $after = ['id' => $recomUser->id, 'nickname' => $recomUser->nickname, 'mobile' => $recomUser->mobile];
- $log = '变更前邀请人:' . json_encode($before, JSON_UNESCAPED_UNICODE) . ',变更后邀请人:' . json_encode($after, JSON_UNESCAPED_UNICODE);
- $this->addAgentOperationLog('3', $user->id, $remark, $log, $data->imgList);
- event(new ChangeRecom($user));
- DB::commit();
- Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')修改代理:' . $user->nickname . '(id=' . $user->id . ')邀请人成功,原邀请人id=' . $recom_id . ',原上级id=' . $up_id . ',新邀请人:' . $recomUser->nickname . '(id=' . $recomUser->id . ')');
- $data->status=1;
- $data->save();
- Log::error(222);
- return 0;
- } catch (\Exception $e) {
- DB::rollBack();
- Log::error($e->getMessage());
- return $e->getMessage();
- }
- }
- //删除用户
- public function destoryUser($id)
- {
- $data=WareaApply::find($id);
- $img=$data->imgList;
- $input['id']=$data->user_id;
- $user = User::withTrashed()->where('id',$data->user_id)->first();
- if ($user->deleted_at){
- $data->status=1;
- $data->save();
- return 0;
- }
- if ($user->level==3){
- return '不能直接删除代理公司!';
- }
- $recom = User::find($user->recom_id);//代理邀请人信息
- if (!$recom) {
- return '该代理邀请人信息有误,不能删除';
- }
- //获取代理邀请的人
- $recomed=User::where('recom_id',$input['id'])->pluck('id');
- $agented=User::where('agent_id',$input['id'])->pluck('id');
- //获取代理下级信息
- DB::beginTransaction();
- $userInfo=User::where('id',$input['id'])->first();
- // event(new DeleteAgent($userInfo));
- try {
- if ($user->level == '3') {
- if ($recom->level == '3') {//邀请人等级信息
- User::where('agent_id', $input['id'])->update(['agent_id' => $recom->id]);
- User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
- User::where('crown_id', $input['id'])->update(['crown_id' => $recom->id, 'warea_id' => $recom->warea_id]);
- } elseif ($recom->level == '2') {
- User::where('agent_id', $input['id'])->where('level', 2)->update(['agent_id' => $recom->agent_id]);
- User::where('agent_id', $input['id'])->where('level', 1)->update(['agent_id' => $recom->id]);
- User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
- $recom_agent = User::where('id', $recom->agent_id)->first();
- User::where('crown_id', $input['id'])->update(['crown_id' => $recom_agent->id, 'warea_id' => $recom_agent->warea_id]);
- } elseif ($recom->level == '1') {
- $upRecom = User::find($recom->agent_id);//代理邀请人上级信息
- if (!$upRecom) {
- return '该代理邀请人上级信息有误,不能删除';
- }
- User::where('agent_id', $input['id'])->where('level', 1)->update(['agent_id' => $upRecom->id]);
- User::where('agent_id', $input['id'])->where('level', 2)->update(['agent_id' => $upRecom->agent_id]);
- User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
- $recom_agent = User::where('id', $upRecom->agent_id)->first();
- User::where('crown_id', $input['id'])->update(['crown_id' => $upRecom->agent_id, 'warea_id' => $recom_agent->warea_id]);
- }
- } elseif ($user->level == '2') {
- if ($recom->level == '3' || $recom->level == '2') {
- User::where('agent_id', $input['id'])->update(['agent_id' => $recom->id]);
- } elseif ($recom->level == '1') {
- User::where('agent_id', $input['id'])->update(['agent_id' => $recom->agent_id]);
- }
- User::where('recom_id', $input['id'])->update(['recom_id' => $user->recom_id]);
- } elseif ($user->level == '1') {
- User::where('recom_id', $input['id'])->update(['recom_id' => $user->recom_id]);
- }
- $user->delete();
- $remark = $data->remark;
- $after = ['id' => $user->id, 'nickname' => $user->nickname, 'mobile' => $user->mobile, 'level' => $user->level, 'recom_id' => $user->recom_id, 'agent_id' => $user->agent_id];
- $log = '删除用户成功,用户信息:' . json_encode($after, JSON_UNESCAPED_UNICODE).',用户邀请的人ID:'.json_encode($recomed).',用户下级ID:'.json_encode($agented);
- $this->addAgentOperationLog('4', $user->id, $remark, $log,$img);
- $data->status=1;
- $data->save();
- Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')删除代理:' . $user->nickname . '(id=' . $user->id . ')成功');
- DB::commit();
- return 0;
- } catch (\Exception $e) {
- DB::rollBack();
- return $e->getMessage();
- }
- }
- //添加代理操作日志
- public function addAgentOperationLog($type, $user_id, $remark = null, $log = null,$img=null)
- {
- return AgentOperationLog::create([
- 'type' => $type,
- 'admin_name' => Auth::user()->name,
- 'admin_id' => Auth::user()->id,
- 'user_id' => $user_id,
- 'remark' => $remark,
- 'img'=>$img,
- 'log' => $log,
- ]);
- }
- /*
- * 删除申请
- * ***/
- public function destroy(Request $request){
- $re=WareaApply::where('id',$request->input('id'))->first();
- if ($re->status==1){
- return $this->error(500214,'审核完成的不能删除');
- }
- WareaApply::where('id',$request->input('id'))->update(['status'=>3,'destroy_cause'=>$request->input('destroy_cause')]);
- return $this->success([]);
- }
- }
|