链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
5.2 KiB

5 years ago
  1. <?php
  2. namespace App\Admin\Common;
  3. use App\Models\ImsCjdcOrderMain;
  4. class Order
  5. {
  6. /**
  7. * 查询结果
  8. * @param $params
  9. * @param $option
  10. * @return int
  11. */
  12. public static function getOrderData($params,$option)
  13. {
  14. //如果市场id存在
  15. $buildData = self::buildData();
  16. if ($params['market_id']) {//是否存在市场id
  17. if (is_array($params['market_id'])) {
  18. $buildData = $buildData->whereIn('lanzu_order_main.market_id',$params['market_id']);
  19. } else {
  20. $buildData = $buildData->where('lanzu_order_main.market_id',$params['market_id']);
  21. }
  22. }
  23. if ($params['user_type']=='lanzu_cs'||$params['user_type']=='lanzu_biz'){//社区角色
  24. if ($params['condition']==1){//获取时间范围
  25. list($beginTime,$endTime) = self::beginAndEnd($option);
  26. //>>2.构建数据模型
  27. if ($params['user_ids']){
  28. $buildData = $buildData->whereIn('lanzu_order_main.user_id',$params['user_ids']);
  29. }else{
  30. return 0;
  31. }
  32. $buildData = $buildData
  33. ->leftJoin('lanzu_user_relation_bind','lanzu_user_relation_bind.user_id','lanzu_order_main.user_id')
  34. ->whereRaw('lanzu_order_main.created_at > lanzu_user_relation_bind.created_at')
  35. ->whereBetween('lanzu_order_main.created_at',[$beginTime,$endTime]);
  36. }
  37. }elseif ($params['user_type']=='market_service'||$params['user_type']=='lanzu_mp'){//市场服务站角色 及服务商
  38. if ($params['condition']==1){//获取时间范围
  39. list($beginTime,$endTime) = self::beginAndEnd($option);
  40. //>>2.构建数据模型
  41. $buildData = $buildData->whereBetween('created_at',[$beginTime,$endTime]);
  42. }
  43. }
  44. if ($params['data_type']=='count_user'){
  45. $result = $buildData
  46. ->groupBy('lanzu_order_main.user_id')
  47. ->pluck('lanzu_order_main.user_id')
  48. ->toArray();
  49. $result = count($result);
  50. }elseif ($params['data_type']=='number'){
  51. $result = $buildData->count();
  52. }elseif ($params['data_type']=='amount'){
  53. $result = $buildData->sum('money');
  54. }
  55. return $result;
  56. }
  57. /**
  58. * 查询时间范围
  59. * @param $option
  60. * @return array
  61. */
  62. public static function beginAndEnd($option)
  63. {
  64. switch ($option) {
  65. case '1':
  66. $beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
  67. $endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
  68. break;
  69. case '-1':
  70. $beginTime = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));
  71. $endTime = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - 1;
  72. break;
  73. case '7':
  74. $beginTime = mktime(0, 0, 0, date('m'), date('d') - 7, date('Y'));
  75. $endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
  76. break;
  77. case 'w':
  78. //$beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y"));
  79. //$endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y"));
  80. //当前日期
  81. $sdefaultDate = date("Y-m-d");
  82. //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
  83. $first=1;
  84. //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
  85. $w=date('w',strtotime($sdefaultDate));
  86. //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
  87. $beginTime=strtotime("$sdefaultDate -".($w ? $w - $first : 6).' days');
  88. //本周结束日期
  89. $start = date('Y-m-d',$beginTime);
  90. $endTime=strtotime("$start +6 days")+86399;
  91. break;
  92. case 'lw':
  93. $beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1 - 7, date("Y"));
  94. $endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7 - 7, date("Y"));
  95. break;
  96. case '30':
  97. $beginTime = mktime(0, 0, 0, date('m'), 1, date('Y'));
  98. $endTime = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
  99. break;
  100. case '-30':
  101. $beginTime = mktime(0, 0, 0, date('m') - 1, 1, date('Y'));
  102. $endTime = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y"))));
  103. break;
  104. default:
  105. $beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
  106. $endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
  107. break;
  108. }
  109. return [$beginTime,$endTime];
  110. }
  111. /**
  112. * 构建数据模型
  113. * @param $condition
  114. * @return mixed
  115. */
  116. public static function buildData()
  117. {
  118. $build = ImsCjdcOrderMain
  119. ::whereIn('state', [3, 4, 5, 10])
  120. ->where('type',1);
  121. return $build;
  122. }
  123. }