Dashboard.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace app\controller\merchant;
  3. use app\extra\basic\Base;
  4. use app\middleware\AuthMiddleware;
  5. use app\model\saas\SaasOrder;
  6. use LinFly\Annotation\Route\Controller;
  7. use LinFly\Annotation\Route\Middleware;
  8. use LinFly\Annotation\Route\Route;
  9. use support\Request;
  10. use support\Response;
  11. #[Controller(prefix: "/api/mer/dashboard"),Middleware(AuthMiddleware::class)]
  12. class Dashboard extends Base
  13. {
  14. #[Route(path: "data",methods: "get")]
  15. public function getData(Request $request): Response
  16. {
  17. try {
  18. $param = $this->_valid([
  19. "money.default" => 1,
  20. "hide.default" => 0,
  21. "order.default" => 1
  22. ],$request->method());
  23. $moneyDay = 7;
  24. $data = $moneys = $orders = [];
  25. if ($param['money'] == 2) $moneyDay = 14;
  26. if ($param['money'] == 3) $moneyDay = 30;
  27. $orderDay = 7;
  28. if ($param['order'] == 2) $orderDay = 14;
  29. if ($param['order'] == 3) $orderDay = 30;
  30. $shopId = $request->user['agent_id'];
  31. $mode = (new SaasOrder);
  32. if ($param['hide'] == 1) {
  33. $data = [
  34. "userNum" => format_money($mode->whereDay("create_at")->where("shop_id",$shopId)->where('status','in',[1,3])->sum("money")/100,2), // 今日营业额
  35. "rechargeNum" => $mode->whereDay("create_at")->where("shop_id",$shopId)->where('status','in',[1,3])->count(), // 今日订单数
  36. "rechargeMoney" => $mode->whereDay("create_at")->where("shop_id",$shopId)->where('status',1)->count(), // 手机自助打印待处理
  37. ];
  38. $fields = ['ROUND(sum(money)/100,2)' => 'total','substr(create_at,1,10)' => 'mday'];
  39. $orderMoney = $mode->field($fields)->where("shop_id",$shopId)->where('status','in',[1,3])->whereTime('create_at', '-'.$moneyDay.' days')->group('mday')->select()->column(null, 'mday');
  40. for ($i = $moneyDay; $i >= 0; $i--) {
  41. $date = date('Y-m-d', strtotime("-{$i}days"));
  42. $moneys[] = [
  43. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  44. '订单金额' => ($orderMoney[$date] ?? [])['total'] ?? 0,
  45. ];
  46. }
  47. $field = ['count(1)' => 'count', 'substr(create_at,1,10)' => 'mday'];
  48. $orderNum = $mode->field($field)->where("shop_id",$shopId)->where('status','in',[1,3])->whereTime('create_at', '-'.$orderDay.' days')->group('mday')->select()->column(null, 'mday');
  49. for ($i = $orderDay; $i >= 0; $i--) {
  50. $date = date('Y-m-d', strtotime("-{$i}days"));
  51. $orders[] = [
  52. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  53. '订单数量' => ($orderNum[$date] ?? [])['count'] ?? 0,
  54. ];
  55. }
  56. } else {
  57. for ($i = $moneyDay; $i >= 0; $i--) {
  58. $date = date('Y-m-d', strtotime("-{$i}days"));
  59. $moneys[] = [
  60. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  61. '订单金额' => 888,
  62. ];
  63. }
  64. for ($i = $orderDay; $i >= 0; $i--) {
  65. $date = date('Y-m-d', strtotime("-{$i}days"));
  66. $orders[] = [
  67. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  68. '订单数量' => 888,
  69. ];
  70. }
  71. }
  72. return success("ok",compact("data","orders","moneys"));
  73. } catch (\Throwable $throwable) {
  74. return error($throwable->getMessage());
  75. }
  76. }
  77. }