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 !== ''){ $where['createtime'] = ['<=', strtotime($end_time)]; } if(!empty($begin_time) && !empty($end_time)){ $where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]]; } $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', ''); $firstDay = date('Y-m-01'); $lastDay = date('Y-m-t 23:59:59'); $begin_time = empty($begin_time) ? $firstDay : $begin_time; $end_time = empty($end_time) ? $lastDay : $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 !== ''){ $where['createtime'] = ['<=', strtotime($end_time)]; } if(!empty($begin_time) && !empty($end_time)){ $where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]]; } $tables = GiftTableManager::getTablesByTimeRange( strtotime($begin_time), strtotime($end_time) ); if(empty($tables)){ $tables = "fa_vs_give_gift"; } $table_name = substr($tables[0], 3);//截取可查询的表名 $count = db::name($table_name) ->where($where) ->group($group) ->count(); $lists = db::name($table_name) ->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 !== ''){ $where['createtime'] = ['<=', strtotime($end_time)]; } if(!empty($begin_time) && !empty($end_time)){ $where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]]; } // 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 !== ''){ $where['createtime'] = ['<=', strtotime($end_time)]; } if(!empty($begin_time) && !empty($end_time)){ $where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]]; } //不为空 $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(); 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'] = "--"; } $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'); //幸运币统计 $where_lucky = []; 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)]]; } $lists[$key]['lucky_coin'] = db::name('vs_room_luck_value')->where('room_id',$value['from_id'])->where($where_lucky)->sum('luck_value'); } $where_lucky = []; if($search_room_id !== '' || $room_name !== ''){ $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)]]; } $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_lucky_coin' => db::name('vs_room_luck_value')->where($where_lucky)->sum('luck_value'), ] ]; 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 !== ''){ $where['createtime'] = ['<=', strtotime($pay_etime)]; } if(!empty($pay_stime) && !empty($pay_etime)){ $where['createtime'] = ['between',[strtotime($pay_stime),strtotime($pay_etime)]]; } 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(); $lists = db::name('vs_user_recharge')->where($where)->order('rid 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'); 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=[]; unset($where['pay_status']); unset($where['pay_type']); $return_data['total_money'] = db::name('vs_user_recharge')->where($where)->sum('money'); //未支付 $return_data['unpaid_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',1)->sum('money'); //已支付 $return_data['paid_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->sum('money'); //微信支付 $wherew['pay_type'] = ['in', [1,4]]; $return_data['wx_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->where($wherew)->sum('money'); //支付宝支付 $wherez['pay_type'] = ['in', [2,3]]; $return_data['ali_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->where($wherez)->sum('money'); //金币数量 $return_data['gold_num'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->sum('coin'); 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 !== ''){ $where['a.createtime'] = ['<=', strtotime($end_time)]; } if($start_time !== '' && $end_time !== ''){ $where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]]; } $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') ->order('a.id desc') ->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 !== ''){ $where['a.createtime'] = ['<=', strtotime($end_time)]; } if($start_time !== '' && $end_time !== ''){ $where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]]; } $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); } //任务统计 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 =[]; $search_user_id = 0; $search_gift_bag_id = 0; if($search_id){ $where['b.user_code'] = $search_id; } if($search_name){ $where['b.nickname'] = ['like', '%'.$search_name.'%']; } if($search_task_id){ $where['a.task_id'] = $search_task_id; } if($search_task_name){ $where['c.task_name'] = ['like', '%'.$search_task_name.'%']; } if(!empty($begin_time) && !empty($end_time)){ $where['a.collection_time'] = ['between', [strtotime($begin_time), strtotime($end_time)]]; }else{ if(!empty($begin_time)){ $where['a.collection_time'] = ['>=', strtotime($begin_time)]; }elseif(!empty($end_time)){ $where['a.collection_time'] = ['<=', strtotime($end_time)]; } } if(!empty($begin_time) && !empty($end_time)){ $where['a.createtime'] = ['between', [strtotime($begin_time), strtotime($end_time)]]; }else{ if(!empty($begin_time)){ $where['a.createtime'] = ['>=', strtotime($begin_time)]; }elseif(!empty($end_time)){ $where['a.createtime'] = ['<=', 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; $data_list[$listkey]['completion_time'] = date('Y-m-d H:i:s', $list['completion_time']); $data_list[$listkey]['collection_time'] = date('Y-m-d H:i:s', $list['collection_time']); // 计算奖励信息 if (isset($bag_details[$list['tasks_bag_id']])) { if($list['task_id']==1){ $sign_in_info = Db::name('vs_user_tasks_sign_in')->where(['user_id'=>$list['user_id'],'sign_in_date'=>date('Y-m-d', $list['createtime'])])->order('id desc')->find(); if($sign_in_info){ $data_list[$listkey]['reward_str'] = ($bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['gold'] * $bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['quantity']) .$bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['name']; $data_list[$listkey]['reward_price'] = $bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['gold'] * $bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['quantity']; } }else{ $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, 'total_reward_price' => 0,//$this->get_claimed_reward_price($begin_time, $end_time,$search_user_id,$search_gift_bag_id), 'lists' => $data_list, ]; return V(1,"成功", $return_data); } //每日任务领取金币统计 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]); } //获取已领取任务奖励的总价值 public function get_claimed_reward_price($stime="",$etime="",$search_user_id=0,$search_gift_bag_id=0){ //获取所有已领取的任务奖励礼包 $where = []; 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; } if(!empty($etime) && strtotime($etime)<="1767114849"){//2025-12-31 01:14:09 if(!empty($stime) && !empty($etime)){ $where['a.createtime'] = ['between', [strtotime($stime), strtotime($etime)]]; }else{ if(!empty($stime)){ $where['a.createtime'] = ['>=', strtotime($stime)]; }elseif(!empty($etime)){ $where['a.createtime'] = ['<=', strtotime($etime)]; } } $tasks_bag_details = db::name('vs_gift_bag_receive_log') ->alias('a') ->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER') ->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold') ->where(['b.type'=>['in', [1,2]]]) ->whereBetween('a.gift_bag_id', [18, 51]) ->where($where) ->select(); }else{ if(!empty($stime) && strtotime($stime)<="1767114849" && strtotime($etime)>"1767114849"){ $old_tasks_bag_details = db::name('vs_gift_bag_receive_log') ->alias('a') ->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER') ->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold') ->where(['b.type'=>['in', [1,2]]]) ->whereBetween('a.gift_bag_id', [18, 51]) ->whereBetween('a.createtime', [strtotime($stime), 1767114849]) ->where($where) ->select(); $new_tasks_bag_details = db::name('vs_gift_bag_receive_tasks_log') ->alias('a') ->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER') ->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold') ->where(['b.type'=>['in', [1,2]]]) ->whereBetween('a.gift_bag_id', [18, 51]) ->whereBetween('a.createtime', [1767114849, strtotime($etime)]) ->where($where) ->select(); $tasks_bag_details = array_merge($old_tasks_bag_details, $new_tasks_bag_details); }else{ if(!empty($stime) && !empty($etime)){ $where['a.createtime'] = ['between', [strtotime($stime), strtotime($etime)]]; }else{ if(!empty($stime)){ $where['a.createtime'] = ['>=', strtotime($stime)]; }elseif(!empty($etime)){ $where['a.createtime'] = ['<=', strtotime($etime)]; } } $tasks_bag_details = db::name('vs_gift_bag_receive_tasks_log') ->alias('a') ->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER') ->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold') ->where(['b.type'=>['in', [1,2]]]) ->whereBetween('a.gift_bag_id', [18, 51]) ->where($where) ->select(); } } $total_reward_price = 0; // 批量获取礼物价格以减少数据库查询 $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 ?: []; } foreach ($tasks_bag_details as $detail){ if($detail['type'] == 1){ $total_reward_price += $detail['gold'] * $detail['quantity']; }else{ $gift_price = isset($gift_prices[$detail['foreign_id']]) ? $gift_prices[$detail['foreign_id']] : 0; $total_reward_price += $gift_price * $detail['quantity']; } } return $total_reward_price; } }