DashboardController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <?php
  2. namespace app\admin\controller;
  3. use think\exception\ValidateException;
  4. use app\model\Order;
  5. use app\model\OrderStatus;
  6. use app\model\Goods;
  7. use app\model\Member;
  8. use app\model\Technical;
  9. use app\model\Agent;
  10. use app\model\Operatingcity;
  11. use app\model\Tuanzhang;
  12. use app\model\RegisterField;
  13. use app\model\AgentLevel;
  14. use app\model\PartnerLevel;
  15. use app\model\Agreement;
  16. use app\model\OperatingcityLevel;
  17. use app\model\Paymethod;
  18. use app\model\TechnicalLevel;
  19. use app\model\Lang;
  20. use app\model\BottomMenu;
  21. use app\model\GoodsQuantityUnit;
  22. class DashboardController extends Base
  23. {
  24. function index()
  25. {
  26. $weid = weid();
  27. $where['weid'] = $weid;
  28. $orderwhere = $where;
  29. $Goodswhere = $where;
  30. $Memberwhere = $where;
  31. $Technicalwhere = $where;
  32. if (!empty($this->sid)) {
  33. $sidwhere = $where;
  34. $sidwhere['sid'] = $this->sid;
  35. $orderwhere = $sidwhere;
  36. $Goodswhere = $sidwhere;
  37. $Memberwhere = $sidwhere;
  38. $Technicalwhere = $sidwhere;
  39. } elseif (!empty($this->ocid)) {
  40. $Operatingcitydata = Operatingcity::find($this->ocid);
  41. if ($Operatingcitydata) {
  42. $Operatingcitydata = $Operatingcitydata->toArray();
  43. if(empty($Operatingcitydata['areatype'])){
  44. $Operatingcitydata['areatype'] = 3;
  45. }
  46. if ($Operatingcitydata['areatype'] == 3) {
  47. $orderwhere['shipping_district_name'] = $Operatingcitydata['district_name'];
  48. $Goodswhere['district_name'] = $Operatingcitydata['district_name'];
  49. $Technicalwhere['district_name'] = $Operatingcitydata['district_name'];
  50. } elseif ($Operatingcitydata['areatype'] == 2) {
  51. $orderwhere['shipping_city_name'] = $Operatingcitydata['city_name'];
  52. $Goodswhere['city_name'] = $Operatingcitydata['city_name'];
  53. $Technicalwhere['city_name'] = $Operatingcitydata['city_name'];
  54. } elseif ($Operatingcitydata['areatype'] == 1) {
  55. $orderwhere['shipping_province_name'] = $Operatingcitydata['province_name'];
  56. $Goodswhere['province_name'] = $Operatingcitydata['province_name'];
  57. $Technicalwhere['province_name'] = $Operatingcitydata['province_name'];
  58. }
  59. }
  60. $Memberwhere['ocid'] = $this->ocid;
  61. } elseif (!empty($this->tzid)) {
  62. $Tuanzhangdata = Tuanzhang::find($this->tzid);
  63. if ($Tuanzhangdata) {
  64. $Tuanzhangdata = $Tuanzhangdata->toArray();
  65. $orderwhere['shipping_district_name'] = $Tuanzhangdata['district_name'];
  66. $Goodswhere['district_name'] = $Tuanzhangdata['district_name'];
  67. $Technicalwhere['district_name'] = $Tuanzhangdata['district_name'];
  68. }
  69. }
  70. $statistical['deliverOrder'] = Order::where($orderwhere)->where('order_status_id', '>', 2)->count();
  71. $statistical['returnOrder'] = Order::where($orderwhere)->where(['order_status_id' => 6])->count();
  72. $statistical['sellOut'] = Goods::where($Goodswhere)->where(['quantity' => 0])->count();
  73. $statistical['member_count'] = Member::where($Memberwhere)->count();
  74. $statistical['technical_count'] = Technical::where($Technicalwhere)->count();
  75. $statistical['agent_count'] = Agent::where($where)->count();
  76. $statistical['order_count'] = $this->getOrdercount();
  77. $statistical['order_paycount'] = $this->getOrdercount(['where' => ['order_status_id' => 2]]);
  78. $statistical['order_paytotal'] = Order::where($orderwhere)->where('pay_time', '>', 0)->sum('total') + Order::where($orderwhere)->where('pay_time', '>', 0)->sum('additional');
  79. $statistical['order_paytotal'] = round($statistical['order_paytotal'], 2);
  80. $statistical['order_pay'] = $this->getOrdercount(['pay' => 1]);
  81. $statistical['memberAccess'] = $this->getAccess();
  82. $statistical['accessTopay_conversionrate'] = to_percent($statistical['order_paycount'], $statistical['memberAccess']);
  83. $statistical['accessToorder_conversionrate'] = to_percent($statistical['order_count'], $statistical['memberAccess']);
  84. $statistical['orderTopay_conversionrate'] = to_percent($statistical['order_paycount'], $statistical['order_count']);
  85. $clinchadeal[] = $this->getOrderdaycount(['getday' => 7, 'pay' => 1]);
  86. $clinchadeal[] = $this->getOrderdaycount(['getday' => 6, 'pay' => 1]);
  87. $clinchadeal[] = $this->getOrderdaycount(['getday' => 5, 'pay' => 1]);
  88. $clinchadeal[] = $this->getOrderdaycount(['getday' => 4, 'pay' => 1]);
  89. $clinchadeal[] = $this->getOrderdaycount(['getday' => 3, 'pay' => 1]);
  90. $clinchadeal[] = $this->getOrderdaycount(['getday' => 2, 'pay' => 1]);
  91. $clinchadeal[] = $this->getOrderdaycount(['getday' => 1, 'pay' => 1]);
  92. $res['statistical'] = $statistical;
  93. $res['clinchadeal'] = $clinchadeal;
  94. $res['goodssaletop5'] = Goods::where($Goodswhere)->order('sale_count desc')->limit(5)->select()->toArray();
  95. $res['consumedop5'] = Member::where($Memberwhere)->order('totleconsumed desc')->limit(5)->select()->toArray();
  96. $res['service_timestop5'] = Technical::where($Technicalwhere)->order('service_times desc')->limit(5)->select()->toArray();
  97. if (config('database.app_name') == ('xm_mal' . 'lv3')) {
  98. $res['version'] = 'v3';
  99. } else {
  100. $res['version'] = 'v2';
  101. }
  102. $data['data'] = $res;
  103. return $this->json($data);
  104. }
  105. function datainitial()
  106. {
  107. RegisterField::datainitial('member');
  108. RegisterField::datainitial('agent');
  109. RegisterField::datainitial('partner');
  110. RegisterField::datainitial('technical');
  111. RegisterField::datainitial('store');
  112. RegisterField::datainitial('operatingcity');
  113. AgentLevel::datainitial();
  114. PartnerLevel::datainitial();
  115. Agreement::datainitial();
  116. OperatingcityLevel::datainitial();
  117. Paymethod::datainitial();
  118. TechnicalLevel::datainitial();
  119. Lang::datainitial();
  120. BottomMenu::datainitial('bottom');
  121. BottomMenu::datainitial('technical');
  122. BottomMenu::datainitial('store');
  123. BottomMenu::datainitial('member');
  124. OrderStatus::datainitial('goods');
  125. OrderStatus::datainitial('goodsuser');
  126. OrderStatus::datainitial('service');
  127. OrderStatus::datainitial('storeservice');
  128. OrderStatus::datainitial('serviceuser');
  129. GoodsQuantityUnit::datainitial(1);
  130. GoodsQuantityUnit::datainitial(2);
  131. return $this->json($data);
  132. }
  133. public function getAccess()
  134. {
  135. $getdata = input('get.');
  136. if (empty($getdata['getday'])) {
  137. $getdata['getday'] = 1;
  138. }
  139. $query = Member::where(['weid' => weid()]);
  140. if (empty($getdata['date_start'])) {
  141. $getdata['date_start'] = date("Y-m-d H:i:s", strtotime("-" . $getdata['getday'] . " day"));
  142. }
  143. if (empty($getdata['date_end'])) {
  144. $getdata['date_end'] = date("Y-m-d H:i:s");
  145. }
  146. if (!empty($getdata['date_start'])) {
  147. $query->where('regdate', '>=', strtotime(trim($getdata['date_start'])));
  148. }
  149. if (!empty($getdata['date_end'])) {
  150. $query->where('regdate', '<=', strtotime(trim($getdata['date_end'])) + 86400);
  151. }
  152. return $query->count();
  153. }
  154. public function getOrdercount($data = [])
  155. {
  156. $where = $data['where'];
  157. $pay = $data['pay'];
  158. $getdata = input('get.');
  159. if (empty($getdata['getday'])) {
  160. $getdata['getday'] = 1;
  161. }
  162. $where['weid'] = weid();
  163. if (!empty($this->sid)) {
  164. $where['sid'] = $this->sid;
  165. } elseif (!empty($this->ocid)) {
  166. $Operatingcitydata = Operatingcity::find($this->ocid);
  167. if ($Operatingcitydata) {
  168. $Operatingcitydata = $Operatingcitydata->toArray();
  169. if(empty($Operatingcitydata['areatype'])){
  170. $Operatingcitydata['areatype'] = 3;
  171. }
  172. if ($Operatingcitydata['areatype'] == 3) {
  173. $where['shipping_district_name'] = $Operatingcitydata['district_name'];
  174. } elseif ($Operatingcitydata['areatype'] == 2) {
  175. $where['shipping_city_name'] = $Operatingcitydata['city_name'];
  176. } elseif ($Operatingcitydata['areatype'] == 1) {
  177. $where['shipping_province_name'] = $Operatingcitydata['province_name'];
  178. }
  179. }
  180. } elseif (!empty($this->tzid)) {
  181. $Tuanzhangdata = Tuanzhang::find($this->tzid);
  182. if ($Tuanzhangdata) {
  183. $Tuanzhangdata = $Tuanzhangdata->toArray();
  184. $where['shipping_district_name'] = $Tuanzhangdata['district_name'];
  185. }
  186. }
  187. $query = Order::where($where);
  188. if (empty($getdata['date_start'])) {
  189. $getdata['date_start'] = date("Y-m-d H:i:s", strtotime("-" . $getdata['getday'] . " day"));
  190. }
  191. if (empty($getdata['date_end'])) {
  192. $getdata['date_end'] = date("Y-m-d H:i:s");
  193. }
  194. if (!empty($getdata['date_start'])) {
  195. $query->where('create_time', '>=', strtotime(trim($getdata['date_start'])));
  196. }
  197. if (!empty($getdata['date_end'])) {
  198. $query->where('create_time', '<=', strtotime(trim($getdata['date_end'])) + 86400);
  199. }
  200. if (empty($pay)) {
  201. return $query->count();
  202. } else {
  203. return $query->sum('total');
  204. }
  205. }
  206. public function getOrderdaycount($data = [])
  207. {
  208. $where = $data['where'];
  209. $pay = $data['pay'];
  210. $getdata['getday'] = $data['getday'];
  211. $where['weid'] = weid();
  212. if (!empty($this->sid)) {
  213. $where['sid'] = $this->sid;
  214. } elseif (!empty($this->ocid)) {
  215. $Operatingcitydata = Operatingcity::find($this->ocid);
  216. if ($Operatingcitydata) {
  217. $Operatingcitydata = $Operatingcitydata->toArray();
  218. if(empty($Operatingcitydata['areatype'])){
  219. $Operatingcitydata['areatype'] = 3;
  220. }
  221. if ($Operatingcitydata['areatype'] == 3) {
  222. $where['shipping_district_name'] = $Operatingcitydata['district_name'];
  223. } elseif ($Operatingcitydata['areatype'] == 2) {
  224. $where['shipping_city_name'] = $Operatingcitydata['city_name'];
  225. } elseif ($Operatingcitydata['areatype'] == 1) {
  226. $where['shipping_province_name'] = $Operatingcitydata['province_name'];
  227. }
  228. }
  229. } elseif (!empty($this->tzid)) {
  230. $Tuanzhangdata = Tuanzhang::find($this->tzid);
  231. if ($Tuanzhangdata) {
  232. $Tuanzhangdata = $Tuanzhangdata->toArray();
  233. $where['shipping_district_name'] = $Tuanzhangdata['district_name'];
  234. }
  235. }
  236. $query = Order::where($where);
  237. if (empty($getdata['date_start'])) {
  238. $getdata['date_start'] = date("Y-m-d H:i:s", strtotime("-" . $getdata['getday'] . " day"));
  239. }
  240. if (empty($getdata['date_end'])) {
  241. $getdata['date_end'] = date("Y-m-d H:i:s", strtotime("-" . ($getdata['getday'] - 1) . " day"));
  242. }
  243. if (!empty($getdata['date_start'])) {
  244. $query->where('create_time', '>=', strtotime(trim($getdata['date_start'])));
  245. }
  246. if (!empty($getdata['date_end'])) {
  247. $query->where('create_time', '<=', strtotime(trim($getdata['date_end'])) + 86400);
  248. }
  249. if (empty($pay)) {
  250. return $query->count();
  251. } else {
  252. //var_dump($query->getLastsql());
  253. return $query->sum('total');
  254. }
  255. }
  256. }