OrderRefundListForm.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1\admin;
  8. use app\models\common\admin\order\CommonOrderSearch;
  9. use app\models\Goods;
  10. use app\models\Order;
  11. use app\models\OrderDetail;
  12. use app\models\OrderRefund;
  13. use app\models\RefundAddress;
  14. use app\models\User;
  15. use app\utils\Export;
  16. use app\utils\ExportList;
  17. use yii\base\Model;
  18. class OrderRefundListForm extends Model
  19. {
  20. public $store_id;
  21. public $user_id;
  22. public $keyword;
  23. public $status;
  24. public $dateStart;
  25. public $dateEnd;
  26. public $keywordType;
  27. public $platform; //所属平台
  28. public $flag;
  29. public $fields;
  30. // 已处理状态
  31. const IS_HANDLE_STATUS = 1;
  32. public function rules()
  33. {
  34. return [
  35. [['keyword', 'flag'], 'trim'],
  36. [['flag'], 'string'],
  37. [['status', 'user_id', 'keywordType'], 'integer'],
  38. [['status'], 'default', 'value' => -1],
  39. [['dateStart', 'dateEnd'], 'trim'],
  40. [['fields'],'safe']
  41. ];
  42. }
  43. public function search()
  44. {
  45. if (!$this->validate()) {
  46. return [
  47. 'code' => 1,
  48. 'msg' => $this->getErrorSummary(false)[0],
  49. ];
  50. }
  51. $query = OrderRefund::find()->alias('or')
  52. ->leftJoin(['o' => Order::tableName()], 'o.id=or.order_id')
  53. ->leftJoin(['od' => OrderDetail::tableName()], 'od.id=or.order_detail_id')
  54. ->leftJoin(['g' => Goods::tableName()], 'g.id=od.goods_id')
  55. ->leftJoin(['u' => User::tableName()], 'u.id=or.user_id')
  56. ->where(['or.store_id' => $this->store_id, 'or.is_delete' => Order::IS_DELETE_FALSE, 'o.mch_id' => 0,
  57. 'o.is_show' => Order::IS_SHOW_TRUE]);
  58. if ($this->status == OrderRefund::STATUS_IN) {
  59. $query->andWhere(['or.status' => OrderRefund::STATUS_IN]);
  60. }
  61. if ($this->status == self::IS_HANDLE_STATUS) {
  62. $query->andWhere(['or.status' => OrderRefund::$is_handle_status]);
  63. }
  64. $commonOrderSearch = new CommonOrderSearch();
  65. $query = $commonOrderSearch->search($query, $this);
  66. $query = $commonOrderSearch->keyword($query, $this->keywordType, $this->keyword);
  67. $query->orderBy('or.id DESC')->select('or.id order_refund_id,o.id order_id,o.order_no,o.name,
  68. o.mobile,o.address,o.pay_type,u.nickname,u.id user_id,u.platform,g.name goods_name,g.id goods_id,or.created_at,
  69. od.num,od.attr,od.total_price,or.type refund_type,or.status refund_status,or.desc refund_desc,
  70. or.pic_list refund_pic_list,or.refund_price,or.refuse_desc refund_refuse_desc,or.is_agree,or.is_user_send,
  71. or.user_send_express,or.user_send_express_no');
  72. $pagination = pagination_make($query);
  73. $list = $pagination['list'];
  74. foreach ($list as $i => $item) {
  75. $list[$i]['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  76. $list[$i]['goods_pic'] = Goods::getGoodsPicStatic($item['goods_id'])->pic_url;
  77. $list[$i]['refund_pic_list'] = json_decode($item['refund_pic_list']);
  78. $list[$i]['attr'] = json_decode($item['attr']);
  79. }
  80. $address = RefundAddress::find()->where(['store_id' => $this->store_id, 'mch_id' => 0, 'is_delete' => 0])->all();
  81. foreach ($address as &$v) {
  82. if (mb_strlen($v->address) > 20) {
  83. $v->address = mb_substr($v->address, 0, 20) . '···';
  84. }
  85. }
  86. unset($v);
  87. return [
  88. 'code' => 0,
  89. 'msg' => 'success',
  90. 'data' => [
  91. 'data' => $list,
  92. 'address' => $address,
  93. 'pageNo' => $pagination['pageNo'],
  94. 'totalCount' => $pagination['totalCount'],
  95. ],
  96. ];
  97. }
  98. }