Dashboard.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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" => 7,
  20. "hide.default" => 0,
  21. "order.default" => 7
  22. ],$request->method());
  23. $moneyDay = $param['money'];
  24. $data = $moneys = $orders = [];
  25. $orderDay = $param['order'];
  26. $shopId = $request->user['agent_id'];
  27. $mode = (new SaasOrder);
  28. if ($param['hide'] == 1) {
  29. $data = [
  30. "userNum" => $mode->whereDay("create_at")->where("shop_id",$shopId)->where('status','in',[1,3])->sum("money"), // 今日营业额
  31. "rechargeNum" => $mode->whereDay("create_at")->where("shop_id",$shopId)->where('status','in',[1,3])->count(), // 今日订单数
  32. "rechargeMoney" => $mode->whereDay("create_at")->where("shop_id",$shopId)->where('status',1)->count(), // 手机自助打印待处理
  33. ];
  34. $fields = ['ROUND(sum(money)/100,2)' => 'total','substr(create_at,1,10)' => 'mday'];
  35. $orderMoney = $mode->field($fields)->where("shop_id",$shopId)->where('status','in',[1,3])->whereTime('create_at', '-'.$moneyDay.' days')->group('mday')->select()->column(null, 'mday');
  36. for ($i = $moneyDay; $i >= 0; $i--) {
  37. $date = date('Y-m-d', strtotime("-{$i}days"));
  38. $moneys[] = [
  39. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  40. '订单金额' => ($orderMoney[$date] ?? [])['total'] ?? 0,
  41. ];
  42. }
  43. $field = ['count(1)' => 'count', 'substr(create_at,1,10)' => 'mday'];
  44. $orderNum = $mode->field($field)->where("shop_id",$shopId)->where('status','in',[1,3])->whereTime('create_at', '-'.$orderDay.' days')->group('mday')->select()->column(null, 'mday');
  45. for ($i = $orderDay; $i >= 0; $i--) {
  46. $date = date('Y-m-d', strtotime("-{$i}days"));
  47. $orders[] = [
  48. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  49. '订单数量' => ($orderNum[$date] ?? [])['count'] ?? 0,
  50. ];
  51. }
  52. } else {
  53. for ($i = $moneyDay; $i >= 0; $i--) {
  54. $date = date('Y-m-d', strtotime("-{$i}days"));
  55. $moneys[] = [
  56. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  57. '订单金额' => 888,
  58. ];
  59. }
  60. for ($i = $orderDay; $i >= 0; $i--) {
  61. $date = date('Y-m-d', strtotime("-{$i}days"));
  62. $orders[] = [
  63. '当天日期' => date('Y-m-d', strtotime("-{$i}days")),
  64. '订单数量' => 888,
  65. ];
  66. }
  67. }
  68. return success("ok",compact("data","orders","moneys"));
  69. } catch (\Throwable $throwable) {
  70. return error($throwable->getMessage());
  71. }
  72. }
  73. }