OrderListForm.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\plugins\scanCodePay\models\form;
  8. use app\models\common\admin\order\CommonOrderSearch;
  9. use app\models\DeliveryInfo;
  10. use app\models\Express;
  11. use app\models\Order;
  12. use app\models\OrderDetail;
  13. use app\models\OrderForm;
  14. use app\models\OrderRefund;
  15. use app\models\SaasUser;
  16. use app\models\Shop;
  17. use app\models\User;
  18. use app\plugins\scanCodePay\models\ScanCodePaySetting;
  19. use app\utils\Delivery\Delivery;
  20. use app\utils\Export;
  21. use app\utils\ExportList;
  22. use yii\base\BaseObject;
  23. use yii\base\Model;
  24. use yii\db\Query;
  25. use yii\helpers\Json;
  26. class OrderListForm extends Model
  27. {
  28. public $store_id;
  29. public $user_id;
  30. public $keyword;
  31. public $status;
  32. public $page;
  33. public $limit;
  34. public $is_offline;
  35. public $clerk_id;
  36. public $parent_id;
  37. public $shop_id;
  38. public $order_type;
  39. public $dateStart;
  40. public $dateEnd;
  41. public $express_type;
  42. public $keywordType;
  43. public $seller_comments;
  44. public $fields;
  45. public $type;
  46. public $mch_id;
  47. public $flag; // 是否导出
  48. public $supplier_id;
  49. public $supplier;
  50. public $md_id;
  51. /**
  52. * @var 所属平台
  53. */
  54. public $platform;//所属平台
  55. /**
  56. * @var bool 是否是配送员订单
  57. */
  58. public $is_delivery = false;//是否是配送员订单
  59. /**
  60. * @var bool 是否是配送员订单
  61. */
  62. public $is_same_city = false;//是否是配送员订单
  63. /**
  64. * @var 获取默写城市的订单 例如:["\u5357\u5b81","\u4e0a\u6d77"]
  65. */
  66. public $shop_list;
  67. public $order_id;
  68. public function rules()
  69. {
  70. return [
  71. [['keyword', 'flag'], 'trim'],
  72. [['status', 'page', 'limit', 'user_id', 'is_offline', 'clerk_id', 'shop_id', 'keywordType', 'platform', 'order_type', 'md_id', 'mch_id'], 'integer'],
  73. [['status',], 'default', 'value' => -1],
  74. [['page',], 'default', 'value' => 1],
  75. [['dateStart', 'dateEnd', 'express_type'], 'trim'],
  76. [['seller_comments', 'flag'], 'string'],
  77. [['fields', 'is_delivery', 'shop_list'], 'safe']
  78. ];
  79. }
  80. public function search()
  81. {
  82. if (!$this->validate()) {
  83. return [
  84. 'code' => 1,
  85. 'msg' => $this->getErrorSummary(false)[0],
  86. ];
  87. }
  88. $query = \app\plugins\scanCodePay\models\Order::find()->alias('o')->where([
  89. 'o.store_id' => $this->store_id
  90. ]);
  91. $query->leftJoin(['u' => User::tableName()], 'u.id = o.user_id')
  92. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding');
  93. switch ($this->status) {
  94. case 0:
  95. $query->andWhere(['o.is_delete' => Order::IS_DELETE_FALSE, 'is_pay' => Order::IS_PAY_FALSE]);
  96. break;
  97. case 3:
  98. $query->andWhere([
  99. 'o.trade_status' => Order::ORDER_FLOW_CONFIRM,
  100. 'o.is_delete' => Order::IS_DELETE_FALSE,
  101. 'o.is_pay' => Order::IS_PAY_TRUE
  102. ]);
  103. break;
  104. default:
  105. if (empty($this->order_id)) {
  106. $query->andWhere([
  107. 'o.is_delete' => Order::IS_DELETE_FALSE
  108. ]);
  109. }
  110. break;
  111. }
  112. if ($this->order_id && $this->order_id > 0) {
  113. $query->andWhere(['o.id' => $this->order_id]);
  114. }
  115. // TODO:
  116. $commonOrderSearch = new CommonOrderSearch();
  117. if (!$this->order_id) {
  118. $query = $commonOrderSearch->search($query, $this);
  119. $query = $commonOrderSearch->keyword($query, $this->keywordType, $this->keyword);
  120. }
  121. if ($this->dateStart) {
  122. $query->andWhere(['>=', 'o.created_at', strtotime($this->dateStart)]);
  123. }
  124. if ($this->dateEnd) {
  125. $query->andWhere(['<=', 'o.created_at', strtotime($this->dateEnd)]);
  126. }
  127. if ($this->md_id > 0) {
  128. $query->andWhere(['o.md_id' => $this->md_id]);
  129. } else {
  130. $query->andWhere(['o.md_id' => [0, -1]]);
  131. }
  132. if ($this->mch_id > 0) {
  133. $query->andWhere(['o.mch_id' => $this->mch_id]);
  134. } else {
  135. $query->andWhere(['o.mch_id' => [0, -1]]);
  136. }
  137. $query->orderBy('o.created_at DESC')
  138. ->select(['o.*', 'u.nickname as nickname','su.name as de_name', 'u.platform'])->groupBy('o.id');
  139. $pagination = pagination_make($query);
  140. $listArray = $pagination['list'];
  141. foreach ($listArray as &$order) {
  142. $order['created_at'] = date('Y-m-d H:i:s', $order['created_at']);
  143. if($order['user_id'] == 0){
  144. $order['nickname'] = "游客";
  145. }
  146. }
  147. return [
  148. 'code' => 0,
  149. 'msg' => 'success',
  150. 'data' => [
  151. 'data' => $listArray,
  152. 'pageNo' => $pagination['pageNo'],
  153. 'totalCount' => $pagination['totalCount'],
  154. ],
  155. ];
  156. }
  157. }