diff --git a/application/adminapi/controller/GiveGift.php b/application/adminapi/controller/GiveGift.php index 7808a291..682f95a3 100644 --- a/application/adminapi/controller/GiveGift.php +++ b/application/adminapi/controller/GiveGift.php @@ -4,6 +4,7 @@ namespace app\adminapi\controller; ini_set('memory_limit', '512M'); // 临时增加到512MB use app\common\controller\adminApi; use think\Db; +use think\Log; class GiveGift extends adminApi { @@ -27,9 +28,13 @@ class GiveGift extends adminApi $from_id = input('from_id', '');//礼物来源id $gift_id = input('gift_id', '');//礼物id $from = input('from', '');// 来源类型,1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼 - $start_time = input('start_time', ''); - $end_time = input('end_time', ''); - + //获取当前月份的开始时间和结束时间 + $firstDay = date('Y-m-01'); + $lastDay = date('Y-m-t 23:59:59'); + $start_time = input('start_time', $firstDay); + $end_time = input('end_time', $lastDay); + $search_time = []; + $search_time = [strtotime($start_time), strtotime($end_time)]; $where=[]; $gwhere = []; if($send_user != ''){ @@ -73,20 +78,27 @@ class GiveGift extends adminApi $gwhere['gg.createtime'] = ['<=', strtotime($end_time)]; } } + $page_array = []; + $page_array = [ + 'page' => !empty($page)?$page:1, + 'page_limit' => !empty($page_limit)?$page_limit:10, + ]; + $gift_list = model('Gift')->getGiftRecords($search_time,$where,$page_array); //礼物总数 - $gift_num = db::name('vs_give_gift')->where($where)->sum('number'); + $gift_num = $gift_list['number']; //总金额 - $total_price = db::name('vs_give_gift')->where($where)->sum('total_price'); + $total_price = $gift_list['total_price']; //平台收益 $app_earning = 0; //接收人收益 $receive_earning = 0; //房主收益 $room_owner_earning = 0; - // 获取所有送礼记录 - $lists = db::name('vs_give_gift')->where($where)->order('id', 'desc')->page($page, $page_limit)->select(); - $count = db::name('vs_give_gift')->where($where)->count(); + $lists = $gift_list['lists']; + $count = $gift_list['count']; +// $lists = db::name('vs_give_gift')->where($where)->order('id', 'desc')->page($page, $page_limit)->select(); +// $count = db::name('vs_give_gift')->where($where)->count(); $earning_list = []; if(!empty($where)){ $earning_list = db::name('vs_give_gift_ratio_log') @@ -231,4 +243,5 @@ class GiveGift extends adminApi $start = ($page - 1) * $limit; return array_slice($array, $start, $limit); } + } \ No newline at end of file diff --git a/application/adminapi/model/Gift.php b/application/adminapi/model/Gift.php index 7c3ae351..87f03d72 100644 --- a/application/adminapi/model/Gift.php +++ b/application/adminapi/model/Gift.php @@ -2,6 +2,8 @@ namespace app\adminapi\model; +use app\common\library\GiftTableManager; +use think\Log; use think\Model; use think\Session; use think\Db; @@ -78,4 +80,102 @@ class Gift extends Model } return $res; } + + /** + * 获取送礼记录 + */ + + public function getGiftRecords($search_time,$where,$page_array) + { + // 获取需要查询的表 + $tables = GiftTableManager::getTablesByTimeRange( + $search_time[0], + $search_time[1] + ); + //数组排序fa_vs_give_gift_202601 表明数字大的排在前面 + arsort($tables); + + $gift_count = 0; + $gift_total_price = 0; + $gift_number = 0; + $all_lists = []; // 存储所有查询结果 + $remaining_page_offset = ($page_array['page'] - 1) * $page_array['page_limit']; // 需要跳过的记录数 + $collected_count = 0; // 已收集的记录数 + if($tables){ + foreach ($tables as $table) { + $table_name = substr($table, 3);//截取可查询的表名 + + // 获取当前表的总记录数 + $count = db::name($table_name)->where($where)->count(); + + if($count > 0){ + // 如果还需要跳过记录 + if($remaining_page_offset > 0){ + // 如果当前表的记录数大于需要跳过的记录数 + if($count > $remaining_page_offset){ + // 从当前表中获取所需数据,跳过前面的记录 + $table_lists = db::name($table_name) + ->where($where) + ->order('createtime', 'desc') + ->limit($remaining_page_offset, $page_array['page_limit']) + ->select(); + + // 添加到结果中 + foreach($table_lists as $item){ + if($collected_count < $page_array['page_limit']){ + $all_lists[] = $item; + $collected_count++; + } else { + break; + } + } + + $remaining_page_offset = 0; // 已经跳过所需的记录 + } else { + // 当前表的所有记录都需要跳过 + $remaining_page_offset -= $count; + } + } else if($collected_count < $page_array['page_limit']) { + // 如果不需要跳过记录,且还没有收集足够的数据 + $remaining_needed = $page_array['page_limit'] - $collected_count; + + // 从当前表获取剩余所需的数据 + $table_lists = db::name($table_name) + ->where($where) + ->order('createtime', 'desc') + ->limit($remaining_needed) + ->select(); + + // 添加到结果中 + foreach($table_lists as $item){ + if($collected_count < $page_array['page_limit']){ + $all_lists[] = $item; + $collected_count++; + } else { + break; + } + } + } + + $total_price = db::name($table_name)->where($where)->sum('total_price'); + $number = db::name($table_name)->where($where)->sum('number'); + $gift_count += $count; + $gift_total_price += $total_price; + $gift_number += $number; + + // 如果已经收集到足够数据,跳出循环 + if($collected_count >= $page_array['page_limit']){ + break; + } + } + } + } + $result = [ + 'lists' => $all_lists, + 'count' => $gift_count, + 'total_price' => $gift_total_price, + 'number' => $gift_number, + ]; + return $result; + } }