RefundGoodsStatistics.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace app\store\model;
  3. use app\common\model\RefundGoodsStatistics as RefundGoodsStatisticsModel;
  4. /**
  5. * 退款商品统计模型
  6. * @package app\store\model
  7. */
  8. class RefundGoodsStatistics extends RefundGoodsStatisticsModel
  9. {
  10. /**
  11. * 获取列表
  12. * @param $param
  13. * @return mixed
  14. */
  15. public function getList($param = [])
  16. {
  17. $model = $this->setQueryFilter($param);
  18. return $model->alias('r')
  19. ->field('sum(r.refund_amount) as refund_amount_total,sum(r.refund_num) as refund_num_total,r.goods_id,g.goods_price_min,g.goods_name,g.goods_no')
  20. ->leftJoin('goods g', 'g.goods_id=r.goods_id')
  21. ->group('r.goods_id')
  22. ->order('r.goods_id desc')
  23. ->paginate(15);
  24. }
  25. /**
  26. * 检索查询条件
  27. * @param array $param
  28. * @return \think\db\BaseQuery
  29. */
  30. private function setQueryFilter(array $param)
  31. {
  32. // 实例化查询对象
  33. $query = $this->getNewQuery();
  34. // 查询参数
  35. $params = $this->setQueryDefaultValue($param, []);
  36. // 起止时间
  37. if (!empty($params['betweenTime'])) {
  38. $times = between_time($params['betweenTime']);
  39. } else {
  40. $weekday = date('w')-1;
  41. $times['start_time'] = strtotime(date('Y-m-d',strtotime("-{$weekday} day"))) ;//当前星期的星期一
  42. $times['end_time'] = time();
  43. }
  44. $filter[] = ["r.start_time", '>=', $times['start_time']];
  45. $filter[] = ["r.end_time", '<=', $times['end_time']];
  46. $query->where($filter);
  47. return $query;
  48. }
  49. /**
  50. * 导出记录
  51. */
  52. public function export(array $param)
  53. {
  54. $data['header'] = ['商品ID', '商品编码', '退款商品名称', '商品单价(元)','退款件数', '退款金额(元)'];
  55. $data['filename'] = '退款商品统计导出';
  56. $data['data'] = [];
  57. $model = $this->setQueryFilter($param);
  58. $list = $model->alias('r')
  59. ->field('sum(r.refund_amount) as refund_amount_total,sum(r.refund_num) as refund_num_total,r.goods_id,g.goods_price_min,g.goods_name,g.goods_no')
  60. ->leftJoin('goods g', 'g.goods_id=r.goods_id')
  61. ->group('r.goods_id')
  62. ->order('r.goods_id desc')
  63. ->select();
  64. foreach ($list as $arr){
  65. $new_list['goods_id'] = $arr['goods_id'];
  66. $new_list['goods_no'] = $arr['goods_no'];
  67. $new_list['goods_name'] = $arr['goods_name'];
  68. $new_list['goods_price_min'] = $arr['goods_price_min'];
  69. $new_list['refund_num_total'] = $arr['refund_num_total'];
  70. $new_list['refund_amount_total'] = $arr['refund_amount_total'];
  71. $data['data'][] = $new_list;
  72. }
  73. return $data;
  74. }
  75. }