Dashboard.php 6.9 KB

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