| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models;
- use app\constants\OptionSetting;
- use app\models\DeliveryInfo;
- use app\models\District;
- use app\models\Md;
- use app\models\Option;
- use app\models\Order;
- use app\models\Store;
- use yii\base\Model;
- use app\modules\admin\models\OrderListForm;
- class DeliveryOrderForm extends Model
- {
- public $state; //0=全部,1=未付款,2=待接单,3=待取货,4=配送中,5=已完成,6=已取消
- public $dateStart;
- public $dateEnd;
- public $mobile;
- public $order_no;
- public $name;
- public $store_id;
- public $rider_name;
- public function rules()
- {
- return [
- [[ 'state', 'status', 'is_auto', 'is_delete', 'source', 'apply_time', 'max_num', 'store_id'], 'integer'],
- [['dateStart', 'dateEnd', 'mobile', 'order_no', 'name', 'rider_name'], 'string', 'max' => 255]
- ];
- }
- public function search()
- {
- $query = Order::find()->alias('o')
- ->leftJoin(['di' => DeliveryInfo::tableName()], 'o.order_no = di.order_no')
- ->where(['o.order_type' => Order::ORDER_TYPE_STORE, 'di.is_local' => 1])
- ->select('o.*,di.fee,di.rider_id,di.rider_name,di.rider_mobile,di.local_status,di.serial_num, o.send_time rider_time, di.is_store_delivery_type')->orderBy('o.created_at DESC');;
- if ($this->store_id > 0) {
- $query->andWhere(['o.store_id' => $this->store_id]);
- }
- switch ($this->state) {
- case 1:
- //未付款
- $query->andWhere(['<>', 'o.trade_status', Order::ORDER_FLOW_CANCEL])->andWhere(['o.is_delete' => Order::IS_DELETE_FALSE, 'o.is_pay' => Order::IS_PAY_FALSE]);
- break;
- case 2:
- //待接单
- $query->andWhere([
- 'o.trade_status' => Order::ORDER_FLOW_NO_SEND,
- 'o.is_delete' => Order::IS_DELETE_FALSE
- ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]);
- break;
- case 3:
- //待取货
- $query->andWhere([
- 'o.trade_status' => Order::ORDER_FLOW_SEND,
- 'o.is_delete' => Order::IS_DELETE_FALSE,
- 'di.local_status' => DeliveryInfo::LOCAL_STATUS_WAITING,
- ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]);
- break;
- case 4:
- //配送中
- $query->andWhere([
- 'o.trade_status' => Order::ORDER_FLOW_SEND,
- 'o.is_delete' => Order::IS_DELETE_FALSE,
- 'di.local_status' => DeliveryInfo::LOCAL_STATUS_SENDING,
- ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]);
- break;
- case 5:
- //已完成
- $query->andWhere([
- 'o.trade_status' => Order::ORDER_FLOW_CONFIRM,
- 'o.is_delete' => Order::IS_DELETE_FALSE
- ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]);
- break;
- case 6:
- //已取消
- $query->andWhere(['or', ['o.trade_status' => Order::ORDER_FLOW_CANCEL],
- ['o.is_delete' => Order::IS_DELETE_TRUE]]);
- break;
- default:
- $query->andWhere([
- 'o.is_delete' => Order::IS_DELETE_FALSE
- ]);
- break;
- }
- if ($this->dateStart) {
- $query->andWhere(['>=', 'o.created_at', strtotime($this->dateStart)]);
- }
- if ($this->dateEnd) {
- $query->andWhere(['<=', 'o.created_at', strtotime($this->dateEnd)]);
- }
- if ($this->rider_name) {
- $query->andWhere(['LIKE', 'di.rider_name', $this->rider_name]);
- }
- if ($this->mobile) {
- $query->andWhere(['like', 'o.mobile', $this->mobile]);
- }
- if ($this->order_no) {
- $query->andWhere(['like', 'o.order_no', $this->order_no]);
- }
- if (!empty($this->name)) {
- $query->andWhere(['like', 'o.name', $this->name]);
- }
- $list = pagination_make($query);
- foreach ($list['list'] as &$val) {
- $val['is_store_delivery_type'] = intval($val['is_store_delivery_type']);
- $val['is_pay'] = intval($val['is_pay']);
- $val['pay_time'] = $val['pay_time'] > 0 ? date('Y-m-d H:i:s',$val['pay_time']) : '';
- $val['rider_time'] = $val['rider_time'] > 0 ? date('Y-m-d H:i:s',$val['rider_time']) : '';
- $val['created_at'] = date('Y-m-d H:i:s',$val['created_at']);
- switch ($val['trade_status']) {
- case 0:
- $val['order_status'] = '待接单';
- $val['order_status_color'] = "#C6C6C6";
- break;
- case 1:
- $val['order_status'] = '已取消';
- $val['order_status_color'] = "rgba(0, 0, 0, 0.25)";
- break;
- case 2:
- if($val['local_status'] == DeliveryInfo::LOCAL_STATUS_SENDING) {
- $val['order_status'] = '配送中';
- $val['order_status_color'] = "#1890FF";
- } elseif($val['local_status'] == DeliveryInfo::LOCAL_STATUS_WAITING) {
- $val['order_status'] = '待取货';
- $val['order_status_color'] = "#FAAD14";
- } elseif($val['local_status'] == DeliveryInfo::LOCAL_STATUS_CONFIRM) {
- $val['order_status'] = '已送达';
- $val['order_status_color'] = "#65C817";
- } else {
- $val['order_status'] = '订单状态异常:1';
- $val['order_status_color'] = "rgba(0, 0, 0, 0.25)";
- }
- break;
- case 3:
- if($val['local_status'] == DeliveryInfo::LOCAL_STATUS_CONFIRM) {
- $val['order_status'] = '已完成';
- $val['order_status_color'] = "#65C817";
- } else {
- $val['order_status'] = '订单状态异常:2';
- $val['order_status_color'] = "rgba(0, 0, 0, 0.25)";
- }
- break;
- default:
- if($val['is_pay'] == 0 && $val['is_delete'] == 0) {
- $val['order_status'] = '未付款';
- $val['order_status_color'] = "rgba(0, 0, 0, 0.25)";
- } else {
- $val['order_status'] = '订单状态异常:3';
- $val['order_status_color'] = "rgba(0, 0, 0, 0.25)";
- }
- break;
- }
- $form = new OrderListForm();
- $val['goods_list'] = $form->getOrderGoodsList($val['id']);
- $store = Store::findOne($val['store_id']);
- $val['store_name'] = !empty($store) ? $store->name : '';
- $val['store_info'] = [
- 'longitude' => $store->longitude,
- 'latitude' => $store->latitude
- ];
- if($val['mch_id']){
- $mch = \app\models\Mch::findOne($val['mch_id']);
- $val['store_name'] .= '-入驻商:' . $mch->name;
- $val['store_info'] = [
- 'longitude' => $mch->longitude,
- 'latitude' => $mch->latitude
- ];
- }
- $val['address_data'] = json_decode($val['address_data'], true);
- if (intval($val['is_delivery']) === 0 && $val['md_id'] > 0) {
- $md_info = Md::findOne($val['md_id']);
- $district = implode('', District::find()->where(['id' => [$md_info->province ?? 0, $md_info->city ?? 0, $md_info->district ?? 0]])->select('name')->column());
- $val['address'] = $district . $md_info->address;
- }
- }
- $tencent_map_key = Option::get('tencent_map_key', 0, 'saas', '')['value'];
- if ($this->store_id > 0) {
- $tencent_map_key = Option::get(OptionSetting::TENCENT_MAP_KEY, $this->store_id, 'pay', Option::get(OptionSetting::TENCENT_MAP_KEY, $this->store_id, 'store', '')['value'] ?: $tencent_map_key)['value'];
- }
- $data = [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount'],
- 'tencent_map_key' => $tencent_map_key
- ];
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => $data
- ];
- }
- }
|