礼物墙

This commit is contained in:
2026-01-22 15:12:08 +08:00
parent d636d64fe7
commit 46f644aacf
4 changed files with 74 additions and 15 deletions

View File

@@ -82,6 +82,16 @@ class User extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']); return V($reslut['code'], $reslut['msg'], $reslut['data']);
} }
//礼物墙用户列表
public function gift_wall_user_list()
{
$uid = input('user_id', 0);
$gift_id = input('gift_id', 0);
$reslut = model('User')->gift_wall_user_list($uid,$gift_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//相册列表 //相册列表
public function get_album_list() public function get_album_list()
{ {

View File

@@ -421,19 +421,47 @@ class GiveGift extends Model
//使用收礼用户 和礼物ID 查询礼物墙 //使用收礼用户 和礼物ID 查询礼物墙
$gift_wall = db::name('user_gift_wall')->where(['user_id'=>$to_id,'gift_id'=>$gid])->find(); $gift_wall = db::name('user_gift_wall')->where(['user_id'=>$to_id,'gift_id'=>$gid])->find();
if($gift_wall){ if($gift_wall){//更新
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])->inc('count',$num)->update(); //往期送礼用户
$userIds = explode(',',$gift_wall['give_user_ids']); $users = json_decode($gift_wall['give_user_ids'], true);
if(!in_array($uid,$userIds)){ if($users){
$userIds[] = $uid; $ture = false;
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])->update(['give_user_ids'=>implode(',',$userIds)]); foreach ($users as $user_id){
if($user_id['user_id'] == $uid){
$user_id['count'] += $num;
$ture = true;
}
}
if(!$ture){
$users[] = [
'user_id' => $uid,
'count' => $num
];
}
$users_list = json_encode($users);
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])
->update(['give_user_ids'=>$users_list,'updatetime' => time(),'count' => $gift_wall['count'] + $num]);
}else{
$users[] = [
'user_id' => $uid,
'count' => $num
];
$users_list = json_encode($users);
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])
->update(['give_user_ids'=>$users_list,'updatetime' => time(),'count' => $num]);
} }
}else{
}else{//新增
$users[] = [
'user_id' => $uid,
'count' => $num
];
$users_list = json_encode($users);
db::name('user_gift_wall')->insert([ db::name('user_gift_wall')->insert([
'user_id' => $to_id, 'user_id' => $to_id,
'gift_id' => $gid, 'gift_id' => $gid,
'count' => $num, 'count' => $num,
'give_user_ids' => $uid, 'give_user_ids' => $users_list,
'updatetime' => time() 'updatetime' => time()
]); ]);
} }

View File

@@ -518,6 +518,26 @@ class User extends Model
return ['code' => 1, 'msg' => '获取成功', 'data' => $redata]; return ['code' => 1, 'msg' => '获取成功', 'data' => $redata];
} }
//礼物墙用户列表
public function gift_wall_user_list($uid, $gift_id){
$result = db::name('user_gift_wall')
->where(['user_id' => $uid,'gift_id' => $gift_id])
->value('give_user_ids');
$user = [];
$count = 0;
if($result){
$user_list = json_decode($result, true);
foreach ($user_list as $user_id){
$user[] = db::name('user')->where(['id' => $user_id['user_id']])->field('id user_id,nickname,avatar')->find();
$user[]['count'] = $user_id['count'];
$count += $user_id['count'];
}
}
return ['code' => 1, 'msg' => '获取成功', 'data' => ['count' => $count, 'users' =>$user]];
}
//添加用户访问记录 //添加用户访问记录
/* /*
* @param $to_id 被访问对象id * @param $to_id 被访问对象id

View File

@@ -297,7 +297,7 @@ class PerformPerSecond
->where('end_time', '<', $now) ->where('end_time', '<', $now)
->where('left_count', '>', 0) ->where('left_count', '>', 0)
->select(); ->select();
$processedCounts = 0;
foreach ($expiredRedpackets as $redpacket) { foreach ($expiredRedpackets as $redpacket) {
Db::startTrans(); Db::startTrans();
try { try {
@@ -320,28 +320,29 @@ class PerformPerSecond
} }
} }
// 更新红包状态为已结束 // 更新红包状态为已退款
Db::name('redpacket') Db::name('redpacket')
->where('id', $redpacket['id']) ->where('id', $redpacket['id'])
->update([ ->update([
'status' => Redpacket::STATUS_FINISHED, 'status' => Redpacket::STATUS_REFUNDED,
'updatetime' => $now 'updatetime' => $now
]); ]);
// 更新Redis缓存 // 清理Redis缓存
$redis = Cache::store('redis')->handler(); $redis = Cache::store('redis')->handler();
$redisKey = "redpacket:{$redpacket['id']}"; $redisKey = "redpacket:{$redpacket['id']}";
$redis->hSet($redisKey, 'status', Redpacket::STATUS_FINISHED); $redis->del($redisKey);
Db::commit(); Db::commit();
$processedCount++; $processedCounts++;
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollback(); Db::rollback();
// 记录日志 // 记录日志
\think\Log::error("红包退款失败: {$redpacket['id']}, 错误: " . $e->getMessage()); \think\Log::error("红包退款失败: {$redpacket['id']}, 错误: " . $e->getMessage());
} }
} }
echo "处理过期红包-共". $processedCount . "条数据\n"; echo "处理过期红包-共". $processedCounts . "条数据\n";
echo "处理未开始红包-共". $processedCount . "条数据\n";
} }
//签约房时间结束处理和签约到期处理 //签约房时间结束处理和签约到期处理