修复:统计页面部分接口请求错误导致页面内容渲染失败或者渲染数据错误

This commit is contained in:
wuhui_zzw 2024-01-09 09:01:36 +08:00
parent a8cc8f3d3f
commit 8f61b74200
6 changed files with 355 additions and 228 deletions

View File

@ -939,4 +939,20 @@ class StoreOrderDao extends BaseDao
{
return StoreOrder::getDB()->where($this->getPk(), $order_id)->value('order_sn', '');
}
/**
* 获取订单数量
* @param int $store_id
* @param int $type
* @param string $field
* @return int
*/
public function storeOrderCount(int $val = 0, int $type = -1, string $field = 'store_id')
{
$where = ['pid' => 0, 'status' => 1];
if ($type != -1) $where['type'] = $type;
return $this->search($where)->when($field && $val > 0, function ($query) use ($field, $val) {
$query->where($field, $val);
})->count();
}
}

View File

@ -89,7 +89,7 @@ class Common extends AuthController
} else {
$data[$key]['type'] = 0;
}
$data[$key]['menu_path'] = preg_replace('/^\/cashier/', '', $item['menu_path']);
$data[$key]['route'] = preg_replace('/^\/cashier/', '', $item['route']);
}
return app('json')->success('' , sort_list_tier($data));

View File

@ -42,8 +42,7 @@ class StoreOrderDao extends BaseDao
* @param array $where
* @return \crmeb\basic\BaseModel|mixed|\think\Model
*/
public function search(array $where = [])
{
public function search(array $where = []){
if(isset($where['real_name'])){
$where['real_name'] = trim($where['real_name']);
}
@ -51,14 +50,17 @@ class StoreOrderDao extends BaseDao
$realName = $where['real_name'] ?? '';
$fieldKey = $where['field_key'] ?? '';
$fieldKey = $fieldKey == 'all' ? '' : $fieldKey;
return parent::search($where)->when($isDel, function ($query) use ($where) {
return parent::search($where)
->when($isDel,function($query) use ($where){
$query->where('is_del',$where['is_del']);
})->when(isset($where['plat_type']) && in_array($where['plat_type'], [-1, 0, 1, 2]), function ($query) use($where) {
})
->when(isset($where['plat_type']) && in_array($where['plat_type'],[-1,0,1,2]),function($query) use ($where){
switch($where['plat_type']){
case -1://所有
break;
case 0://平台
$query->where('store_id', 0)->where('supplier_id', 0);
$query->where('store_id',0)
->where('supplier_id',0);
break;
case 1://门店
$query->where('store_id','>',0);
@ -67,58 +69,103 @@ class StoreOrderDao extends BaseDao
$query->where('supplier_id','>',0);
break;
}
})->when(isset($where['is_system_del']), function ($query) {
})
->when(isset($where['is_system_del']),function($query){
$query->where('is_system_del',0);
})->when(isset($where['is_coupon']), function ($query) {
})
->when(isset($where['is_coupon']),function($query){
$query->where('coupon_id','>',0);
})->when(isset($where['staff_id']) && $where['staff_id'], function ($query) use ($where) {
})
->when(isset($where['staff_id']) && $where['staff_id'],function($query) use ($where){
$query->where('staff_id',$where['staff_id']);
})->when(isset($where['status']) && $where['status'] !== '', function ($query) use ($where) {
})
->when(isset($where['status']) && $where['status'] !== '',function($query) use ($where){
switch((int)$where['status']){
case 0://未支付
$query->where('paid', 0)->where('status', 0)->where('refund_status', 0)->where('is_del', 0);
$query->where('paid',0)
->where('status',0)
->where('refund_status',0)
->where('is_del',0);
break;
case 1://已支付 未发货
$query->where('paid', 1)->whereIn('status', [0, 4])->whereIn('refund_status', [0, 3])->whereIn('shipping_type', [1, 3, 4])->where('is_del', 0);
$query->where('paid',1)
->whereIn('status',[0,4])
->whereIn('refund_status',[0,3])
->whereIn('shipping_type',[1,3,4])
->where('is_del',0);
break;
case 7://已支付 部分发货
$query->where('paid', 1)->where('status', 4)->whereIn('refund_status', [0, 3])->where('is_del', 0);
$query->where('paid',1)
->where('status',4)
->whereIn('refund_status',[0,3])
->where('is_del',0);
break;
case 2://已支付 待收货
$query->where('paid', 1)->whereIn('status', [1, 5])->whereIn('refund_status', [0, 3])->where('is_del', 0);
$query->where('paid',1)
->whereIn('status',[1,5])
->whereIn('refund_status',[0,3])
->where('is_del',0);
break;
case 3:// 已支付 已收货 待评价
$query->where('paid', 1)->where('status', 2)->whereIn('refund_status', [0, 3])->where('is_del', 0);
$query->where('paid',1)
->where('status',2)
->whereIn('refund_status',[0,3])
->where('is_del',0);
break;
case 4:// 交易完成
$query->where('paid', 1)->where('status', 3)->whereIn('refund_status', [0, 3])->where('is_del', 0);
$query->where('paid',1)
->where('status',3)
->whereIn('refund_status',[0,3])
->where('is_del',0);
break;
case 5://已支付 待核销
$query->where('paid', 1)->whereIn('status', [0, 1, 5])->whereIn('refund_status', [0, 3])->where('shipping_type', 2)->where('is_del', 0);
$query->where('paid',1)
->whereIn('status',[0,1,5])
->whereIn('refund_status',[0,3])
->where('shipping_type',2)
->where('is_del',0);
break;
case 6://已支付 已核销 没有退款
$query->where('paid', 1)->where('status', 2)->whereIn('refund_status', [0, 3])->where('shipping_type', 2)->where('is_del', 0);
$query->where('paid',1)
->where('status',2)
->whereIn('refund_status',[0,3])
->where('shipping_type',2)
->where('is_del',0);
break;
case 8://已支付 核销订单
$query->where('paid', 1)->whereIn('status', [0, 1, 2, 5])->whereIn('refund_status', [0, 3])->where('shipping_type', 2)->where('is_del', 0);
$query->where('paid',1)
->whereIn('status',[0,1,2,5])
->whereIn('refund_status',[0,3])
->where('shipping_type',2)
->where('is_del',0);
break;
case 9://已配送
$query->where('paid', 1)->whereIn('status', [2, 3])->whereIn('refund_status', [0, 3])->where('is_del', 0);
$query->where('paid',1)
->whereIn('status',[2,3])
->whereIn('refund_status',[0,3])
->where('is_del',0);
break;
case -1://退款中
$query->where('paid', 1)->whereIn('refund_status', [1, 4])->where('is_del', 0);
$query->where('paid',1)
->whereIn('refund_status',[1,4])
->where('is_del',0);
break;
case -2://已退款
$query->where('paid', 1)->where('refund_status', 2)->where('is_del', 0);
$query->where('paid',1)
->where('refund_status',2)
->where('is_del',0);
break;
case -3://退款
$query->where('paid', 1)->whereIn('refund_status', [1, 2, 4])->where('is_del', 0);
$query->where('paid',1)
->whereIn('refund_status',[1,2,4])
->where('is_del',0);
break;
case -4://已删除
$query->where('is_del',1);
break;
}
})->when(isset($where['type']) && $where['type'] !== '', function ($query) use ($where) {
})
->when(isset($where['type']) && $where['type'] !== '',function($query) use ($where){
switch($where['type']){
case 0://普通
$query->where('type',0);
@ -160,7 +207,8 @@ class StoreOrderDao extends BaseDao
$query->where('type',10);
break;
}
})->when(isset($where['order_type']) && $where['order_type'] !== '', function ($query) use ($where) {
})
->when(isset($where['order_type']) && $where['order_type'] !== '',function($query) use ($where){
switch($where['order_type']){
case 5://核销订单
$query->where('shipping_type',2);
@ -172,7 +220,8 @@ class StoreOrderDao extends BaseDao
$query->whereIn('shipping_type',[1,3]);
break;
}
})->when(isset($where['pay_type']), function ($query) use ($where) {
})
->when(isset($where['pay_type']),function($query) use ($where){
switch($where['pay_type']){
case 1:
$query->where('pay_type','weixin');
@ -187,40 +236,78 @@ class StoreOrderDao extends BaseDao
$query->where('pay_type','alipay');
break;
}
})->when($realName && $fieldKey && in_array($fieldKey, $this->withField), function ($query) use ($where, $realName, $fieldKey) {
})
->when($realName && $fieldKey && in_array($fieldKey,$this->withField),function($query) use ($where,$realName,$fieldKey){
if($fieldKey !== 'title'){
$query->where(trim($fieldKey),trim($realName));
} else {
}
else{
$query->where('id','in',function($que) use ($where){
$que->name('store_order_cart_info')->whereIn('product_id', function ($q) use ($where) {
$q->name('store_product')->whereLike('store_name|keyword', '%' . $where['real_name'] . '%')->field(['id'])->select();
})->field(['oid'])->select();
$que->name('store_order_cart_info')
->whereIn('product_id',function($q) use ($where){
$q->name('store_product')
->whereLike('store_name|keyword','%'.$where['real_name'].'%')
->field(['id'])
->select();
})
->field(['oid'])
->select();
});
}
})->when($realName && !$fieldKey, function ($query) use ($where) {
})
->when($realName && !$fieldKey,function($query) use ($where){
$query->where(function($que) use ($where){
$que->whereLike('order_id|real_name|user_phone|verify_code','%'.$where['real_name'].'%')
->whereOr('uid','in',function($q) use ($where){
$q->name('user')->whereLike('nickname|uid|phone', '%' . $where['real_name'] . '%')->field(['uid'])->select();
})->whereOr('uid', 'in', function ($q) use ($where) {
$q->name('user_address')->whereLike('real_name|uid|phone', '%' . $where['real_name'] . '%')->field(['uid'])->select();
})->whereOr('id', 'in', function ($que) use ($where) {
$que->name('store_order_cart_info')->whereIn('product_id', function ($q) use ($where) {
$q->name('store_product')->whereLike('store_name|keyword', '%' . $where['real_name'] . '%')->field(['id'])->select();
})->field(['oid'])->select();
})->whereOr('activity_id', 'in', function ($que) use ($where) {
$que->name('store_seckill')->whereLike('title|info', '%' . $where['real_name'] . '%')->field(['id'])->select();
})->whereOr('activity_id', 'in', function ($que) use ($where) {
$que->name('store_bargain')->whereLike('title|info', '%' . $where['real_name'] . '%')->field(['id'])->select();
})->whereOr('activity_id', 'in', function ($que) use ($where) {
$que->name('store_combination')->whereLike('title|info', '%' . $where['real_name'] . '%')->field(['id'])->select();
$q->name('user')
->whereLike('nickname|uid|phone','%'.$where['real_name'].'%')
->field(['uid'])
->select();
})
->whereOr('uid','in',function($q) use ($where){
$q->name('user_address')
->whereLike('real_name|uid|phone','%'.$where['real_name'].'%')
->field(['uid'])
->select();
})
->whereOr('id','in',function($que) use ($where){
$que->name('store_order_cart_info')
->whereIn('product_id',function($q) use ($where){
$q->name('store_product')
->whereLike('store_name|keyword','%'.$where['real_name'].'%')
->field(['id'])
->select();
})
->field(['oid'])
->select();
})
->whereOr('activity_id','in',function($que) use ($where){
$que->name('store_seckill')
->whereLike('title|info','%'.$where['real_name'].'%')
->field(['id'])
->select();
})
->whereOr('activity_id','in',function($que) use ($where){
$que->name('store_bargain')
->whereLike('title|info','%'.$where['real_name'].'%')
->field(['id'])
->select();
})
->whereOr('activity_id','in',function($que) use ($where){
$que->name('store_combination')
->whereLike('title|info','%'.$where['real_name'].'%')
->field(['id'])
->select();
});
});
})->when(isset($where['unique']), function ($query) use ($where) {
})
->when(isset($where['unique']),function($query) use ($where){
$query->where('unique',$where['unique']);
})->when(isset($where['is_remind']), function ($query) use ($where) {
})
->when(isset($where['is_remind']),function($query) use ($where){
$query->where('is_remind',$where['is_remind']);
})->when(isset($where['refundTypes']) && $where['refundTypes'] != '', function ($query) use ($where) {
})
->when(isset($where['refundTypes']) && $where['refundTypes'] != '',function($query) use ($where){
switch((int)$where['refundTypes']){
case 1:
$query->where('refund_type','in','1,2');
@ -235,12 +322,20 @@ class StoreOrderDao extends BaseDao
$query->where('refund_type',6);
break;
}
})->when(isset($where['is_refund']) && $where['is_refund'] !== '', function ($query) use ($where) {
})
->when(isset($where['is_refund']) && $where['is_refund'] !== '',function($query) use ($where){
if($where['is_refund'] == 1){
$query->where('refund_status',2);
} else {
}
else{
$query->where('refund_status',0);
}
})
->when(isset($where['supplier_id']) && $where['supplier_id'] !== '',function($query) use ($where){
$query->where('supplier_id',$where['supplier_id']);
})
->when(isset($where['paid']) && $where['paid'] !== '',function($query) use ($where){
$query->where('paid',$where['paid']);
});
}
@ -967,27 +1062,39 @@ class StoreOrderDao extends BaseDao
*/
public function getOrderStatistics($where, $time, $timeType, $field, $str, $orderStatus = '')
{
return $this->getModel()->where($where)->where(function ($query) use ($field, $orderStatus) {
return $this->getModel()
->where($where)
->where(function($query) use ($field,$orderStatus){
if($field == 'pay_time'){
$query->where('paid', 1);
} elseif ($field == 'refund_reason_time') {
$query->where('paid', 1)->where('refund_status', '>', 0);
} elseif ($field == 'add_time') {
$query->where('paid',1)->whereIn('status',[0,1,2,3]);
}
elseif($field == 'refund_reason_time'){
$query->where('paid',1)->where('status',-1);
}
elseif($field == 'create_time'){
if($orderStatus == 'pay'){
$query->where('paid', 1)->where('pid', '>=', 0)->whereIn('refund_status', [0, 3]);
} elseif ($orderStatus == 'refund') {
$query->where('paid', 1)->where('pid', '>=', 0)->where('refund_type', 6);
$query->where('paid',1)->whereIn('status',[0,1,2,3]);
}
elseif($orderStatus == 'refund'){
$query->where('paid',1)->where('status',-1);
}
}
})->where(function ($query) use ($time, $field) {
})
->where(function($query) use ($time,$field){
if($time[0] == $time[1]){
$query->whereDay($field,$time[0]);
} else {
}
else{
$time[1] = date('Y/m/d',(!is_numeric($time[1]) ? strtotime($time[1]) : $time[1]) + 86400);
$query->whereTime($field,'between',$time);
}
})->where('is_del', 0)->where('is_system_del', 0)
->field("FROM_UNIXTIME($field,'$timeType') as days,$str as num")->group('days')->select()->toArray();
})
->where('is_del',0)
->where('is_system_del',0)
->field("FROM_UNIXTIME($field,'$timeType') as days,$str as num")
->group('days')
->select()
->toArray();
}
/**

View File

@ -108,9 +108,7 @@ class SupplierOrderServices extends BaseServices
{
$data = [];
$where = ['time' => $time, 'supplier_id' => $supplierId];
if ($supplierId < 1) {
$where['supplier_id'] = -1;
}
if ($supplierId < 1) $where['supplier_id'] = -1;
$orderWhere = ['paid' => 1, 'is_system_del' => 0, 'refund_status' => 0];
$refundWhere = ['refund_type' => 6];
@ -177,10 +175,10 @@ class SupplierOrderServices extends BaseServices
}
}
}
$pay_price = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'add_time', 'sum(pay_price)', 'pay'), 'num', 'days');
$pay_count = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'add_time', 'count(id)', 'pay'), 'num', 'days');
$refund_price = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'add_time', 'sum(refund_price)', 'refund'), 'num', 'days');
$refund_count = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'add_time', 'count(id)', 'refund'), 'num', 'days');
$pay_price = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'create_time', 'sum(pay_price)', 'pay'), 'num', 'days');
$pay_count = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'create_time', 'count(order_id)', 'pay'), 'num', 'days');
$refund_price = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'create_time', 'sum(pay_price)', 'refund'), 'num', 'days');
$refund_count = array_column($this->dao->getOrderStatistics($where, $time, $timeType, 'create_time', 'count(order_id)', 'refund'), 'num', 'days');
foreach ($xAxis as $item) {
$data['订单金额'][] = isset($pay_price[$item]) ? floatval($pay_price[$item]) : 0;
@ -244,8 +242,8 @@ class SupplierOrderServices extends BaseServices
*/
public function getOrderType(int $supplierId, array $time): array
{
$bing_xdata = [0 => '普通订单', 1 => '秒杀订单', 2 => '砍价订单', 3 => '拼团订单', 4 => '', 5 => '套餐订单', 6 => '', 7 => '新人专享'];
$order_type = [0 => '0', 1 => '1', 2 => '2', 3 => '3', 4 => '', 5 => '4', 6 => '6' , 7 => '9'];
$bing_xdata = [0 => '普通订单', 1 => '秒杀订单', 2 => '预售订单', 3 => '助力订单', 4 => '', 5 => '套餐订单', 6 => '', 7 => '新人专享'];
$order_type = [0 => '0', 1 => '1', 2 => '2', 3 => '3', 4 => '', 5 => '10', 6 => '' , 7 => '9'];
$color = ['#64a1f4', '#3edeb5', '#70869f', '#ffc653', '', '#fc7d6a', '#fc7d2a', ''];
$bing_data = [];
@ -258,7 +256,7 @@ class SupplierOrderServices extends BaseServices
if (empty($item)) continue;
$bing_data[] = [
'name' => $item,
'value' => $this->dao->together(['paid' => 1, 'pid' => 0, 'type' => $order_type[$key] ?? 0, 'time' => $time] + $where, 'pay_price', 'sum'),
'value' => $this->dao->together(['paid' => 1, 'pid' => 0, 'activity_type' => $order_type[$key] ?? 0, 'time' => $time] + $where, 'pay_price', 'sum'),
'itemStyle' => ['color' => $color[$key]]
];
}

View File

@ -58,7 +58,7 @@ class SystemMenusServices extends BaseServices
// $item['expand'] = true;
$item['selected'] = false;
$item['title'] = $item['menu_name'];
$item['menu_path'] = preg_replace('/^\/' . ($this->type[$type] ?? 'admin') . '/', '', $item['menu_path']);
$item['route'] = preg_replace('/^\/' . ($this->type[$type] ?? 'admin') . '/', '', $item['route']);
$data[] = $item->getData();
}
return $data;
@ -82,8 +82,14 @@ class SystemMenusServices extends BaseServices
$rules = $systemRoleServices->getRoleArray(['status' => 1, 'id' => $rouleId], $type == 3 ? 'cashier_rules' : 'rules');
$rulesStr = Arr::unique($rules);
}
$menusList = $this->dao->getMenusRoule(['type' => $type, 'route' => $level ? $rulesStr : '']);
$unique = $this->dao->getMenusUnique(['type' => $type, 'unique' => $level ? $rulesStr : '']);
// $menusList = $this->dao->getMenusRoule(['type' => $type, 'route' => $level ? $rulesStr : '']);
$menusList = $this->dao->getSearch(['is_mer' => $type])
->order('sort DESC,menu_id DESC')
->failException(false)
->select();
$unique = [];//$this->dao->getMenusUnique(['type' => $type, 'unique' => $level ? $rulesStr : '']);
return [Arr::getMenuIviewList($this->getMenusData($menusList, $type)), $unique];
}

View File

@ -58,7 +58,7 @@ class Arr
$newData = [];
foreach ($data as $k => $v) {
$temp = [];
$temp['path'] = $v['menu_path'];
$temp['path'] = $v['route'];
$temp['title'] = $v['menu_name'];
$temp['icon'] = $v['icon'];
$temp['header'] = $v['header'] ?? '';