Merge pull request 'feat(store_order): 优化订单列表和退款订单列表' (#357) from dev into main

Reviewed-on: #357
This commit is contained in:
mkm 2024-11-23 15:02:58 +08:00
commit 5729948282
2 changed files with 54 additions and 24 deletions

View File

@ -18,7 +18,7 @@ use app\common\lists\ListsExcelInterface;
* Class StoreOrderLists * Class StoreOrderLists
* @package app\admin\listsstore_order * @package app\admin\listsstore_order
*/ */
class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExcelInterface
{ {
@ -31,7 +31,7 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
public function setSearch(): array public function setSearch(): array
{ {
return [ return [
'=' => ['order_id','store_id', 'pay_type', 'staff_id', 'shipping_type', 'delivery_id','paid', 'status', 'is_writeoff','is_merge','uid','source'], '=' => ['order_id', 'store_id', 'pay_type', 'staff_id', 'shipping_type', 'delivery_id', 'paid', 'status', 'is_writeoff', 'is_merge', 'uid', 'source'],
'between_time' => 'create_time' 'between_time' => 'create_time'
]; ];
} }
@ -48,10 +48,10 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
*/ */
public function lists(): array public function lists(): array
{ {
if($this->request->get('is_delivery')>=1){ if ($this->request->get('is_delivery') >= 1) {
$this->searchWhere[]=['delivery_uid','>',0]; $this->searchWhere[] = ['delivery_uid', '>', 0];
} }
return StoreOrder::with(['staff','store'])->where($this->searchWhere) return StoreOrder::with(['staff', 'store'])->where($this->searchWhere)
->when(!empty($this->request->adminInfo['store_id']), function ($query) { ->when(!empty($this->request->adminInfo['store_id']), function ($query) {
$query->where('store_id', $this->request->adminInfo['store_id']); $query->where('store_id', $this->request->adminInfo['store_id']);
}) })
@ -63,40 +63,62 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
$query->whereIn('status', $status); $query->whereIn('status', $status);
} }
}) })
->field(['id', 'store_id', 'staff_id', 'order_id', 'paid','source', 'pay_price','total_price', 'pay_time', 'pay_type', 'status', 'uid','refund_status','create_time','delivery_name','delivery_id','refund_price']) ->field(['id', 'store_id', 'staff_id', 'order_id', 'paid', 'source', 'pay_price', 'total_price', 'pay_time', 'pay_type', 'status', 'uid', 'refund_status', 'create_time', 'delivery_name', 'delivery_id', 'refund_price'])
->limit($this->limitOffset, $this->limitLength) ->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc']) ->order(['id' => 'desc'])
->select()->each(function ($item) { ->select()->each(function ($item) {
$item['pay_time'] = $item['pay_time'] > 0 ? date('Y-m-d H:i:s', $item['pay_time']) : ''; $item['pay_time'] = $item['pay_time'] > 0 ? date('Y-m-d H:i:s', $item['pay_time']) : '';
if($item['status']==-1){ if ($item['status'] == -1) {
$item['status_name'] = OrderEnum::refundStatus($item['refund_status']) ?? ''; $item['status_name'] = OrderEnum::refundStatus($item['refund_status']) ?? '';
}else{ } else {
$item['status_name'] = OrderEnum::getOrderType($item['status']) ?? ''; $item['status_name'] = OrderEnum::getOrderType($item['status']) ?? '';
} }
if ($item['uid'] <= 0) { if ($item['uid'] <= 0) {
$item['nickname'] = '游客'; $item['nickname'] = '游客';
} else { } else {
$id = $item['uid']; $id = $item['uid'];
$user=User::where('id', $item['uid'])->field('real_name,nickname')->find(); $user = User::where('id', $item['uid'])->field('real_name,nickname')->find();
if($user){ if ($user) {
$item['nickname'] =$user['real_name']!=''?$user['real_name'].'|'.$id:$user['nickname'].'|'.$id; $item['nickname'] = $user['real_name'] != '' ? $user['real_name'] . '|' . $id : $user['nickname'] . '|' . $id;
} }
} }
if ($item['paid'] == 0) { if ($item['paid'] == 0) {
$item['status_name'] = '待支付'; $item['status_name'] = '待支付';
} }
if($item['source']==4){ if ($item['source'] == 4) {
$item['source_name'] = '批发订单'; $item['source_name'] = '批发订单';
}else{ } else {
$item['source_name'] = '普通订单'; $item['source_name'] = '普通订单';
} }
$product = StoreOrderCartInfo::where('oid', $item['id'])->field(['id', 'oid', 'product_id', 'cart_info']) $product = StoreOrderCartInfo::where('oid', $item['id'])->field(['id', 'oid', 'product_id', 'cart_info'])
->limit(3)->select(); ->limit(3)->select();
foreach ($product as &$items) { foreach ($product as &$items) {
$items['store_name'] = $items['cart_info']['name']??''; $items['store_name'] = $items['cart_info']['name'] ?? '';
$items['image'] = $items['cart_info']['image']??''; $items['image'] = $items['cart_info']['image'] ?? '';
} }
$item['product'] = $product; $item['product'] = $product;
$pay_type_name = '';
switch ($item['pay_type']) {
case 3:
$pay_type_name = '余额支付';
break;
case 7:
$pay_type_name = '微信支付';
break;
case 9:
$pay_type_name = '微信条码';
break;
case 13:
$pay_type_name = '支付宝条码';
break;
case 17:
$pay_type_name = '现金支付';
break;
case 18:
$pay_type_name = '采购款支付';
break;
}
$item['pay_type_name'] = $pay_type_name;
return $item; return $item;
}) })
->toArray(); ->toArray();
@ -148,8 +170,8 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
{ {
$data = [ $data = [
'id' => 'ID', 'id' => 'ID',
'order_id'=>'订单号', 'order_id' => '订单号',
'store_name'=>'门店', 'store_name' => '门店',
'nickname' => '用户', 'nickname' => '用户',
'total_price' => '总金额', 'total_price' => '总金额',
'pay_price' => '实际支付', 'pay_price' => '实际支付',

View File

@ -6,6 +6,7 @@ use app\admin\lists\BaseAdminDataLists;
use app\common\enum\OrderEnum; use app\common\enum\OrderEnum;
use app\common\lists\ListsSearchInterface; use app\common\lists\ListsSearchInterface;
use app\common\model\store_order\StoreOrder; use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\user\User; use app\common\model\user\User;
class StoreRefundOrderLists extends BaseAdminDataLists implements ListsSearchInterface class StoreRefundOrderLists extends BaseAdminDataLists implements ListsSearchInterface
@ -38,7 +39,7 @@ class StoreRefundOrderLists extends BaseAdminDataLists implements ListsSearchInt
*/ */
public function lists(): array public function lists(): array
{ {
$this->searchWhere[] = ['refund_status','>', 0]; $this->searchWhere[] = ['refund_status', '>', 0];
return StoreOrder::with(['staff', 'product' => function ($query) { return StoreOrder::with(['staff', 'product' => function ($query) {
$query->field(['id', 'oid', 'product_id', 'cart_info']); $query->field(['id', 'oid', 'product_id', 'cart_info']);
}]) }])
@ -51,11 +52,18 @@ class StoreRefundOrderLists extends BaseAdminDataLists implements ListsSearchInt
$item['nickname'] = '游客'; $item['nickname'] = '游客';
} else { } else {
$id = $item['uid']; $id = $item['uid'];
$user=User::where('id', $item['uid'])->field('real_name,nickname')->find(); $user = User::where('id', $item['uid'])->field('real_name,nickname')->find();
if($user){ if ($user) {
$item['nickname'] =$user['real_name']!=''?$user['real_name'].'|'.$id:$user['nickname'].'|'.$id; $item['nickname'] = $user['real_name'] != '' ? $user['real_name'] . '|' . $id : $user['nickname'] . '|' . $id;
} }
} }
$product = StoreOrderCartInfo::where('oid', $item['id'])->field(['id', 'oid', 'product_id', 'cart_info'])
->limit(3)->select();
foreach ($product as &$items) {
$items['store_name'] = $items['cart_info']['name'] ?? '';
$items['image'] = $items['cart_info']['image'] ?? '';
}
$item['product'] = $product;
$item['pay_time'] = $item['pay_time'] > 0 ? date('Y-m-d H:i:s', $item['pay_time']) : ''; $item['pay_time'] = $item['pay_time'] > 0 ? date('Y-m-d H:i:s', $item['pay_time']) : '';
$item['refund_status_name'] = OrderEnum::refundStatus($item['refund_status']) ?? ''; $item['refund_status_name'] = OrderEnum::refundStatus($item['refund_status']) ?? '';
$item['refund_type_name'] = OrderEnum::refundType($item['refund_type']) ?? ''; $item['refund_type_name'] = OrderEnum::refundType($item['refund_type']) ?? '';