Merge branch 'main' of https://gitea.lihaink.cn/mkm/multi-store
# Conflicts: # app/common/logic/store_order/StoreOrderLogic.php
This commit is contained in:
commit
297bccb3a4
@ -56,6 +56,7 @@ class SystemStoreStorageController extends BaseAdminController
|
|||||||
public function edit()
|
public function edit()
|
||||||
{
|
{
|
||||||
$params = (new SystemStoreStorageValidate())->post()->goCheck('edit');
|
$params = (new SystemStoreStorageValidate())->post()->goCheck('edit');
|
||||||
|
$params['admin_id']=$this->adminId;
|
||||||
$result = SystemStoreStorageLogic::edit($params);
|
$result = SystemStoreStorageLogic::edit($params);
|
||||||
if (true === $result) {
|
if (true === $result) {
|
||||||
return $this->success('编辑成功', [], 1, 1);
|
return $this->success('编辑成功', [], 1, 1);
|
||||||
|
@ -49,33 +49,6 @@ class StoreFinanceFlowLists extends BaseAdminDataLists implements ListsSearchInt
|
|||||||
public function lists(): array
|
public function lists(): array
|
||||||
{
|
{
|
||||||
return StoreFinanceFlow::where($this->searchWhere)
|
return StoreFinanceFlow::where($this->searchWhere)
|
||||||
->when(!empty($this->request->adminInfo['store_id']), function ($query) {
|
|
||||||
$query->where('store_id', $this->request->adminInfo['store_id']);
|
|
||||||
})
|
|
||||||
->when(!empty($this->params['keyword']), function (Query $query) {
|
|
||||||
$userIds = User::where('nickname', 'like', "%{$this->params['keyword']}%")->column('id');
|
|
||||||
$query->where(function ($query) use($userIds) {
|
|
||||||
$query->where('user_id', 'in', $userIds)->whereOr('financial_record_sn', 'like', "%{$this->params['keyword']}%");
|
|
||||||
});
|
|
||||||
})
|
|
||||||
->when(!empty($this->params['date_type']) && !empty($this->params['date']), function (Query $query) {
|
|
||||||
switch ($this->params['date_type']) {
|
|
||||||
case 2:
|
|
||||||
$start = new \DateTime($this->params['date']);
|
|
||||||
$start = $start->getTimestamp();
|
|
||||||
$end = $start + (86400 * 7);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$start = strtotime($this->params['date']);
|
|
||||||
$end = strtotime('+1 month', strtotime($this->params['date']));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$start = strtotime($this->params['date']);
|
|
||||||
$end = strtotime($this->params['date']) + 86400;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$query->whereBetweenTime('create_time', $start, $end);
|
|
||||||
})
|
|
||||||
->limit($this->limitOffset, $this->limitLength)
|
->limit($this->limitOffset, $this->limitLength)
|
||||||
->order(['id' => 'desc'])
|
->order(['id' => 'desc'])
|
||||||
->select()->each(function ($item) {
|
->select()->each(function ($item) {
|
||||||
@ -110,44 +83,7 @@ class StoreFinanceFlowLists extends BaseAdminDataLists implements ListsSearchInt
|
|||||||
*/
|
*/
|
||||||
public function count(): int
|
public function count(): int
|
||||||
{
|
{
|
||||||
return StoreFinanceFlow::where($this->searchWhere)
|
return StoreFinanceFlow::where($this->searchWhere)->count();
|
||||||
->when(!empty($this->params['start_time']), function ($query) {
|
|
||||||
$query->whereTime('create_time', '>=', $this->params['start_time']);
|
|
||||||
})
|
|
||||||
->when(!empty($this->params['end_time']), function ($query) {
|
|
||||||
if ($this->params['end_time'] == $this->params['start_time']) {
|
|
||||||
$this->params['end_time'] = strtotime($this->params['end_time']) + 86399;
|
|
||||||
}
|
|
||||||
$query->whereTime('create_time', '<=', $this->params['end_time']);
|
|
||||||
})
|
|
||||||
->when(!empty($this->request->adminInfo['store_id']), function ($query) {
|
|
||||||
$query->where('store_id', $this->request->adminInfo['store_id']);
|
|
||||||
})
|
|
||||||
->when(!empty($this->params['keyword']), function (Query $query) {
|
|
||||||
$userIds = User::where('nickname', 'like', "%{$this->params['keyword']}%")->column('id');
|
|
||||||
$query->where(function ($query) use($userIds) {
|
|
||||||
$query->where('user_id', 'in', $userIds)->whereOr('financial_record_sn', 'like', "%{$this->params['keyword']}%");
|
|
||||||
});
|
|
||||||
})
|
|
||||||
->when(!empty($this->params['date_type']) && !empty($this->params['date']), function (Query $query) {
|
|
||||||
switch ($this->params['date_type']) {
|
|
||||||
case 2:
|
|
||||||
$start = new \DateTime($this->params['date']);
|
|
||||||
$start = $start->getTimestamp();
|
|
||||||
$end = $start + (86400 * 7);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$start = strtotime($this->params['date']);
|
|
||||||
$end = strtotime('+1 month', strtotime($this->params['date']));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$start = strtotime($this->params['date']);
|
|
||||||
$end = strtotime($this->params['date']) + 86400;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$query->whereBetweenTime('create_time', $start, $end);
|
|
||||||
})
|
|
||||||
->count();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ use app\common\model\store_branch_product\StoreBranchProduct;
|
|||||||
use app\common\model\store_branch_product_attr_value\StoreBranchProductAttrValue;
|
use app\common\model\store_branch_product_attr_value\StoreBranchProductAttrValue;
|
||||||
use app\common\model\system_store_storage\SystemStoreStorage;
|
use app\common\model\system_store_storage\SystemStoreStorage;
|
||||||
use app\common\logic\BaseLogic;
|
use app\common\logic\BaseLogic;
|
||||||
|
use app\common\model\store_product\StoreProduct;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
|
||||||
|
|
||||||
@ -58,17 +59,20 @@ class SystemStoreStorageLogic extends BaseLogic
|
|||||||
*/
|
*/
|
||||||
public static function edit(array $params): bool
|
public static function edit(array $params): bool
|
||||||
{
|
{
|
||||||
|
$stock=StoreProduct::where('id', $params['product_id'])->value('stock');
|
||||||
|
$nums=SystemStoreStorage::where('id', $params['id'])->value('nums');
|
||||||
|
$stock=bcadd($stock,$nums);
|
||||||
|
if($stock<$params['nums']){
|
||||||
|
self::setError('库存不足,主库为:'.$stock);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Db::startTrans();
|
Db::startTrans();
|
||||||
try {
|
try {
|
||||||
SystemStoreStorage::where('id', $params['id'])->update([
|
SystemStoreStorage::where('id', $params['id'])->update([
|
||||||
'store_id' => $params['store_id'],
|
|
||||||
'admin_id' => $params['admin_id'],
|
|
||||||
'staff_id' => $params['staff_id'],
|
|
||||||
'product_id' => $params['product_id'],
|
|
||||||
'nums' => $params['nums'],
|
'nums' => $params['nums'],
|
||||||
'status' => $params['status']
|
'admin_id' => $params['admin_id'],
|
||||||
]);
|
]);
|
||||||
|
StoreProduct::where('id', $params['product_id'])->update(['stock'=>bcsub($stock,$params['nums'])]);
|
||||||
Db::commit();
|
Db::commit();
|
||||||
return true;
|
return true;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
@ -20,6 +20,8 @@ class SystemStoreStorageValidate extends BaseValidate
|
|||||||
*/
|
*/
|
||||||
protected $rule = [
|
protected $rule = [
|
||||||
'id' => 'require',
|
'id' => 'require',
|
||||||
|
'product_id' => 'require',
|
||||||
|
'nums' => 'require',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -29,6 +31,8 @@ class SystemStoreStorageValidate extends BaseValidate
|
|||||||
*/
|
*/
|
||||||
protected $field = [
|
protected $field = [
|
||||||
'id' => 'id',
|
'id' => 'id',
|
||||||
|
'product_id' => '商品id',
|
||||||
|
'nums' => '入库数量',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -52,7 +56,7 @@ class SystemStoreStorageValidate extends BaseValidate
|
|||||||
*/
|
*/
|
||||||
public function sceneEdit()
|
public function sceneEdit()
|
||||||
{
|
{
|
||||||
return $this->only(['id']);
|
return $this->only(['id','product_id','nums']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,10 @@ use app\api\controller\BaseApiController;
|
|||||||
use app\api\lists\order\OrderList;
|
use app\api\lists\order\OrderList;
|
||||||
use app\api\validate\OrderValidate;
|
use app\api\validate\OrderValidate;
|
||||||
use app\common\enum\PayEnum;
|
use app\common\enum\PayEnum;
|
||||||
|
use app\common\enum\YesNoEnum;
|
||||||
use app\common\logic\PaymentLogic;
|
use app\common\logic\PaymentLogic;
|
||||||
use app\common\logic\PayNotifyLogic;
|
use app\common\logic\PayNotifyLogic;
|
||||||
|
use app\common\model\dict\DictData;
|
||||||
use app\common\model\store_order\StoreOrder;
|
use app\common\model\store_order\StoreOrder;
|
||||||
use app\common\model\system_store\SystemStoreStaff;
|
use app\common\model\system_store\SystemStoreStaff;
|
||||||
use app\common\model\user\UserAddress;
|
use app\common\model\user\UserAddress;
|
||||||
@ -18,6 +20,7 @@ use hg\apidoc\annotation as ApiDoc;
|
|||||||
#[ApiDoc\title('订单')]
|
#[ApiDoc\title('订单')]
|
||||||
class OrderController extends BaseApiController
|
class OrderController extends BaseApiController
|
||||||
{
|
{
|
||||||
|
public $notNeedLogin = ['refund_reason'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单列表
|
* 订单列表
|
||||||
@ -350,6 +353,15 @@ class OrderController extends BaseApiController
|
|||||||
return $this->fail('支付失败');
|
return $this->fail('支付失败');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[
|
||||||
|
ApiDoc\Title('订单详情'),
|
||||||
|
ApiDoc\url('/api/order/order/detail'),
|
||||||
|
ApiDoc\Method('GET'),
|
||||||
|
ApiDoc\Param(name: "order_id", type: "int", require: true, desc: "订单id"),
|
||||||
|
ApiDoc\NotHeaders(),
|
||||||
|
ApiDoc\ResponseSuccess("data", type: "array"),
|
||||||
|
]
|
||||||
public function detail()
|
public function detail()
|
||||||
{
|
{
|
||||||
$order_id = (int)$this->request->get('order_id');
|
$order_id = (int)$this->request->get('order_id');
|
||||||
@ -484,6 +496,7 @@ class OrderController extends BaseApiController
|
|||||||
ApiDoc\Param(name: "refund_num", type: "int", require: true, desc: "退款数量"),
|
ApiDoc\Param(name: "refund_num", type: "int", require: true, desc: "退款数量"),
|
||||||
ApiDoc\Param(name: "id", type: "int", require: true, desc: "订单id"),
|
ApiDoc\Param(name: "id", type: "int", require: true, desc: "订单id"),
|
||||||
ApiDoc\Param(name: "old_cart_id", type: "int", require: true, desc: "购物车id"),
|
ApiDoc\Param(name: "old_cart_id", type: "int", require: true, desc: "购物车id"),
|
||||||
|
ApiDoc\Param(name: "refund_type", type: "int", require: true, desc: "退款申请类型"),
|
||||||
ApiDoc\NotHeaders(),
|
ApiDoc\NotHeaders(),
|
||||||
ApiDoc\Header(name: "token", type: "string", require: true, desc: "token"),
|
ApiDoc\Header(name: "token", type: "string", require: true, desc: "token"),
|
||||||
ApiDoc\ResponseSuccess("data", type: "array"),
|
ApiDoc\ResponseSuccess("data", type: "array"),
|
||||||
@ -497,6 +510,46 @@ class OrderController extends BaseApiController
|
|||||||
return $this->success('申请成功');
|
return $this->success('申请成功');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[
|
||||||
|
ApiDoc\Title('订单退款原因'),
|
||||||
|
ApiDoc\url('/api/order/order/refund_reason'),
|
||||||
|
ApiDoc\Method('GET'),
|
||||||
|
ApiDoc\Param(),
|
||||||
|
ApiDoc\NotHeaders(),
|
||||||
|
ApiDoc\ResponseSuccess("data", type: "array"),
|
||||||
|
]
|
||||||
|
public function refund_reason()
|
||||||
|
{
|
||||||
|
$data = DictData::where('type_value','reason')->where('status',YesNoEnum::YES)
|
||||||
|
->select()->toArray();
|
||||||
|
return $this->success('ok',$data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[
|
||||||
|
ApiDoc\Title('取消售后'),
|
||||||
|
ApiDoc\url('/api/order/order/cancel_sale'),
|
||||||
|
ApiDoc\Method('GET'),
|
||||||
|
ApiDoc\Param(name: "order_id", type: "int", require: true, desc: "订单id"),
|
||||||
|
ApiDoc\NotHeaders(),
|
||||||
|
ApiDoc\ResponseSuccess("data", type: "array"),
|
||||||
|
]
|
||||||
|
public function cancel_sale()
|
||||||
|
{
|
||||||
|
$order_id = (int)$this->request->get('order_id');
|
||||||
|
$where = [
|
||||||
|
'id' => $order_id,
|
||||||
|
'uid' => $this->userId,
|
||||||
|
];
|
||||||
|
$order = OrderLogic::cancelSell($where);
|
||||||
|
if ($order) {
|
||||||
|
return $this->success();
|
||||||
|
} else {
|
||||||
|
return $this->fail('取消失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
321
app/api/controller/store/ProductRecordController.php
Normal file
321
app/api/controller/store/ProductRecordController.php
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\api\controller\store;
|
||||||
|
|
||||||
|
use app\api\controller\BaseApiController;
|
||||||
|
use hg\apidoc\annotation as ApiDoc;
|
||||||
|
#[ApiDoc\title('收银机商品统计')]
|
||||||
|
class ProductRecordController extends BaseApiController
|
||||||
|
{
|
||||||
|
|
||||||
|
//-------------------------------商品统计---------------------------------------//
|
||||||
|
/**
|
||||||
|
* 商品概况
|
||||||
|
*/
|
||||||
|
public function get_basic()
|
||||||
|
{d($this->userInfo);
|
||||||
|
$data = [
|
||||||
|
"browse" => [
|
||||||
|
"num" => 11353,
|
||||||
|
"percent" => "330.03"
|
||||||
|
],
|
||||||
|
"user" => [
|
||||||
|
"num" => 538,
|
||||||
|
"percent" => "47.39"
|
||||||
|
],
|
||||||
|
"cart" => [
|
||||||
|
"num" => 1181,
|
||||||
|
"percent" => "43.67"
|
||||||
|
],
|
||||||
|
"order" => [
|
||||||
|
"num" => 105753,
|
||||||
|
"percent" => "-68.07"
|
||||||
|
],
|
||||||
|
"pay" => [
|
||||||
|
"num" => 2476,
|
||||||
|
"percent" => "-99.24"
|
||||||
|
],
|
||||||
|
"payPrice" => [
|
||||||
|
"num" => 163490.54,
|
||||||
|
"percent" => "-87.50"
|
||||||
|
],
|
||||||
|
"cost" => [
|
||||||
|
"num" => 72147.8,
|
||||||
|
"percent" => "-93.33"
|
||||||
|
],
|
||||||
|
"refundPrice" => [
|
||||||
|
"num" => 2321.81,
|
||||||
|
"percent" => "1447.87"
|
||||||
|
],
|
||||||
|
"refund" => [
|
||||||
|
"num" => 39,
|
||||||
|
"percent" => "8.33"
|
||||||
|
],
|
||||||
|
"payPercent" => [
|
||||||
|
"num" => "15.61",
|
||||||
|
"percent" => "-6.58"
|
||||||
|
]
|
||||||
|
];
|
||||||
|
return $this->data($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品趋势
|
||||||
|
*/
|
||||||
|
public function get_trend()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
"xAxis" => [
|
||||||
|
"2024-05-06",
|
||||||
|
"2024-05-07",
|
||||||
|
"2024-05-08",
|
||||||
|
"2024-05-09",
|
||||||
|
"2024-05-10",
|
||||||
|
"2024-05-11",
|
||||||
|
"2024-05-12",
|
||||||
|
"2024-05-13",
|
||||||
|
"2024-05-14",
|
||||||
|
"2024-05-15",
|
||||||
|
"2024-05-16",
|
||||||
|
"2024-05-17",
|
||||||
|
"2024-05-18",
|
||||||
|
"2024-05-19",
|
||||||
|
"2024-05-20",
|
||||||
|
"2024-05-21",
|
||||||
|
"2024-05-22",
|
||||||
|
"2024-05-23",
|
||||||
|
"2024-05-24",
|
||||||
|
"2024-05-25",
|
||||||
|
"2024-05-26",
|
||||||
|
"2024-05-27",
|
||||||
|
"2024-05-28",
|
||||||
|
"2024-05-29",
|
||||||
|
"2024-05-30",
|
||||||
|
"2024-05-31",
|
||||||
|
"2024-06-01",
|
||||||
|
"2024-06-02",
|
||||||
|
"2024-06-03",
|
||||||
|
"2024-06-04"
|
||||||
|
],
|
||||||
|
"series" => [
|
||||||
|
[
|
||||||
|
"name" => "商品浏览量",
|
||||||
|
"data" => [
|
||||||
|
131,
|
||||||
|
275,
|
||||||
|
137,
|
||||||
|
100,
|
||||||
|
221,
|
||||||
|
76,
|
||||||
|
64,
|
||||||
|
83,
|
||||||
|
161,
|
||||||
|
125,
|
||||||
|
120,
|
||||||
|
971,
|
||||||
|
169,
|
||||||
|
84,
|
||||||
|
68,
|
||||||
|
153,
|
||||||
|
470,
|
||||||
|
1310,
|
||||||
|
621,
|
||||||
|
827,
|
||||||
|
113,
|
||||||
|
595,
|
||||||
|
485,
|
||||||
|
484,
|
||||||
|
535,
|
||||||
|
227,
|
||||||
|
714,
|
||||||
|
144,
|
||||||
|
1159,
|
||||||
|
731
|
||||||
|
],
|
||||||
|
"type" => "line",
|
||||||
|
"smooth" => "true",
|
||||||
|
"yAxisIndex" => 1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "商品访客量",
|
||||||
|
"data" => [
|
||||||
|
21,
|
||||||
|
26,
|
||||||
|
26,
|
||||||
|
32,
|
||||||
|
26,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
17,
|
||||||
|
26,
|
||||||
|
24,
|
||||||
|
18,
|
||||||
|
7,
|
||||||
|
6,
|
||||||
|
23,
|
||||||
|
23,
|
||||||
|
23,
|
||||||
|
33,
|
||||||
|
29,
|
||||||
|
61,
|
||||||
|
25,
|
||||||
|
103,
|
||||||
|
55,
|
||||||
|
45,
|
||||||
|
45,
|
||||||
|
30,
|
||||||
|
28,
|
||||||
|
25,
|
||||||
|
41,
|
||||||
|
21
|
||||||
|
],
|
||||||
|
"type" => "line",
|
||||||
|
"smooth" => "true",
|
||||||
|
"yAxisIndex" => 1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "支付金额",
|
||||||
|
"data" => [
|
||||||
|
53.6,
|
||||||
|
0.25,
|
||||||
|
1231.84,
|
||||||
|
0.8,
|
||||||
|
0,
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
0.66,
|
||||||
|
7919.2,
|
||||||
|
0,
|
||||||
|
8040.38,
|
||||||
|
0.01,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
10.49,
|
||||||
|
0,
|
||||||
|
0.01,
|
||||||
|
599.01,
|
||||||
|
100100,
|
||||||
|
908.81,
|
||||||
|
0,
|
||||||
|
1887.06,
|
||||||
|
588,
|
||||||
|
184.3,
|
||||||
|
665.11,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
219.2,
|
||||||
|
24.09,
|
||||||
|
16.99
|
||||||
|
],
|
||||||
|
"type" => "bar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "退款金额",
|
||||||
|
"data" => [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
730.8,
|
||||||
|
49,
|
||||||
|
219,
|
||||||
|
0,
|
||||||
|
1323.01,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"type" => "bar"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
return $this->data($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取商品排名数据
|
||||||
|
*/
|
||||||
|
public function get_product_ranking()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
[
|
||||||
|
"product_id" => 1661,
|
||||||
|
"visit" => "1331",
|
||||||
|
"user" => 119,
|
||||||
|
"cart" => "26",
|
||||||
|
"orders" => "22",
|
||||||
|
"pay" => "11",
|
||||||
|
"price" => "690.02",
|
||||||
|
"cost" => "0.00",
|
||||||
|
"profit" => "1.00",
|
||||||
|
"collect" => "4",
|
||||||
|
"changes" => "0.06",
|
||||||
|
"repeats" => "0.28",
|
||||||
|
"store_name" => "瞌睡兔 美式复古圆领卫衣外套女春秋款小个子宽松百搭休闲上衣",
|
||||||
|
"image" => "https://multi-store.crmeb.net/uploads/attach/2024/02/19/2f3f938d720fc4212216ab855808bf85.jpg",
|
||||||
|
"product_price" => "100.00",
|
||||||
|
"stock" => 16777213,
|
||||||
|
"is_show" => 1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"product_id" => 1670,
|
||||||
|
"visit" => "949",
|
||||||
|
"user" => 161,
|
||||||
|
"cart" => "20",
|
||||||
|
"orders" => "47",
|
||||||
|
"pay" => "34",
|
||||||
|
"price" => "4347.45",
|
||||||
|
"cost" => "0.00",
|
||||||
|
"profit" => "1.00",
|
||||||
|
"collect" => "2",
|
||||||
|
"changes" => "0.13",
|
||||||
|
"repeats" => "0.14",
|
||||||
|
"store_name" => "ECOK2024年春秋季美式复古美拉德风高级感撞色领拉链夹克外套女潮",
|
||||||
|
"image" => "https://multi-store.crmeb.net/uploads/attach/2024/02/19/5bf089c30da5bdddd815fbf2cba148e6.jpg",
|
||||||
|
"product_price" => "169.90",
|
||||||
|
"stock" => 2980,
|
||||||
|
"is_show" => 1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"product_id" => 2033,
|
||||||
|
"visit" => "743",
|
||||||
|
"user" => 139,
|
||||||
|
"cart" => "30",
|
||||||
|
"orders" => "52",
|
||||||
|
"pay" => "20",
|
||||||
|
"price" => "3930.50",
|
||||||
|
"cost" => "0.00",
|
||||||
|
"profit" => "1.00",
|
||||||
|
"collect" => "1",
|
||||||
|
"changes" => "0.04",
|
||||||
|
"repeats" => "0.50",
|
||||||
|
"store_name" => "【618抢先购】CT四色眼影盘新色枕边话哑光亮片粉棕彩妆官方正品",
|
||||||
|
"image" => "https://multi-store.crmeb.net/uploads/attach/2024/05/24/fc63ee052b9dc66bd70a1e013510ded2.jpg",
|
||||||
|
"product_price" => "490.00",
|
||||||
|
"stock" => 139994,
|
||||||
|
"is_show" => 1
|
||||||
|
],
|
||||||
|
];
|
||||||
|
return $this->data($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
790
app/api/controller/store/TransactionRecordController.php
Normal file
790
app/api/controller/store/TransactionRecordController.php
Normal file
@ -0,0 +1,790 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\api\controller\store;
|
||||||
|
|
||||||
|
use app\api\controller\BaseApiController;
|
||||||
|
use hg\apidoc\annotation as ApiDoc;
|
||||||
|
#[ApiDoc\title('收银机盈收统计')]
|
||||||
|
class TransactionRecordController extends BaseApiController
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户概况
|
||||||
|
*/
|
||||||
|
public function get_user_basic()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
"people" => [
|
||||||
|
"num" => 1086,
|
||||||
|
"last_num" => 20904,
|
||||||
|
"percent" => "-94.80"
|
||||||
|
],
|
||||||
|
"browse" => [
|
||||||
|
"num" => 11296,
|
||||||
|
"last_num" => 363632,
|
||||||
|
"percent" => "-96.89"
|
||||||
|
],
|
||||||
|
"newUser" => [
|
||||||
|
"num" => 391,
|
||||||
|
"last_num" => 21790,
|
||||||
|
"percent" => "-98.20"
|
||||||
|
],
|
||||||
|
"payPeople" => [
|
||||||
|
"num" => 84,
|
||||||
|
"last_num" => 1314,
|
||||||
|
"percent" => "-93.60"
|
||||||
|
],
|
||||||
|
"payPercent" => [
|
||||||
|
"num" => "7.73",
|
||||||
|
"last_num" => "6.28",
|
||||||
|
"percent" => "23.08"
|
||||||
|
],
|
||||||
|
"payUser" => [
|
||||||
|
"num" => 27,
|
||||||
|
"last_num" => 431,
|
||||||
|
"percent" => "-93.73"
|
||||||
|
],
|
||||||
|
"rechargePeople" => [
|
||||||
|
"num" => 13,
|
||||||
|
"last_num" => 121,
|
||||||
|
"percent" => "-89.25"
|
||||||
|
],
|
||||||
|
"payPrice" => [
|
||||||
|
"num" => 2042.04,
|
||||||
|
"last_num" => 10352.37,
|
||||||
|
"percent" => "-80.27"
|
||||||
|
],
|
||||||
|
"cumulativeUser" => [
|
||||||
|
"num" => 22852,
|
||||||
|
"last_num" => 21790,
|
||||||
|
"percent" => "4.87"
|
||||||
|
],
|
||||||
|
"cumulativePayUser" => [
|
||||||
|
"num" => 552,
|
||||||
|
"last_num" => 521,
|
||||||
|
"percent" => "5.95"
|
||||||
|
],
|
||||||
|
"cumulativeRechargePeople" => [
|
||||||
|
"num" => 134,
|
||||||
|
"last_num" => 121,
|
||||||
|
"percent" => "10.74"
|
||||||
|
],
|
||||||
|
"cumulativePayPeople" => [
|
||||||
|
"num" => 1380,
|
||||||
|
"last_num" => 1314,
|
||||||
|
"percent" => "5.02"
|
||||||
|
]
|
||||||
|
];
|
||||||
|
return $this->data($data);
|
||||||
|
}
|
||||||
|
//-------------------------------交易统计---------------------------------------//
|
||||||
|
//当日订单金额
|
||||||
|
public function top_trade()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
"left" => [
|
||||||
|
"name" => "当日订单金额",
|
||||||
|
"x" => [
|
||||||
|
"00",
|
||||||
|
"01",
|
||||||
|
"02",
|
||||||
|
"03",
|
||||||
|
"04",
|
||||||
|
"05",
|
||||||
|
"06",
|
||||||
|
"07",
|
||||||
|
"08",
|
||||||
|
"09",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12",
|
||||||
|
"13",
|
||||||
|
"14",
|
||||||
|
"15",
|
||||||
|
"16",
|
||||||
|
"17",
|
||||||
|
"18",
|
||||||
|
"19",
|
||||||
|
"20",
|
||||||
|
"21",
|
||||||
|
"22",
|
||||||
|
"23",
|
||||||
|
"24"
|
||||||
|
],
|
||||||
|
"series" => [
|
||||||
|
[
|
||||||
|
"money" => 279.47,
|
||||||
|
"value" => [
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"4.48",
|
||||||
|
"257.20",
|
||||||
|
"0.00",
|
||||||
|
"16.99",
|
||||||
|
"0.80",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"money" => 10175.64,
|
||||||
|
"value" => [
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.01",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"40.00",
|
||||||
|
"0.10",
|
||||||
|
"9938.00",
|
||||||
|
"0.08",
|
||||||
|
"30.16",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"163.20",
|
||||||
|
"4.09",
|
||||||
|
"0.00",
|
||||||
|
"0.00"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"right" => [
|
||||||
|
"today" => [
|
||||||
|
"x" => [
|
||||||
|
"00",
|
||||||
|
"01",
|
||||||
|
"02",
|
||||||
|
"03",
|
||||||
|
"04",
|
||||||
|
"05",
|
||||||
|
"06",
|
||||||
|
"07",
|
||||||
|
"08",
|
||||||
|
"09",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12",
|
||||||
|
"13",
|
||||||
|
"14",
|
||||||
|
"15",
|
||||||
|
"16",
|
||||||
|
"17",
|
||||||
|
"18",
|
||||||
|
"19",
|
||||||
|
"20",
|
||||||
|
"21",
|
||||||
|
"22",
|
||||||
|
"23",
|
||||||
|
"24"
|
||||||
|
],
|
||||||
|
"series" => [
|
||||||
|
[
|
||||||
|
"name" => "今日订单数",
|
||||||
|
"now_money" => 8,
|
||||||
|
"last_money" => 13,
|
||||||
|
"rate" => "-38.46",
|
||||||
|
"value" => [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "今日支付人数",
|
||||||
|
"now_money" => 5,
|
||||||
|
"last_money" => 8,
|
||||||
|
"rate" => "-37.50",
|
||||||
|
"value" => [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"month" => [
|
||||||
|
[
|
||||||
|
"name" => "本月订单数",
|
||||||
|
"now_money" => 30,
|
||||||
|
"last_money" => 285,
|
||||||
|
"rate" => "-89.47",
|
||||||
|
"value" => [
|
||||||
|
"2024-06-01" => 2,
|
||||||
|
"2024-06-02" => 7,
|
||||||
|
"2024-06-03" => 13,
|
||||||
|
"2024-06-04" => 8,
|
||||||
|
"2024-06-05" => 0,
|
||||||
|
"2024-06-06" => 0,
|
||||||
|
"2024-06-07" => 0,
|
||||||
|
"2024-06-08" => 0,
|
||||||
|
"2024-06-09" => 0,
|
||||||
|
"2024-06-10" => 0,
|
||||||
|
"2024-06-11" => 0,
|
||||||
|
"2024-06-12" => 0,
|
||||||
|
"2024-06-13" => 0,
|
||||||
|
"2024-06-14" => 0,
|
||||||
|
"2024-06-15" => 0,
|
||||||
|
"2024-06-16" => 0,
|
||||||
|
"2024-06-17" => 0,
|
||||||
|
"2024-06-18" => 0,
|
||||||
|
"2024-06-19" => 0,
|
||||||
|
"2024-06-20" => 0,
|
||||||
|
"2024-06-21" => 0,
|
||||||
|
"2024-06-22" => 0,
|
||||||
|
"2024-06-23" => 0,
|
||||||
|
"2024-06-24" => 0,
|
||||||
|
"2024-06-25" => 0,
|
||||||
|
"2024-06-26" => 0,
|
||||||
|
"2024-06-27" => 0,
|
||||||
|
"2024-06-28" => 0,
|
||||||
|
"2024-06-29" => 0,
|
||||||
|
"2024-06-30" => 0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "本月支付人数",
|
||||||
|
"now_money" => 15,
|
||||||
|
"last_money" => 79,
|
||||||
|
"rate" => "-81.01",
|
||||||
|
"value" => [
|
||||||
|
"2024-06-01" => 1,
|
||||||
|
"2024-06-02" => 4,
|
||||||
|
"2024-06-03" => 8,
|
||||||
|
"2024-06-04" => 5,
|
||||||
|
"2024-06-05" => 0,
|
||||||
|
"2024-06-06" => 0,
|
||||||
|
"2024-06-07" => 0,
|
||||||
|
"2024-06-08" => 0,
|
||||||
|
"2024-06-09" => 0,
|
||||||
|
"2024-06-10" => 0,
|
||||||
|
"2024-06-11" => 0,
|
||||||
|
"2024-06-12" => 0,
|
||||||
|
"2024-06-13" => 0,
|
||||||
|
"2024-06-14" => 0,
|
||||||
|
"2024-06-15" => 0,
|
||||||
|
"2024-06-16" => 0,
|
||||||
|
"2024-06-17" => 0,
|
||||||
|
"2024-06-18" => 0,
|
||||||
|
"2024-06-19" => 0,
|
||||||
|
"2024-06-20" => 0,
|
||||||
|
"2024-06-21" => 0,
|
||||||
|
"2024-06-22" => 0,
|
||||||
|
"2024-06-23" => 0,
|
||||||
|
"2024-06-24" => 0,
|
||||||
|
"2024-06-25" => 0,
|
||||||
|
"2024-06-26" => 0,
|
||||||
|
"2024-06-27" => 0,
|
||||||
|
"2024-06-28" => 0,
|
||||||
|
"2024-06-29" => 0,
|
||||||
|
"2024-06-30" => 0
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
return $this->data($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
//交易趋势
|
||||||
|
public function bottom_trade()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
"x" => [
|
||||||
|
"2024-05-06",
|
||||||
|
"2024-05-07",
|
||||||
|
"2024-05-08",
|
||||||
|
"2024-05-09",
|
||||||
|
"2024-05-10",
|
||||||
|
"2024-05-11",
|
||||||
|
"2024-05-12",
|
||||||
|
"2024-05-13",
|
||||||
|
"2024-05-14",
|
||||||
|
"2024-05-15",
|
||||||
|
"2024-05-16",
|
||||||
|
"2024-05-17",
|
||||||
|
"2024-05-18",
|
||||||
|
"2024-05-19",
|
||||||
|
"2024-05-20",
|
||||||
|
"2024-05-21",
|
||||||
|
"2024-05-22",
|
||||||
|
"2024-05-23",
|
||||||
|
"2024-05-24",
|
||||||
|
"2024-05-25",
|
||||||
|
"2024-05-26",
|
||||||
|
"2024-05-27",
|
||||||
|
"2024-05-28",
|
||||||
|
"2024-05-29",
|
||||||
|
"2024-05-30",
|
||||||
|
"2024-05-31",
|
||||||
|
"2024-06-01",
|
||||||
|
"2024-06-02",
|
||||||
|
"2024-06-03",
|
||||||
|
"2024-06-04"
|
||||||
|
],
|
||||||
|
"series" => [
|
||||||
|
[
|
||||||
|
"name" => "营业额",
|
||||||
|
"desc" => "商品支付金额、充值金额、购买付费会员金额、线下收银金额",
|
||||||
|
"money" => "3538021.24",
|
||||||
|
"type" => 1,
|
||||||
|
"rate" => 353802124,
|
||||||
|
"value" => [
|
||||||
|
"85.61",
|
||||||
|
"161.06",
|
||||||
|
"1215.65",
|
||||||
|
"38.96",
|
||||||
|
"324.79",
|
||||||
|
"214.88",
|
||||||
|
"228.82",
|
||||||
|
"34.24",
|
||||||
|
"8249.85",
|
||||||
|
"573.35",
|
||||||
|
"8586.24",
|
||||||
|
"10.19",
|
||||||
|
"90.19",
|
||||||
|
"105.40",
|
||||||
|
"62.59",
|
||||||
|
"1051.34",
|
||||||
|
"160.66",
|
||||||
|
"241651.20",
|
||||||
|
"111325.41",
|
||||||
|
"2085393.05",
|
||||||
|
"267.40",
|
||||||
|
"1063972.04",
|
||||||
|
"1217.31",
|
||||||
|
"582.40",
|
||||||
|
"757.02",
|
||||||
|
"597.00",
|
||||||
|
"0.08",
|
||||||
|
"609.40",
|
||||||
|
"10175.64",
|
||||||
|
"279.47"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "交易毛利金额",
|
||||||
|
"desc" => "交易毛利金额 = 营业额 - 支出金额",
|
||||||
|
"money" => "3408415.79",
|
||||||
|
"type" => 1,
|
||||||
|
"rate" => 340841579,
|
||||||
|
"value" => [
|
||||||
|
"32.01",
|
||||||
|
"79.21",
|
||||||
|
"194.81",
|
||||||
|
"38.16",
|
||||||
|
"324.79",
|
||||||
|
"204.88",
|
||||||
|
"228.82",
|
||||||
|
"31.88",
|
||||||
|
"330.64",
|
||||||
|
"553.64",
|
||||||
|
"545.58",
|
||||||
|
"1.28",
|
||||||
|
"90.19",
|
||||||
|
"105.40",
|
||||||
|
"44.00",
|
||||||
|
"1043.16",
|
||||||
|
"45.94",
|
||||||
|
"240254.48",
|
||||||
|
"10346.41",
|
||||||
|
"2080946.30",
|
||||||
|
"189.00",
|
||||||
|
"1060654.82",
|
||||||
|
"629.30",
|
||||||
|
"398.10",
|
||||||
|
"91.70",
|
||||||
|
"597.00",
|
||||||
|
"0.08",
|
||||||
|
"0.10",
|
||||||
|
"10151.63",
|
||||||
|
"262.48"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "商品支付金额",
|
||||||
|
"desc" => "选定条件下,用户购买商品的实际支付金额,包括微信支付、余额支付、支付宝支付、线下支付金额(拼团商品在成团之后计入,线下支付订单在后台确认支付后计入)",
|
||||||
|
"money" => 157433.34,
|
||||||
|
"type" => 1,
|
||||||
|
"rate" => 15743334,
|
||||||
|
"value" => [
|
||||||
|
"85.61",
|
||||||
|
"161.06",
|
||||||
|
"1215.65",
|
||||||
|
"38.96",
|
||||||
|
"324.69",
|
||||||
|
"214.88",
|
||||||
|
"228.82",
|
||||||
|
"34.24",
|
||||||
|
"8249.85",
|
||||||
|
"573.35",
|
||||||
|
"8586.24",
|
||||||
|
"10.19",
|
||||||
|
"90.19",
|
||||||
|
"105.40",
|
||||||
|
"62.59",
|
||||||
|
"1051.34",
|
||||||
|
"160.66",
|
||||||
|
"1693.20",
|
||||||
|
"111325.41",
|
||||||
|
"5365.05",
|
||||||
|
"189.00",
|
||||||
|
"3448.64",
|
||||||
|
"1217.31",
|
||||||
|
"582.40",
|
||||||
|
"757.02",
|
||||||
|
"597.00",
|
||||||
|
"0.08",
|
||||||
|
"609.40",
|
||||||
|
"10175.64",
|
||||||
|
"279.47"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "购买会员金额",
|
||||||
|
"desc" => "选定条件下,用户成功购买付费会员的金额",
|
||||||
|
"money" => 0,
|
||||||
|
"type" => 1,
|
||||||
|
"rate" => 0,
|
||||||
|
"value" => [
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "充值金额",
|
||||||
|
"desc" => "选定条件下,用户成功充值的金额",
|
||||||
|
"money" => "3380587.90",
|
||||||
|
"type" => 1,
|
||||||
|
"rate" => 338058790,
|
||||||
|
"value" => [
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.10",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"239958.00",
|
||||||
|
"0.00",
|
||||||
|
"2080028.00",
|
||||||
|
"78.40",
|
||||||
|
"1060523.40",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"0.00"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "线下收银金额",
|
||||||
|
"desc" => "选定条件下,用户在线下扫码支付的金额",
|
||||||
|
"money" => 0,
|
||||||
|
"type" => 0,
|
||||||
|
"rate" => 0,
|
||||||
|
"value" => [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "支出金额",
|
||||||
|
"desc" => "余额支付金额、支付佣金金额",
|
||||||
|
"money" => "129605.45",
|
||||||
|
"type" => 1,
|
||||||
|
"rate" => 12960545,
|
||||||
|
"value" => [
|
||||||
|
"53.60",
|
||||||
|
"81.85",
|
||||||
|
"1020.84",
|
||||||
|
"0.80",
|
||||||
|
"0.00",
|
||||||
|
"10.00",
|
||||||
|
"0.00",
|
||||||
|
"2.36",
|
||||||
|
"7919.21",
|
||||||
|
"19.71",
|
||||||
|
"8040.66",
|
||||||
|
"8.91",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"18.59",
|
||||||
|
"8.18",
|
||||||
|
"114.72",
|
||||||
|
"1396.72",
|
||||||
|
"100979.00",
|
||||||
|
"4446.75",
|
||||||
|
"78.40",
|
||||||
|
"3317.22",
|
||||||
|
"588.01",
|
||||||
|
"184.30",
|
||||||
|
"665.32",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"609.30",
|
||||||
|
"24.01",
|
||||||
|
"16.99"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "余额支付金额",
|
||||||
|
"desc" => "用户下单时使用余额实际支付的金额",
|
||||||
|
"money" => "128943.25",
|
||||||
|
"type" => 0,
|
||||||
|
"rate" => 1289432500,
|
||||||
|
"value" => [
|
||||||
|
"53.60",
|
||||||
|
"81.85",
|
||||||
|
"1020.84",
|
||||||
|
"0.80",
|
||||||
|
"0.00",
|
||||||
|
"10.00",
|
||||||
|
"0.00",
|
||||||
|
"2.36",
|
||||||
|
"7919.21",
|
||||||
|
"19.71",
|
||||||
|
"8040.66",
|
||||||
|
"8.91",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"18.59",
|
||||||
|
"8.18",
|
||||||
|
"114.72",
|
||||||
|
"1396.72",
|
||||||
|
"100979.00",
|
||||||
|
"4416.75",
|
||||||
|
"0.00",
|
||||||
|
"2763.42",
|
||||||
|
"588.01",
|
||||||
|
"184.30",
|
||||||
|
"665.32",
|
||||||
|
"0.00",
|
||||||
|
"0.00",
|
||||||
|
"609.30",
|
||||||
|
"24.01",
|
||||||
|
"16.99"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "支付佣金金额",
|
||||||
|
"desc" => "后台给推广员支付的推广佣金,以实际支付为准",
|
||||||
|
"money" => 662.2,
|
||||||
|
"type" => 0,
|
||||||
|
"rate" => 66220,
|
||||||
|
"value" => [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"30.00",
|
||||||
|
"78.40",
|
||||||
|
"553.80",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "商品退款金额",
|
||||||
|
"desc" => "用户成功退款的商品金额",
|
||||||
|
"money" => 2321.81,
|
||||||
|
"type" => 0,
|
||||||
|
"rate" => 232181,
|
||||||
|
"value" => [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
"730.80",
|
||||||
|
"49.00",
|
||||||
|
"219.00",
|
||||||
|
0,
|
||||||
|
"1323.01",
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
"0.00",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"0.00"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
return $this->data($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,6 +7,7 @@ use app\admin\lists\BaseAdminDataLists;
|
|||||||
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\store_order_cart_info\StoreOrderCartInfo;
|
||||||
|
use app\common\model\store_product_unit\StoreProductUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 零售订单列表
|
* 零售订单列表
|
||||||
@ -44,7 +45,7 @@ class OrderList extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
{
|
{
|
||||||
$userId=$this->request->userId;
|
$userId=$this->request->userId;
|
||||||
if(!$userId) return [];
|
if(!$userId) return [];
|
||||||
return StoreOrder::with(['store'])->where($this->searchWhere)->where('uid',$userId)
|
$data = StoreOrder::with(['store'])->where($this->searchWhere)->where('uid',$userId)
|
||||||
->limit($this->limitOffset, $this->limitLength)
|
->limit($this->limitOffset, $this->limitLength)
|
||||||
->order(['id' => 'desc'])
|
->order(['id' => 'desc'])
|
||||||
->select()
|
->select()
|
||||||
@ -55,6 +56,18 @@ class OrderList extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
$item['goods_count']=count(explode(',',$item['cart_id']));
|
$item['goods_count']=count(explode(',',$item['cart_id']));
|
||||||
})
|
})
|
||||||
->toArray();
|
->toArray();
|
||||||
|
foreach ($data as &$value){
|
||||||
|
if($value['refund_reason_time']){
|
||||||
|
$value['refund_reason_time'] = date('Y-m-d H:i:s',$value['refund_reason_time']);
|
||||||
|
}
|
||||||
|
if($value['pay_time']){
|
||||||
|
$value['pay_time'] = date('Y-m-d H:i:s',$value['pay_time']);
|
||||||
|
}
|
||||||
|
foreach ($value['goods_list'] as &$vv){
|
||||||
|
$vv['unit'] =StoreProductUnit::where('id',$vv['unit'])->value('name')??'';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ namespace app\api\lists\product;
|
|||||||
|
|
||||||
|
|
||||||
use app\admin\lists\BaseAdminDataLists;
|
use app\admin\lists\BaseAdminDataLists;
|
||||||
|
use app\common\model\dict\DictType;
|
||||||
use app\common\model\store_branch_product\StoreBranchProduct;
|
use app\common\model\store_branch_product\StoreBranchProduct;
|
||||||
use app\common\model\store_product\StoreProduct;
|
use app\common\model\store_product\StoreProduct;
|
||||||
use app\common\lists\ListsSearchInterface;
|
use app\common\lists\ListsSearchInterface;
|
||||||
@ -134,7 +135,11 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
|||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
$check = DictType::where('type','activities')->find();
|
||||||
foreach ($data as &$value){
|
foreach ($data as &$value){
|
||||||
|
if(isset($check) && $check['status'] == 1){
|
||||||
|
$value['price'] = StoreProduct::where('product_id',$value['product_id'])->value('ot_price');
|
||||||
|
}
|
||||||
$value['is_default'] = 0;
|
$value['is_default'] = 0;
|
||||||
if($store_id == 2){
|
if($store_id == 2){
|
||||||
$value['is_default'] = 1;
|
$value['is_default'] = 1;
|
||||||
|
@ -57,11 +57,15 @@ class OrderLogic extends BaseLogic
|
|||||||
try {
|
try {
|
||||||
self::$total = 0;
|
self::$total = 0;
|
||||||
/** 计算价格 */
|
/** 计算价格 */
|
||||||
|
$check = DictType::where('type','activities')->find();
|
||||||
foreach ($cart_select as $k => $v) {
|
foreach ($cart_select as $k => $v) {
|
||||||
$find = StoreBranchProduct::where(['id' => $v['goods']])->field('store_name,image,unit,price')->find();
|
$find = StoreBranchProduct::where(['id' => $v['goods']])->field('store_name,image,unit,price,product_id')->find();
|
||||||
if (!$find) {
|
if (!$find) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if(isset($check) && $check['status'] == 1){
|
||||||
|
$find['price'] = StoreProduct::where('product_id',$find['product_id'])->value('ot_price');
|
||||||
|
}
|
||||||
$cart_select[$k]['total'] = bcmul($v['cart_num'], $find['price'], 2);//钱
|
$cart_select[$k]['total'] = bcmul($v['cart_num'], $find['price'], 2);//钱
|
||||||
$cart_select[$k]['price'] = $find['price'];
|
$cart_select[$k]['price'] = $find['price'];
|
||||||
$cart_select[$k]['product_id'] = $v['goods'];
|
$cart_select[$k]['product_id'] = $v['goods'];
|
||||||
@ -87,7 +91,6 @@ class OrderLogic extends BaseLogic
|
|||||||
//TODO 收单打9.9折 会员按照比例打折 等级按照充值去升级
|
//TODO 收单打9.9折 会员按照比例打折 等级按照充值去升级
|
||||||
$pay_price = self::$total;
|
$pay_price = self::$total;
|
||||||
// $check = StoreOrder::where('uid',\request()->userId)->count();//首单逻辑
|
// $check = StoreOrder::where('uid',\request()->userId)->count();//首单逻辑
|
||||||
$check = DictType::where('type','activities')->find();
|
|
||||||
$vipPrice = 0;
|
$vipPrice = 0;
|
||||||
if(isset($check) && $check['status'] == 1){
|
if(isset($check) && $check['status'] == 1){
|
||||||
// $discountRate = '0.99';//首单逻辑
|
// $discountRate = '0.99';//首单逻辑
|
||||||
@ -445,6 +448,20 @@ class OrderLogic extends BaseLogic
|
|||||||
return $find;
|
return $find;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//取消售后
|
||||||
|
public static function cancelSell($where)
|
||||||
|
{
|
||||||
|
return StoreOrder::where($where)->update(
|
||||||
|
[
|
||||||
|
'refund_status'=>OrderEnum::CANCEL_SALE,
|
||||||
|
'status'=>OrderEnum::CANCEL_ORDER,
|
||||||
|
'refund_cancle_time'=>date('Y-m-d H:i:s',time())
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//核销
|
//核销
|
||||||
|
|
||||||
@ -619,6 +636,7 @@ class OrderLogic extends BaseLogic
|
|||||||
$price =bcsub($price, $onePrice);
|
$price =bcsub($price, $onePrice);
|
||||||
}
|
}
|
||||||
$order->refund_price = $price;
|
$order->refund_price = $price;
|
||||||
|
$order->refund_type = $params['refund_type'];
|
||||||
$order->save();
|
$order->save();
|
||||||
}else{
|
}else{
|
||||||
// 多单的情况 拆主订单为新的2单 修改新的2单的核销码 修改cart_info的核销码 和订单id 退款直接退一单的钱
|
// 多单的情况 拆主订单为新的2单 修改新的2单的核销码 修改cart_info的核销码 和订单id 退款直接退一单的钱
|
||||||
@ -631,7 +649,7 @@ class OrderLogic extends BaseLogic
|
|||||||
->whereNotIn('old_cart_id',$params['old_cart_id'])
|
->whereNotIn('old_cart_id',$params['old_cart_id'])
|
||||||
->select()->toArray();
|
->select()->toArray();
|
||||||
if($cart_info){
|
if($cart_info){
|
||||||
$leftOrder = self::dealCreateLeftOrder($order,$cart_info);
|
$leftOrder = self::dealCreateLeftOrder($order,$cart_info,$params);
|
||||||
self::dealChangeCartInfo($leftOrder);
|
self::dealChangeCartInfo($leftOrder);
|
||||||
}
|
}
|
||||||
$refundOrder = self::dealCreateRefundOrder($order,$params);
|
$refundOrder = self::dealCreateRefundOrder($order,$params);
|
||||||
@ -666,7 +684,7 @@ class OrderLogic extends BaseLogic
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function dealCreateLeftOrder($order,$cart_info)
|
public static function dealCreateLeftOrder($order,$cart_info,$params)
|
||||||
{
|
{
|
||||||
//查出不在这个退货中的数据
|
//查出不在这个退货中的数据
|
||||||
$order['order_id'] = $order['order_id'].'-2';
|
$order['order_id'] = $order['order_id'].'-2';
|
||||||
@ -694,6 +712,7 @@ class OrderLogic extends BaseLogic
|
|||||||
}
|
}
|
||||||
$order['cart_id'] = implode(',',$allOldCartIds);
|
$order['cart_id'] = implode(',',$allOldCartIds);
|
||||||
$order['total_num'] = count($cart_info);
|
$order['total_num'] = count($cart_info);
|
||||||
|
$order['refund_type'] = $params['refund_type'];
|
||||||
$order['total_price'] = number_format($totalTotal, 2);
|
$order['total_price'] = number_format($totalTotal, 2);
|
||||||
$order['pay_price'] = number_format($totalPrice, 2);
|
$order['pay_price'] = number_format($totalPrice, 2);
|
||||||
$order['vip_price'] = number_format($totalVipPrice, 2);
|
$order['vip_price'] = number_format($totalVipPrice, 2);
|
||||||
@ -740,6 +759,7 @@ class OrderLogic extends BaseLogic
|
|||||||
$order['vip_price'] = number_format($totalVipPrices, 2);
|
$order['vip_price'] = number_format($totalVipPrices, 2);
|
||||||
$order['refund_price'] = number_format($totalPrice, 2);
|
$order['refund_price'] = number_format($totalPrice, 2);
|
||||||
$order['verify_code'] = verificationCode();
|
$order['verify_code'] = verificationCode();
|
||||||
|
$order['refund_reason_time'] = time();
|
||||||
$order['create_time'] = time()+1;
|
$order['create_time'] = time()+1;
|
||||||
$order['update_time'] = null;
|
$order['update_time'] = null;
|
||||||
$order['delete_time'] = null;
|
$order['delete_time'] = null;
|
||||||
|
@ -22,6 +22,7 @@ class OrderValidate extends BaseValidate
|
|||||||
'refund_num' => 'require|number',
|
'refund_num' => 'require|number',
|
||||||
'id' => 'require|number',
|
'id' => 'require|number',
|
||||||
'old_cart_id' => 'require|array',
|
'old_cart_id' => 'require|array',
|
||||||
|
'refund_type' => 'require|number',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -35,6 +36,7 @@ class OrderValidate extends BaseValidate
|
|||||||
'refund_num' => '退款数量',
|
'refund_num' => '退款数量',
|
||||||
'id' => '订单id',
|
'id' => '订单id',
|
||||||
'old_cart_id' => '购物车id',
|
'old_cart_id' => '购物车id',
|
||||||
|
'refund_type' => '退款申请类型',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -55,7 +57,7 @@ class OrderValidate extends BaseValidate
|
|||||||
*/
|
*/
|
||||||
public function sceneAdd()
|
public function sceneAdd()
|
||||||
{
|
{
|
||||||
return $this->only(['refund_message','refund_num','id','old_cart_id']);
|
return $this->only(['refund_message','refund_num','id','old_cart_id','refund_type']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,9 +95,19 @@ class OrderEnum
|
|||||||
const SUPPLIER = 3;
|
const SUPPLIER = 3;
|
||||||
const SYSTEM = 4;
|
const SYSTEM = 4;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单状态
|
||||||
|
* @CANCEL_ORDER 取消售后
|
||||||
|
*/
|
||||||
|
const CANCEL_ORDER = 5;
|
||||||
|
|
||||||
|
//退款状态
|
||||||
const REFUND_STATUS_NO = 0;
|
const REFUND_STATUS_NO = 0;
|
||||||
const REFUND_STATUS_YES = 1;
|
const REFUND_STATUS_YES = 1;
|
||||||
const REFUND_STATUS_FINISH = 2;
|
const REFUND_STATUS_FINISH = 2;
|
||||||
|
const CANCEL_SALE = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @notes 获取支付类型
|
* @notes 获取支付类型
|
||||||
|
@ -11,6 +11,9 @@ use app\common\model\store_order_cart_info\StoreOrderCartInfo;
|
|||||||
use app\common\model\store_product\StoreProduct;
|
use app\common\model\store_product\StoreProduct;
|
||||||
use app\common\model\store_product_unit\StoreProductUnit;
|
use app\common\model\store_product_unit\StoreProductUnit;
|
||||||
use app\common\model\user\UserAddress;
|
use app\common\model\user\UserAddress;
|
||||||
|
use app\common\service\pay\PayService;
|
||||||
|
use Exception;
|
||||||
|
use support\Cache;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
|
||||||
class StoreOrderLogic extends BaseLogic
|
class StoreOrderLogic extends BaseLogic
|
||||||
@ -178,4 +181,46 @@ class StoreOrderLogic extends BaseLogic
|
|||||||
return StoreOrder::where('store_id', $storeId)->where('paid', 1)->where($extra)->whereBetweenTime('create_time', $start, $end)->sum('pay_price');
|
return StoreOrder::where('store_id', $storeId)->where('paid', 1)->where($extra)->whereBetweenTime('create_time', $start, $end)->sum('pay_price');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款
|
||||||
|
* @param $order_sn
|
||||||
|
* @param $refund_money
|
||||||
|
* @param $total
|
||||||
|
* @return bool
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function refund($order_sn,$refund_money,$total)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$wechat = new PayService(1);
|
||||||
|
$time = time();
|
||||||
|
$order = [
|
||||||
|
'out_trade_no' => $order_sn,
|
||||||
|
'out_refund_no' => 'BO'.$time,
|
||||||
|
'amount' => [
|
||||||
|
'refund' => $refund_money,
|
||||||
|
'total' => $total,
|
||||||
|
'currency' => 'CNY',
|
||||||
|
],
|
||||||
|
// '_action' => 'jsapi', // jsapi 退款,默认
|
||||||
|
// '_action' => 'app', // app 退款
|
||||||
|
// '_action' => 'combine', // 合单退款
|
||||||
|
// '_action' => 'h5', // h5 退款
|
||||||
|
// '_action' => 'miniapp', // 小程序退款
|
||||||
|
// '_action' => 'native', // native 退款
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
$res = $wechat->wechat->refund($order);
|
||||||
|
if($res['status'] == 'PROCESSING'){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
\support\Log::info($e->extra['message']?? $e->getMessage());
|
||||||
|
throw new \Exception($e->extra['message']?? $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user