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; } }