WareaApplyController.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. <?php
  2. namespace Modules\Service\Http\Controllers;
  3. use Modules\Service\Events\ChangeRecom;
  4. use App\Models\AgentOperationLog;
  5. use App\Models\User;
  6. use App\Models\Warea;
  7. use App\Models\WareaApply;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\DB;
  11. use Illuminate\Support\Facades\Log;
  12. class WareaApplyController extends Controller
  13. {
  14. public function Apply(Request $request){
  15. $user_id=$request->input('id');
  16. $type=$request->input('type',0);
  17. $remark=$request->input('remark');
  18. $imgList=$request->input('imgList');
  19. $audioList=$request->input('audioList');
  20. $count=WareaApply::where('user_id',$user_id)->where('type',$type)->where('status',0)->count();
  21. if ($count>0){
  22. return $this->error(5002141,'当前代理的申请尚未处理完毕!');
  23. }
  24. $num=User::where('recom_id',$user_id)->where('level','!=',3)->whereNull('deleted_at')->count();
  25. if ($type==1){
  26. if ($num>0){
  27. return $this->error(5002101,'该代理团队有人,不允许变更!!');
  28. }
  29. }
  30. if ($type==2){
  31. $res=AgentOperationLog::where('user_id',$user_id)
  32. ->where('type',4)->orderByDesc('created_at')->first();
  33. if ($res){
  34. $remarks=$res->remark;
  35. if (is_numeric(stripos($remarks,'违反'))){
  36. return $this->error(500214,'违规的代理不能够恢复');
  37. }
  38. if (is_numeric(stripos($remarks,'违规'))){
  39. return $this->error(500214,'违规的代理不能够恢复');
  40. }
  41. }
  42. }
  43. $re=new WareaApply();
  44. $re->user_id=$user_id;
  45. $re->remark=$remark;
  46. $re->imgList=$imgList;
  47. $re->audioList=$audioList;
  48. $re->status=0;
  49. $re->type=$type;
  50. $re->apply_id=Auth::user()->id;
  51. $re->mobile=$request->input('mobile');
  52. $re->save();
  53. $data=[];
  54. if ($type==1){
  55. $data=['id'=>$re->id];
  56. }
  57. return $this->success($data);
  58. }
  59. /*
  60. * 获取列表信息
  61. * ***/
  62. public function GetApplyList(Request $request){
  63. $type=$request->input('type')??-1;
  64. $status=$request->input('status')??-1;
  65. $search_name=$request->input('search_name',null);
  66. $re=WareaApply::query();
  67. if (Auth::user()->role_id==23){
  68. $re->where('apply_id',Auth::user()->id);
  69. }
  70. if ($search_name){
  71. $ids=User::where('mobile','like',"%$search_name%")->orwhere('nickname','like',"%$search_name%")
  72. ->orwhere('realname','like',"%$search_name%")->withTrashed()->pluck('id');
  73. $re->whereIn('user_id',$ids);
  74. }
  75. if ($type>=0){
  76. $re->where('type',$type);
  77. }
  78. if ($status>=0){
  79. $re->where('status',$status);
  80. }
  81. $count=$re->count();
  82. $page_index=$request->input('page_index');
  83. $page_size=$request->input('page_size');
  84. $num=($page_index-1)*$page_size;
  85. $re=$re->with(['user'])->orderByDesc('id')->take($page_size)->skip($num)->get();
  86. foreach ($re as $k=>$v){
  87. $counts=User::where('recom_id',$v->user_id)->whereNull('deleted_at')->whereIn('cert_status',[3,6])->count();
  88. $re[$k]->count=$counts;
  89. if ($v->type==2){
  90. $re[$k]->deleted_info=AgentOperationLog::where('user_id',$v->user_id)
  91. ->where('type',4)->orderByDesc('created_at')->first();
  92. }
  93. }
  94. return $this->success_list($re,'',$count);
  95. }
  96. public function GetUserInfo(Request $request){
  97. $user_id=$request->input('user_id');
  98. $re=User::where('recom_id',$user_id)->whereNull('deleted_at')->whereIn('cert_status',[3,6])->select('id','nickname','level','headimgurl','mobile')->get();
  99. return $this->success($re);
  100. }
  101. /*
  102. * 获取列表信息
  103. * ***/
  104. public function GetApplyListCount(Request $request){
  105. $re=WareaApply::query();
  106. if (Auth::user()->role_id==23){
  107. $re->where('apply_id',Auth::user()->id);
  108. }
  109. $re->whereIn('status',[0,2]);
  110. $count=$re->count();
  111. return $this->success(['count'=>$count]);
  112. }
  113. /*
  114. * 修改申请
  115. * ***/
  116. public function UpdateApply(Request $request){
  117. $input=$request->all();
  118. $result=WareaApply::find($input['id']);
  119. $result->mobile=$input['mobile'];
  120. $result->remark=$input['remark'];
  121. $result->imgList=$input['imgList'];
  122. $result->audioList=$input['audioList'];
  123. $result->type=$input['type'];
  124. $result->status=0;
  125. $result->save();
  126. return $this->success([]);
  127. }
  128. /*
  129. * 通过或者拒绝
  130. * **/
  131. public function RejectAccept(Request $request){
  132. /**0表示拒绝,1表示通过***/
  133. $status=$request->input('status');
  134. $id=$request->input('id');
  135. $re=WareaApply::find($id);
  136. if ($status){
  137. if ($re->type==0){
  138. $s=$this->destoryUser($id);
  139. }else if($re->type==1){
  140. $s=$this->updateRecom($id);
  141. }else if($re->type==2){
  142. $s=$this->restoreUserInfo($re->mobile);
  143. }
  144. if (is_numeric($s)){
  145. $re->status=1;
  146. $re->save();
  147. return $this->success([]);
  148. }else{
  149. return $this->error(500214,$s);
  150. }
  151. }else{
  152. $cause=$request->input('cause');
  153. $re->cause=$cause;
  154. $re->status=2;
  155. $re->save();
  156. return $this->success([]);
  157. }
  158. }
  159. //恢复误删除人员信息
  160. public function restoreUserInfo($mobile){
  161. $rules = [
  162. 'mobile' => [
  163. 'required',
  164. 'regex:/^1[3456789][0-9]{9}$/'
  165. ],
  166. ];
  167. $messages = [
  168. 'mobile.required' => '手机号不能为空.',
  169. 'mobile.regex' => '手机号格式有误.',
  170. ];
  171. $uuu = new User();
  172. DB::beginTransaction();
  173. try {
  174. $result1=User::where('mobile',$mobile)->first();
  175. if($result1){
  176. return '该手机号用户未被删除,核对后再操作';
  177. }
  178. $result=User::onlyTrashed()->where('mobile',$mobile)->first();
  179. if(!$result){
  180. return'手机号信息有误,核对后再操作';
  181. }
  182. User::withTrashed()->where('mobile',$mobile)->restore();
  183. $re_id=$result->recom_id;
  184. $ag_id=$result->agent_id;
  185. $recom_ids=$this->RecomInfo($result->recom_id);
  186. $result->recom_id=$recom_ids;
  187. if ($result->level==3){
  188. $result->agent_id=1;
  189. }else{
  190. $result->agent_id=$this->AgentInfo($recom_ids,$result->level);
  191. }
  192. $result->save();
  193. $this->addAgentOperationLog('6', $result->id, '代理恢复后,更新了邀请人和上级的信息',
  194. '原邀请人id为:'.$re_id.'、上级id为:'.$ag_id.'修改后的邀请人ID为:'.$recom_ids.'、上级ID为:'.$result->agent_id);
  195. $this->addAgentOperationLog('41', $result->id, '撤销删除状态', '撤销删除状态');
  196. Log::info('用户'.$mobile.'被恢复');
  197. DB::commit();
  198. return 1;
  199. }catch(\Exception $e){
  200. DB::rollBack();
  201. return $e->getMessage();
  202. }
  203. }
  204. /**查看邀请人是否删除**/
  205. public function RecomInfo($id){
  206. $user=User::withTrashed()->where('id',$id)->first();
  207. $recom_id=$id;
  208. if ($user->deleted_at){
  209. $recom_id=$this->RecomInfo($user->recom_id);
  210. }
  211. return $recom_id;
  212. }
  213. /**查看上级是否删除**/
  214. public function AgentInfo($id,$level,$k=0){
  215. $user=User::withTrashed()->where('id',$id)->first();
  216. $agent_id=$user->id;
  217. if ($k>5){
  218. throw new \Exception('代理关系有误,请联系开发人员');
  219. }
  220. if ($user->level<=$level){
  221. $k++;
  222. $agent_id=$this->AgentInfo($user->agent_id,$level,$k);
  223. }
  224. return $agent_id;
  225. }
  226. /**变更邀请人**/
  227. public function updateRecom($id)
  228. {
  229. $data=WareaApply::find($id);
  230. $input['id'] = $data->user_id;
  231. $input['mobile'] = $data->mobile;
  232. Log::error('1111');
  233. $uuu = new User();
  234. $user = User::find($input['id']);//当前用户
  235. if ($user->recom_id) {
  236. $recom_id = $user->recom_id;
  237. } else {
  238. $recom_id = '暂无';
  239. }
  240. if ($user->agent_id) {
  241. $up_id = $user->agent_id;
  242. } else {
  243. $up_id = '暂无';
  244. }
  245. $agentCount = User::where(function ($query) use ($input) {
  246. $query->where('recom_id', '=', $input['id'])
  247. ->orWhere('agent_id', '=', $input['id']);
  248. })->count();
  249. //代理邀请人员后,或者成为上级后不能变更推荐人
  250. // if($agentCount>0){
  251. // return $this->error('400112','当前用户邀请人信息不能修改');
  252. // }
  253. $recomUser = User::where("mobile", $input['mobile'])->first();//新邀请人信息
  254. if (empty($recomUser)) {
  255. return '邀请人信息不存在';
  256. }
  257. if ($user->recom_id == $recomUser->id) {
  258. return '要更改的邀请人与当前邀请人相同';
  259. }
  260. if ($user->id == $recomUser->id) {
  261. return '邀请人的手机号不能为自己本人';
  262. }
  263. if ($user->id == $recomUser->recom_id) {
  264. return '要更改的邀请人的邀请人为自己';
  265. }
  266. if ($user->id == $recomUser->id) {
  267. return '要更改的邀请人不能为自己';
  268. }
  269. $uuu = new User();
  270. $rechecking = $uuu->changeRecomSystem($input['id'], $input['mobile']);
  271. if ($rechecking == '222') {
  272. return '要更改的邀请人为当前代理邀请人系统体系内部成员';
  273. }
  274. DB::beginTransaction();
  275. try {
  276. if ($user->level == '3') {
  277. $user->recom_id = $recomUser->id;
  278. $user->agent_id = '1';
  279. $user->crown_id = '';
  280. if ($user->warea_id != $recomUser->warea_id) {
  281. $user->warea_id = $recomUser->warea_id;
  282. $one_agent = User::where('agent_id', $user->id)->pluck('id');
  283. if (count($one_agent) > 0) {
  284. User::whereIn('id', $one_agent)->update(['warea_id' => $recomUser->warea_id]);
  285. foreach ($one_agent as $key => $val) {
  286. $two_agent = User::where('agent_id', $val)->pluck('id');
  287. if (count($two_agent) > 0) {
  288. User::whereIn('id', $two_agent)->update(['warea_id' => $recomUser->warea_id]);
  289. }
  290. }
  291. }
  292. }
  293. } else {
  294. if ($recomUser->level == '3') {
  295. $user->recom_id = $recomUser->id;
  296. $user->agent_id = $recomUser->id;
  297. $user->crown_id = $recomUser->id;
  298. $user->warea_id = $recomUser->warea_id;
  299. if ($user->level == '2') {
  300. $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->id);
  301. } elseif ($user->level == '1') {
  302. $uuu->changeAgentLevelInfoThree($user->id, $recomUser->id, $recomUser->id);
  303. }
  304. $uuu->changeAgentRecomCrown($user->id, $recomUser->id, $recomUser->warea_id);
  305. } elseif ($recomUser->level == '2') {
  306. if ($user->level == '2') {
  307. $user->recom_id = $recomUser->id;
  308. $user->agent_id = $recomUser->agent_id;
  309. $user->crown_id = $recomUser->crown_id;
  310. $user->warea_id = $recomUser->warea_id;
  311. $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->agent_id);
  312. } elseif ($user->level == '1') {
  313. $user->recom_id = $recomUser->id;
  314. $user->agent_id = $recomUser->id;
  315. $user->crown_id = $recomUser->crown_id;
  316. $user->warea_id = $recomUser->warea_id;
  317. $uuu->changeAgentLevelInfoThree($user->id, $recomUser->agent_id, $recomUser->id);
  318. }
  319. $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
  320. } elseif ($recomUser->level == '1') {
  321. $recomAgent = User::find($recomUser->agent_id);
  322. if ($user->level == '2') {
  323. if ($recomAgent->level == $user->level) {
  324. $user->recom_id = $recomUser->id;
  325. $user->agent_id = $recomAgent->agent_id;
  326. $user->crown_id = $recomUser->crown_id;
  327. $user->warea_id = $recomUser->warea_id;
  328. $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->agent_id);
  329. } elseif ($recomAgent->level == 3) {
  330. $user->recom_id = $recomUser->id;
  331. $user->agent_id = $recomAgent->id;
  332. $user->crown_id = $recomUser->crown_id;
  333. $user->warea_id = $recomUser->warea_id;
  334. $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->id);
  335. }
  336. } elseif ($user->level == '1') {
  337. $user->recom_id = $recomUser->id;
  338. $user->agent_id = $recomUser->agent_id;
  339. $user->crown_id = $recomUser->crown_id;
  340. $user->warea_id = $recomUser->warea_id;
  341. $uuu->changeAgentLevelInfoThree($user->id, $recomAgent->agent_id, $recomUser->agent_id);
  342. }
  343. $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
  344. }
  345. }
  346. $row = $user->save();
  347. $remark = $data->remark;
  348. $before = User::where('id', $recom_id)->select('id', 'nickname', 'mobile')->first();
  349. $after = ['id' => $recomUser->id, 'nickname' => $recomUser->nickname, 'mobile' => $recomUser->mobile];
  350. $log = '变更前邀请人:' . json_encode($before, JSON_UNESCAPED_UNICODE) . ',变更后邀请人:' . json_encode($after, JSON_UNESCAPED_UNICODE);
  351. $this->addAgentOperationLog('3', $user->id, $remark, $log, $data->imgList);
  352. event(new ChangeRecom($user));
  353. DB::commit();
  354. 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 . ')');
  355. $data->status=1;
  356. $data->save();
  357. Log::error(222);
  358. return 0;
  359. } catch (\Exception $e) {
  360. DB::rollBack();
  361. Log::error($e->getMessage());
  362. return $e->getMessage();
  363. }
  364. }
  365. //删除用户
  366. public function destoryUser($id)
  367. {
  368. $data=WareaApply::find($id);
  369. $img=$data->imgList;
  370. $input['id']=$data->user_id;
  371. $user = User::withTrashed()->where('id',$data->user_id)->first();
  372. if ($user->deleted_at){
  373. $data->status=1;
  374. $data->save();
  375. return 0;
  376. }
  377. if ($user->level==3){
  378. return '不能直接删除代理公司!';
  379. }
  380. $recom = User::find($user->recom_id);//代理邀请人信息
  381. if (!$recom) {
  382. return '该代理邀请人信息有误,不能删除';
  383. }
  384. //获取代理邀请的人
  385. $recomed=User::where('recom_id',$input['id'])->pluck('id');
  386. $agented=User::where('agent_id',$input['id'])->pluck('id');
  387. //获取代理下级信息
  388. DB::beginTransaction();
  389. $userInfo=User::where('id',$input['id'])->first();
  390. // event(new DeleteAgent($userInfo));
  391. try {
  392. if ($user->level == '3') {
  393. if ($recom->level == '3') {//邀请人等级信息
  394. User::where('agent_id', $input['id'])->update(['agent_id' => $recom->id]);
  395. User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
  396. User::where('crown_id', $input['id'])->update(['crown_id' => $recom->id, 'warea_id' => $recom->warea_id]);
  397. } elseif ($recom->level == '2') {
  398. User::where('agent_id', $input['id'])->where('level', 2)->update(['agent_id' => $recom->agent_id]);
  399. User::where('agent_id', $input['id'])->where('level', 1)->update(['agent_id' => $recom->id]);
  400. User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
  401. $recom_agent = User::where('id', $recom->agent_id)->first();
  402. User::where('crown_id', $input['id'])->update(['crown_id' => $recom_agent->id, 'warea_id' => $recom_agent->warea_id]);
  403. } elseif ($recom->level == '1') {
  404. $upRecom = User::find($recom->agent_id);//代理邀请人上级信息
  405. if (!$upRecom) {
  406. return '该代理邀请人上级信息有误,不能删除';
  407. }
  408. User::where('agent_id', $input['id'])->where('level', 1)->update(['agent_id' => $upRecom->id]);
  409. User::where('agent_id', $input['id'])->where('level', 2)->update(['agent_id' => $upRecom->agent_id]);
  410. User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
  411. $recom_agent = User::where('id', $upRecom->agent_id)->first();
  412. User::where('crown_id', $input['id'])->update(['crown_id' => $upRecom->agent_id, 'warea_id' => $recom_agent->warea_id]);
  413. }
  414. } elseif ($user->level == '2') {
  415. if ($recom->level == '3' || $recom->level == '2') {
  416. User::where('agent_id', $input['id'])->update(['agent_id' => $recom->id]);
  417. } elseif ($recom->level == '1') {
  418. User::where('agent_id', $input['id'])->update(['agent_id' => $recom->agent_id]);
  419. }
  420. User::where('recom_id', $input['id'])->update(['recom_id' => $user->recom_id]);
  421. } elseif ($user->level == '1') {
  422. User::where('recom_id', $input['id'])->update(['recom_id' => $user->recom_id]);
  423. }
  424. $user->delete();
  425. $remark = $data->remark;
  426. $after = ['id' => $user->id, 'nickname' => $user->nickname, 'mobile' => $user->mobile, 'level' => $user->level, 'recom_id' => $user->recom_id, 'agent_id' => $user->agent_id];
  427. $log = '删除用户成功,用户信息:' . json_encode($after, JSON_UNESCAPED_UNICODE).',用户邀请的人ID:'.json_encode($recomed).',用户下级ID:'.json_encode($agented);
  428. $this->addAgentOperationLog('4', $user->id, $remark, $log,$img);
  429. $data->status=1;
  430. $data->save();
  431. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')删除代理:' . $user->nickname . '(id=' . $user->id . ')成功');
  432. DB::commit();
  433. return 0;
  434. } catch (\Exception $e) {
  435. DB::rollBack();
  436. return $e->getMessage();
  437. }
  438. }
  439. //添加代理操作日志
  440. public function addAgentOperationLog($type, $user_id, $remark = null, $log = null,$img=null)
  441. {
  442. return AgentOperationLog::create([
  443. 'type' => $type,
  444. 'admin_name' => Auth::user()->name,
  445. 'admin_id' => Auth::user()->id,
  446. 'user_id' => $user_id,
  447. 'remark' => $remark,
  448. 'img'=>$img,
  449. 'log' => $log,
  450. ]);
  451. }
  452. /*
  453. * 删除申请
  454. * ***/
  455. public function destroy(Request $request){
  456. $re=WareaApply::where('id',$request->input('id'))->first();
  457. if ($re->status==1){
  458. return $this->error(500214,'审核完成的不能删除');
  459. }
  460. WareaApply::where('id',$request->input('id'))->update(['status'=>3,'destroy_cause'=>$request->input('destroy_cause')]);
  461. return $this->success([]);
  462. }
  463. }