From 28e4417ce5be942f3afa31667062f20fdcc390cf Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 09:55:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hivekion/baseData/controller/ImgVehicleImageController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java index 3d1c029..2ee7dea 100644 --- a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java +++ b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java @@ -1,4 +1,4 @@ -package com.hivekion.basedata.controller; +package com.hivekion.baseData.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.stereotype.Controller; From 5105dd13e7e626f65518ccfcde35185ab50dd7a9 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 09:56:41 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java b/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java index 48a3556..66cb3f6 100644 --- a/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java +++ b/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java @@ -1,4 +1,4 @@ -package com.hivekion.basedata.entity; +package com.hivekion.baseData.entity; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; From cd76249853c1a6785b2c0a8d539b82f588cda261 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 10:30:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WeatherResourceServiceImpl.java | 2 +- .../hivekion/room/bean/BattleRootTask.java | 45 ++++++++++++++----- .../java/com/hivekion/room/bean/Room.java | 30 ++++++++++++- src/main/java/com/hivekion/ws/WsServer.java | 2 +- 4 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java index 05bc715..97b8a3a 100644 --- a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java +++ b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java @@ -28,7 +28,7 @@ public class WeatherResourceServiceImpl extends ServiceImpl().eq("scenario_id",ebe.getScenarioId())).stream().count(); } } diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index c283d15..997edc1 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -143,40 +143,63 @@ public class BattleRootTask extends AbtParentTask { medicalConsume = intervalDuringTime * MEDICAL_SPREED* RoomManager.getMag(roomId); - if(scenarioInfoOnTime.getAmmunition().getCurrent() >0) { + if(scenarioInfoOnTime.getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)>0) { scenarioInfoOnTime.getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume)); + }else{ + scenarioInfoOnTime.getAmmunition().setCurrent(0D); } - if(scenarioInfoOnTime.getFood().getCurrent() > 0) { + if(scenarioInfoOnTime.getFood().getCurrent() -Double.valueOf(food - foodConsume)> 0) { scenarioInfoOnTime.getFood().setCurrent(Double.valueOf(food - foodConsume)); + }else{ + scenarioInfoOnTime.getFood().setCurrent(0D); } - if(scenarioInfoOnTime.getMedical().getCurrent() > 0) { + if(scenarioInfoOnTime.getMedical().getCurrent() -Double.valueOf(medical - medicalConsume)> 0) { scenarioInfoOnTime.getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); + }else{ + scenarioInfoOnTime.getMedical().setCurrent(0D); } - if(scenarioInfoOnTime.getWater().getCurrent() > 0) { + if(scenarioInfoOnTime.getWater().getCurrent() - Double.valueOf(water - waterConsume)> 0) { scenarioInfoOnTime.getWater().setCurrent(Double.valueOf(water - waterConsume)); + }else{ + scenarioInfoOnTime.getWater().setCurrent(0D); } scenarioInfoOnTime.getPerson().setDeath(Long.valueOf(death + deathConsume).intValue()); scenarioInfoOnTime.getPerson().setInjured(Long.valueOf(injured + injuredConsume).intValue()); - scenarioInfoOnTime.getPerson().setCurrent(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue()); - + if(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue() <0){ + scenarioInfoOnTime.getPerson().setCurrent(0); + }else { + scenarioInfoOnTime.getPerson().setCurrent(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue() - Long.valueOf(injuredConsume).intValue()); + } String updJsonStr = (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo"); EditScenarioInfo updScenarioInfo = JSON.parseObject(updJsonStr, EditScenarioInfo.class); - if(updScenarioInfo.getJbxx().getAmmunition().getCurrent() >0) { + if(updScenarioInfo.getJbxx().getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)>0) { updScenarioInfo.getJbxx().getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume)); + }else{ + updScenarioInfo.getJbxx().getAmmunition().setCurrent(0D); } - if(updScenarioInfo.getJbxx().getFood().getCurrent() > 0) { + if(updScenarioInfo.getJbxx().getFood().getCurrent() - Double.valueOf(food - foodConsume) > 0) { updScenarioInfo.getJbxx().getFood().setCurrent(Double.valueOf(food - foodConsume)); + }else{ + updScenarioInfo.getJbxx().getFood().setCurrent(0D); } // updScenarioInfo.getJbxx().getFuel().setCurrent(Double.valueOf(fuel - fuelConsume)); - if(updScenarioInfo.getJbxx().getMedical().getCurrent() > 0) { + if(updScenarioInfo.getJbxx().getMedical().getCurrent() - Double.valueOf(medical - medicalConsume)> 0) { updScenarioInfo.getJbxx().getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); + }else{ + updScenarioInfo.getJbxx().getMedical().setCurrent(0D); } - if(updScenarioInfo.getJbxx().getWater().getCurrent() > 0) { + if(updScenarioInfo.getJbxx().getWater().getCurrent() -Double.valueOf(water - waterConsume)> 0) { updScenarioInfo.getJbxx().getWater().setCurrent(Double.valueOf(water - waterConsume)); + }else{ + updScenarioInfo.getJbxx().getWater().setCurrent(0D); } updScenarioInfo.getJbxx().getPerson().setDeath(Long.valueOf(death + deathConsume).intValue()); updScenarioInfo.getJbxx().getPerson().setInjured(Long.valueOf(injured + injuredConsume).intValue()); - updScenarioInfo.getJbxx().getPerson().setCurrent(updScenarioInfo.getJbxx().getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue()); + if(updScenarioInfo.getJbxx().getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue() <0){ + updScenarioInfo.getJbxx().getPerson().setCurrent(0); + }else { + updScenarioInfo.getJbxx().getPerson().setCurrent(updScenarioInfo.getJbxx().getPerson().getCurrent() - Long.valueOf(deathConsume).intValue() - Long.valueOf(injuredConsume).intValue()); + } redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo", JSON.toJSONString(updScenarioInfo)); ResponseCmdInfo respObj = new ResponseCmdInfo<>(); diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index 716ad74..026f77c 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -134,8 +134,12 @@ public class Room implements AutoCloseable { log.error("error::", e); } }); + //清除房间缓存数据 + this.clearScenarioCache(); } + + /** * 暂停 */ @@ -233,6 +237,7 @@ public class Room implements AutoCloseable { } public void initRoomParam() { + long begTime = System.currentTimeMillis(); if (scenarioService == null) { scenarioService = SpringUtil.getBean(com.hivekion.statistic.service.ScenarioService.class); } @@ -257,7 +262,8 @@ public class Room implements AutoCloseable { scenario.getResourceList().forEach(resource -> { scenarioResourceMap.put(resource.getId(), resource); }); - + long endTime = System.currentTimeMillis(); + log.info("======cost time============={}===================",endTime-begTime); } public void addResourcePath(String resourceId, Object obj) { @@ -293,4 +299,26 @@ public class Room implements AutoCloseable { respObj.setCmdType("room_info"); Global.sendCmdInfoQueue.add(respObj); } + + private void clearScenarioCache(){ + try { + scenario.setResourceList(SpringUtil.getBean(ScenarioResourceServiceImpl.class) + .getResourceListByScenarioId(scenario.getId())); + if (redisUtil == null) { + redisUtil = SpringUtil.getBean(RedisUtil.class); + } + for (ScenarioResource scenarioResource : this.scenario.getResourceList()) { + ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(), + roomId, scenarioResource.getId()); + EditScenarioInfo updScenarioInfo = scenarioService.listEditScenarioInfo( + scenarioResource.getScenarioId(), roomId, scenarioResource.getId()); + redisUtil.delete( + scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); + redisUtil.delete( + scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); + } + }catch (Exception ex){ + log.error("===================clear cached fail=========================="); + } + } } diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java index 314af70..e0fa719 100644 --- a/src/main/java/com/hivekion/ws/WsServer.java +++ b/src/main/java/com/hivekion/ws/WsServer.java @@ -118,7 +118,7 @@ public class WsServer { } public static void sendMessage(Integer scenarioId, String room, String message) { - log.info("send {},{},{}", message, scenarioId, room); + log.info("{},{}", scenarioId, room); synchronized (lock) { Map> roomMap = SESSION_MAP.get(String.valueOf(scenarioId));