IntegralOrderForm.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace app\modules\admin\models;
  3. use app\models\Goods;
  4. use app\models\Order;
  5. use app\models\OrderDetail;
  6. use app\models\OrderForm;
  7. use yii\base\Model;
  8. class IntegralOrderForm extends Model
  9. {
  10. public $store_id;
  11. public $order_id;
  12. public $status;
  13. public $order_no;
  14. public $goods_name;
  15. public $mobile;
  16. public $start_time;
  17. public $end_time;
  18. public $name;
  19. public function rules()
  20. {
  21. return [
  22. [['store_id', 'status', 'order_id'], 'integer'],
  23. [['order_no', 'goods_name', 'mobile', 'start_time', 'end_time', 'name'], 'string']
  24. ];
  25. }
  26. public function orderList() {
  27. $store_id = $this->store_id;//商城id
  28. $status = $this->status;//订单状态
  29. $order_no = $this->order_no;//订单编号
  30. $goods_name = $this->goods_name;//商品名称
  31. $mobile = $this->mobile;//手机号
  32. $start_time = $this->start_time;//开始时间
  33. $end_time = $this->end_time;//结束时间
  34. $name = $this->name;//收货人
  35. $order_id = $this->order_id;
  36. $query = Order::find()->alias('o')->where(['o.order_type' => Order::ORDER_TYPE_INTEGRAL, 'is_delete' => 0, 'store_id' => $store_id]);
  37. if ($status !== null && intval($status) !== -1 && in_array($status, [0, 2, 3, 1])) {
  38. $query->andWhere(['o.trade_status' => $status]);
  39. }
  40. if ($order_no) {
  41. $query->andWhere(['o.order_no' => $order_no]);
  42. }
  43. if ($order_id) {
  44. $query->andWhere(['o.id' => $order_id]);
  45. }
  46. if ($goods_name) {
  47. $query->leftJoin(['od' => OrderDetail::tableName()], 'o.id = od.oder_id');
  48. $query->andWhere(['LIKE', 'od.goods_name', $goods_name]);
  49. }
  50. if ($mobile) {
  51. $query->andWhere(['LIKE', 'o.mobile', $mobile]);
  52. }
  53. if ($start_time) {
  54. $start_time = strtotime($start_time);
  55. $query->andWhere(['>=', 'o.created_at', $start_time]);
  56. }
  57. if ($end_time) {
  58. $end_time = strtotime($end_time);
  59. $query->andWhere(['<=', 'o.created_at', $end_time]);
  60. }
  61. if ($name) {
  62. $query->andWhere(['LIKE', 'o.name', $name]);
  63. }
  64. $query->orderBy('o.created_at desc')->select('o.id, o.order_no, o.integral_price, o.total_price, o.pay_price, o.name, o.created_at, o.express_price, o.trade_status, o.address, o.mobile, o.is_pay, o.express, o.express_no, o.confirm_time, o.send_time, o.pay_time, o.apply_delete, o.pay_type, o.remark');
  65. $list = pagination_make($query);
  66. foreach ($list['list'] as &$item) {
  67. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  68. $item['confirm_time'] = $item['confirm_time'] ? date('Y-m-d H:i:s', $item['confirm_time']) : '';
  69. $item['send_time'] = $item['send_time'] ? date('Y-m-d H:i:s', $item['send_time']) : '';
  70. $item['pay_time'] = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : '';
  71. $item['trade_status'] = (int)$item['trade_status'];
  72. $item['is_pay'] = (int)$item['is_pay'];
  73. $item['apply_delete'] = (int)$item['apply_delete'];
  74. $item['pay_type'] = (int)$item['pay_type'];
  75. $item['goods_list'] = OrderDetail::find()->alias('od')->where(['od.order_id' => $item['id']])
  76. ->leftJoin(['g' => Goods::tableName()], 'od.goods_id = g.id')
  77. ->select(['od.num', 'od.total_price', 'g.goods_no', 'od.attr', 'od.food_ext_goods', 'od.is_level', 'od.batch_price_tips', 'name' => 'od.goods_name','od.pic', 'od.goods_info', 'od.delivery_type', 'od.shop_id', 'od.goods_id', 'g.attr attrs', 'od.integral_price', 'g.unit'])->asArray()->all();
  78. foreach ($item['goods_list'] as &$goods) {
  79. $goods['form'] = OrderForm::findAll(['goods_id' => $goods['goods_id'], 'order_id' => $item['id']]);
  80. $goods['attr_list'] = json_decode($goods['attr'], true);
  81. }
  82. }
  83. return [
  84. 'code' => 0,
  85. 'msg' => 'success',
  86. 'data' => [
  87. 'data' => $list['list'],
  88. 'pageNo' => $list['pageNo'],
  89. 'totalCount' => $list['totalCount'],
  90. 'express_list' => (new OrderListForm())->getExpressList(),
  91. ]
  92. ];
  93. }
  94. }