修改统计

This commit is contained in:
youda 2025-04-29 20:18:33 +08:00
parent 19f1f3e7b6
commit d15b6def61
5 changed files with 902 additions and 384 deletions

View File

@ -1687,13 +1687,41 @@ class Statistics extends Base
*/
public function getProfitData()
{
// 当天收入:当日微信支付+当日钻石消费
$today_income = Db::query("SELECT IFNULL(sum(ol.price),0)+IFNULL(sum(ol.use_money),0) as total
// 今日收入(当日微信支付+当日钻石消费)
$today_income_query = Db::query("SELECT IFNULL(sum(ol.price),0)+IFNULL(sum(ol.use_money),0) as total
FROM `order` ol
LEFT JOIN `user` us ON ol.user_id=us.id
WHERE us.status=1 AND us.istest=0 AND ol.status=1
AND ol.pay_time>UNIX_TIMESTAMP(CURDATE())");
$today_income = isset($today_income[0]['total']) ? round($today_income[0]['total'], 2) : 0;
$today_income = isset($today_income_query[0]['total']) ? round($today_income_query[0]['total'], 2) : 0;
// RMB 收入
$rmb_income_query = Db::query("SELECT IFNULL(sum(ol.price),0) as total
FROM `order` ol
LEFT JOIN `user` us ON ol.user_id=us.id
WHERE us.status=1 AND us.istest=0 AND ol.status=1
AND ol.pay_time>UNIX_TIMESTAMP(CURDATE())");
$rmb_income = isset($rmb_income_query[0]['total']) ? round($rmb_income_query[0]['total'], 2) : 0;
// 其它收入
$other_income_query = Db::query("SELECT IFNULL(sum(price),0) as total
from profit_revenue
where profit_date = CURDATE()");
$other_income = isset($other_income_query[0]['total']) ? round($other_income_query[0]['total'], 2) : 0;
// 今日出货总额
$shipped_today_query = Db::query("SELECT IFNULL(sum(goodslist_money),0) as total
FROM order_list oll
LEFT JOIN `user` us ON oll.user_id=us.id
WHERE us.status=1 AND us.istest=0
AND oll.goodslist_type<3 AND oll.addtime>UNIX_TIMESTAMP(CURDATE())");
$shipped_today = isset($shipped_today_query[0]['total']) ? round($shipped_today_query[0]['total'], 2) : 0;
// 其它支出
$expenses_query = Db::query("SELECT IFNULL(sum(amount),0) as total
from profit_expenses
where profit_date = CURDATE()");
$expenses = isset($expenses_query[0]['total']) ? round($expenses_query[0]['total'], 2) : 0;
// 当日发货金额
$today_shipped = Db::query("SELECT sum(goodslist_money) as total
@ -1703,7 +1731,7 @@ class Statistics extends Base
AND oll.goodslist_type<3 AND oll.choice_time>UNIX_TIMESTAMP(CURDATE())");
$today_shipped = isset($today_shipped[0]['total']) ? round($today_shipped[0]['total'], 2) : 0;
// 用户盒柜剩余
// 用户盒柜剩余价值
$box_remaining = Db::query("SELECT sum(goodslist_money) as total
FROM order_list oll
LEFT JOIN `user` us ON oll.user_id=us.id
@ -1711,7 +1739,7 @@ class Statistics extends Base
AND oll.goodslist_type<3");
$box_remaining = isset($box_remaining[0]['total']) ? round($box_remaining[0]['total'], 2) : 0;
// 用户还剩多少达达券查询出来后需要除以100达达券和emb的比例为100:1,1块钱兑换100rmb
// 用户剩余达达券查询出来后需要除以100达达券和emb的比例为100:1,1块钱兑换100rmb
$remaining_coupon = Db::query("SELECT sum(money2) as money2
FROM `user`
WHERE status=1 AND istest=0");
@ -1725,11 +1753,15 @@ class Statistics extends Base
'code' => 0,
'msg' => '获取数据成功',
'data' => [
'profit' => $profit,
'today_income' => $today_income,
'rmb_income' => $rmb_income,
'other_income' => $other_income,
'shipped_today' => $shipped_today,
'expenses' => $expenses,
'today_shipped' => $today_shipped,
'remaining_coupon' => $remaining_coupon,
'box_remaining' => $box_remaining,
'profit' => $profit,
'formula' => "利润({$profit}) = 当天收入({$today_income}) - 当天发货金额({$today_shipped}) - 当天用户剩余达达券({$remaining_coupon}) - 盒柜剩余({$box_remaining})"
]
]);
@ -1833,4 +1865,263 @@ class Statistics extends Base
]);
}
/**
* 获取消费与虚拟货币数据
* @return \think\response\Json
*/
public function getCurrencyData()
{
try {
// 获取测试用户ID列表
$userList = User::where('istest', '>', 0)->field('id')->select();
$userArray = array_column($userList->toArray(), 'id');
// 时间范围
$ranges = [
// 今日时间
'today_start' => strtotime('today'),
'today_end' => strtotime('tomorrow') - 1,
// 昨日时间
'yesterday_start' => strtotime('yesterday'),
'yesterday_end' => strtotime('today') - 1,
// 本周时间(周一到周日)
'this_week_start' => strtotime('monday this week'),
'this_week_end' => strtotime('sunday this week') + 86399,
// 上周时间(上周一到上周日)
'last_week_start' => strtotime('monday last week'),
'last_week_end' => strtotime('sunday last week') + 86399,
// 本月时间1号到月末
'this_month_start' => strtotime(date('Y-m-01')),
'this_month_end' => strtotime(date('Y-m-t')) + 86399,
// 上月时间上个月1号到月末
'last_month_start' => strtotime(date('Y-m-01', strtotime('-1 month'))),
'last_month_end' => strtotime(date('Y-m-t', strtotime('-1 month'))) + 86399
];
// 消费人数统计
$consume_today = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_yesterday = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_this_week = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_last_week = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_this_month = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_last_month = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->field('user_id')->group('user_id')->count('user_id');
// RMB消费人数统计
$rmb_consume_today = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_yesterday = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_this_week = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_last_week = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_this_month = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_last_month = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->field('user_id')->group('user_id')->count('user_id');
// 今日余额消费
$money_today = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('use_money');
$money_yesterday = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('use_money');
// 今日积分抵扣
$score_today = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('use_score');
$score_yesterday = OrderModel::where('status', '=', 1)->whereNotIn('user_id', $userArray)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('use_score');
// 今日余额发放
$money_recovery_today = OrderListRecovery::whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->whereNotIn('user_id', $userArray)->sum('money');
$money_recovery_yesterday = OrderListRecovery::whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->whereNotIn('user_id', $userArray)->sum('money');
// 今日优惠券消费
$coupon_today = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->whereNotIn('user_id', $userArray)->sum('use_coupon');
// 返回JSON数据
return json([
'code' => 0,
'msg' => '获取数据成功',
'data' => [
// 消费人数
'consume_today' => $consume_today,
'consume_yesterday' => $consume_yesterday,
'consume_this_week' => $consume_this_week,
'consume_last_week' => $consume_last_week,
'consume_this_month' => $consume_this_month,
'consume_last_month' => $consume_last_month,
// RMB消费人数
'rmb_consume_today' => $rmb_consume_today,
'rmb_consume_yesterday' => $rmb_consume_yesterday,
'rmb_consume_this_week' => $rmb_consume_this_week,
'rmb_consume_last_week' => $rmb_consume_last_week,
'rmb_consume_this_month' => $rmb_consume_this_month,
'rmb_consume_last_month' => $rmb_consume_last_month,
// 虚拟货币数据
'money_today' => round($money_today, 2),
'money_yesterday' => round($money_yesterday, 2),
'score_today' => round($score_today, 2),
'score_yesterday' => round($score_yesterday, 2),
'money_recovery_today' => round($money_recovery_today, 2),
'money_recovery_yesterday' => round($money_recovery_yesterday, 2),
'coupon_today' => round($coupon_today, 2)
]
]);
} catch (\Exception $e) {
return json(['code' => 1, 'msg' => '获取数据失败:' . $e->getMessage()]);
}
}
/**
* 获取今日订单数据
* @return \think\response\Json
*/
public function getTodayOrderData()
{
try {
// 获取测试用户ID列表
$userList = User::where('istest', '>', 0)->field('id')->select();
$userArray = empty($userList) ? [0] : array_column($userList->toArray(), 'id');
// 获取今日时间范围
$today_start = strtotime('today');
// 1. 发起订单数
$initiate_order_count = \think\facade\Db::query(
"SELECT count(1) as orderCount FROM `order` o
LEFT join `user` u ON o.user_id=u.id
where u.status=1 and u.istest=0 and o.addtime>UNIX_TIMESTAMP(CURDATE())"
);
$initiate_order_count = isset($initiate_order_count[0]['orderCount']) ? $initiate_order_count[0]['orderCount'] : 0;
// 2. 今日消费数据
$order_data = \think\facade\Db::query(
"SELECT count(DISTINCT(user_id)) userCount, count(1) orderCount,
sum(order_zhe_total) order_zhe_total,
IFNULL(sum(use_money),0) use_money,
IFNULL(sum(use_integral),0) use_integral,
IFNULL(sum(use_money2),0) use_money2,
IFNULL(sum(price),0) price,
sum(use_coupon) use_coupon
FROM `order` o
LEFT join `user` u ON o.user_id=u.id
where u.status=1 and u.istest=0 and o.status=1
and o.addtime>UNIX_TIMESTAMP(CURDATE())"
);
// 3. 今日出货总额
$goods_total = \think\facade\Db::query(
"SELECT IFNULL(sum(goodslist_money),0) as total
FROM order_list oll
LEFT join `user` us on oll.user_id=us.id
where us.status=1 and us.istest=0
and oll.goodslist_type<3
and oll.addtime>UNIX_TIMESTAMP(CURDATE())"
);
// 处理查询结果
$user_count = isset($order_data[0]['userCount']) ? $order_data[0]['userCount'] : 0;
$paid_order_count = isset($order_data[0]['orderCount']) ? $order_data[0]['orderCount'] : 0;
$order_zhe_total = isset($order_data[0]['order_zhe_total']) ? round($order_data[0]['order_zhe_total'], 2) : 0;
$use_money = isset($order_data[0]['use_money']) ? round($order_data[0]['use_money'], 2) : 0;
$use_integral = isset($order_data[0]['use_integral']) ? round($order_data[0]['use_integral'], 2) : 0;
$use_money2 = isset($order_data[0]['use_money2']) ? round($order_data[0]['use_money2'], 2) : 0;
$price = isset($order_data[0]['price']) ? round($order_data[0]['price'], 2) : 0;
$use_coupon = isset($order_data[0]['use_coupon']) ? round($order_data[0]['use_coupon'], 2) : 0;
$goods_total_amount = isset($goods_total[0]['total']) ? round($goods_total[0]['total'], 2) : 0;
// 返回JSON数据
return json([
'code' => 0,
'msg' => '获取数据成功',
'data' => [
'initiate_order_count' => $initiate_order_count,
'paid_order_count' => $paid_order_count,
'user_count' => $user_count,
'order_zhe_total' => $order_zhe_total,
'goods_total_amount' => $goods_total_amount,
'use_coupon' => $use_coupon,
'price' => $price,
'use_money' => $use_money,
'use_integral' => $use_integral,
'use_money2' => $use_money2
]
]);
} catch (\Exception $e) {
return json(['code' => 1, 'msg' => '获取数据失败:' . $e->getMessage()]);
}
}
/**
* 获取今日货币信息数据
* @return \think\response\Json
*/
public function getCurrencyInfoData()
{
try {
// 今日发放的达达券
$today_add_money2_sql = "select IFNULL(sum(change_money),0) as total from profit_money2 m LEFT join `user` u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money>0 and m.addtime>UNIX_TIMESTAMP(CURDATE())";
$today_add_money2_data = Db::query($today_add_money2_sql);
// 今日消耗的达达券
$today_use_money2_sql = "select IFNULL(sum(ABS(change_money)),0) as total from profit_money2 m LEFT join `user` u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money<0 and m.addtime>UNIX_TIMESTAMP(CURDATE())";
$today_use_money2_data = Db::query($today_use_money2_sql);
// 今日发放的钻石
$today_add_money_sql = "select IFNULL(sum(change_money),0) as total from profit_money m LEFT join `user` u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money>0 and m.addtime>UNIX_TIMESTAMP(CURDATE())";
$today_add_money_data = Db::query($today_add_money_sql);
// 今日消耗的钻石
$today_use_money_sql = "select IFNULL(sum(ABS(change_money)),0) as total from profit_money m LEFT join `user` u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money<0 and m.addtime>UNIX_TIMESTAMP(CURDATE())";
$today_use_money_data = Db::query($today_use_money_sql);
// 今日发放的UU币
$today_add_integral_sql = "select IFNULL(sum(change_money),0) as total from profit_integral m LEFT join `user` u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money>0 and m.addtime>UNIX_TIMESTAMP(CURDATE())";
$today_add_integral_data = Db::query($today_add_integral_sql);
// 今日消耗的UU币
$today_use_integral_sql = "select IFNULL(sum(ABS(change_money)),0) as total from profit_integral m LEFT join `user` u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money<0 and m.addtime>UNIX_TIMESTAMP(CURDATE())";
$today_use_integral_data = Db::query($today_use_integral_sql);
// 昨日发放的达达券
$yesterday_add_money2_sql = "select IFNULL(sum(change_money),0) as total from profit_money2 m LEFT join user u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money>0 and m.addtime>=UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and m.addtime<UNIX_TIMESTAMP(CURDATE())";
$yesterday_add_money2_data = Db::query($yesterday_add_money2_sql);
// 昨日消耗的达达券
$yesterday_use_money2_sql = "select IFNULL(sum(ABS(change_money)),0) as total from profit_money2 m LEFT join user u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money<0 and m.addtime>=UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and m.addtime<UNIX_TIMESTAMP(CURDATE())";
$yesterday_use_money2_data = Db::query($yesterday_use_money2_sql);
// 昨日发放的钻石
$yesterday_add_money_sql = "select IFNULL(sum(change_money),0) as total from profit_money m LEFT join user u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money>0 and m.addtime>=UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and m.addtime<UNIX_TIMESTAMP(CURDATE())";
$yesterday_add_money_data = Db::query($yesterday_add_money_sql);
// 昨日消耗的钻石
$yesterday_use_money_sql = "select IFNULL(sum(ABS(change_money)),0) as total from profit_money m LEFT join user u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money<0 and m.addtime>=UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and m.addtime<UNIX_TIMESTAMP(CURDATE())";
$yesterday_use_money_data = Db::query($yesterday_use_money_sql);
// 昨日发放的UU币
$yesterday_add_integral_sql = "select IFNULL(sum(change_money),0) as total from profit_integral m LEFT join user u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money>0 and m.addtime>=UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and m.addtime<UNIX_TIMESTAMP(CURDATE())";
$yesterday_add_integral_data = Db::query($yesterday_add_integral_sql);
// 昨日消耗的UU币
$yesterday_use_integral_sql = "select IFNULL(sum(ABS(change_money)),0) as total from profit_integral m LEFT join user u on m.user_id=u.id where u.status=1 and u.istest=0 and m.change_money<0 and m.addtime>=UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and m.addtime<UNIX_TIMESTAMP(CURDATE())";
$yesterday_use_integral_data = Db::query($yesterday_use_integral_sql);
$data = [
'today_add_money2' => floatval($today_add_money2_data[0]['total']),
'yesterday_add_money2' => floatval($yesterday_add_money2_data[0]['total']),
'today_use_money2' => floatval($today_use_money2_data[0]['total']),
'yesterday_use_money2' => floatval($yesterday_use_money2_data[0]['total']),
'today_add_money' => floatval($today_add_money_data[0]['total']),
'yesterday_add_money' => floatval($yesterday_add_money_data[0]['total']),
'today_use_money' => floatval($today_use_money_data[0]['total']),
'yesterday_use_money' => floatval($yesterday_use_money_data[0]['total']),
'today_add_integral' => floatval($today_add_integral_data[0]['total']),
'yesterday_add_integral' => floatval($yesterday_add_integral_data[0]['total']),
'today_use_integral' => floatval($today_use_integral_data[0]['total']),
'yesterday_use_integral' => floatval($yesterday_use_integral_data[0]['total']),
];
return json(['code'=>0,'msg'=>'获取成功', 'data'=>$data]);
}catch (\Exception $e){
return json(['code'=>0,'msg'=>$e->getMessage()]);
}
}
}

View File

@ -533,7 +533,7 @@ class User extends Base
// $end_time = $start_time + 86399;
// $where[] = ['addtime', 'BETWEEN', [$start_time, $end_time]];
// }
$data = UserModel::getList($whe, 'id,nickname,headimg,money,uid', 'id desc', 20);
$data = UserModel::getList($whe, '*', 'id desc', 20);
$cz_money_total = 0;
$wx_money_total = 0;
$cz_yue_total = 0;
@ -545,14 +545,43 @@ class User extends Base
$profit_loss_total = 0;
$money = 0;
foreach ($data['list'] as $k => &$v) {
#公式 (充值余额 + 币 + 微信支付 - 余额 - 背包赏品
#收入(800) - 发货金额(0) - 用户剩余达达券(2741.86) - 盒柜剩余(20254.15)
$cz_money = ProfitMoney::field('change_money')->where('user_id', '=', $v['id'])->where('type', '=', 1)->where('change_money', '>', 0)->where($where)->sum('change_money');
$wx_money = ProfitMoney::field('change_money')->where('user_id', '=', $v['id'])->where('type', '=', 2)->where('change_money', '>', 0)->where($where)->sum('change_money');
$cz_yue = $cz_money + $wx_money;
$cz_integral = ProfitIntegral::field('change_money')->where('user_id', '=', $v['id'])->where('type', '=', 1)->where('change_money', '>', 0)->where($where)->sum('change_money');
$price = Order::field('price')->where('user_id', '=', $v['id'])->where('status', '=', 1)->where('price', '>', 0)->where($where)->sum('price');
$shang_money = OrderList::field('goodslist_money')->where('user_id', '=', $v['id'])->whereIn('status', [0])->where('goodslist_money', '>', 0)->where($where)->sum('goodslist_money');
$fh_money = OrderList::field('goodslist_money')->where('user_id', '=', $v['id'])->where('status', '=', 2)->where('goodslist_money', '>', 0)->where($where)->sum('goodslist_money');
# 钻石支付
$use_money = Order::field('use_money')
->where('user_id', '=', $v['id'])
->where('status', '=', 1)
->where('use_money', '>', 0)
->where($where)
->sum('use_money');
# 微信支付
$price = Order::field('price')
->where('user_id', '=', $v['id'])
->where('status', '=', 1)
->where('price', '>', 0)
->where($where)
->sum('price');
$shouru = $use_money ?? 0 + $price ?? 0;
# 盒柜剩余
$shang_money = OrderList::field('goodslist_money')
->where('user_id', '=', $v['id'])
->whereIn('status', [0])
->where('goodslist_money', '>', 0)
->where($where)->sum('goodslist_money') ?? 0;
# 发货价值
$fh_money = OrderList::field('goodslist_money')
->where('user_id', '=', $v['id'])
->where('status', '=', 2)
->where('goodslist_money', '>', 0)
->where($where)->sum('goodslist_money') ?? 0;
# 用户剩余达达券
$money2 = $v['money2'];
$lirun = $shouru - $shang_money - $fh_money - $money2;
$tx_money = ProfitMoney2::field('change_money')->where('user_id', '=', $v['id'])->where('type', '=', 5)->where('change_money', '<', 0)->where($where)->sum('change_money');
$profit_loss = $cz_yue + $price - $v['money'] - $shang_money - $fh_money;
$profit_loss = $profit_loss + $tx_money;
@ -564,7 +593,9 @@ class User extends Base
$v['fh_money'] = $fh_money;
$v['tx_money'] = $tx_money;
$v['profit_loss'] = $profit_loss;
$v['lirun'] = $lirun;
$v['liruntips'] = '收入('.$shouru.'- 发货金额('.$fh_money.') - 用户剩余达达券('.$money2.') - 盒柜剩余('.$shang_money.' ) ;';
$v['shouru'] = $shouru;
$cz_money_total += $cz_yue;
$wx_money_total += $wx_money;
@ -722,21 +753,21 @@ class User extends Base
// 将UID转换为用户ID
$id = $this->convertUidToUserId($id);
// dd($id);
// 获取当前页码
$page_num = $request->param('page', 1);
$list_rows = 20;
// 修复分页明确指定包含id参数
$query = ['id' => $id]; // 确保id参数被保留
$list = \app\common\model\User::where('pid', $id)->paginate([
'list_rows' => $list_rows,
'query' => $query
]);
// 计算基础序号
$start_index = ($page_num - 1) * $list_rows;
$page = $list->render();
$data['list'] = $list->toArray()['data'];
$data['count'] = $list->total();

View File

@ -439,6 +439,9 @@ Route::rule('statistics_lotteryUsersData', 'Statistics/lotteryUsersData', 'GET')
Route::rule('Statistics/getUserStatisticsData', 'Statistics/getUserStatisticsData', 'GET');
Route::rule('Statistics/getProfitData', 'Statistics/getProfitData', 'GET');
Route::rule('Statistics/getUserRegisterData', 'Statistics/getUserRegisterData', 'GET');
Route::rule('Statistics/getTodayOrderData', 'Statistics/getTodayOrderData', 'GET');
Route::rule('Statistics/getCurrencyInfoData', 'Statistics/getCurrencyInfoData', 'GET');
// 盒子下架日志相关路由
Route::post('goods_offshelf_read', 'GoodsOffshelfController/read');
Route::get('goods_offshelf_unread_count', 'GoodsOffshelfController/getUnreadCount');

View File

@ -10,81 +10,136 @@
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-row">
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="background-color: yellow;">
总注册人数:
<span style="color: red;" id="totalUserCount">
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i> 加载中...
</span>
<button type="button" class="layui-btn layui-btn-xs layui-btn-warm" id="refreshUserRegister" style="float: right;margin-top: 5px;">
<i class="layui-icon layui-icon-refresh"></i> 刷新
</button>
</div>
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #1E3A8A; color: #fff; font-weight: 700; height: 41px; line-height: 41px; padding: 0 20px; border-radius: 2px 2px 0 0;">
今日订单
<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" id="refreshTodayOrder"
style="float: right;margin-top: 10px;">
<i class="layui-icon layui-icon-refresh"></i> 刷新
</button>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div id="todayOrderLoading" style="text-align: center; padding: 20px;">
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"
style="font-size: 30px;"></i>
<p>正在加载数据...</p>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div id="userRegisterLoading" style="text-align: center; padding: 20px;">
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop" style="font-size: 30px;"></i>
<p>正在加载数据...</p>
</div>
<div class="layui-row" id="userRegisterData" style="display: none;">
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #393D49;">
<div class="layui-card" style="background-color: #393D49;color: #fff;">
<div class="layui-card-header" style="color: #fff;">用户注册数据</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日新增用户: <span class="layui-badge layui-bg-gray" id="user_today">-</span>
</div>
<div class="layui-col-xs6">
昨日新增用户: <span class="layui-badge layui-bg-gray" id="user_yesterday">-</span>
</div>
<div class="layui-row" id="todayOrderData" style="display: none;">
<!-- 第一行:发起订单数,支付订单数,消费人数,空 -->
<div class="layui-col-xs12" style="margin-bottom: 5px;">
<div class="layui-row">
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>发起订单数:<span style="float: right; font-weight: 600;" id="initiate_order_count">-</span>
</p>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本周新增用户: <span class="layui-badge layui-bg-gray" id="user_this_week">-</span>
</div>
<div class="layui-col-xs6">
上周新增用户: <span class="layui-badge layui-bg-gray" id="user_last_week">-</span>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>支付订单数:<span style="float: right; font-weight: 600;" id="paid_order_count">-</span></p>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本月新增用户: <span class="layui-badge layui-bg-gray" id="user_this_month">-</span>
</div>
<div class="layui-col-xs6">
上月新增用户: <span class="layui-badge layui-bg-gray" id="user_last_month">-</span>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>消费人数:<span style="float: right; font-weight: 600;"
id="consuming_user_count_today">-</span></p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>&nbsp;</p>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #009688;">
<div class="layui-card" style="background-color: #009688;color: #fff;">
<div class="layui-card-header" style="color: #fff;">用户充值数据</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日充值金额: <span class="layui-badge layui-bg-gray" id="order_today_value">-</span>
</div>
<div class="layui-col-xs6">
昨日充值金额: <span class="layui-badge layui-bg-gray" id="order_yesterday_value">-</span>
</div>
</div>
<!-- 第二行:订单总金额,出货总金额,优惠卷抵扣,空 -->
<div class="layui-col-xs12" style="margin-bottom: 5px;">
<div class="layui-row">
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>订单总金额:<span style="float: right; font-weight: 600;" id="order_total_amount">-</span>
</p>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本周充值金额: <span class="layui-badge layui-bg-gray" id="order_this_week_value">-</span>
</div>
<div class="layui-col-xs6">
上周充值金额: <span class="layui-badge layui-bg-gray" id="order_last_week_value">-</span>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>出货总金额:<span style="float: right; font-weight: 600;" id="goods_total_amount">-</span>
</p>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本月充值金额: <span class="layui-badge layui-bg-gray" id="order_this_month_value">-</span>
</div>
<div class="layui-col-xs6">
上月充值金额: <span class="layui-badge layui-bg-gray" id="order_last_month_value">-</span>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>&nbsp;</p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>优惠券抵扣:<span style="float: right; font-weight: 600;" id="coupon_discount">-</span></p>
</div>
</div>
</div>
</div>
</div>
<!-- 第三行RMB支付钻石支付UU币支付达达券支付 -->
<div class="layui-col-xs12">
<div class="layui-row">
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>RMB支付<span style="float: right; font-weight: 600;" id="rmb_payment">-</span></p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>钻石支付:<span style="float: right; font-weight: 600;" id="diamond_payment">-</span></p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>UU币支付<span style="float: right; font-weight: 600;" id="uu_payment">-</span></p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>达达券支付:<span style="float: right; font-weight: 600;" id="dada_payment">-</span></p>
</div>
</div>
</div>
@ -93,98 +148,149 @@
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #2F3F56;color: #fff;">
消费与虚拟货币
<span style="color: red;">
</span>
</div>
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header"
style="background: #2563EB; color: #fff; font-weight: 700; height: 41px; line-height: 41px; padding: 0 20px; border-radius: 2px 2px 0 0;">
<div style="position: relative">
<span>今日货币信息</span>
<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" id="refreshCurrencyInfo"
style="float: right;margin-top: 10px;">
<i class="layui-icon layui-icon-refresh"></i> 刷新
</button>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div class="layui-row">
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #21A0BF;">
<div class="layui-card" style="background-color: #21A0BF;color: #fff;">
<div class="layui-card-header" style="color: #fff;">消费数据RMB/全部)</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_today}/{$consume_today}</span>
</div>
<div class="layui-col-xs6">
昨日消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_yesterday}/{$consume_yesterday}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本周消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_this_week}/{$consume_this_week}</span>
</div>
<div class="layui-col-xs6">
上周消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_last_week}/{$consume_last_week}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本月消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_this_month}/{$consume_this_month}</span>
</div>
<div class="layui-col-xs6">
上月消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_last_month}/{$consume_last_month}</span>
</div>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div id="currencyInfoLoading" style="text-align: center; padding: 20px;">
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"
style="font-size: 30px;"></i>
<p>正在加载数据...</p>
</div>
<div class="layui-row" id="currencyInfoData" style="display: none;">
<!-- 第一行:今日发放钻石,今日消费钻石,昨日发放钻石,昨日消费钻石 -->
<div class="layui-col-xs12" style="margin-bottom: 5px;">
<div class="layui-row">
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>今日发放钻石:<span style="float: right; font-weight: 600;" id="today_add_money">-</span></p>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #FF5722;">
<div class="layui-card" style="background-color: #FF5722;color: #fff;">
<div class="layui-card-header" style="color: #fff;">虚拟货币统计</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日余额消费: <span
class="layui-badge layui-bg-gray">{$money_today}</span>
</div>
<div class="layui-col-xs6">
今日余额发放: <span
class="layui-badge layui-bg-gray">{$money_recovery_today}</span>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>今日消费钻石:<span style="float: right; font-weight: 600;" id="today_use_money">-</span></p>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日积分消费: <span
class="layui-badge layui-bg-gray">{$score_today}</span>
</div>
<div class="layui-col-xs6">
今日消费卷抵扣: <span
class="layui-badge layui-bg-gray">{$coupon_today}</span>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>昨日发放钻石:<span style="float: right; font-weight: 600;" id="yesterday_add_money">-</span>
</p>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
昨日积分消费: <span
class="layui-badge layui-bg-gray">{$score_yesterday}</span>
</div>
<!-- <div class="layui-col-xs6">
昨日余额消费: <span
class="layui-badge layui-bg-gray">{$money_yesterday}</span>
</div> -->
<div class="layui-col-xs6">
昨日余额发放: <span
class="layui-badge layui-bg-gray">{$money_recovery_yesterday}</span>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #EFF6FF; color: #1E40AF; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>昨日消费钻石:<span style="float: right; font-weight: 600;" id="yesterday_use_money">-</span>
</p>
</div>
</div>
</div>
</div>
</div>
<!-- 第二行今日发放UU币今日消费UU币昨日发放UU币昨日消费UU币 -->
<div class="layui-col-xs12" style="margin-bottom: 5px;">
<div class="layui-row">
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>今日发放UU币<span style="float: right; font-weight: 600;" id="today_add_integral">-</span>
</p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>今日消费UU币<span style="float: right; font-weight: 600;" id="today_use_integral">-</span>
</p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>昨日发放UU币<span style="float: right; font-weight: 600;"
id="yesterday_add_integral">-</span></p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #ECFDF5; color: #065F46; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>昨日消费UU币<span style="float: right; font-weight: 600;"
id="yesterday_use_integral">-</span></p>
</div>
</div>
</div>
</div>
</div>
<!-- 第三行:今日兑换达达券,今日消费达达券,昨日兑换达达券,昨日消费达达券 -->
<div class="layui-col-xs12">
<div class="layui-row">
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>今日发放达达券:<span style="float: right; font-weight: 600;" id="today_add_money2">-</span>
</p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>今日消费达达券:<span style="float: right; font-weight: 600;" id="today_use_money2">-</span>
</p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>昨日发放达达券:<span style="float: right; font-weight: 600;"
id="yesterday_add_money2">-</span></p>
</div>
</div>
</div>
<div class="layui-col-xs3" style="padding: 0px 2px;">
<div class="layui-card"
style="background-color: #F9FAFB; color: #111827; margin: 0;">
<div class="layui-card-body" style="padding: 10px;">
<p>昨日消费达达券:<span style="float: right; font-weight: 600;"
id="yesterday_use_money2">-</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@ -192,14 +298,20 @@
<div class="layui-row">
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="text-align:center;background-color: #7C98CB;">
<div class="layui-card-header" style="background-color: #1E3A8A; color: #fff; font-weight: 700; height: 41px; line-height: 41px; padding: 0 20px; border-radius: 2px 2px 0 0;">
今日收入汇总
<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" id="refreshProfit" style="float: right;margin-top: 5px;">
<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" id="refreshProfit"
style="float: right;margin-top: 10px;">
<i class="layui-icon layui-icon-refresh"></i> 刷新
</button>
</div>
<div class="layui-card-body" style="padding: 0px;">
<table class="layui-table">
<div id="profitDataLoading" style="text-align: center; padding: 20px;">
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"
style="font-size: 30px;"></i>
<p>正在加载数据...</p>
</div>
<table class="layui-table" id="profitDataTable" style="display: none;">
<colgroup>
<col width="150">
<col>
@ -207,43 +319,46 @@
<tbody>
<tr>
<td>订单收入:</td>
<td>{$order_zhe_total}(收入不包含折扣,不包含优惠卷)</td>
<td>订单收入RMB+钻石)</td>
<td id="today_income">加载中...</td>
</tr>
<tr>
<td>RMB收入</td>
<td>{$order_today}</td>
<td id="rmb_income">加载中...</td>
</tr>
<tr>
<td>其他收入:</td>
<td>{$profit_rvenue}</td>
<td id="other_income">加载中...</td>
</tr>
<tr>
<td>订单出货:</td>
<td>{$order_goodslist_money}</td>
<td id="shipped_today">加载中...</td>
</tr>
<tr>
<td>支出</td>
<td>{$profit_expenses}</td>
<td>支出</td>
<td id="expenses">加载中...</td>
</tr>
<tr>
<td>订单笔数</td>
<td>{$order_count}</td>
<td>当天发货金额</td>
<td id="today_shipped">加载中...</td>
</tr>
<tr>
<td>发数:</td>
<td>{$order_goodslist_count}</td>
<td>当天用户剩余达达券:</td>
<td id="remaining_coupon">加载中...</td>
</tr>
<tr>
<td>盒柜剩余价值:</td>
<td id="box_remaining">加载中...</td>
</tr>
<tr>
<td>利润:</td>
<td id="profit_value">
<div class="layui-progress" lay-filter="profit-loading" style="margin-top: 10px;">
<div class="layui-progress" lay-filter="profit-loading"
style="margin-top: 10px;">
<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>
</div>
</td>
</tr>
<tr>
<td>利润计算方式:</td>
<td id="profit_formula">加载中...</td>
@ -253,52 +368,19 @@
</div>
</div>
</div>
<div class="layui-col-xs6" style="display: none;">
<div class="layui-card">
<div class="layui-card-header" style="text-align:center;background-color:darkorange;">
今日毛利统计
</div>
<div class="layui-card-body" style="padding: 0px;">
<table class="layui-table">
<colgroup>
<col width="50%">
<col>
</colgroup>
<tbody>
<tr>
<td>今日毛利:{$order_lirun}</td>
<td>昨日毛利:{$order_lirun_yester}</td>
</tr>
<tr>
<td>本周毛利:{$order_lirun_week}</td>
<td>上周毛利:{$order_lirun_last_week}</td>
</tr>
<tr>
<td>本月毛利:{$order_zhe_total_month}</td>
<td>上月毛利:{$order_lirun_last_month}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- 新增用户数据统计卡片 -->
<div class="layui-row" style="margin-top: 15px;">
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="text-align:center;background-color: #1E9FFF;color:#fff;">
用户数据统计
<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" id="refreshUserStats" style="float: right;margin-top: 5px;">
<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" id="refreshUserStats"
style="float: right;margin-top: 5px;">
<i class="layui-icon layui-icon-refresh"></i> 刷新
</button>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div id="userStatsLoading" style="text-align: center; padding: 20px;">
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop" style="font-size: 30px;"></i>
<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"
style="font-size: 30px;"></i>
<p>正在加载数据...</p>
</div>
<table class="layui-table" id="userStatsTable" style="display: none;">
@ -351,6 +433,42 @@
</div>
</div>
</div>
<div class="layui-col-xs6" style="display: none;">
<div class="layui-card">
<div class="layui-card-header" style="text-align:center;background-color:darkorange;">
今日毛利统计
</div>
<div class="layui-card-body" style="padding: 0px;">
<table class="layui-table">
<colgroup>
<col width="50%">
<col>
</colgroup>
<tbody>
<tr>
<td>今日毛利:{$order_lirun}</td>
<td>昨日毛利:{$order_lirun_yester}</td>
</tr>
<tr>
<td>本周毛利:{$order_lirun_week}</td>
<td>上周毛利:{$order_lirun_last_week}</td>
</tr>
<tr>
<td>本月毛利:{$order_zhe_total_month}</td>
<td>上月毛利:{$order_lirun_last_month}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- 新增用户数据统计卡片 -->
<div class="layui-row" style="margin-top: 15px;">
</div>
</div>
</div>
@ -377,12 +495,12 @@
function loadUserStatistics() {
$('#userStatsTable').hide();
$('#userStatsLoading').show();
$.ajax({
url: '{:url("admin/Statistics/getUserStatisticsData")}',
type: 'GET',
dataType: 'json',
success: function(res) {
success: function (res) {
if (res.code === 0) {
// 填充数据
$('#user_register_count').text(res.data.user_register_count);
@ -396,122 +514,182 @@
$('#exchanged_coupon').text(res.data.exchanged_coupon);
$('#shipped_amount').text(res.data.shipped_amount);
$('#total_goods_amount').text(res.data.total_goods_amount);
// 显示表格
$('#userStatsLoading').hide();
$('#userStatsTable').show();
} else {
layer.msg('加载数据失败:' + res.msg, {icon: 2});
layer.msg('加载数据失败:' + res.msg, { icon: 2 });
$('#userStatsLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
},
error: function() {
layer.msg('服务器连接失败,请稍后再试', {icon: 2});
error: function () {
layer.msg('服务器连接失败,请稍后再试', { icon: 2 });
$('#userStatsLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
});
}
// 加载利润数据
function loadProfitData() {
// 显示加载动画,隐藏数据表格
$('#profitDataTable').hide();
$('#profitDataLoading').show();
// 更新进度条
element.progress('profit-loading', '30%');
$.ajax({
url: '{:url("admin/Statistics/getProfitData")}',
type: 'GET',
dataType: 'json',
success: function(res) {
success: function (res) {
if (res.code === 0) {
// 填充所有数据
$('#today_income').text(res.data.today_income);
$('#rmb_income').text(res.data.rmb_income);
$('#other_income').text(res.data.other_income);
$('#shipped_today').text(res.data.shipped_today);
$('#expenses').text(res.data.expenses);
$('#today_shipped').text(res.data.today_shipped);
$('#remaining_coupon').text(res.data.remaining_coupon);
$('#box_remaining').text(res.data.box_remaining);
// 填充利润数据
element.progress('profit-loading', '100%');
setTimeout(function() {
setTimeout(function () {
$('#profit_value').html('<span style="color:' + (res.data.profit >= 0 ? 'green' : 'red') + ';font-weight:bold;">' + res.data.profit + '</span>');
$('#profit_formula').html(res.data.formula);
// 隐藏加载动画,显示数据表格
$('#profitDataLoading').hide();
$('#profitDataTable').show();
}, 300);
} else {
layer.msg('加载利润数据失败:' + res.msg, {icon: 2});
$('#profit_value').html('<span style="color:red;">加载失败</span>');
$('#profit_formula').html('加载失败,请刷新页面重试');
layer.msg('加载利润数据失败:' + res.msg, { icon: 2 });
$('#profitDataLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
},
error: function() {
layer.msg('服务器连接失败,请稍后再试', {icon: 2});
$('#profit_value').html('<span style="color:red;">加载失败</span>');
$('#profit_formula').html('加载失败,请刷新页面重试');
error: function () {
layer.msg('服务器连接失败,请稍后再试', { icon: 2 });
$('#profitDataLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
});
}
// 加载用户注册数据
function loadUserRegisterData() {
$('#userRegisterData').hide();
$('#userRegisterLoading').show();
// 加载货币信息数据
function loadCurrencyInfoData() {
$('#currencyInfoData').hide();
$('#currencyInfoLoading').show();
$.ajax({
url: '{:url("admin/Statistics/getUserRegisterData")}',
url: '{:url("admin/Statistics/getCurrencyInfoData")}',
type: 'GET',
dataType: 'json',
success: function(res) {
success: function (res) {
if (res.code === 0) {
// 填充总注册人数
$('#totalUserCount').html('<span style="font-weight:bold;">' + res.data.userCount + '</span>');
// 填充用户注册数据
$('#user_today').text(res.data.user_today);
$('#user_yesterday').text(res.data.user_yesterday);
$('#user_this_week').text(res.data.user_this_week);
$('#user_last_week').text(res.data.user_last_week);
$('#user_this_month').text(res.data.user_this_month);
$('#user_last_month').text(res.data.user_last_month);
// 填充充值数据
$('#order_today_value').text(res.data.order_today);
$('#order_yesterday_value').text(res.data.order_yesterday);
$('#order_this_week_value').text(res.data.order_this_week);
$('#order_last_week_value').text(res.data.order_last_week);
$('#order_this_month_value').text(res.data.order_this_month);
$('#order_last_month_value').text(res.data.order_last_month);
// 填充钻石数据
$('#today_add_money').text(res.data.today_add_money);
$('#today_use_money').text(res.data.today_use_money);
$('#yesterday_add_money').text(res.data.yesterday_add_money);
$('#yesterday_use_money').text(res.data.yesterday_use_money);
// 填充UU币数据
$('#today_add_integral').text(res.data.today_add_integral);
$('#today_use_integral').text(res.data.today_use_integral);
$('#yesterday_add_integral').text(res.data.yesterday_add_integral);
$('#yesterday_use_integral').text(res.data.yesterday_use_integral);
// 填充达达券数据
$('#today_add_money2').text(res.data.today_add_money2);
$('#today_use_money2').text(res.data.today_use_money2);
$('#yesterday_add_money2').text(res.data.yesterday_add_money2);
$('#yesterday_use_money2').text(res.data.yesterday_use_money2);
// 显示数据区域
$('#userRegisterLoading').hide();
$('#userRegisterData').show();
$('#currencyInfoLoading').hide();
$('#currencyInfoData').show();
} else {
layer.msg('加载用户数据失败:' + res.msg, {icon: 2});
$('#userRegisterLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
$('#totalUserCount').html('<span style="color:red;">加载失败</span>');
layer.msg('加载货币信息数据失败:' + res.msg, { icon: 2 });
$('#currencyInfoLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
},
error: function() {
layer.msg('服务器连接失败,请稍后再试', {icon: 2});
$('#userRegisterLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
$('#totalUserCount').html('<span style="color:red;">加载失败</span>');
error: function () {
layer.msg('服务器连接失败,请稍后再试', { icon: 2 });
$('#currencyInfoLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
});
}
// 加载今日订单数据
function loadTodayOrderData() {
$('#todayOrderData').hide();
$('#todayOrderLoading').show();
$.ajax({
url: '{:url("admin/Statistics/getTodayOrderData")}',
type: 'GET',
dataType: 'json',
success: function (res) {
if (res.code === 0) {
// 填充订单数据
$('#initiate_order_count').text(res.data.initiate_order_count);
$('#paid_order_count').text(res.data.paid_order_count);
$('#consuming_user_count_today').text(res.data.user_count);
$('#order_total_amount').text(res.data.order_zhe_total);
$('#goods_total_amount').text(res.data.goods_total_amount);
$('#coupon_discount').text(res.data.use_coupon);
$('#rmb_payment').text(res.data.price);
$('#diamond_payment').text(res.data.use_money);
$('#uu_payment').text(res.data.use_integral);
$('#dada_payment').text(res.data.use_money2);
// 显示数据区域
$('#todayOrderLoading').hide();
$('#todayOrderData').show();
} else {
layer.msg('加载今日订单数据失败:' + res.msg, { icon: 2 });
$('#todayOrderLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
},
error: function () {
layer.msg('服务器连接失败,请稍后再试', { icon: 2 });
$('#todayOrderLoading').html('<p>加载失败,请点击刷新按钮重试</p>');
}
});
}
// 页面加载完成后加载数据
loadUserStatistics();
loadProfitData();
loadUserRegisterData();
loadCurrencyInfoData();
loadTodayOrderData();
// 刷新按钮点击事件
$('#refreshUserStats').on('click', function() {
$('#refreshUserStats').on('click', function () {
loadUserStatistics();
});
// 刷新利润按钮点击事件
$('#refreshProfit').on('click', function() {
$('#refreshProfit').on('click', function () {
$('#profitDataTable').hide();
$('#profitDataLoading').show();
$('#profitDataLoading').html('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop" style="font-size: 30px;"></i><p>正在加载数据...</p>');
$('#profit_value').html('<div class="layui-progress" lay-filter="profit-loading" style="margin-top: 10px;"><div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div></div>');
$('#profit_formula').html('加载中...');
element.render('progress');
loadProfitData();
});
// 刷新用户注册数据按钮点击事件
$('#refreshUserRegister').on('click', function() {
$('#totalUserCount').html('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i> 加载中...');
loadUserRegisterData();
// 刷新货币信息按钮点击事件
$('#refreshCurrencyInfo').on('click', function () {
loadCurrencyInfoData();
});
// 刷新今日订单按钮点击事件
$('#refreshTodayOrder').on('click', function () {
loadTodayOrderData();
});
})
</script>

View File

@ -1,118 +1,133 @@
{include file="Public:header2"/}
<body>
<div class="layui-fluid">
<div class="layui-card">
<form method="get" class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
<input type="text" id="uid" name="uid" value="{$Request.get.uid}" class="layui-input" placeholder="会员UID" style="" autocomplete="off">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
<input type="text" id="addtime" name="addtime" value="{$Request.get.addtime}" class="layui-input" placeholder="开始时间" style="width:300px;" autocomplete="off" >
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</form>
<div class="layui-card-body">
<xblock>
<div style="padding-bottom: 10px;">
<span style="line-height:40px;float:right;">共有数据: {$count}条</span>
</div>
</xblock>
<table class="layui-table">
<thead>
<tr>
<!-- <th>总计</th>-->
</tr>
<tr>
<th>用户信息</th>
<th>充值余额</th>
<!--<th>充值吧唧币</th>-->
<th>微信支付</th>
<th>余额</th>
<th>背包赏品</th>
<th>发货赏品</th>
<th>盈亏</th>
</tr>
</thead>
<tbody>
{volist name="total_money" id="vo"}
<tr>
<td>总计</td>
<td>{$vo['cz_money_total']}</td>
<!--<td>{$vo['cz_integral_total']}</td>-->
<td>{$vo['price_total']}</td>
<td>{$vo['total_money']}</td>
<td>{$vo['shang_money_total']}</td>
<td>{$vo['fh_money_total']}</td>
<td>{$vo['profit_loss_total']}</td>
</tr>
{/volist}
{volist name="list" id="vo"}
<tr>
<td style="text-align: left">
<div style="display: flex;">
<div><img src="{:imageUrl($vo['headimg'])}" alt="" width="50px" height="50px"></div>
<div style="margin-left: 10px">
<p style="color: #e91e63;font-size: 9px">UID{$vo['uid']}</p>
<p style="color: #e91e63;font-size: 9px">真实ID{$vo['id']}</p>
<p style="color: #666666ba;font-size: 9px">{$vo['nickname']}</p>
</div>
<div class="layui-fluid">
<div class="layui-card">
<form method="get" class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
<input type="text" id="uid" name="uid" value="{$Request.get.uid}" class="layui-input"
placeholder="会员UID" style="" autocomplete="off">
</div>
</td>
<td>{$vo['cz_money']}</td>
<!--<td>{$vo['cz_integral']}</td>-->
<td>{$vo['price']}</td>
<td>{$vo['money']}</td>
<td>{$vo['shang_money']}</td>
<td>{$vo['fh_money']}</td>
<td>{$vo['profit_loss']}</td>
</tr>
{/volist}
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
<input type="text" id="addtime" name="addtime" value="{$Request.get.addtime}"
class="layui-input" placeholder="开始时间" style="width:300px;" autocomplete="off">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit
lay-filter="LAY-user-front-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</form>
{if condition="empty($list)"}
<tr><td colspan='10' style="text-align:center;">暂时没有数据!</td></tr>
{/if}
<div class="layui-card-body">
<xblock>
<div style="padding-bottom: 10px;">
<span style="line-height:40px;float:right;">共有数据: {$count}条</span>
</div>
</xblock>
<table class="layui-table">
<thead>
<tr>
<!-- <th>总计</th>-->
</tr>
<tr>
<th>用户信息</th>
<!-- <th>钻石</th> -->
<!--<th>充值吧唧币</th>-->
<th>微信支付</th>
<th>钻石</th>
<th>UU币</th>
<th>达达券</th>
<th>背包价值</th>
<th>发货价值</th>
<th>收入RMB支付+钻石)</th>
<th style="width: 200px;">盈亏(收入- 发货金额- 用户剩余达达券 - 盒柜剩余)</th>
</tr>
</thead>
<tbody>
{volist name="total_money" id="vo"}
<!-- <tr>
<td>总计</td>
<td>{$vo['price_total']}</td>
<td>{$vo['total_money']}</td>
<td></td>
<td></td>
<td>{$vo['shang_money_total']}</td>
<td>{$vo['fh_money_total']}</td>
<td></td>
<td></td>
<td>{$vo['profit_loss_total']}</td>
</tr> -->
{/volist}
{volist name="list" id="vo"}
<tr>
<td style="text-align: left">
<div style="display: flex;">
<div><img src="{:imageUrl($vo['headimg'])}" alt="" width="50px" height="50px"></div>
<div style="margin-left: 10px">
<p style="color: #e91e63;font-size: 9px">UID{$vo['uid']}</p>
<p style="color: #e91e63;font-size: 9px">真实ID{$vo['id']}</p>
<p style="color: #666666ba;font-size: 9px">{$vo['nickname']}</p>
</div>
</div>
</td>
</tbody>
</table>
<div class="my_page layui-box layui-laypage layui-laypage-default">
{$page|raw}
<td>{$vo['price']}</td>
<td>{$vo['money']}</td>
<td>{$vo['integral']}</td>
<td>{$vo['money2']*100}</td>
<td>{$vo['shang_money']}</td>
<td>{$vo['fh_money']}</td>
<td>{$vo['shouru']}</td>
<td>
<div>
{$vo['lirun']}
<p style="color: #666666ba;font-size: 9px">{$vo['liruntips']}</p>
</div>
</td>
</tr>
{/volist}
{if condition="empty($list)"}
<tr>
<td colspan='10' style="text-align:center;">暂时没有数据!</td>
</tr>
{/if}
</tbody>
</table>
<div class="my_page layui-box layui-laypage layui-laypage-default">
{$page|raw}
</div>
</div>
</div>
</div>
</div>
{include file="Public:footer"/}
<script type="text/javascript">
layui.use(['table','laydate'], function(){
var laydate = layui.laydate;
//执行一个laydate实例
laydate.render({
elem: '#addtime'
,type: 'datetime'
,range: '-'
,format: 'yyyy-MM-dd'
})
});
{include file="Public:footer"/}
<script type="text/javascript">
layui.use(['table', 'laydate'], function () {
var laydate = layui.laydate;
//执行一个laydate实例
laydate.render({
elem: '#addtime'
, type: 'datetime'
, range: '-'
, format: 'yyyy-MM-dd'
})
});
</script>
</script>
</body>
</html>
</html>