2025-08-07 20:21:47 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace app\adminapi\model;
|
|
|
|
|
|
|
2026-01-12 18:51:03 +08:00
|
|
|
|
use app\common\library\GiftTableManager;
|
|
|
|
|
|
use think\Log;
|
2025-08-07 20:21:47 +08:00
|
|
|
|
use think\Model;
|
|
|
|
|
|
use think\Session;
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
|
class Gift extends Model
|
|
|
|
|
|
{
|
|
|
|
|
|
// 开启自动写入时间戳字段
|
|
|
|
|
|
protected $autoWriteTimestamp = 'int';
|
|
|
|
|
|
// 定义时间戳字段名
|
|
|
|
|
|
protected $createTime = 'createtime';
|
|
|
|
|
|
protected $updateTime = 'updatetime';
|
|
|
|
|
|
|
|
|
|
|
|
protected $name = 'vs_gift';
|
|
|
|
|
|
|
|
|
|
|
|
//礼物类型 1普通 2盲盒 3礼包礼物
|
|
|
|
|
|
public $giftType = [
|
|
|
|
|
|
1 => '普通礼物',
|
|
|
|
|
|
2 => '盲盒礼物',
|
2026-01-04 11:38:38 +08:00
|
|
|
|
3 => '礼包礼物',
|
2026-01-09 14:38:07 +08:00
|
|
|
|
6 => '酒吧房礼物'
|
2025-08-07 20:21:47 +08:00
|
|
|
|
];
|
|
|
|
|
|
//送礼流水来源:1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏
|
|
|
|
|
|
public $GiveGiftFromStr = [
|
|
|
|
|
|
1 => '聊天送礼',
|
|
|
|
|
|
2 => '房间语聊送礼',
|
|
|
|
|
|
3 => '直播送礼',
|
2026-01-04 11:38:38 +08:00
|
|
|
|
4 => '动态打赏',
|
|
|
|
|
|
5 => '房心愿礼物',
|
|
|
|
|
|
6 => '酒吧房自定义礼物',
|
|
|
|
|
|
7 => '酒吧房普通礼物',
|
|
|
|
|
|
8 => '酒吧房小黑屋礼物'
|
2025-08-07 20:21:47 +08:00
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
public function getList($where = [], $page = 1, $limit = 10)
|
|
|
|
|
|
{
|
|
|
|
|
|
$where['delete_time'] = 0;
|
|
|
|
|
|
$list = $this->where($where)->page($page, $limit)->select();
|
|
|
|
|
|
$list = collection($list)->toArray();
|
|
|
|
|
|
return $list;
|
|
|
|
|
|
}
|
|
|
|
|
|
public function getCount($where = [])
|
|
|
|
|
|
{
|
|
|
|
|
|
$where['delete_time'] = 0;
|
|
|
|
|
|
return $this->where($where)->count();
|
|
|
|
|
|
}
|
|
|
|
|
|
public function getOne($where = [])
|
|
|
|
|
|
{
|
|
|
|
|
|
$one = $this->where($where)->find();
|
|
|
|
|
|
return $one;
|
|
|
|
|
|
}
|
|
|
|
|
|
public function add($data)
|
|
|
|
|
|
{
|
|
|
|
|
|
$res = $this->save($data);
|
|
|
|
|
|
if (!$res) {
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
$guild_id = $this->id;
|
|
|
|
|
|
return $guild_id;
|
|
|
|
|
|
}
|
|
|
|
|
|
public function edit($where = [], $data = [])
|
|
|
|
|
|
{
|
|
|
|
|
|
$res = $this->where($where)->update($data);
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
|
|
|
|
|
public function del($where = [])
|
|
|
|
|
|
{
|
|
|
|
|
|
$res = $this->where($where)->delete();
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
|
|
|
|
|
//软删除
|
|
|
|
|
|
public function setDel($where = []){
|
|
|
|
|
|
$res = $this->where($where)->setField('delete_time',time());
|
|
|
|
|
|
if(!$res){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
2026-01-12 18:51:03 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取送礼记录
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|