alias('O')
->where($this->condition, $this->params)
->select('O.*,U.REAL_NAME,U.DEC_ID,SG.CATEGORY_TYPE,OG.REAL_PRICE,OG.TAX_RATE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV')
->join('LEFT JOIN', BaUser::tableName() . ' AS U', 'U.ID=O.USER_ID')
->join('LEFT JOIN', BaOrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN')
->join('LEFT JOIN', ShopGoods::tableName() . ' AS SG', 'SG.ID=OG.GOODS_ID')
->orderBy('O.CREATED_AT DESC');
// 订单中间表只查询待支付和支付失败的订单
$this->params[':NOT_PAID'] = \Yii::$app->params['orderStatus']['notPaid']['value']; // 待支付
$this->params[':FAIL_PAID'] = \Yii::$app->params['orderStatus']['failPaid']['value']; // 支付失败
$orderStandardQuery = BaApproachOrder::find()
->alias('O')
->where($this->condition . ' AND (O.STATUS = :NOT_PAID OR O.STATUS = :FAIL_PAID)', $this->params)
->select('O.*,U.REAL_NAME,U.DEC_ID,SG.CATEGORY_TYPE,OG.REAL_PRICE,OG.TAX_RATE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV')
->join('LEFT JOIN', BaUser::tableName() . ' AS U', 'U.ID=O.USER_ID')
->join('LEFT JOIN', BaApproachOrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN')
->join('LEFT JOIN', ShopGoods::tableName() . ' AS SG', 'SG.ID=OG.GOODS_ID')
->orderBy('O.CREATED_AT DESC');
$queryAll = $orderQuery->union($orderStandardQuery, true);
$query = (new Query())->from(['Q' => $queryAll])->select('Q.*')->distinct()->orderBy(['CREATED_AT' => SORT_DESC]);
$totalCount = $query->count();
$pagination = new Pagination(['totalCount' => $totalCount, 'pageSize' => \Yii::$app->request->get('pageSize')]);
$lists = $query->offset($pagination->offset)->limit($pagination->limit)->all();
$this->listData = [
'list' => $lists,
'currentPage'=>$pagination->page,
'totalPages'=>$pagination->pageCount,
'startNum' => $pagination->page * $pagination->pageSize + 1,
'totalCount' => $pagination->totalCount,
'pageSize' => $pagination->pageSize,
];
foreach ($this->listData['list'] as $key => $value) {
$CREATE_USER_ID = Info::getUserIdByUserName($value['CREATE_USER']);
$this->listData['list'][$key]['DEC_USER_NAME'] = Info::getUserNameByUserId($value['DEC_ID']);
$this->listData['list'][$key]['CREATE_USER_NAME'] = Info::getUserRealNameByUserId($CREATE_USER_ID);
// $this->listData['list'][$key]['GOODS_NO'] = '';
}
}
/**
* 要展示和导出的所有字段
* @return array
*/
public function getColumn(){
$regionConfig = Cache::getRegionConfig();
if(!$this->columns){
$this->columns = [
'ID' => null,
'DEC_SN' => null,
'USER_NAME' => [
'header' => 'Member code',//会员编号
'headerOther' => ['width' => '120'],
],
'DEC_USER_NAME' => [
'header' => 'Stockist', // 报单中心
'headerOther' => ['width' => '120'],
],
'CREATE_USER' => [
'header' => 'Creator No',//创建人编号
'headerOther' => ['width' => '120'],
],
'CREATE_USER_NAME' => [
'header' => 'Stockist Name',//创建人姓名
'headerOther' => ['width' => '120'],
],
'SN' => [
'header' => 'Order code',//订单号
'headerOther' => ['width' => '200'],
],
// 'STATUS' => null,
'STATUS' => [
'header' => 'Status',//订单状态
'headerOther' => [
'width' => '110',
],
'value' => function ($row) {
return \Yii::$app->params['orderStatus'][$row['STATUS']]['label'] ?? '';
},
],
'SKU_CODE' => [
'header' => 'Product Code',//存货编码
'headerOther' => ['width' => '150'],
],
'GOODS_TITLE' => [
'header' => 'Product Name', // 存货名称
'headerOther' => ['width' => '200'],
],
'BUY_NUMS' => [
'header' => 'Qty',//数量
'headerOther' => ['width' => '100'],
],
'CONSIGNEE' => [
'header' => 'Recipient',//收货人
'headerOther' => [
'width' => '150',
],
],
'MOBILE' => [
'header' => 'Contact 1',//联系方式1
'headerOther' => [
'width' => '150',
],
],
'TEL' => [
'header' => 'Contact 2',//联系方式2
],
'PROVINCE' => [
'header' => 'State', // 州
'headerOther' => ['width' => '120'],
'value' => function ($row) use($regionConfig) {
return $regionConfig[$row['PROVINCE']]['REGION_NAME'] ?? '';
},
],
'CITY' => [
'header' => 'Local Government Area', // 地方政府
'headerOther' => ['width' => '120'],
'value' => function ($row) use($regionConfig) {
return $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
},
],
'COUNTY' => [
'header' => 'City', // 区
'headerOther' => ['width' => '120'],
'value' => function ($row) use($regionConfig) {
return $regionConfig[$row['COUNTY']]['REGION_NAME'] ?? '';
},
],
// 'AREA' => [
// 'header' => '地区',
// // 用于导出
// 'value' => function($row) use($regionConfig) {
// $province = $regionConfig[$row['PROVINCE']]['REGION_NAME'] ?? '';
// $city = $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
// $county = $regionConfig[$row['COUNTY']]['REGION_NAME'] ?? '';
// return $province.$city.$county;
// },
// // 用于前台显示
// 'showValue' => function($row) {
// $province = $regionConfig[$row['PROVINCE']]['REGION_NAME'] ?? '';
// $city = $regionConfig[$row['CITY']]['REGION_NAME'] ?? '';
// $county = $regionConfig[$row['COUNTY']]['REGION_NAME'] ?? '';
// return '
'.$province.$city.$county.'
';
// },
// 'headerOther' => [
// 'width' => '200'
// ],
// ],
'ADDRESS' => [
'header' => 'Detailed address',//详细地址
'headerOther' => [
'width' => '300',
],
],
'PERIOD_NUM' => [
'header' => 'Period',//期数
],
'ORDER_TYPE' => [
'header' => 'Order type',//订单类型
'headerOther' => ['width' => '120'],
'value' => function ($row) {
switch ($row['ORDER_TYPE']) {
case 'ZC':
return 'Welcome pack';
case 'FX':
return in_array($row['PAY_TYPE'], ['cash', 'pay_stack']) ? 'Reselling': 'Points'; //'重消' : '积分'
}
},
],
// 'WAREHOUSE' => [
// 'header' => 'Delivery warehouse',//发货仓
// ],
'CREATED_AT' => [
'header' => 'Creation time',//创建时间
'value' => function ($row) {
return (new DateTime([
'value' => $row['CREATED_AT'],
]))->result();
},
'headerOther' => ['width' => '190'],
],
'PAY_TYPE' => [
'header' => 'Pay type',// 支付方式
'value' => function ($row) {
return ShopGoods::payTypes()[$row['PAY_TYPE']]['name'] ?? ShopGoods::payTypes()['cash']['name'];
},
'headerOther' => ['width' => '190'],
],
'PAY_AT' => [
'header' => 'Payment time',//支付时间
'value' => function ($row) {
return (new DateTime([
'value' => $row['PAY_AT'],
]))->result();
},
'headerOther' => ['width' => '190'],
],
'DELIVERY_AT' => [
'header' => 'Delivery time',//发货时间
'value' => function ($row) {
return (new DateTime([
'value' => $row['DELIVERY_AT'],
]))->result();
},
'headerOther' => ['width' => '190'],
],
'REAL_PRICE' => [
'header' => 'Item Pricing',//商品单价
'headerOther' => [
'width' => '150',
],
'value' => function ($row) {
return Tool::formatPrice($row['REAL_PRICE']);
},
'valueOther' => function ($row) {
return [
'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
];
},
],
'REAL_PV' => [
'header' => 'Commodity amount',//商品金额
'headerOther' => [
'width' => '150',
],
'value' => function ($row) {
return Tool::formatPrice($row['REAL_PV']);
},
'valueOther' => function ($row) {
return [
'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
];
},
],
'PAY_FREIGHT' => [
'header' => 'Freight',//运费
'headerOther' => [
'width' => '150',
],
'value' => function ($row) {
return Tool::formatPrice($row['FREIGHT']);
},
'valueOther' => function ($row) {
return [
'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
];
},
],
'TAX_RATE' => [
'header' => 'Tax Rate',//税率
'headerOther' => [
'width' => '150',
],
'value' => function ($row) {
return Tool::formatPrice($row['TAX_RATE']);
},
'valueOther' => function ($row) {
return [
'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
];
},
],
'TAX_AMOUNT' => [
'header' => 'Tax',//税额
'headerOther' => [
'width' => '150',
],
'value' => function ($row) {
return Tool::formatPrice(($row['REAL_PRICE'] - $row['REAL_PRICE'] / (1 + $row['TAX_RATE'] / 100)));
},
'valueOther' => function ($row) {
return [
'tag' => ['type' => 'danger', 'size' => 'small', 'class' => 'no-border']
];
},
],
'EXPRESS_COMPANY' => [
'header' => 'Courier Services Company',//快递公司
'headerOther' => ['width' => '150'],
],
'ORDER_TRACK_NO' => [
'header' => 'Courier Number',//快递单号
'headerOther' => ['width' => '200'],
],
'EXPRESS_TYPE' => [
'header' => 'Shipping Method',//发货方式
'headerOther' => ['width' => '150'],
'value' => function ($row) {
return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick ';//'邮寄' : '自提'
},
],
'FRONT_REMARK' => [
'header' => 'Member Notes',//会员备注
'headerOther' => [
'width' => '200',
],
'value' => function ($row) {
return $row['FRONT_REMARK'];
},
'showValue' => function ($row) {
return ''.$row['FRONT_REMARK'].'
';
},
],
'DELIVERY_STATUS' => null,
'DELIVERY_STATUS_NAME' => [
'header' => 'Shipment Status',//发货状态
'headerOther' => [
'width' => '110',
],
'value' => function ($row) {
return \Yii::$app->params['deliveryStatus'][$row['DELIVERY_STATUS']]['label'] ?? '';
},
],
'IS_AUTO' => [
'header' => 'Is Auto', // 是否自动
'value' => function ($row) {
return $row['IS_AUTO'] == 1 ? 'Yes' : 'No';
},
],
];
}
return $this->columns;
}
/**
* 前台用于筛选的类型集合
* @return mixed
*/
public function getFilterTypes()
{
if(!$this->filterTypes){
$this->filterTypes = [
'SN'=> ['name'=> 'Order No'],//订单编号
'USER_NAME'=> ['name'=> 'Member code'],//会员编号
'MOBILE'=> ['name'=> 'Contact 1'],//联系方式1
'ORDER_TYPE'=> ['name'=> 'Order Type'],
'PERIOD_NUM'=> ['name'=> 'Number of periods'],//期数
'CREATED_AT'=> ['name'=> 'Creation time', 'other'=>'date'],//创建时间
'STATUS'=> [
'name'=> 'Status',
'other'=> 'select',
'selectData'=> [
['id' => \Yii::$app->params['orderStatus']['paid']['value'], 'name' => \Yii::$app->params['orderStatus']['paid']['label']],
['id' => \Yii::$app->params['orderStatus']['notPaid']['value'], 'name' => \Yii::$app->params['orderStatus']['notPaid']['label']],
['id' => \Yii::$app->params['orderStatus']['failPaid']['value'], 'name' => \Yii::$app->params['orderStatus']['failPaid']['label']]
]
],
'IS_AUTO' => [
'name'=>'Is Auto',
'other'=> 'select',
'selectData'=> [
['id'=>1, 'name'=>'YES'],
['id'=>0, 'name'=>'NO'],
]
]
];
}
return $this->filterTypes;
}
}