2025-08-07 20:21:47 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace app\adminapi\controller;
|
|
|
|
|
|
|
|
|
|
|
|
use app\common\controller\adminApi;
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
|
use Yzh\YunPay;
|
|
|
|
|
|
|
|
|
|
|
|
class Statistical extends adminApi
|
|
|
|
|
|
{
|
|
|
|
|
|
//初始化
|
|
|
|
|
|
public function _initialize()
|
|
|
|
|
|
{
|
2026-01-05 11:22:05 +08:00
|
|
|
|
set_time_limit(0);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
parent::_initialize();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//充值排行统计
|
|
|
|
|
|
public function get_recharge_ranking()
|
|
|
|
|
|
{
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 30);
|
|
|
|
|
|
$search_uid = input('search_uid', '');
|
|
|
|
|
|
$begin_time = input('begin_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
$where=[];
|
|
|
|
|
|
//标签名称
|
|
|
|
|
|
if($search_uid !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
$username = input('username', '');
|
|
|
|
|
|
if($username !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('nickname', $username)->value('id');
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where['createtime'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['<=', strtotime($end_time)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(!empty($begin_time) && !empty($end_time)){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$where['pay_status'] = 2;//1待支付,2已支付
|
|
|
|
|
|
$where['order_type'] = 1;//订单类型:1 充值
|
|
|
|
|
|
|
|
|
|
|
|
$count = db::name('vs_user_recharge')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group('user_id')
|
|
|
|
|
|
->count();
|
|
|
|
|
|
$lists = db::name('vs_user_recharge')
|
|
|
|
|
|
->field('rid,createtime,user_id,sum(money) as money,sum(coin) as coin')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group('user_id')
|
|
|
|
|
|
->order('money desc')
|
|
|
|
|
|
->page($page, $page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
foreach ($lists as $key => $value) {
|
|
|
|
|
|
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
|
|
|
|
|
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
|
|
|
|
|
|
db::name('user')->where('id', $value['user_id'])->value('user_code');
|
|
|
|
|
|
$lists[$key]['avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
|
|
|
|
|
|
}
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists,
|
|
|
|
|
|
'total' =>[
|
|
|
|
|
|
'total_price' => db::name('vs_user_recharge')->where($where)->sum('money'),
|
|
|
|
|
|
'total_gold' => db::name('vs_user_recharge')->where($where)->sum('coin')
|
|
|
|
|
|
]
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//送礼、收礼排行
|
|
|
|
|
|
public function get_gift_ranking()
|
|
|
|
|
|
{
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 30);
|
|
|
|
|
|
$type = input('type', 1);//1送礼,2收礼
|
|
|
|
|
|
$search_uid = input('search_uid', '');
|
|
|
|
|
|
$begin_time = input('begin_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
$where=[];
|
|
|
|
|
|
$group = 'user_id';
|
|
|
|
|
|
if($type == 2){
|
|
|
|
|
|
$group = 'gift_user';
|
|
|
|
|
|
}
|
|
|
|
|
|
//标签名称
|
|
|
|
|
|
if($search_uid !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
|
|
|
|
|
|
if($type == 1){
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$where['gift_user'] = $user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$username = input('username', '');
|
|
|
|
|
|
if($username !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('nickname', $username)->value('id');
|
|
|
|
|
|
if($type == 1){
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$where['gift_user'] = $user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where['createtime'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['<=', strtotime($end_time)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(!empty($begin_time) && !empty($end_time)){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
$count = db::name('vs_give_gift')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group($group)
|
|
|
|
|
|
->count();
|
|
|
|
|
|
$lists = db::name('vs_give_gift')
|
|
|
|
|
|
->field('id,createtime,user_id,gift_user,sum(total_price) as total_price,sum(number) as number')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group($group)
|
|
|
|
|
|
->order('total_price desc')
|
|
|
|
|
|
->page($page, $page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
foreach ($lists as $key => $value) {
|
|
|
|
|
|
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
|
|
|
|
|
if($type == 1){
|
|
|
|
|
|
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
|
|
|
|
|
|
db::name('user')->where('id', $value['user_id'])->value('user_code');
|
|
|
|
|
|
$lists[$key]['avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$lists[$key]['user_name'] = db::name('user')->where('id', $value['gift_user'])->value('nickname').'-'.
|
|
|
|
|
|
db::name('user')->where('id', $value['gift_user'])->value('user_code');
|
|
|
|
|
|
$lists[$key]['avatar'] = db::name('user')->where('id', $value['gift_user'])->value('avatar');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists,
|
|
|
|
|
|
'total' =>[
|
|
|
|
|
|
'total_price' => db::name('vs_give_gift')->where($where)->sum('total_price'),
|
|
|
|
|
|
'total_num' => db::name('vs_give_gift')->where($where)->sum('number')
|
|
|
|
|
|
]
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//消费排行
|
|
|
|
|
|
public function get_consumption_ranking()
|
|
|
|
|
|
{
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 30);
|
|
|
|
|
|
$search_uid = input('search_uid', '');
|
|
|
|
|
|
$begin_time = input('begin_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
$where=[];
|
|
|
|
|
|
//标签名称
|
|
|
|
|
|
if($search_uid !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
$username = input('username', '');
|
|
|
|
|
|
if($username !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('nickname', $username)->value('id');
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where['createtime'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['<=', strtotime($end_time)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(!empty($begin_time) && !empty($end_time)){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
// 1.系统调节 2.充值 3.提现 4.金币转增(送出) 5.每日任务奖励 6.充值返利 7.购买装扮
|
|
|
|
|
|
// 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
|
|
|
|
|
|
// 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益 20.抢头条 21.公会长收益
|
|
|
|
|
|
$where['change_type'] = ['in', [4,7,10,17,20]];
|
|
|
|
|
|
$count = db::name('vs_user_money_log')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group('user_id')
|
|
|
|
|
|
->count();
|
|
|
|
|
|
$lists = db::name('vs_user_money_log')
|
|
|
|
|
|
->field('log_id,createtime,user_id,sum(change_value) as change_value')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group('user_id')
|
|
|
|
|
|
->order('change_value desc')
|
|
|
|
|
|
->page($page, $page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
foreach ($lists as $key => $value) {
|
|
|
|
|
|
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
|
|
|
|
|
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
|
|
|
|
|
|
db::name('user')->where('id', $value['user_id'])->value('user_code');
|
|
|
|
|
|
$lists[$key]['avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
|
|
|
|
|
|
}
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists,
|
|
|
|
|
|
'total' =>[
|
|
|
|
|
|
'total_price' => db::name('vs_user_money_log')->where($where)->sum('change_value')
|
|
|
|
|
|
]
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//房间流水统计
|
|
|
|
|
|
public function get_room_flow_statistics()
|
|
|
|
|
|
{
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 30);
|
|
|
|
|
|
$search_room_id = input('search_room_id', '');
|
|
|
|
|
|
$begin_time = input('begin_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
$where=[];
|
|
|
|
|
|
//标签名称
|
|
|
|
|
|
$where['from_id'] = ['>' , 0];
|
|
|
|
|
|
if($search_room_id !== ''){
|
|
|
|
|
|
$room_id = db::name('vs_room')->where('room_number', $search_room_id)->value('id');
|
|
|
|
|
|
$where['from_id'] = $room_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
$room_name = input('room_name', '');
|
|
|
|
|
|
if($room_name !== ''){
|
|
|
|
|
|
$room_id = db::name('vs_room')->where('room_name', $room_name)->value('id');
|
|
|
|
|
|
$where['from_id'] = $room_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where['createtime'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['<=', strtotime($end_time)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(!empty($begin_time) && !empty($end_time)){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
//不为空
|
|
|
|
|
|
$where['from'] = 2;
|
|
|
|
|
|
$count = db::name('vs_give_gift')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group('from_id')
|
|
|
|
|
|
->count();
|
|
|
|
|
|
$lists = db::name('vs_give_gift')
|
|
|
|
|
|
->field('id,createtime,user_id,gift_user,sum(total_price) as total_price,sum(number) as number,from_id')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->group('from_id')
|
|
|
|
|
|
->order('total_price desc')
|
|
|
|
|
|
->page($page, $page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
foreach ($lists as $key => $value) {
|
|
|
|
|
|
$room = db::name('vs_room')->where('id', $value['from_id'])->find();
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($room){
|
|
|
|
|
|
$lists[$key]['room_name'] = $room['room_name'].'-'.$room['room_number'];
|
|
|
|
|
|
$lists[$key]['room_number'] = $room['room_number'];
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$lists[$key]['room_name'] = "--";
|
|
|
|
|
|
$lists[$key]['room_number'] = "--";
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
|
|
|
|
|
$lists[$key]['room_cover'] = db::name('vs_room')->where('id', $value['from_id'])->value('room_cover');
|
|
|
|
|
|
$label = db::name('vs_room')->where('id', $value['from_id'])->value('label_id');
|
|
|
|
|
|
$lists[$key]['label'] = db::name('vs_room_label')->where('id', $label)->value('label_name');
|
2025-12-22 09:44:34 +08:00
|
|
|
|
//幸运币统计
|
2025-12-22 10:00:36 +08:00
|
|
|
|
$where_lucky = [];
|
2025-12-22 09:44:34 +08:00
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where_lucky['createtime'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
|
|
|
|
|
$where_lucky['createtime'] = ['<=', strtotime($end_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!empty($begin_time) && !empty($end_time)){
|
|
|
|
|
|
$where_lucky['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
|
|
|
|
|
|
}
|
2025-12-22 14:22:25 +08:00
|
|
|
|
$lists[$key]['lucky_coin'] = db::name('vs_room_luck_value')->where('room_id',$value['from_id'])->where($where_lucky)->sum('luck_value');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
2025-12-22 09:44:34 +08:00
|
|
|
|
$where_lucky = [];
|
2025-12-22 14:25:34 +08:00
|
|
|
|
if($search_room_id !== '' || $room_name !== ''){
|
2025-12-22 09:44:34 +08:00
|
|
|
|
$where_lucky['room_id'] = $room_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where_lucky['createtime'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
|
|
|
|
|
$where_lucky['createtime'] = ['<=', strtotime($end_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!empty($begin_time) && !empty($end_time)){
|
|
|
|
|
|
$where_lucky['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists,
|
|
|
|
|
|
'total' =>[
|
2025-12-22 09:44:34 +08:00
|
|
|
|
'total_price' => db::name('vs_give_gift')->where($where)->sum('total_price'),
|
|
|
|
|
|
'total_lucky_coin' => db::name('vs_room_luck_value')->where($where_lucky)->sum('luck_value'),
|
2025-08-07 20:21:47 +08:00
|
|
|
|
]
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//充值列表
|
|
|
|
|
|
public function get_recharge_list()
|
|
|
|
|
|
{
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 30);
|
|
|
|
|
|
$search_uid = input('search_uid', '');
|
|
|
|
|
|
$pay_stime = input('pay_stime', '');
|
|
|
|
|
|
$pay_etime = input('pay_etime', '');
|
|
|
|
|
|
$pay_status = input('pay_status', '');//1.待支付 2.支付成功
|
|
|
|
|
|
$order_sn = input('order_sn', '');
|
|
|
|
|
|
$pay_type = input('pay_type', '');//1.微信 2.支付宝
|
|
|
|
|
|
$money = input('money', '');
|
|
|
|
|
|
$where=[];
|
|
|
|
|
|
//标签名称
|
|
|
|
|
|
if($search_uid !== ''){
|
|
|
|
|
|
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
if($pay_stime !== ''){
|
|
|
|
|
|
$where['createtime'] = ['>=', strtotime($pay_stime)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($pay_etime !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['<=', strtotime($pay_etime)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(!empty($pay_stime) && !empty($pay_etime)){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['createtime'] = ['between',[strtotime($pay_stime),strtotime($pay_etime)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if($pay_status !== ''){
|
|
|
|
|
|
$where['pay_status'] = $pay_status;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($order_sn !== ''){
|
|
|
|
|
|
$where['order_sn'] = $order_sn;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($pay_type !== ''){
|
|
|
|
|
|
if($pay_type == 1){
|
|
|
|
|
|
$where['pay_type'] = ['in', [1,4]];
|
|
|
|
|
|
}elseif ($pay_type == 2){
|
|
|
|
|
|
$where['pay_type'] = ['in', [2,3]];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if($money !== ''){
|
|
|
|
|
|
$where['money'] = $money;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$count = db::name('vs_user_recharge')->where($where)->count();
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$lists = db::name('vs_user_recharge')->where($where)->order('rid desc')->page($page, $page_limit)->select();
|
2025-08-07 20:21:47 +08:00
|
|
|
|
foreach ($lists as $key => $value) {
|
|
|
|
|
|
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
|
|
|
|
|
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
|
|
|
|
|
|
db::name('user')->where('id', $value['user_id'])->value('user_code');
|
|
|
|
|
|
if($value['pay_type'] == 1 || $value['pay_type'] == 4){
|
|
|
|
|
|
$lists[$key]['pay_type_name'] = '微信支付';
|
|
|
|
|
|
}elseif ($value['pay_type'] == 2 || $value['pay_type'] == 3){
|
|
|
|
|
|
$lists[$key]['pay_type_name'] = '支付宝支付';
|
|
|
|
|
|
}
|
|
|
|
|
|
$lists[$key]['pay_status_str'] = $value['pay_status'] == 1 ? '待支付' : '已支付';
|
|
|
|
|
|
$lists[$key]['pay_time'] = $value['pay_time'] == 0 ? '' : date('Y-m-d H:i:s', $value['pay_time']);
|
|
|
|
|
|
}
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists
|
|
|
|
|
|
];
|
|
|
|
|
|
//总收入
|
|
|
|
|
|
$wherew=[];
|
2025-10-20 09:59:39 +08:00
|
|
|
|
unset($where['pay_status']);
|
|
|
|
|
|
unset($where['pay_type']);
|
|
|
|
|
|
$return_data['total_money'] = db::name('vs_user_recharge')->where($where)->sum('money');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//未支付
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$return_data['unpaid_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',1)->sum('money');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//已支付
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$return_data['paid_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->sum('money');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//微信支付
|
|
|
|
|
|
$wherew['pay_type'] = ['in', [1,4]];
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$return_data['wx_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->where($wherew)->sum('money');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//支付宝支付
|
|
|
|
|
|
$wherez['pay_type'] = ['in', [2,3]];
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$return_data['ali_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->where($wherez)->sum('money');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//金币数量
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$return_data['gold_num'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->sum('coin');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//兑换列表
|
|
|
|
|
|
public function get_exchange_list()
|
|
|
|
|
|
{
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 30);
|
|
|
|
|
|
$search_uid = input('search_uid', '');
|
|
|
|
|
|
$where=[];
|
|
|
|
|
|
if($search_uid !== ''){
|
|
|
|
|
|
if(is_numeric($search_uid)){
|
|
|
|
|
|
$where['b.user_code'] = $search_uid;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$where['b.nickname'] = ['like', '%'.$search_uid.'%'];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//时间筛选
|
|
|
|
|
|
$start_time = input('start_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
if($start_time !== ''){
|
|
|
|
|
|
$where['a.createtime'] = ['>=', strtotime($start_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['a.createtime'] = ['<=', strtotime($end_time)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if($start_time !== '' && $end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$count = db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->count();
|
|
|
|
|
|
$lists = db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->field('a.*,b.nickname,b.user_code')
|
2025-10-20 09:59:39 +08:00
|
|
|
|
->order('a.id desc')
|
2025-08-07 20:21:47 +08:00
|
|
|
|
->page($page, $page_limit)->select();
|
|
|
|
|
|
foreach ($lists as $key => $value) {
|
|
|
|
|
|
$lists[$key]['user_name'] = $value['nickname'].'-'.$value['user_code'];
|
|
|
|
|
|
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
|
|
|
|
|
}
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists,
|
|
|
|
|
|
'total' =>[
|
|
|
|
|
|
'total_coin_num' => db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->sum('earnings_num'),
|
|
|
|
|
|
'total_earnings_num' => db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->sum('coin_num'),
|
|
|
|
|
|
]
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
//后台手动充值列表
|
|
|
|
|
|
public function admin_recharge_list(){
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 10);
|
|
|
|
|
|
$where =[];
|
|
|
|
|
|
$search_id = input('search_id', '');
|
|
|
|
|
|
$search_name = input('search_name', '');
|
|
|
|
|
|
if($search_id){
|
|
|
|
|
|
$where['b.user_code'] = $search_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($search_name){
|
|
|
|
|
|
$where['b.username'] = ['like', '%'.$search_name.'%'];
|
|
|
|
|
|
}
|
|
|
|
|
|
$start_time = input('start_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
if($start_time !== ''){
|
|
|
|
|
|
$where['a.createtime'] = ['>=', strtotime($start_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['a.createtime'] = ['<=', strtotime($end_time)];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
if($start_time !== '' && $end_time !== ''){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
$count = db::name('vs_admin_recharge_log')
|
|
|
|
|
|
->alias('a')->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->count();
|
|
|
|
|
|
$lists = db::name('vs_admin_recharge_log')
|
|
|
|
|
|
->alias('a')->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->field('a.*,b.nickname')
|
|
|
|
|
|
->order('a.arid desc')
|
|
|
|
|
|
->page($page, $page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
foreach ($lists as &$list){
|
|
|
|
|
|
$user_code = model('api/Decorate')->user_decorate_detail($list['user_id'],6);
|
|
|
|
|
|
$list['nickname'] = $user_code."-".$list['nickname'];
|
|
|
|
|
|
$list['admin_name'] = db::name('admin')->where('id', $list['admin_id'])->value('username');
|
|
|
|
|
|
$list['type_str'] = model('common/UserWallet')::getMoneyType($list['type']);
|
|
|
|
|
|
$list['createtime'] = date('Y-m-d H:i:s', $list['createtime']);
|
|
|
|
|
|
}
|
|
|
|
|
|
//总充值(金币)
|
|
|
|
|
|
$total_coin = db::name('vs_admin_recharge_log')->where(['type'=>1])->sum('change_value');
|
|
|
|
|
|
//总充值(收益)
|
|
|
|
|
|
$total_earnings = db::name('vs_admin_recharge_log')->where(['type'=>2])->sum('change_value');
|
|
|
|
|
|
//今日充值(金币)
|
|
|
|
|
|
$today_coin =db::name('vs_admin_recharge_log')->where(['type'=>1])->whereTime('createtime', 'today')->sum('change_value');
|
|
|
|
|
|
//今日充值(收益)
|
|
|
|
|
|
$today_earnings = db::name('vs_admin_recharge_log')->where(['type'=>2])->whereTime('createtime', 'today')->sum('change_value');
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
|
|
|
|
|
'lists' => $lists,
|
|
|
|
|
|
'total_data' => [
|
|
|
|
|
|
'total_coin' => $total_coin,
|
|
|
|
|
|
'total_earnings' => $total_earnings,
|
|
|
|
|
|
'today_coin' => $today_coin,
|
|
|
|
|
|
'today_earnings' => $today_earnings
|
|
|
|
|
|
]
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
2025-12-18 16:30:46 +08:00
|
|
|
|
//任务统计
|
|
|
|
|
|
public function task_statistics(){
|
|
|
|
|
|
$page = input('page', 1);
|
|
|
|
|
|
$page_limit = input('page_limit', 10);
|
|
|
|
|
|
$search_id = input('search_uid', '');
|
|
|
|
|
|
$search_name = input('search_name', '');
|
|
|
|
|
|
$search_task_id = input('search_task_id', '');
|
|
|
|
|
|
$search_task_name = input('search_task_name', '');
|
|
|
|
|
|
$begin_time = input('begin_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
$where =[];
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$search_user_id = 0;
|
|
|
|
|
|
$search_gift_bag_id = 0;
|
2025-12-18 16:30:46 +08:00
|
|
|
|
if($search_id){
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$search_user_id= db::name('user')->where('user_code', $search_id)->value('id');
|
2025-12-18 16:30:46 +08:00
|
|
|
|
$where['b.user_code'] = $search_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($search_name){
|
|
|
|
|
|
$where['b.nickname'] = ['like', '%'.$search_name.'%'];
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$search_user_id= db::name('user')->where('nickname', $search_name)->value('id');
|
2025-12-18 16:30:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
if($search_task_id){
|
|
|
|
|
|
$where['a.task_id'] = $search_task_id;
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$search_gift_bag_id = db::name('vs_tasks')->where('id', $search_task_id)->value('tasks_bag_id');
|
2025-12-18 16:30:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
if($search_task_name){
|
|
|
|
|
|
$where['c.task_name'] = ['like', '%'.$search_task_name.'%'];
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$search_gift_bag_id = db::name('vs_tasks')->where('task_name', $search_task_name)->value('tasks_bag_id');
|
2025-12-18 16:30:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
if($begin_time !== ''){
|
|
|
|
|
|
$where['a.collection_time'] = ['>=', strtotime($begin_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($end_time !== ''){
|
|
|
|
|
|
$where['a.collection_time'] = ['<=', strtotime($end_time)];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 添加条件:只统计已领取的任务奖励
|
|
|
|
|
|
// $where['a.is_claimed'] = 1;
|
|
|
|
|
|
|
|
|
|
|
|
$count = db::name('vs_tasks_user_daily')
|
|
|
|
|
|
->alias('a')
|
|
|
|
|
|
->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->join('vs_tasks c', 'a.task_id = c.id')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->count();
|
|
|
|
|
|
$lists = db::name('vs_tasks_user_daily')
|
|
|
|
|
|
->alias('a')
|
|
|
|
|
|
->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->join('vs_tasks c', 'a.task_id = c.id')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->field('a.*,c.task_name,b.nickname,b.user_code,c.tasks_bag_id')
|
|
|
|
|
|
->order('a.id desc')
|
|
|
|
|
|
->page($page, $page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
|
|
// 收集所有需要的用户ID和任务包ID以批量获取数据
|
|
|
|
|
|
$user_ids = array_column($lists, 'user_id');
|
|
|
|
|
|
$bag_ids = array_unique(array_filter(array_column($lists, 'tasks_bag_id')));
|
|
|
|
|
|
|
|
|
|
|
|
// 批量获取用户装饰详情
|
|
|
|
|
|
$user_decorates = [];
|
|
|
|
|
|
if (!empty($user_ids)) {
|
|
|
|
|
|
foreach ($user_ids as $user_id) {
|
|
|
|
|
|
$user_decorates[$user_id] = model('api/Decorate')->user_decorate_detail($user_id, 6);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 批量获取奖励包详情
|
|
|
|
|
|
$bag_details = [];
|
|
|
|
|
|
if (!empty($bag_ids)) {
|
|
|
|
|
|
$details = db::name('vs_gift_bag_detail')
|
|
|
|
|
|
->where('gift_bag_id', 'in', $bag_ids)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($details as $detail) {
|
|
|
|
|
|
$bag_details[$detail['gift_bag_id']][] = $detail;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 获取所有相关礼品的价格信息
|
|
|
|
|
|
$gift_ids = [];
|
|
|
|
|
|
$decorate_ids = [];
|
|
|
|
|
|
foreach ($bag_details as $details) {
|
|
|
|
|
|
foreach ($details as $detail) {
|
|
|
|
|
|
if ($detail['type'] == 2) {
|
|
|
|
|
|
$gift_ids[] = $detail['foreign_id'];
|
|
|
|
|
|
} elseif ($detail['type'] == 3) {
|
|
|
|
|
|
$decorate_ids[] = $detail['foreign_id'];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 批量获取礼品价格
|
|
|
|
|
|
$gift_prices = [];
|
|
|
|
|
|
if (!empty($gift_ids)) {
|
|
|
|
|
|
$gifts = db::name('vs_gift')
|
|
|
|
|
|
->where('gid', 'in', array_unique($gift_ids))
|
|
|
|
|
|
->column('gift_price', 'gid');
|
|
|
|
|
|
$gift_prices = $gifts;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 批量获取装饰价格
|
|
|
|
|
|
$decorate_prices = [];
|
|
|
|
|
|
if (!empty($decorate_ids)) {
|
|
|
|
|
|
$decorates = db::name('vs_decorate_price')
|
|
|
|
|
|
->where('id', 'in', array_unique($decorate_ids))
|
|
|
|
|
|
->column('price', 'id');
|
|
|
|
|
|
$decorate_prices = $decorates;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$data_list = [];
|
|
|
|
|
|
$total_reward_price = 0;
|
|
|
|
|
|
foreach ($lists as $listkey=>$list){
|
|
|
|
|
|
$user_code = isset($user_decorates[$list['user_id']]) ? $user_decorates[$list['user_id']] : '';
|
|
|
|
|
|
$data_list[$listkey]['user_code'] = $user_code;
|
|
|
|
|
|
$data_list[$listkey]['nickname'] = $list['nickname']."-".$user_code;
|
|
|
|
|
|
$data_list[$listkey]['task_name'] = $list['task_name'];
|
|
|
|
|
|
$data_list[$listkey]['createtime'] = date('Y-m-d H:i:s', $list['createtime']);
|
|
|
|
|
|
$data_list[$listkey]['is_completed'] = $list['is_completed'];//是否已完成
|
|
|
|
|
|
$data_list[$listkey]['is_completed_str'] = $list['is_completed']==1 ?"是":"否";
|
|
|
|
|
|
//领取状态
|
|
|
|
|
|
$data_list[$listkey]['is_claimed'] = $list['is_claimed']; //奖励是否已领取
|
|
|
|
|
|
$data_list[$listkey]['is_claimed_str'] = $list['is_claimed']==1 ?"是":"否";
|
|
|
|
|
|
//奖品内容
|
|
|
|
|
|
$data_list[$listkey]['reward_str'] = "";
|
|
|
|
|
|
//奖品价值
|
|
|
|
|
|
$data_list[$listkey]['reward_price'] = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// 计算奖励信息
|
|
|
|
|
|
if (isset($bag_details[$list['tasks_bag_id']])) {
|
|
|
|
|
|
$reward_info = $bag_details[$list['tasks_bag_id']];
|
|
|
|
|
|
foreach ($reward_info as $value) {
|
|
|
|
|
|
//价格
|
|
|
|
|
|
$reward_price = 0;
|
|
|
|
|
|
if($value['type'] == 1){
|
|
|
|
|
|
$reward_name = $value['quantity'].$value['name'];
|
|
|
|
|
|
$reward_price = $value['gold'] * $value['quantity'];
|
|
|
|
|
|
}elseif($value['type'] == 2){
|
|
|
|
|
|
$reward_name = $value['name'].'x'.$value['quantity'];
|
|
|
|
|
|
$gift_price = isset($gift_prices[$value['foreign_id']]) ? $gift_prices[$value['foreign_id']] : 0;
|
|
|
|
|
|
$reward_price = $gift_price * $value['quantity'];
|
|
|
|
|
|
}elseif($value['type'] == 3){
|
|
|
|
|
|
$reward_name = $value['name'].'x'.$value['days'].'天';
|
|
|
|
|
|
//$reward_price = isset($decorate_prices[$value['foreign_id']]) ? $decorate_prices[$value['foreign_id']] : 0;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$reward_name = $value['quantity'].$value['name'];
|
|
|
|
|
|
//$reward_price = $value['gold'] * $value['quantity'];
|
|
|
|
|
|
}
|
|
|
|
|
|
$data_list[$listkey]['reward_str'] .= $reward_name." ";
|
|
|
|
|
|
$data_list[$listkey]['reward_price'] += $reward_price;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$return_data = [
|
|
|
|
|
|
'page' =>$page,
|
|
|
|
|
|
'page_limit' => $page_limit,
|
|
|
|
|
|
'count' => $count,
|
2026-01-05 11:22:05 +08:00
|
|
|
|
'total_reward_price' => 0,//$this->get_claimed_reward_price($begin_time, $end_time,$search_user_id,$search_gift_bag_id),
|
2025-12-18 16:30:46 +08:00
|
|
|
|
'lists' => $data_list,
|
|
|
|
|
|
];
|
|
|
|
|
|
return V(1,"成功", $return_data);
|
|
|
|
|
|
}
|
2026-01-05 11:22:05 +08:00
|
|
|
|
//每日任务领取金币统计
|
|
|
|
|
|
public function get_claimed_reward_price_show(){
|
|
|
|
|
|
$search_id = input('search_uid', '');
|
|
|
|
|
|
$search_name = input('search_name', '');
|
|
|
|
|
|
$search_task_id = input('search_task_id', '');
|
|
|
|
|
|
$search_task_name = input('search_task_name', '');
|
|
|
|
|
|
$begin_time = input('begin_time', '');
|
|
|
|
|
|
$end_time = input('end_time', '');
|
|
|
|
|
|
$search_user_id = 0;
|
|
|
|
|
|
if($search_id){
|
|
|
|
|
|
$search_user_id= db::name('user')->where('user_code', $search_id)->value('id');
|
|
|
|
|
|
}
|
|
|
|
|
|
if($search_name){
|
|
|
|
|
|
$search_user_id= db::name('user')->where('nickname', $search_name)->value('id');
|
|
|
|
|
|
}
|
|
|
|
|
|
$search_gift_bag_id = 0;
|
|
|
|
|
|
if($search_task_name){
|
|
|
|
|
|
$search_gift_bag_id = db::name('vs_tasks')->where('task_name', $search_task_name)->value('tasks_bag_id');
|
|
|
|
|
|
}
|
|
|
|
|
|
if($search_task_id){
|
|
|
|
|
|
$search_gift_bag_id = db::name('vs_tasks')->where('id', $search_task_id)->value('tasks_bag_id');
|
|
|
|
|
|
}
|
|
|
|
|
|
$total_reward_price = $this->get_claimed_reward_price($begin_time, $end_time,$search_user_id,$search_gift_bag_id);
|
|
|
|
|
|
return V(1,"成功", ['total_reward_price' => $total_reward_price]);
|
|
|
|
|
|
}
|
2025-12-18 16:30:46 +08:00
|
|
|
|
//获取已领取任务奖励的总价值
|
2025-12-18 19:17:32 +08:00
|
|
|
|
public function get_claimed_reward_price($stime="",$etime="",$search_user_id=0,$search_gift_bag_id=0){
|
2025-12-18 16:30:46 +08:00
|
|
|
|
//获取所有已领取的任务奖励礼包
|
|
|
|
|
|
$where = [];
|
|
|
|
|
|
if(!empty($stime)){
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$where['a.createtime'] = ['>=', strtotime($stime)];
|
2025-12-18 16:30:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(!empty($etime)){
|
2025-12-18 19:17:32 +08:00
|
|
|
|
$where['a.createtime'] = ['<=', strtotime($etime)];
|
2025-12-18 16:30:46 +08:00
|
|
|
|
}
|
2025-12-30 19:57:54 +08:00
|
|
|
|
if(!empty($stime) && !empty($etime)){
|
|
|
|
|
|
$where['a.createtime'] = ['between', [strtotime($stime), strtotime($etime)]];
|
|
|
|
|
|
}
|
2025-12-18 19:17:32 +08:00
|
|
|
|
if($search_user_id > 0){
|
|
|
|
|
|
$where['a.user_id'] = $search_user_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($search_gift_bag_id > 0){
|
|
|
|
|
|
$where['a.gift_bag_id'] = $search_gift_bag_id;
|
|
|
|
|
|
}
|
2026-01-05 18:19:28 +08:00
|
|
|
|
if(!empty($etime) && strtotime($etime)<="1767038400"){//2025-12-30 04:00:00
|
2025-12-30 19:57:54 +08:00
|
|
|
|
$tasks_bag_details = db::name('vs_gift_bag_receive_log')
|
|
|
|
|
|
->alias('a')
|
2026-01-05 18:19:28 +08:00
|
|
|
|
->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER')
|
2025-12-30 19:57:54 +08:00
|
|
|
|
->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold')
|
|
|
|
|
|
->where(['b.type'=>['in', [1,2]]])
|
2026-01-05 18:19:28 +08:00
|
|
|
|
->whereBetween('a.gift_bag_id', [18, 51])
|
2025-12-30 19:57:54 +08:00
|
|
|
|
->where($where)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$tasks_bag_details = db::name('vs_gift_bag_receive_tasks_log')
|
|
|
|
|
|
->alias('a')
|
2026-01-05 18:19:28 +08:00
|
|
|
|
->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER')
|
2025-12-30 19:57:54 +08:00
|
|
|
|
->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold')
|
|
|
|
|
|
->where(['b.type'=>['in', [1,2]]])
|
2026-01-05 18:19:28 +08:00
|
|
|
|
->whereBetween('a.gift_bag_id', [18, 51])
|
2025-12-30 19:57:54 +08:00
|
|
|
|
->where($where)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
}
|
2025-12-18 16:30:46 +08:00
|
|
|
|
$total_reward_price = 0;
|
2026-01-05 18:19:28 +08:00
|
|
|
|
// 批量获取礼物价格以减少数据库查询
|
|
|
|
|
|
$gift_ids = [];
|
|
|
|
|
|
foreach ($tasks_bag_details as $detail) {
|
|
|
|
|
|
if($detail['type'] == 2) {
|
|
|
|
|
|
$gift_ids[] = $detail['foreign_id'];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$gift_prices = [];
|
|
|
|
|
|
if (!empty($gift_ids)) {
|
|
|
|
|
|
$gifts = db::name('vs_gift')->where('gid', 'in', array_unique($gift_ids))->column('gift_price', 'gid');
|
|
|
|
|
|
$gift_prices = $gifts ?: [];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-18 16:30:46 +08:00
|
|
|
|
foreach ($tasks_bag_details as $detail){
|
|
|
|
|
|
if($detail['type'] == 1){
|
|
|
|
|
|
$total_reward_price += $detail['gold'] * $detail['quantity'];
|
|
|
|
|
|
}else{
|
2026-01-05 18:19:28 +08:00
|
|
|
|
$gift_price = isset($gift_prices[$detail['foreign_id']]) ? $gift_prices[$detail['foreign_id']] : 0;
|
2025-12-18 16:30:46 +08:00
|
|
|
|
$total_reward_price += $gift_price * $detail['quantity'];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return $total_reward_price;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|