WareaController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\AddWarea;
  4. use App\Events\DeleteWarea;
  5. use App\Models\Warea;
  6. use App\Models\Admin;
  7. use App\Models\Service;
  8. use App\Models\User;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Validation\Rule;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\Support\Facades\Log;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Support\Facades\Validator;
  15. class WareaController extends Controller
  16. {
  17. //获取战区列表
  18. public function getWareaList(Request $request){
  19. $input=$request->all();
  20. $page_size=$input['page_size'];
  21. $page_index=$input['page_index'];
  22. $num = ($page_index - 1) * $page_size;
  23. // $search_name=$input['search_name'];
  24. $where=[];
  25. $count=Warea::where($where)
  26. // ->where('name', 'like', '%' . $search_name . '%')
  27. ->count();
  28. if($count==0){
  29. $this->error('400001','没有数据');
  30. }
  31. $list=Warea::where($where)
  32. // ->where('name', 'like', '%' . $search_name . '%')
  33. ->with('admin:id,name')
  34. ->skip($num)->take($page_size)
  35. ->orderBy('id','desc')
  36. ->get();
  37. //<<<<<<< HEAD
  38. foreach($list as $key =>$val){
  39. $list[$key]->levels=$this->getEveryLevelAgentNum($val->id,1);
  40. }
  41. //=======
  42. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  43. if(empty($list)){
  44. return $this->error('400002','没有获取到数据');
  45. }
  46. return $this->success_list($list,'success',$count);
  47. }
  48. //获取战区信息
  49. //<<<<<<< HEAD
  50. public function getWareaListInfos(){
  51. //=======
  52. // public function getWareaListInfos(Request $request){
  53. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  54. $list=Warea::where('status',0)
  55. ->orderBy('id','desc')
  56. ->get();
  57. if(empty($list)){
  58. return $this->error('400002','没有获取到数据');
  59. }
  60. //<<<<<<< HEAD
  61. return $this->success($list);
  62. //=======
  63. // return $this->success_list($list);
  64. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  65. }
  66. //添加战区信息
  67. public function uploadWarea(Request $request){
  68. $input=$request->all();
  69. $rules=[
  70. 'name'=>[
  71. 'required',
  72. Rule::unique('warea')
  73. ->where(function ($query) {
  74. $query->where('deleted_at', null);
  75. })
  76. ],
  77. ];
  78. $messages=[
  79. 'name.required'=>'战区名称不能为空.',
  80. 'name.unique'=>'战区名称已存在.',
  81. ];
  82. $validator = Validator::make($input, $rules, $messages);
  83. if($validator->fails()){
  84. return $this->error('400013',$validator->errors()->first());
  85. }
  86. $war=Warea::where('admin_id',$input['admin_id'])->first();
  87. if($war){
  88. return $this->error('450001','政委已绑定战区');
  89. }
  90. $admin=Admin::where('id',$input['admin_id'])->first();
  91. if($admin->role=='23'){
  92. if(empty($admin->mobile)){
  93. return $this->error('450001','政委没有手机号');
  94. }
  95. }
  96. $admin_id=$input['admin_id'];
  97. $data['name']=$input['name'];
  98. $data['admin_id']=$admin_id;
  99. $data['admin_name']=$input['admin_name'];
  100. $data['status']=0;
  101. $row=Warea::create($data);
  102. if($row){
  103. event(new AddWarea($row));
  104. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加战区成功,战区id='.$row->id);
  105. return $this->success([]);
  106. }
  107. return $this->error();
  108. }
  109. public function updateWarea(Request $request){
  110. $input=$request->all();
  111. $rules=[
  112. 'name'=>[
  113. 'required',
  114. Rule::unique('warea')
  115. ->ignore($input['id'], 'id')
  116. ->where(function ($query) {
  117. $query->where('deleted_at', null);
  118. })
  119. ],
  120. ];
  121. $messages=[
  122. 'name.required'=>'战区名称不能为空.',
  123. 'name.unique'=>'战区名称已存在.',
  124. ];
  125. $validator = Validator::make($input, $rules, $messages);
  126. if($validator->fails()){
  127. return $this->error('400013',$validator->errors()->first());
  128. }
  129. $war=Warea::where('admin_id',$input['admin_id'])->where('id','!=',$input['id'])->first();
  130. if($war){
  131. return $this->error('450001','政委已绑定战区');
  132. }
  133. $before=Warea::where('id',$input['id'])->value('name');
  134. $admin_id=$input['admin_id'];
  135. $data['name']=$input['name'];
  136. $data['admin_id']=$admin_id;
  137. $data['admin_name']=$input['admin_name'];
  138. $row=Warea::where('id',$input['id'])->update($data);
  139. if($row){
  140. $result=Warea::where('id',$input['id'])->first();
  141. $result->before=$before;
  142. event(new AddWarea($result));
  143. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改战区信息成功,战区id='.$input['id']);
  144. return $this->success([]);
  145. }
  146. return $this->error();
  147. }
  148. /* 战区禁用/启用 */
  149. public function shelvedWarea(Request $request){
  150. $user=Warea::find($request->post('id'));
  151. $user->status=($user->status==0)?'1':'0';
  152. $row=$user->save();
  153. if($row){
  154. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')禁用战区成功,战区id='.$request->post('id'));
  155. return $this->success([]);
  156. }
  157. return $this->error();
  158. }
  159. //删除战区信息
  160. public function destoryWarea(Request $request){
  161. $input=$request->all();
  162. $article=Warea::find($input['id']);
  163. $users=User::where('warea_id',$input['id'])->get();
  164. if(count($users)>0){
  165. return $this->error('450001','该战区存在代理,不能删除');
  166. }
  167. $row=$article->delete();
  168. if($row){
  169. event(new DeleteWarea($article));
  170. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除战区成功,战区id='.$input['id']);
  171. return $this->success([]);
  172. }
  173. return $this->error();
  174. }
  175. //政委管理
  176. public function getCommissarList(Request $request){
  177. $input=$request->all();
  178. $page_size=$input['page_size'];
  179. $page_index=$input['page_index'];
  180. $num = ($page_index - 1) * $page_size;
  181. $where=function($query){
  182. $query->whereIn('role_id',[23]);
  183. };
  184. $count=Admin::where($where)->count();
  185. if($count<=0){
  186. $this->error('450001','暂无数据');
  187. }
  188. $list=Admin::where($where)->skip($num)->take($page_size)
  189. ->orderBy('id','desc')->get();
  190. foreach($list as $key =>$val){
  191. $list[$key]->levels=$this->getEveryLevelAgentNum($val->id,2);
  192. }
  193. return $this->success_list($list,'获取数据成功',$count);
  194. }
  195. //获取政委信息
  196. public function getCommissarInfo(){
  197. $where=function($query){
  198. $query->whereIn('role_id',[23]);
  199. };
  200. $list=Admin::where($where)->where('status',1)->get();
  201. return $this->success($list);
  202. }
  203. //获取各级别代理数量
  204. public function getEveryLevelAgentNum($id,$type){
  205. if($type==1){//战区
  206. return User::where('warea_id',$id)
  207. ->select('level',DB::Raw('count(*) as num'))
  208. ->groupBy('level')->orderBy('level','desc')->get();
  209. }elseif($type==2){//政委
  210. //获取政委战区
  211. $warea_ids=Warea::where('admin_id',$id)->where('status',0)->pluck('id');
  212. return User::whereIn('warea_id',$warea_ids)
  213. ->select('level',DB::Raw('count(*) as num'))
  214. ->groupBy('level')->orderBy('level','desc')->get();
  215. }else{
  216. return '';
  217. }
  218. }
  219. //获取筛选代理
  220. public function getAgentList(Request $request){
  221. $input=$request->all();
  222. $page_size=$input['page_size'];
  223. $page_index=$input['page_index'];
  224. $num = ($page_index - 1) * $page_size;
  225. $warea_id=$input['warea_id'];
  226. $commissar_id=$input['commissar_id'];
  227. $data=User::where('');
  228. if($warea_id && $commissar_id){
  229. $data->where('warea_id',$warea_id);
  230. }elseif (empty($warea_id) && $commissar_id){
  231. $warea_ids=$this->getAllWareaIds($commissar_id);
  232. $data->whereIn('warea_id',$warea_ids);
  233. }
  234. $count=$data->count();
  235. if($count==0){
  236. $this->error('400001','没有数据');
  237. }
  238. $list=$data->skip($num)->take($page_size)
  239. ->orderBy('id','desc')->get();
  240. return $this->success_list($list,'获取数据成功',$count);
  241. }
  242. //获取战区信息
  243. public function getWareaInfo(){
  244. $where=function($query){
  245. $query->whereIn('role_id',[23]);
  246. };
  247. $list=Admin::where($where)->where('status',1)->get();
  248. foreach($list as $key=>$val){
  249. $list[$key]->warea=Warea::where('admin_id',$val->id)->get();
  250. }
  251. return $this->success($list);
  252. }
  253. public function getAllWareaIds($commissar_id){
  254. return Warea::where('admin_id',$commissar_id)->where('status',0)->pluck('id');
  255. }
  256. //=======
  257. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  258. //代理公司分配战区
  259. public function giveUserWarea(){
  260. $agent= DB::table('service_copy1')->get();
  261. DB::beginTransaction();
  262. $uuu=[];
  263. try {
  264. foreach ($agent as $key => $val) {
  265. $warea_id = Warea::where('name', $val->war_names)->value('id');
  266. User::where('mobile', $val->phone)->where('level', 3)->update(['warea_id' => $warea_id]);
  267. $user = User::where('mobile', $val->phone)->where('level', 3)->first();
  268. if(!$user){
  269. array_push($uuu,$val);
  270. }
  271. if($user){
  272. $one = User::where('agent_id', $user->id)->pluck('id');
  273. if (count($one)>0) {
  274. User::whereIn('id', $one)->update(['warea_id' => $warea_id]);
  275. foreach ($one as $k => $v) {
  276. $two = User::where('agent_id', $v)->pluck('id');
  277. if (count($two)>0) {
  278. User::whereIn('id', $two)->update(['warea_id' => $warea_id]);
  279. }
  280. }
  281. }
  282. }
  283. }
  284. DB::commit();
  285. return $this->success($uuu);
  286. // return $this->success([]);
  287. }catch (\Exception $e){
  288. DB::rollBack();
  289. return $this->error('400154','',$e->getMessage());
  290. }
  291. }
  292. }