修改订单列表

This commit is contained in:
luofei 2024-06-05 15:20:58 +08:00
parent de3d6658d8
commit a3e73c3e37
5 changed files with 89 additions and 17 deletions

View File

@ -28,7 +28,7 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
public function setSearch(): array public function setSearch(): array
{ {
return [ return [
'=' => ['order_id', 'pay_type'], '=' => ['order_id', 'pay_type', 'status'],
]; ];
} }
@ -44,13 +44,19 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
*/ */
public function lists(): array public function lists(): array
{ {
return StoreOrder::with(['user', 'product' => function ($query) { return StoreOrder::with(['user', 'staff', 'product' => function ($query) {
$query->field(['id', 'oid', 'product_id', 'cart_info']); $query->field(['id', 'oid', 'product_id', 'cart_info']);
}])->where($this->searchWhere) }])->where($this->searchWhere)
->when(!empty($this->params['start_time']), function ($query) {
$query->whereTime('create_time', '>=', $this->params['start_time']);
})
->when(!empty($this->params['end_time']), function ($query) {
$query->whereTime('create_time', '<=', $this->params['end_time']);
})
->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']);
}) })
->field(['id', 'order_id', 'pay_price', 'pay_time', 'pay_type', 'status', 'uid']) ->field(['id', 'store_id', 'staff_id', 'order_id', 'pay_price', 'pay_time', 'pay_type', 'status', 'uid'])
->limit($this->limitOffset, $this->limitLength) ->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc']) ->order(['id' => 'desc'])
->select()->each(function($item){ ->select()->each(function($item){
@ -76,6 +82,12 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
->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']);
}) })
->when(!empty($this->params['start_time']), function ($query) {
$query->whereTime('create_time', '>=', $this->params['start_time']);
})
->when(!empty($this->params['end_time']), function ($query) {
$query->whereTime('create_time', '<=', $this->params['end_time']);
})
->count(); ->count();
} }

View File

@ -0,0 +1,15 @@
<?php
namespace app\common\logic;
use app\common\model\system_store\SystemStoreStaff;
class SystemStoreStaffLogic extends BaseLogic
{
public function listByWhere($where, $field = '*')
{
return SystemStoreStaff::where($where)->field($field)->select()->toArray();
}
}

View File

@ -107,4 +107,10 @@ class StoreOrderLogic extends BaseLogic
return false; return false;
} }
} }
public function storeOrderCount($storeId, $status)
{
return StoreOrder::where(['store_id' => $storeId, 'status' => $status, 'paid' => 1])->count();
}
} }

View File

@ -7,6 +7,7 @@ use app\common\enum\PayEnum;
use app\common\model\BaseModel; use app\common\model\BaseModel;
use app\common\model\store_order_cart_info\StoreOrderCartInfo; use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\system_store\SystemStore; use app\common\model\system_store\SystemStore;
use app\common\model\system_store\SystemStoreStaff;
use app\common\model\user\User; use app\common\model\user\User;
use think\model\concern\SoftDelete; use think\model\concern\SoftDelete;
@ -50,4 +51,9 @@ class StoreOrder extends BaseModel
return $this->hasMany(StoreOrderCartInfo::class, 'oid', 'id'); return $this->hasMany(StoreOrderCartInfo::class, 'oid', 'id');
} }
public function staff()
{
return $this->hasOne(SystemStoreStaff::class, 'id', 'staff_id')->bind(['staff_name']);
}
} }

View File

@ -5,8 +5,10 @@ namespace app\store\controller\store_order;
use app\admin\lists\store_order\StoreOrderLists; use app\admin\lists\store_order\StoreOrderLists;
use app\common\controller\Definitions; use app\common\controller\Definitions;
use app\common\enum\PayEnum;
use app\common\logic\SystemStoreStaffLogic;
use app\store\controller\BaseAdminController; use app\store\controller\BaseAdminController;
use app\store\logic\store_order\StoreOrderLogic; use app\common\logic\store_order\StoreOrderLogic;
use app\store\validate\store_order\StoreOrderValidate; use app\store\validate\store_order\StoreOrderValidate;
use hg\apidoc\annotation as ApiDoc; use hg\apidoc\annotation as ApiDoc;
@ -26,22 +28,31 @@ class StoreOrderController extends BaseAdminController
ApiDoc\Method('GET'), ApiDoc\Method('GET'),
ApiDoc\NotHeaders(), ApiDoc\NotHeaders(),
ApiDoc\Author('中国队长'), ApiDoc\Author('中国队长'),
ApiDoc\Query(name: 'order_id', type: 'int', require: false, desc: '分类id'), ApiDoc\Query(name: 'order_id', type: 'string', require: false, desc: '订单编号'),
ApiDoc\Query(name: 'pay_type', type: 'string', require: false, desc: '商品名称'), ApiDoc\Query(name: 'pay_type', type: 'int', require: false, desc: '支付方式'),
ApiDoc\Query(name: 'status', type: 'int', require: false, desc: '状态1上架2下架3售罄4库存告警'), ApiDoc\Query(name: 'start_time', type: 'string', require: false, desc: '开始时间'),
ApiDoc\Query(name: 'end_time', type: 'string', require: false, desc: '结束时间'),
ApiDoc\Query(name: 'status', type: 'int', require: false, desc: '状态0待发货1待收货2已完成'),
ApiDoc\Header(ref: [Definitions::class, "token"]), ApiDoc\Header(ref: [Definitions::class, "token"]),
ApiDoc\Query(ref: [Definitions::class, "page"]), ApiDoc\Query(ref: [Definitions::class, "page"]),
ApiDoc\ResponseSuccess("data", type: "array", children: [ ApiDoc\ResponseSuccess("data", type: "array", children: [
['name' => 'id', 'desc' => 'ID', 'type' => 'int'], ['name' => 'id', 'desc' => 'ID', 'type' => 'int'],
['name' => 'image', 'desc' => '图片', 'type' => 'string'], ['name' => 'order_id', 'desc' => '订单编号', 'type' => 'string'],
['name' => 'store_name', 'desc' => '商品名称', 'type' => 'string'], ['name' => 'pay_price', 'desc' => '支付金额', 'type' => 'string'],
['name' => 'price', 'desc' => '零售价', 'type' => 'float'], ['name' => 'pay_time', 'desc' => '支付时间', 'type' => 'float'],
['name' => 'cost', 'desc' => '成本价', 'type' => 'float'], ['name' => 'pay_type_name', 'desc' => '支付方式', 'type' => 'float'],
['name' => 'sales', 'desc' => '销量', 'type' => 'int'], ['name' => 'status_name', 'desc' => '状态', 'type' => 'int'],
['name' => 'stock', 'desc' => '库存', 'type' => 'int'], ['name' => 'staff_name', 'desc' => '店员', 'type' => 'int'],
['name' => 'unit_name', 'desc' => '单位', 'type' => 'string'], ['name' => 'nickname', 'desc' => '用户昵称', 'type' => 'string'],
['name' => 'cate_name', 'desc' => '分类', 'type' => 'string'], ['name' => 'avatar', 'desc' => '用户头像', 'type' => 'string'],
['name' => 'status', 'desc' => '状态1上架0下架', 'type' => 'string'], ['name' => 'product', 'desc' => '商品信息', 'type' => 'array', 'children' => [
['name' => 'cart_info', 'desc' => '商品信息', 'type' => 'array', 'children' => [
['name' => 'name', 'desc' => '商品名称', 'type' => 'int'],
['name' => 'image', 'desc' => '图片', 'type' => 'string'],
['name' => 'cart_num', 'desc' => '购买数量', 'type' => 'string'],
['name' => 'price', 'desc' => '单价', 'type' => 'string'],
]],
]],
]), ]),
] ]
public function lists() public function lists()
@ -49,6 +60,28 @@ class StoreOrderController extends BaseAdminController
return $this->dataLists(new StoreOrderLists()); return $this->dataLists(new StoreOrderLists());
} }
#[
ApiDoc\Title('订单统计'),
ApiDoc\url('/store/store_order/storeOrder/title'),
ApiDoc\Method('GET'),
ApiDoc\NotHeaders(),
ApiDoc\Author('中国队长'),
ApiDoc\Header(ref: [Definitions::class, "token"]),
ApiDoc\ResponseSuccess("data", type: "array"),
]
public function title(SystemStoreStaffLogic $staffLogic, StoreOrderLogic $orderLogic)
{
return $this->data([
'staff' => $staffLogic->listByWhere(['store_id' => $this->request->adminInfo['store_id'], 'status' => 1], 'id,staff_name'),
'pay_type' => PayEnum::getPaySceneDesc(),
'order_status' => [
'wait_send' => $orderLogic->storeOrderCount($this->request->adminInfo['store_id'], 0),
'wait_receive' => $orderLogic->storeOrderCount($this->request->adminInfo['store_id'], 1),
'finish' => $orderLogic->storeOrderCount($this->request->adminInfo['store_id'], 2),
],
]);
}
#[ #[
ApiDoc\Title('添加订单'), ApiDoc\Title('添加订单'),
ApiDoc\url('/store/store_order/storeOrder/add'), ApiDoc\url('/store/store_order/storeOrder/add'),