Dashboard.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. namespace app\controller;
  3. use app\extra\basic\Base;
  4. use app\middleware\AuthMiddleware;
  5. use app\model\saas\SaasOrder;
  6. use app\model\saas\SaasOrderLife;
  7. use app\model\saas\SaasStore;
  8. use LinFly\Annotation\Route\Controller;
  9. use LinFly\Annotation\Route\Middleware;
  10. use LinFly\Annotation\Route\Route;
  11. use support\Request;
  12. use support\Response;
  13. #[Controller(prefix: "/api/dashboard"),Middleware(AuthMiddleware::class)]
  14. class Dashboard extends Base
  15. {
  16. /**
  17. *
  18. * @return Response
  19. */
  20. #[Route(path: "manage",methods: "get")]
  21. public function getManageData(Request $request): Response
  22. {
  23. try {
  24. $param = $this->_valid([
  25. "money.default" => 7,
  26. "hide.default" => 0,
  27. "order.default" => 7
  28. ],$request->method());
  29. $moneyDay = $param['money'];
  30. $data = $moneys = $orders = [];
  31. $orderDay = $param['order'];
  32. $mode = (new SaasOrder);
  33. if ($param['hide'] == 1) {
  34. $data = [
  35. "userNum" => $mode->whereDay("create_at")->where('status','in',[1,3])->sum("money"), // 今日营业额
  36. "rechargeNum" => $mode->whereDay("create_at")->where('status','in',[1,3])->count(), // 今日订单数
  37. "rechargeMoney" => $mode->whereDay("create_at")->where('status',1)->count(), // 手机自助打印待处理
  38. ];
  39. $fields = ['ROUND(sum(money)/100,2)' => 'total','substr(create_at,1,10)' => 'mday'];
  40. $orderMoney = $mode->field($fields)->where('status','in',[1,3])->whereTime('create_at', '-'.$moneyDay.' days')->group('mday')->select()->column(null, 'mday');
  41. for ($i = $moneyDay; $i >= 0; $i--) {
  42. $date = date('Y-m-d', strtotime("-{$i}days"));
  43. $moneys[] = [
  44. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  45. '订单金额' => ($orderMoney[$date] ?? [])['total'] ?? 0,
  46. ];
  47. }
  48. $field = ['count(1)' => 'count', 'substr(create_at,1,10)' => 'mday'];
  49. $orderNum = $mode->field($field)->where('status','in',[1,3])->whereTime('create_at', '-'.$orderDay.' days')->group('mday')->select()->column(null, 'mday');
  50. for ($i = $orderDay; $i >= 0; $i--) {
  51. $date = date('Y-m-d', strtotime("-{$i}days"));
  52. $orders[] = [
  53. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  54. '订单数量' => ($orderNum[$date] ?? [])['count'] ?? 0,
  55. ];
  56. }
  57. } else {
  58. for ($i = $moneyDay; $i >= 0; $i--) {
  59. $date = date('Y-m-d', strtotime("-{$i}days"));
  60. $moneys[] = [
  61. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  62. '订单金额' => 888,
  63. ];
  64. }
  65. for ($i = $orderDay; $i >= 0; $i--) {
  66. $date = date('Y-m-d', strtotime("-{$i}days"));
  67. $orders[] = [
  68. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  69. '订单数量' => 888,
  70. ];
  71. }
  72. }
  73. return success("ok",compact("data","orders","moneys"));
  74. } catch (\Throwable $throwable) {
  75. return error($throwable->getMessage());
  76. }
  77. }
  78. /**
  79. * @param Request $request
  80. * @return Response
  81. */
  82. #[Route(path: "store",methods: "get")]
  83. public function getStoreData(Request $request): Response
  84. {
  85. try {
  86. $map = [ "agent_id" => $request->user['agent_id'] ];
  87. $total = (new SaasOrderLife)->where($map)->where("status","in",[1,2,3,6])->whereDay("create_at")->field("ROUND(sum(pay_amount)/100,2) as money,count(id) as num")->find();
  88. $today = [
  89. "order_money" => $total['money']??0, // 营业额
  90. "order_num" => $total['num']??0, // 订单数
  91. "order_done" => "", // 已核销
  92. "order_send" => "", // 待发货
  93. "store_num" => (new SaasStore)->where($map)->count(), // 总店铺数量
  94. ];
  95. $moneys = $orders = [];
  96. $fields = ['ROUND(sum(pay_amount)/100,2)' => 'total','substr(create_at,1,10)' => 'mday'];
  97. $orderMoney = (new SaasOrderLife)->field($fields)->where($map)->where("status","in",[1,3,4,5])->whereTime('create_at', '-15 days')->group('mday')->select()->column(null, 'mday');
  98. for ($i = 15; $i >= 0; $i--) {
  99. $date = date('Y-m-d', strtotime("-{$i}days"));
  100. $moneys[] = [
  101. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  102. '订单金额' => ($orderMoney[$date] ?? [])['total'] ?? 0,
  103. ];
  104. }
  105. $field = ['count(1)' => 'count', 'substr(create_at,1,10)' => 'mday'];
  106. $orderNum = (new SaasOrderLife)->field($field)->where($map)->where("status","in",[1,2,3,6])->whereTime('create_at', '-15 days')->group('mday')->select()->column(null, 'mday');
  107. for ($i = 15; $i >= 0; $i--) {
  108. $date = date('Y-m-d', strtotime("-{$i}days"));
  109. $orders[] = [
  110. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  111. '订单数量' => ($orderNum[$date] ?? [])['count'] ?? 0,
  112. ];
  113. }
  114. return success("ok",compact("today","moneys","orders"));
  115. } catch (\Throwable $throwable) {
  116. return error($throwable->getMessage());
  117. }
  118. }
  119. /**
  120. * @param Request $request
  121. * @return Response
  122. */
  123. #[Route(path: "shop",methods: "get")]
  124. public function getShopData(Request $request): Response
  125. {
  126. try {
  127. $map = [ "store_id" => $request->user['store_id'],"agent_id" => $request->user['agent_id'] ];
  128. $total = (new SaasOrderLife)->where($map)->where("status","in",[1,3,4,5])->whereDay("create_at")->field("ROUND(sum(pay_amount)/100,2) as money,count(id) as num")->find();
  129. $today = [
  130. "order_money" => $total['money']??0, // 营业额
  131. "order_num" => $total['num']??0, // 订单数
  132. "order_done" => "", // 已核销
  133. "order_send" => "", // 待发货
  134. ];
  135. $moneys = $orders = [];
  136. $fields = ['ROUND(sum(pay_amount)/100,2)' => 'total','substr(create_at,1,10)' => 'mday'];
  137. $orderMoney = (new SaasOrderLife)->field($fields)->where($map)->where("status","in",[1,3,4,5])->whereTime('create_at', '-15 days')->group('mday')->select()->column(null, 'mday');
  138. for ($i = 15; $i >= 0; $i--) {
  139. $date = date('Y-m-d', strtotime("-{$i}days"));
  140. $moneys[] = [
  141. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  142. '订单金额' => ($orderMoney[$date] ?? [])['total'] ?? 0,
  143. ];
  144. }
  145. $field = ['count(1)' => 'count', 'substr(create_at,1,10)' => 'mday'];
  146. $orderNum = (new SaasOrderLife)->field($field)->where($map)->where("status","in",[1,3,4,5])->whereTime('create_at', '-15 days')->group('mday')->select()->column(null, 'mday');
  147. for ($i = 15; $i >= 0; $i--) {
  148. $date = date('Y-m-d', strtotime("-{$i}days"));
  149. $orders[] = [
  150. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  151. '订单数量' => ($orderNum[$date] ?? [])['count'] ?? 0,
  152. ];
  153. }
  154. return success("ok",compact("today","moneys","orders"));
  155. } catch (\Throwable $throwable) {
  156. return error($throwable->getMessage());
  157. }
  158. }
  159. }