|
|
@@ -1311,12 +1311,23 @@ ORDER;
|
|
|
return static::notice($data);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @throws HttpException
|
|
|
+ */
|
|
|
+ public function actionBaDecOrderList() {
|
|
|
+ $version = \Yii::$app->request->get('v');
|
|
|
+
|
|
|
+ $data = $version == 2 ? $this->baDecOrderListV2() : $this->baDecOrderListV1();
|
|
|
+
|
|
|
+ return static::notice($data);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 我的BA报单
|
|
|
* @return mixed
|
|
|
* @throws HttpException
|
|
|
*/
|
|
|
- public function actionBaDecOrderList() {
|
|
|
+ public function baDecOrderListV1() {
|
|
|
$condition = ' DO.USER_ID=:USER_ID AND DO.IS_DEL=0';
|
|
|
$params[':USER_ID'] = \Yii::$app->user->id;
|
|
|
|
|
|
@@ -1369,7 +1380,75 @@ ORDER;
|
|
|
$value['TOTAL_AMOUNT'] = Tool::formatPrice($value['REAL_PRICE'] * $value['BUY_NUMS']);
|
|
|
}
|
|
|
|
|
|
- return static::notice($data);
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我的BA报单
|
|
|
+ * @return mixed
|
|
|
+ * @throws HttpException
|
|
|
+ */
|
|
|
+ public function baDecOrderListV2() {
|
|
|
+ $condition = ' DO.USER_ID=:USER_ID AND DO.IS_DEL=0';
|
|
|
+ $params[':USER_ID'] = \Yii::$app->user->id;
|
|
|
+
|
|
|
+ $orderQuery = BaDecOrder::find()
|
|
|
+ ->alias('DO')
|
|
|
+ ->where($condition, $params)
|
|
|
+ ->select('DO.DEC_SN,DO.ORDER_SN,DO.CREATED_AT,O.STATUS,O.CONSIGNEE,O.MOBILE,O.PAY_TYPE,O.PAY_AT,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.USER_NAME USER_NAME,U.REAL_NAME REAL_NAME,RU.USER_NAME REC_USER_NAME,RU.REAL_NAME REC_REAL_NAME,CU.USER_NAME CON_USER_NAME,CU.REAL_NAME CON_REAL_NAME')
|
|
|
+ ->join('LEFT JOIN', BaUser::tableName() . ' AS U', 'DO.TO_USER_ID=U.ID')
|
|
|
+ ->join('LEFT JOIN', User::tableName() . ' AS RU', 'DO.REC_USER_ID=RU.ID')
|
|
|
+ ->join('LEFT JOIN', User::tableName() . ' AS CU', 'DO.CON_USER_ID=CU.ID')
|
|
|
+ ->join('LEFT JOIN', BaOrder::tableName() . ' AS O', 'O.SN=DO.ORDER_SN')
|
|
|
+ ->orderBy('DO.CREATED_AT DESC');
|
|
|
+
|
|
|
+ // 订单中间表只查询待支付和支付失败的订单
|
|
|
+ $params[':NOT_PAID'] = \Yii::$app->params['orderStatus']['notPaid']['value']; // 待支付
|
|
|
+ $params[':FAIL_PAID'] = \Yii::$app->params['orderStatus']['failPaid']['value']; // 支付失败
|
|
|
+ $orderStandardQuery = BaApproachDecOrder::find()
|
|
|
+ ->alias('DO')
|
|
|
+ ->where($condition . ' AND (O.STATUS = :NOT_PAID OR O.STATUS = :FAIL_PAID)', $params)
|
|
|
+ ->select('DO.DEC_SN,DO.ORDER_SN,DO.CREATED_AT,O.STATUS,O.CONSIGNEE,O.MOBILE,O.PAY_TYPE,O.PAY_AT,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.USER_NAME USER_NAME,U.REAL_NAME REAL_NAME,RU.USER_NAME REC_USER_NAME,RU.REAL_NAME REC_REAL_NAME,CU.USER_NAME CON_USER_NAME,CU.REAL_NAME CON_REAL_NAME')
|
|
|
+ ->join('LEFT JOIN', BaUser::tableName() . ' AS U', 'DO.TO_USER_ID=U.ID')
|
|
|
+ ->join('LEFT JOIN', User::tableName() . ' AS RU', 'DO.REC_USER_ID=RU.ID')
|
|
|
+ ->join('LEFT JOIN', User::tableName() . ' AS CU', 'DO.CON_USER_ID=CU.ID')
|
|
|
+ ->join('LEFT JOIN', BaApproachOrder::tableName() . ' AS O', 'O.SN=DO.ORDER_SN')
|
|
|
+ ->orderBy('DO.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();
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'list' => $lists,
|
|
|
+ 'currentPage'=>$pagination->page,
|
|
|
+ 'totalPages'=>$pagination->pageCount,
|
|
|
+ 'startNum' => $pagination->page * $pagination->pageSize + 1,
|
|
|
+ 'totalCount' => $pagination->totalCount,
|
|
|
+ 'pageSize' => $pagination->pageSize,
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($data['list'] as &$value) {
|
|
|
+ if (($value['PAY_TYPE'] == 'pay_stack') && in_array($value['STATUS'], [\Yii::$app->params['orderStatus']['notPaid']['value'], \Yii::$app->params['orderStatus']['failPaid']['value']])) {
|
|
|
+ // 订单中间表
|
|
|
+ $orderGoods = BaApproachOrderGoods::findAllAsArray('ORDER_SN=:ORDER_SN', [':ORDER_SN' => $value['ORDER_SN']], 'SKU_CODE,GOODS_TITLE,BUY_NUMS,TAX_RATE,REAL_PV,REAL_PRICE');
|
|
|
+ } else {
|
|
|
+ // 订单表
|
|
|
+ $orderGoods = BaOrderGoods::findAllAsArray('ORDER_SN=:ORDER_SN', [':ORDER_SN' => $value['ORDER_SN']], 'SKU_CODE,GOODS_TITLE,BUY_NUMS,TAX_RATE,REAL_PV,REAL_PRICE');
|
|
|
+ }
|
|
|
+ $value['hasChildren'] = $orderGoods;
|
|
|
+ $value['STATUS'] = \Yii::$app->params['orderStatus'][$value['STATUS']]['label'] ?? '';
|
|
|
+ $value['CREATED_AT'] = $value['CREATED_AT'] ? Date::convert($value['CREATED_AT'],'Y-m-d H:i:s') : '';
|
|
|
+ $value['PAY_TYPE'] = array_column(ShopGoods::SALE_TYPE, NULL, 'label')[$value['PAY_TYPE']]['name'] ?? '';
|
|
|
+ $value['FULL_ADDRESS'] = trim(implode(', ', [$value['ADDRESS'], $value['CITY_NAME'], $value['LGA_NAME'], Region::getCnName($value['PROVINCE'])]), ', ');
|
|
|
+
|
|
|
+ unset($value['ADDRESS'], $value['CITY_NAME'], $value['LGA_NAME'], $value['PROVINCE']);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
}
|
|
|
|
|
|
/**
|