HuizongController.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020-10-13
  6. * Time: 16:43
  7. */
  8. namespace app\back\controller;
  9. use app\back\model\UserModel;
  10. use app\back\model\RegionModel;
  11. use app\back\model\AgencyModel;
  12. use app\back\model\JsOrderModel;
  13. use cmf\controller\AdminBaseController;
  14. use think\Db;
  15. class HuizongController extends AdminBaseController
  16. {
  17. public function getList()
  18. {
  19. $JsOrderModel = new JsOrderModel();
  20. $id = cmf_get_current_admin_id();
  21. $admin = UserModel::find($id);
  22. $userObject = UserModel::where('mobile',$admin->user_login)->where('user_type',2)->select();
  23. $userArray = $userObject->toArray();
  24. if(count($userArray))
  25. {
  26. $user = $userObject[0];
  27. }
  28. $agency_id = 0;
  29. if(isset($user->agency_id) && !empty($user->agency_id))
  30. {
  31. $agency_id = (int)$user->agency_id;
  32. }
  33. $where = [];
  34. //如果有 代理 id 表示 是有区县代理的
  35. if($agency_id)
  36. {
  37. $agency = AgencyModel::find($agency_id);
  38. //需要判断 renk_id 是 1 还是 2 1级代理是地级市 2级代理是区县级
  39. if($agency->renk_id === 1)
  40. {
  41. $region = RegionModel::where('id',$agency->city_id)->select()[0];
  42. $where['city'] = $region->cityName;
  43. }
  44. else
  45. {
  46. $region = RegionModel::where('id',$agency->district_id)->select()[0];
  47. $where['district'] = $region->cityName;
  48. }
  49. }
  50. //今日时间
  51. $day_start_time = strtotime(date('Y-m-d'));
  52. $day_end_time = strtotime(date('Y-m-d') . '23:59:59');
  53. $jinri_money = $JsOrderModel->whereTime('pay_time',[$day_start_time,$day_end_time])->where($where)->where(function ($query){
  54. $query->where('status','<>',0);
  55. $query->where('status','<>',5);
  56. })->sum('price');
  57. // dump($jinri_money);
  58. //本月时间
  59. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  60. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  61. $m_money = $JsOrderModel->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where($where)->where(function ($query){
  62. $query->where('status','<>',0);
  63. $query->where('status','<>',5);
  64. })->sum('price');
  65. //本季度时间
  66. $season = ceil(date('n') /3);
  67. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  68. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  69. $jidu_money = $JsOrderModel->whereTime('pay_time',[$jidu_start,$jidu_end])->where($where)->where(function ($query){
  70. $query->where('status','<>',0);
  71. $query->where('status','<>',5);
  72. })->sum('price');
  73. //本年度时间
  74. $year_start = strtotime(date('Y-01-01'));
  75. $year_end = strtotime(date('Y-12-31 23:59:59'));
  76. $year_money = $JsOrderModel->whereTime('pay_time',[$year_start,$year_end])->where($where)->where(function ($query){
  77. $query->where('status','<>',0);
  78. $query->where('status','<>',5);
  79. })->sum('price');
  80. //总金额
  81. $zong = $JsOrderModel->where('pay_time','>',0)->where($where)->where(function ($query){
  82. $query->where('status','<>',0);
  83. $query->where('status','<>',5);
  84. })->sum('price');
  85. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong,'agency_id'=>$agency_id]);
  86. }
  87. public function soso()
  88. {
  89. $type = $this->request->param('type');
  90. $keyword = $this->request->param('keyword');
  91. $start_time = $this->request->param('start_time');
  92. $end_time = $this->request->param('end_time');
  93. $jinri_money = 0;
  94. $m_money = 0;
  95. $jidu_money = 0;
  96. $year_money = 0;
  97. $zong = 0;
  98. $JsOrderModel = new JsOrderModel();
  99. $where = [];
  100. if(($start_time && $end_time) && !$keyword){
  101. $day_start_time = strtotime($start_time);
  102. $day_end_time = strtotime($end_time . '23:59:59');
  103. $jinri_money = $JsOrderModel->whereTime('pay_time',[$day_start_time,$day_end_time])->where(function ($query){
  104. $query->where('status','<>',0);
  105. $query->where('status','<>',5);
  106. })->sum('price');
  107. //本月时间
  108. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  109. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  110. $m_money = $JsOrderModel->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where(function ($query){
  111. $query->where('status','<>',0);
  112. $query->where('status','<>',5);
  113. })->sum('price');
  114. //本季度时间
  115. $season = ceil(date('n') /3);
  116. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  117. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  118. $jidu_money = $JsOrderModel->whereTime('pay_time',[$jidu_start,$jidu_end])->where(function ($query){
  119. $query->where('status','<>',0);
  120. $query->where('status','<>',5);
  121. })->sum('price');
  122. //本年度时间
  123. $year_start = strtotime(date('Y-01-01'));
  124. $year_end = strtotime(date('Y-12-31 23:59:59'));
  125. $year_money = $JsOrderModel->whereTime('pay_time',[$year_start,$year_end])->where(function ($query){
  126. $query->where('status','<>',0);
  127. $query->where('status','<>',5);
  128. })->sum('price');
  129. //总金额
  130. $zong = $JsOrderModel->where(function ($query) use ($day_start_time,$day_end_time){
  131. if($day_start_time && $day_end_time){
  132. $query->whereTime('pay_time',[$day_start_time,$day_end_time]);
  133. }
  134. })->where($where)->where(function ($query){
  135. $query->where('status','<>',0);
  136. $query->where('status','<>',5);
  137. })->sum('price');
  138. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong]);
  139. }else{
  140. switch ($type){
  141. case 1://代理商
  142. if($keyword){
  143. $agency_id = Db::name('user')->where('mobile',$keyword)->value('agency_id');
  144. if(! $agency_id){
  145. return ['code'=>100,'msg'=>'该用户还不是代理商!'];
  146. }
  147. $district_id = Db::name('agency')->where('id',$agency_id)->value('district_id');
  148. $user_ids = Db::name('user')->where(['district_id'=>$district_id,'user_type'=>2])->field('id')->select();
  149. $user_new_ids = [];
  150. foreach ($user_ids as $vo){
  151. $user_new_ids[] = $vo['id'];
  152. }
  153. if(!$user_new_ids){
  154. return ['code'=>100,'msg'=>'该代理,地区还没有用户'];
  155. }
  156. $where['user_id'] = $user_new_ids;
  157. //今日时间
  158. $day_start_time = strtotime(date('Y-m-d'));
  159. $day_end_time = strtotime(date('Y-m-d') . '23:59:59');
  160. $jinri_money = $JsOrderModel::where($where)->whereTime('pay_time',[$day_start_time,$day_end_time])->where(function ($query){
  161. $query->where('status','<>',0);
  162. $query->where('status','<>',5);
  163. })->sum('price');
  164. //本月时间
  165. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  166. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  167. $m_money = $JsOrderModel::where($where)->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where(function ($query){
  168. $query->where('status','<>',0);
  169. $query->where('status','<>',5);
  170. })->sum('price');
  171. //本季度时间
  172. $season = ceil(date('n') /3);
  173. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  174. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  175. $jidu_money = $JsOrderModel::where($where)->whereTime('pay_time',[$jidu_start,$jidu_end])->where(function ($query){
  176. $query->where('status','<>',0);
  177. $query->where('status','<>',5);
  178. })->sum('price');
  179. //本年度时间
  180. $year_start = strtotime(date('Y-01-01'));
  181. $year_end = strtotime(date('Y-12-31 23:59:59'));
  182. $year_money = $JsOrderModel::where($where)->whereTime('pay_time',[$year_start,$year_end])->where(function ($query){
  183. $query->where('status','<>',0);
  184. $query->where('status','<>',5);
  185. })->sum('price');
  186. //总金额
  187. $zong = $JsOrderModel::where($where)->where(function ($query) use ($start_time,$end_time){
  188. if($start_time && $end_time){
  189. $query->whereTime('pay_time',[$start_time,$end_time]);
  190. }
  191. })->where(function ($query){
  192. $query->where('status','<>',0);
  193. $query->where('status','<>',5);
  194. })->sum('price');
  195. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong]);
  196. }
  197. break;
  198. case 2://技师
  199. if($keyword){
  200. $user_id = Db::name('user')->where('mobile',$keyword)->where('user_type',3)->value('id');
  201. if(! $user_id){
  202. return ['code'=>100,'msg'=>'该用户不是技师!'];
  203. }
  204. $js_id = Db::name('js')->where('user_id',$user_id)->value('id');
  205. $where['jiedan_js_id'] = $js_id;
  206. //今日时间
  207. $day_start_time = strtotime(date('Y-m-d'));
  208. $day_end_time = strtotime(date('Y-m-d') . '23:59:59');
  209. $jinri_money = $JsOrderModel::where($where)->whereTime('pay_time',[$day_start_time,$day_end_time])->where(function ($query){
  210. $query->where('status',3);
  211. $query->whereOR('status',4);
  212. $query->whereOR('status',6);
  213. })->sum('price');
  214. //本月时间
  215. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  216. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  217. $m_money = $JsOrderModel::where($where)->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where(function ($query){
  218. $query->where('status',3);
  219. $query->whereOR('status',4);
  220. $query->whereOR('status',6);
  221. })->sum('price');
  222. //本季度时间
  223. $season = ceil(date('n') /3);
  224. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  225. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  226. $jidu_money = $JsOrderModel::where($where)->whereTime('pay_time',[$jidu_start,$jidu_end])->where(function ($query){
  227. $query->where('status',3);
  228. $query->whereOR('status',4);
  229. $query->whereOR('status',6);
  230. })->sum('price');
  231. //本年度时间
  232. $year_start = strtotime(date('Y-01-01'));
  233. $year_end = strtotime(date('Y-12-31 23:59:59'));
  234. $year_money = $JsOrderModel::where($where)->whereTime('pay_time',[$year_start,$year_end])->where(function ($query){
  235. $query->where('status',3);
  236. $query->whereOR('status',4);
  237. $query->whereOR('status',6);
  238. })->sum('price');
  239. //总金额
  240. $zong = $JsOrderModel::where($where)->where(function ($query) use ($start_time,$end_time){
  241. if($start_time && $end_time){
  242. $query->whereTime('pay_time',[$start_time,$end_time]);
  243. }
  244. })->where(function ($query){
  245. $query->where('status',3);
  246. $query->whereOR('status',4);
  247. $query->whereOR('status',6);
  248. })->sum('price');
  249. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong]);
  250. }
  251. break;
  252. case 3://用户
  253. if($keyword){
  254. $user_id = Db::name('user')->where('mobile',$keyword)->where('user_type',2)->value('id');
  255. $where['user_id'] = $user_id;
  256. //今日时间
  257. $day_start_time = strtotime(date('Y-m-d'));
  258. $day_end_time = strtotime(date('Y-m-d') . '23:59:59');
  259. $jinri_money = $JsOrderModel::where($where)->whereTime('pay_time',[$day_start_time,$day_end_time])->where(function ($query){
  260. $query->where('status','<>',0);
  261. $query->where('status','<>',5);
  262. })->sum('price');
  263. //本月时间
  264. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  265. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  266. $m_money = $JsOrderModel::where($where)->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where(function ($query){
  267. $query->where('status','<>',0);
  268. $query->where('status','<>',5);
  269. })->sum('price');
  270. //本季度时间
  271. $season = ceil(date('n') /3);
  272. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  273. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  274. $jidu_money = $JsOrderModel::where($where)->whereTime('pay_time',[$jidu_start,$jidu_end])->where(function ($query){
  275. $query->where('status','<>',0);
  276. $query->where('status','<>',5);
  277. })->sum('price');
  278. //本年度时间
  279. $year_start = strtotime(date('Y-01-01'));
  280. $year_end = strtotime(date('Y-12-31 23:59:59'));
  281. $year_money = $JsOrderModel::where($where)->whereTime('pay_time',[$year_start,$year_end])->where(function ($query){
  282. $query->where('status','<>',0);
  283. $query->where('status','<>',5);
  284. })->sum('price');
  285. //总金额
  286. $zong = $JsOrderModel::where($where)->where(function ($query) use ($start_time,$end_time){
  287. if($start_time && $end_time){
  288. $query->whereTime('pay_time',[$start_time,$end_time]);
  289. }
  290. })->where(function ($query){
  291. $query->where('status','<>',0);
  292. $query->where('status','<>',5);
  293. })->sum('price');
  294. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong]);
  295. }
  296. break;
  297. case 4: //地区
  298. if($keyword){
  299. // $user_id = Db::name('user')->where('mobile',$keyword)->where('user_type',2)->value('id');
  300. $where['district'] = $keyword;
  301. //今日时间
  302. $day_start_time = strtotime(date('Y-m-d'));
  303. $day_end_time = strtotime(date('Y-m-d') . '23:59:59');
  304. $jinri_money = $JsOrderModel::where($where)->whereTime('pay_time',[$day_start_time,$day_end_time])->where(function ($query){
  305. $query->where('status','<>',0);
  306. $query->where('status','<>',5);
  307. })->sum('price');
  308. //本月时间
  309. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  310. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  311. $m_money = $JsOrderModel::where($where)->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where(function ($query){
  312. $query->where('status','<>',0);
  313. $query->where('status','<>',5);
  314. })->sum('price');
  315. //本季度时间
  316. $season = ceil(date('n') /3);
  317. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  318. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  319. $jidu_money = $JsOrderModel::where($where)->whereTime('pay_time',[$jidu_start,$jidu_end])->where(function ($query){
  320. $query->where('status','<>',0);
  321. $query->where('status','<>',5);
  322. })->sum('price');
  323. //本年度时间
  324. $year_start = strtotime(date('Y-01-01'));
  325. $year_end = strtotime(date('Y-12-31 23:59:59'));
  326. $year_money = $JsOrderModel::where($where)->whereTime('pay_time',[$year_start,$year_end])->where(function ($query){
  327. $query->where('status','<>',0);
  328. $query->where('status','<>',5);
  329. })->sum('price');
  330. //总金额
  331. $zong = $JsOrderModel::where($where)->where(function ($query) use ($start_time,$end_time){
  332. if($start_time && $end_time){
  333. $query->whereTime('pay_time',[$start_time,$end_time]);
  334. }
  335. })->where(function ($query){
  336. $query->where('status','<>',0);
  337. $query->where('status','<>',5);
  338. })->sum('price');
  339. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong]);
  340. }
  341. break;
  342. default:
  343. //今日时间
  344. $day_start_time = strtotime(date('Y-m-d'));
  345. $day_end_time = strtotime(date('Y-m-d') . '23:59:59');
  346. $jinri_money = $JsOrderModel->whereTime('pay_time',[$day_start_time,$day_end_time])->where(function ($query){
  347. $query->where('status','<>',0);
  348. $query->where('status','<>',5);
  349. })->sum('price');
  350. //本月时间
  351. $m_start_time = (date('Y-m-01', strtotime(date('Y-m-d'))));
  352. $m_end_time = strtotime(date('Y-m-d', strtotime("$m_start_time +1 month -1 day")). '23:59:59');
  353. $m_money = $JsOrderModel->whereTime('pay_time',[strtotime($m_start_time),$m_end_time])->where(function ($query){
  354. $query->where('status','<>',0);
  355. $query->where('status','<>',5);
  356. })->sum('price');
  357. //本季度时间
  358. $season = ceil(date('n') /3);
  359. $jidu_start = date('Y-m-01',mktime(0,0,0,($season - 1) *3 +1,1,date('Y')));
  360. $jidu_end = date('Y-m-t 23:59:59',mktime(0,0,0,$season * 3,1,date('Y')));
  361. $jidu_money = $JsOrderModel->whereTime('pay_time',[$jidu_start,$jidu_end])->where(function ($query){
  362. $query->where('status','<>',0);
  363. $query->where('status','<>',5);
  364. })->sum('price');
  365. //本年度时间
  366. $year_start = strtotime(date('Y-01-01'));
  367. $year_end = strtotime(date('Y-12-31 23:59:59'));
  368. $year_money = $JsOrderModel->whereTime('pay_time',[$year_start,$year_end])->where(function ($query){
  369. $query->where('status','<>',0);
  370. $query->where('status','<>',5);
  371. })->sum('price');
  372. //总金额
  373. $zong = $JsOrderModel->where('pay_time','>',0)->where($where)->where(function ($query){
  374. $query->where('status','<>',0);
  375. $query->where('status','<>',5);
  376. })->sum('price');
  377. return json(['code'=>1,'jinri'=>$jinri_money,'m'=>$m_money,'jidu'=>$jidu_money,'year'=>$year_money,'zong'=>$zong]);
  378. }
  379. }
  380. }
  381. }