From 67b2e8801a383c0f54fb2647dff56b3f661c4994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=92=8A?= Date: Fri, 23 Jan 2026 19:00:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E7=83=AD=E5=BA=A6=E5=8D=A1?= =?UTF-8?q?=E5=BC=80=E5=8F=91-=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Decorate.php | 9 ++ application/api/model/Decorate.php | 154 ++++++++++++++++++++++-- 2 files changed, 153 insertions(+), 10 deletions(-) diff --git a/application/api/controller/Decorate.php b/application/api/controller/Decorate.php index 502ccec4..0cc81516 100644 --- a/application/api/controller/Decorate.php +++ b/application/api/controller/Decorate.php @@ -94,4 +94,13 @@ class Decorate extends BaseCom return v($reslut['code'], $reslut['msg'], $reslut['data']); } + //房间热度卡使用 + public function room_hot_card(){ + $uid = $this->uid; + $udid = input('udid', 0); + $room_id = input('room_id', 0); + $num = input('num', 1); + $reslut = model('Decorate')->room_hot_card($uid,$udid,$room_id,$num); + } + } diff --git a/application/api/model/Decorate.php b/application/api/model/Decorate.php index f1f6d050..c68ef90c 100644 --- a/application/api/model/Decorate.php +++ b/application/api/model/Decorate.php @@ -443,6 +443,7 @@ class Decorate extends Model Db::rollback(); return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; } + $increase_hot_value_all = 0; for ($i = 0; $i < $num; $i++) { $increase_hot_value = db::name('vs_decorate')->where(['did' => $info['did']])->value('ext_value') ?? 0; if ($room_info['today_hot_value'] <= $increase_hot_value) { @@ -450,17 +451,18 @@ class Decorate extends Model } else { db::name('vs_room')->where(['id' => $room_id])->setInc('today_hot_value', $increase_hot_value); } - //记录日志 - db::name('vs_room_hot_up_log')->insert([ - 'did' => $udid, - 'user_id' => $uid, - 'room_id' => $room_id, - 'hot_value' => $increase_hot_value, - 'before_hot_value' => $room_info['today_hot_value'], - 'end_time' => date('Y-m-d H:00:00', time()), - 'createtime' => time() - ]); + $increase_hot_value_all += $increase_hot_value; } + //记录日志 + db::name('vs_room_hot_up_log')->insert([ + 'did' => $udid, + 'user_id' => $uid, + 'room_id' => $room_id, + 'hot_value' => $increase_hot_value_all, + 'before_hot_value' => $room_info['today_hot_value'], + 'end_time' => date('Y-m-d H:00:00', time()), + 'createtime' => time() + ]); } else{ //推送信息去所在房间 //查询当前所在房间 @@ -580,4 +582,136 @@ class Decorate extends Model } return $reslut; } + + //房间热度卡使用 + public function room_hot_card($uid,$udid,$room_id,$num=1) + { + $map = []; + if($udid){ + $map = [ + 'user_id' => $uid, + 'udid' => $udid + ]; + $info = db::name('vs_user_decorate')->where($map)->find(); + if (empty($info)) { + return ['code' => 0, 'msg' => '房间热度卡不存在', 'data' => null]; + } + if(in_array($info['type'],array_keys($this->SpecialType))){ + if ($info['num']-1 < 0) { + return ['code' => 0, 'msg' => '无可用房间热度卡', 'data' => null]; + } + } + }else{ + $map = [ + 'user_id' => $uid, + 'type' => 13, + 'num' => ['>',0] + ]; + $info = db::name('vs_user_decorate')->where($map)->select(); + } + + Db::startTrans(); + try { + if($udid){ + $map = [ + 'user_id' => $uid, + 'udid' => $udid + ]; + $data = []; + $data['is_using'] = 1; + $data['updatetime'] = time(); + $data['num'] = $info['num'] - $num; + $reslut = Db::name('vs_user_decorate')->where($map)->update($data); + if (!$reslut) { + Db::rollback(); + return ['code' => 0, 'msg' => "设置失败", 'data' => null]; + } + + if (empty($room_id)) { + Db::rollback(); + return ['code' => 0, 'msg' => '请选择房间', 'data' => null]; + } + $room_info = db::name('vs_room')->where(['id' => $room_id])->find(); + if (empty($room_info)) { + Db::rollback(); + return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; + } + $increase_hot_value_all = 0; + for ($i = 0; $i < $num; $i++) { + $increase_hot_value = db::name('vs_decorate')->where(['did' => $info['did']])->value('ext_value') ?? 0; + if ($room_info['today_hot_value'] <= $increase_hot_value) { + db::name('vs_room')->where(['id' => $room_id])->update(['today_hot_value' => 0]); + } else { + db::name('vs_room')->where(['id' => $room_id])->setInc('today_hot_value', $increase_hot_value); + } + $increase_hot_value_all += $increase_hot_value; + } + //记录日志 + db::name('vs_room_hot_up_log')->insert([ + 'did' => $udid, + 'user_id' => $uid, + 'room_id' => $room_id, + 'hot_value' => $increase_hot_value_all, + 'before_hot_value' => $room_info['today_hot_value'], + 'end_time' => date('Y-m-d H:00:00', time()), + 'createtime' => time() + ]); + }else{ + $map = [ + 'user_id' => $uid, + 'type' => 13, + 'num' => ['>',0] + ]; + $data = []; + $data['is_using'] = 1; + $data['updatetime'] = time(); + $data['num'] = 0; + $result = Db::name('vs_user_decorate')->where($map)->update($data); + if (!$result) { + Db::rollback(); + return ['code' => 0, 'msg' => "设置失败", 'data' => null]; + } + if (empty($room_id)) { + Db::rollback(); + return ['code' => 0, 'msg' => '请选择房间', 'data' => null]; + } + $room_info = db::name('vs_room')->where(['id' => $room_id])->find(); + if (empty($room_info)) { + Db::rollback(); + return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; + } + $increase_hot_value_all = 0; + foreach ($info as $key => $value) { + $increase_hot_value = db::name('vs_decorate')->where(['did' => $value['did']])->value('ext_value') ?? 0; + $increase_hot_value = $increase_hot_value * $num; + if ($room_info['today_hot_value'] <= $increase_hot_value) { + db::name('vs_room')->where(['id' => $room_id])->update(['today_hot_value' => 0]); + } else { + db::name('vs_room')->where(['id' => $room_id])->setInc('today_hot_value', $increase_hot_value); + } + $increase_hot_value_all += $increase_hot_value; + } + //记录日志 + db::name('vs_room_hot_up_log')->insert([ + 'did' => $udid, + 'user_id' => $uid, + 'room_id' => $room_id, + 'hot_value' => $increase_hot_value_all, + 'before_hot_value' => $room_info['today_hot_value'], + 'end_time' => date('Y-m-d H:00:00', time()), + 'createtime' => time() + ]); + } + // 提交事务 + Db::commit(); + //更新装备缓存 + $cache_key = 'user_base_info_'.$uid; + Cache::rm($cache_key); + return ['code' => 1, 'msg' => "设置成功", 'data' => null]; + } catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return ['code' => 0, 'msg' => "设置失败", 'data' => null]; + } + } }