OrdersCollect.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace app\common\model;
  3. use app\main\constants\OrderContents;
  4. use app\main\constants\PayConstants;
  5. use app\main\model\object\OrdersCollectObject;
  6. use app\main\service\OrdersCollectUpdateService;
  7. use think\Model;
  8. class OrdersCollect extends Model
  9. {
  10. // 表名
  11. protected $table = 'orders_collect';
  12. // 自动写入时间戳字段
  13. protected $autoWriteTimestamp = 'int';
  14. // 定义时间戳字段名
  15. protected $createTime = 'createtime';
  16. protected $updateTime = 'updatetime';
  17. // 追加属性
  18. protected $append = [
  19. 'type_text',
  20. 'flag_text'
  21. ];
  22. public function getTypeList()
  23. {
  24. return ['1' => __('天'),'2' => __('月'),'3' => __('汇总')];
  25. }
  26. public function getTypeTextAttr($value, $data)
  27. {
  28. $value = $value ? $value : $data['type'];
  29. $list = $this->getTypeList();
  30. return isset($list[$value]) ? $list[$value] : '';
  31. }
  32. public function getFlagList()
  33. {
  34. return ['1' => __('自身'),'2' => __('属下'),'3' => __('全部')];
  35. }
  36. public function getFlagTextAttr($value, $data)
  37. {
  38. $value = $value ? $value : $data['flag'];
  39. $list = $this->getFlagList();
  40. return isset($list[$value]) ? $list[$value] : '';
  41. }
  42. /**
  43. * 聚合sum查询订单统计
  44. *
  45. * @param string|array|null $admin_id 管理、渠道、代理 id
  46. * @param int $type 周期类型 1天 2月 3汇总 //此方法只能查type=1的,通过sum聚合
  47. * @param string|null $flag 数据表示 1自身 2属下 3全部
  48. * @param string|null $startdate 日期开始时间(包含)
  49. * @param string|null $enddate 日期结束时间(包含)
  50. */
  51. public function sumCollect($admin_id = null,$type = 1, $flag = null, $startdate = null, $enddate = null, $business_line = PayConstants::BUSINESS_WECHAT)
  52. {
  53. if (is_null($admin_id) || $type != 1 || is_null($flag)) {
  54. return null;
  55. }
  56. if (is_array($admin_id) && count($admin_id) == 0) {
  57. return null;
  58. }
  59. $where = [
  60. 'type' => $type,
  61. 'flag' => $flag
  62. ];
  63. $where['admin_id'] = is_array($admin_id) ? ['in', $admin_id] : $admin_id;
  64. if (!is_null($startdate) && !is_null($enddate)) { //2个都存在才是区间查询 2头都包含
  65. $where['createdate'] = ['between', "{$startdate},{$enddate}"];
  66. } else {
  67. $where['createdate'] = ['<', date('Ymd', time())]; //不包含今天
  68. }
  69. $where['business_line'] = $business_line;
  70. $info = $this->field("sum(recharge_money) as recharge_money,sum(recharge_money_benefit) as recharge_money_benefit,sum(normal_recharge_orders_count) as normal_recharge_orders_count,sum(normal_recharge_orders) as normal_recharge_orders,sum(normal_recharge_money) as normal_recharge_money,sum(normal_recharge_money_benefit) as normal_recharge_money_benefit,sum(normal_recharge_guide_orders) as normal_recharge_guide_orders,sum(noraml_recharge_guide_money) as noraml_recharge_guide_money,sum(normal_recharge_user_count) as normal_recharge_user_count,sum(normal_recharge_user_suc_count) as normal_recharge_user_suc_count,sum(noraml_recharge_guide_money_benefit) as noraml_recharge_guide_money_benefit,sum(vip_recharge_orders_count) as vip_recharge_orders_count,sum(vip_recharge_orders) as vip_recharge_orders,sum(vip_recharge_money) as vip_recharge_money,sum(vip_recharge_money_benefit) as vip_recharge_money_benefit,sum(vip_recharge_guide_orders) as vip_recharge_guide_orders,sum(vip_recharge_guide_money) as vip_recharge_guide_money,sum(vip_recharge_user_count) as vip_recharge_user_count,sum(vip_recharge_user_suc_count) as vip_recharge_user_suc_count,sum(vip_recharge_guide_money_benefit) as vip_recharge_guide_money_benefit, sum(kandian_recharge_orders_count) as kandian_recharge_orders_count, sum(kandian_recharge_orders) as kandian_recharge_orders, sum(split_money) as split_money")->where($where)->find();
  71. $info['type'] = $type;
  72. $info['flag'] = $flag;
  73. return $info;
  74. }
  75. /**
  76. * @param $object
  77. * @return array
  78. */
  79. public function mkParamsForCheck(OrdersCollectObject $object)
  80. {
  81. return [
  82. 'admin_id' => $object->admin_id,
  83. 'business_line' => $object->business_line,
  84. 'type' => $object->type,
  85. 'flag' => $object->flag,
  86. 'createdate' => OrdersCollectUpdateService::instance()->getCreateDate($object->type)->data,
  87. ];
  88. }
  89. /**
  90. * @param $object
  91. * @return array
  92. */
  93. public function mkParamsForUpdate(OrdersCollectObject $object)
  94. {
  95. $update = $object->toArray();
  96. unset($update['admin_id']);
  97. unset($update['flag']);
  98. unset($update['type']);
  99. unset($update['business_line']);
  100. unset($update['type_text']);
  101. unset($update['flag_text']);
  102. $update['updatetime'] = time();
  103. return $update;
  104. }
  105. /**
  106. * @param $object
  107. * @return array
  108. */
  109. public function mkParamsForInsert(OrdersCollectObject $object)
  110. {
  111. $current_time = time();
  112. return [
  113. 'admin_id' => $object->admin_id,
  114. 'business_line' => $object->business_line,
  115. 'type' => $object->type,
  116. 'flag' => $object->flag,
  117. 'createdate' => OrdersCollectUpdateService::instance()->getCreateDate($object->type)->data,
  118. 'createtime' => $current_time,
  119. 'updatetime' => $current_time,
  120. 'recharge_money' => (float)$object->recharge_money,
  121. 'recharge_money_benefit' => (float)$object->recharge_money_benefit,
  122. 'normal_recharge_orders_count' => (float)$object->normal_recharge_orders_count,
  123. 'normal_recharge_orders' => (float)$object->normal_recharge_orders,
  124. 'normal_recharge_money' => (float)$object->normal_recharge_money,
  125. 'normal_recharge_money_benefit' => (float)$object->normal_recharge_money_benefit,
  126. 'normal_recharge_guide_orders' => (float)$object->normal_recharge_guide_orders,
  127. 'noraml_recharge_guide_money' => (float)$object->noraml_recharge_guide_money,
  128. 'normal_recharge_user_count' => (float)$object->normal_recharge_user_count,
  129. 'normal_recharge_user_suc_count' => (float)$object->normal_recharge_user_suc_count,
  130. 'noraml_recharge_guide_money_benefit' => (float)$object->noraml_recharge_guide_money_benefit,
  131. 'vip_recharge_orders_count' => (float)$object->vip_recharge_orders_count,
  132. 'vip_recharge_orders' => (float)$object->vip_recharge_orders,
  133. 'vip_recharge_money' => (float)$object->vip_recharge_money,
  134. 'vip_recharge_money_benefit' => (float)$object->vip_recharge_money_benefit,
  135. 'vip_recharge_guide_orders' => (float)$object->vip_recharge_guide_orders,
  136. 'vip_recharge_guide_money' => (float)$object->vip_recharge_guide_money,
  137. 'vip_recharge_user_count' => (float)$object->vip_recharge_user_count,
  138. 'vip_recharge_user_suc_count' => (float)$object->vip_recharge_user_suc_count,
  139. 'vip_recharge_guide_money_benefit' => (float)$object->vip_recharge_guide_money_benefit,
  140. 'pv' => (float)$object->pv,
  141. 'uv' => (float)$object->uv,
  142. 'kandian_recharge_orders_count' => (float)$object->kandian_recharge_orders_count,
  143. 'kandian_recharge_orders' => (float)$object->kandian_recharge_orders,
  144. 'split_money' => (float)$object->split_money,
  145. ];
  146. }
  147. }