WareaController.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. <?php
  2. namespace Modules\Manager\Http\Controllers;
  3. use Modules\Manager\Events\AddWarea;
  4. use Modules\Manager\Events\DeleteWarea;
  5. use App\Models\Express;
  6. use App\Models\Ordertest;
  7. use App\Models\Warea;
  8. use App\Models\Admin;
  9. use App\Models\User;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Validation\Rule;
  12. use Illuminate\Support\Facades\DB;
  13. use Illuminate\Support\Facades\Log;
  14. use Illuminate\Support\Facades\Auth;
  15. use Illuminate\Support\Facades\Validator;
  16. class WareaController extends Controller
  17. {
  18. public function del(){
  19. $re=Express::where('created_at','>','2021-04-30 00:00:00')->where('is_gift',0)->groupBy('order_id')->get();
  20. foreach ($re as $k=>$v){
  21. $res=Ordertest::where('id',$v->order_id)->select('total','track_status')->first();
  22. $nums=Express::where('order_id',$v->order_id)->sum('total');
  23. if ($res->total==$nums){
  24. if ($res->track_status!=2){
  25. Ordertest::where('id',$v->order_id)->update(['track_status'=>2]);
  26. dump($v->order_id.'=====应该全部发货');
  27. }
  28. }
  29. if ($res->total>$nums){
  30. if ($res->track_status!=1){
  31. dump($v->order_id.'====应该是部分发货');
  32. }
  33. }
  34. if ($res->total<$nums){
  35. dump($v->order_id.'=======超了??=');
  36. }
  37. }
  38. dd(1);
  39. $data=[
  40. 'DWBS-20210426899-4512',
  41. 'DWBS-20210426804-2100',
  42. 'DWBS-20210426621-1306',
  43. 'DWBS-20210426951-3624',
  44. 'DWBS-20210426172-9901',
  45. 'DWBS-20210428165-1556',
  46. 'DWBS-20210428517-4936',
  47. 'DWBS-20210427936-5494',
  48. 'DWBS-20210427233-8785',
  49. 'DWBS-20210427542-3518',
  50. 'DWBS-20210427249-7475',
  51. 'DWBS-20210427179-3219',
  52. 'DWBS-20210427275-2904',
  53. 'DWBS-20210429536-1342',
  54. 'DWBS-20210428517-2982',
  55. 'DWBS-20210427590-7406',
  56. 'DWBS-20210427911-2215'
  57. ];
  58. // $orders_id=Ordertest::whereIn('order_num',$data)->pluck('id');
  59. // $express=Express::whereIn('order_id',$orders_id)->get();
  60. $express=Express::where('created_at','>','2021-04-30 00:00:00')->where('is_gift',0)->get();
  61. foreach ($express as $k=>$v){
  62. $str=trim($v->note);
  63. $result=0;
  64. for($i=0;$i<strlen($str);$i++){
  65. if(is_numeric($str[$i])){
  66. if ($i+1<strlen($str)){
  67. if (is_numeric($str[$i+1])){
  68. $result=10;
  69. }else{
  70. $result+=$str[$i];
  71. }
  72. }
  73. }
  74. }
  75. if ($result!=$v->total){
  76. dump($v->id.'===='.$result.'======'.$v->total.'========='.$v->note);
  77. }
  78. // if ($result!=0){
  79. // Express::where('id',$v->id)->update(['total'=>$result]);
  80. // }
  81. }
  82. }
  83. //获取战区列表
  84. public function getWareaList(Request $request){
  85. $input=$request->all();
  86. $page_size=$input['page_size'];
  87. $page_index=$input['page_index'];
  88. $num = ($page_index - 1) * $page_size;
  89. // $search_name=$input['search_name'];
  90. $where=[];
  91. $count=Warea::where($where)
  92. // ->where('name', 'like', '%' . $search_name . '%')
  93. ->count();
  94. if($count==0){
  95. $this->error('400001','没有数据');
  96. }
  97. $list=Warea::where($where)
  98. // ->where('name', 'like', '%' . $search_name . '%')
  99. ->with('admin:id,name')
  100. ->skip($num)->take($page_size)
  101. ->orderBy('id','desc')
  102. ->get();
  103. //<<<<<<< HEAD
  104. foreach($list as $key =>$val){
  105. $list[$key]->levels=$this->getEveryLevelAgentNum($val->id,1);
  106. }
  107. //=======
  108. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  109. if(empty($list)){
  110. return $this->error('400002','没有获取到数据');
  111. }
  112. return $this->success_list($list,'success',$count);
  113. }
  114. //获取战区信息
  115. //<<<<<<< HEAD
  116. public function getWareaListInfos(){
  117. //=======
  118. // public function getWareaListInfos(Request $request){
  119. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  120. $list=Warea::where('status',0)
  121. ->orderBy('id','desc')
  122. ->get();
  123. if(empty($list)){
  124. return $this->error('400002','没有获取到数据');
  125. }
  126. //<<<<<<< HEAD
  127. return $this->success($list);
  128. //=======
  129. // return $this->success_list($list);
  130. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  131. }
  132. //添加战区信息
  133. public function uploadWarea(Request $request){
  134. $input=$request->all();
  135. $rules=[
  136. 'name'=>[
  137. 'required',
  138. Rule::unique('warea')
  139. ->where(function ($query) {
  140. $query->where('deleted_at', null);
  141. })
  142. ],
  143. ];
  144. $messages=[
  145. 'name.required'=>'战区名称不能为空.',
  146. 'name.unique'=>'战区名称已存在.',
  147. ];
  148. $validator = Validator::make($input, $rules, $messages);
  149. if($validator->fails()){
  150. return $this->error('400013',$validator->errors()->first());
  151. }
  152. $war=Warea::where('admin_id',$input['admin_id'])->first();
  153. if($war){
  154. return $this->error('450001','政委已绑定战区');
  155. }
  156. $admin=Admin::where('id',$input['admin_id'])->first();
  157. if($admin->role=='23'){
  158. if(empty($admin->mobile)){
  159. return $this->error('450001','政委没有手机号');
  160. }
  161. }
  162. $admin_id=$input['admin_id'];
  163. $data['name']=$input['name'];
  164. $data['admin_id']=$admin_id;
  165. $data['admin_name']=$input['admin_name'];
  166. $data['status']=0;
  167. $row=Warea::create($data);
  168. if($row){
  169. event(new AddWarea($row));
  170. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加战区成功,战区id='.$row->id);
  171. return $this->success([]);
  172. }
  173. return $this->error();
  174. }
  175. public function updateWarea(Request $request){
  176. $input=$request->all();
  177. $rules=[
  178. 'name'=>[
  179. 'required',
  180. Rule::unique('warea')
  181. ->ignore($input['id'], 'id')
  182. ->where(function ($query) {
  183. $query->where('deleted_at', null);
  184. })
  185. ],
  186. ];
  187. $messages=[
  188. 'name.required'=>'战区名称不能为空.',
  189. 'name.unique'=>'战区名称已存在.',
  190. ];
  191. $validator = Validator::make($input, $rules, $messages);
  192. if($validator->fails()){
  193. return $this->error('400013',$validator->errors()->first());
  194. }
  195. $war=Warea::where('admin_id',$input['admin_id'])->where('id','!=',$input['id'])->first();
  196. if($war){
  197. return $this->error('450001','政委已绑定战区');
  198. }
  199. $before=Warea::where('id',$input['id'])->value('name');
  200. $admin_id=$input['admin_id'];
  201. $data['name']=$input['name'];
  202. $data['admin_id']=$admin_id;
  203. $data['admin_name']=$input['admin_name'];
  204. $row=Warea::where('id',$input['id'])->update($data);
  205. if($row){
  206. $result=Warea::where('id',$input['id'])->first();
  207. $result->before=$before;
  208. event(new AddWarea($result));
  209. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改战区信息成功,战区id='.$input['id']);
  210. return $this->success([]);
  211. }
  212. return $this->error();
  213. }
  214. /* 战区禁用/启用 */
  215. public function shelvedWarea(Request $request){
  216. $user=Warea::find($request->post('id'));
  217. $user->status=($user->status==0)?'1':'0';
  218. $row=$user->save();
  219. if($row){
  220. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')禁用战区成功,战区id='.$request->post('id'));
  221. return $this->success([]);
  222. }
  223. return $this->error();
  224. }
  225. //删除战区信息
  226. public function destoryWarea(Request $request){
  227. $input=$request->all();
  228. $article=Warea::find($input['id']);
  229. $users=User::where('warea_id',$input['id'])->get();
  230. if(count($users)>0){
  231. return $this->error('450001','该战区存在代理,不能删除');
  232. }
  233. $row=$article->delete();
  234. if($row){
  235. event(new DeleteWarea($article));
  236. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除战区成功,战区id='.$input['id']);
  237. return $this->success([]);
  238. }
  239. return $this->error();
  240. }
  241. //政委管理
  242. public function getCommissarList(Request $request){
  243. $input=$request->all();
  244. $page_size=$input['page_size'];
  245. $page_index=$input['page_index'];
  246. $num = ($page_index - 1) * $page_size;
  247. $where=function($query){
  248. $query->whereIn('role_id',[23]);
  249. };
  250. $count=Admin::where($where)->count();
  251. if($count<=0){
  252. $this->error('450001','暂无数据');
  253. }
  254. $list=Admin::where($where)->skip($num)->take($page_size)
  255. ->orderBy('id','desc')->get();
  256. foreach($list as $key =>$val){
  257. $list[$key]->levels=$this->getEveryLevelAgentNum($val->id,2);
  258. }
  259. return $this->success_list($list,'获取数据成功',$count);
  260. }
  261. //获取政委信息
  262. public function getCommissarInfo(){
  263. $where=function($query){
  264. $query->whereIn('role_id',[23]);
  265. };
  266. $list=Admin::where($where)->where('status',1)->get();
  267. return $this->success($list);
  268. }
  269. //获取各级别代理数量
  270. public function getEveryLevelAgentNum($id,$type){
  271. if($type==1){//战区
  272. return User::where('warea_id',$id)
  273. ->select('level',DB::Raw('count(*) as num'))
  274. ->groupBy('level')->orderBy('level','desc')->get();
  275. }elseif($type==2){//政委
  276. //获取政委战区
  277. $warea_ids=Warea::where('admin_id',$id)->where('status',0)->pluck('id');
  278. return User::whereIn('warea_id',$warea_ids)
  279. ->select('level',DB::Raw('count(*) as num'))
  280. ->groupBy('level')->orderBy('level','desc')->get();
  281. }else{
  282. return '';
  283. }
  284. }
  285. //获取筛选代理
  286. public function getAgentList(Request $request){
  287. $input=$request->all();
  288. $page_size=$input['page_size'];
  289. $page_index=$input['page_index'];
  290. $num = ($page_index - 1) * $page_size;
  291. $warea_id=$input['warea_id'];
  292. $commissar_id=$input['commissar_id'];
  293. $data=User::where('');
  294. if($warea_id && $commissar_id){
  295. $data->where('warea_id',$warea_id);
  296. }elseif (empty($warea_id) && $commissar_id){
  297. $warea_ids=$this->getAllWareaIds($commissar_id);
  298. $data->whereIn('warea_id',$warea_ids);
  299. }
  300. $count=$data->count();
  301. if($count==0){
  302. $this->error('400001','没有数据');
  303. }
  304. $list=$data->skip($num)->take($page_size)
  305. ->orderBy('id','desc')->get();
  306. return $this->success_list($list,'获取数据成功',$count);
  307. }
  308. //获取战区信息
  309. public function getWareaInfo(){
  310. $where=function($query){
  311. $query->whereIn('role_id',[23]);
  312. };
  313. $list=Admin::where($where)->where('status',1)->get();
  314. foreach($list as $key=>$val){
  315. $list[$key]->warea=Warea::where('admin_id',$val->id)->get();
  316. }
  317. return $this->success($list);
  318. }
  319. public function getAllWareaIds($commissar_id){
  320. return Warea::where('admin_id',$commissar_id)->where('status',0)->pluck('id');
  321. }
  322. //=======
  323. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  324. //代理公司分配战区
  325. public function giveUserWarea(){
  326. $agent= DB::table('service_copy1')->get();
  327. DB::beginTransaction();
  328. $uuu=[];
  329. try {
  330. foreach ($agent as $key => $val) {
  331. $warea_id = Warea::where('name', $val->war_names)->value('id');
  332. User::where('mobile', $val->phone)->where('level', 3)->update(['warea_id' => $warea_id]);
  333. $user = User::where('mobile', $val->phone)->where('level', 3)->first();
  334. if(!$user){
  335. array_push($uuu,$val);
  336. }
  337. if($user){
  338. $one = User::where('agent_id', $user->id)->pluck('id');
  339. if (count($one)>0) {
  340. User::whereIn('id', $one)->update(['warea_id' => $warea_id]);
  341. foreach ($one as $k => $v) {
  342. $two = User::where('agent_id', $v)->pluck('id');
  343. if (count($two)>0) {
  344. User::whereIn('id', $two)->update(['warea_id' => $warea_id]);
  345. }
  346. }
  347. }
  348. }
  349. }
  350. DB::commit();
  351. return $this->success($uuu);
  352. // return $this->success([]);
  353. }catch (\Exception $e){
  354. DB::rollBack();
  355. return $this->error('400154','',$e->getMessage());
  356. }
  357. }
  358. }