This commit is contained in:
李玉东 2025-09-20 15:58:04 +08:00
commit f59eabb06f

View File

@ -3,34 +3,57 @@ package com.hivekion.thread;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hivekion.Global;
import com.hivekion.baseData.entity.Scenario;
import com.hivekion.common.entity.ResponseCmdInfo;
import com.hivekion.common.redis.RedisUtil;
import com.hivekion.scenario.entity.ScenarioResource;
import com.hivekion.scenario.service.ScenarioResourceService;
import com.hivekion.statistic.bean.ScenarioInfo;
import com.hivekion.statistic.service.ScenarioService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Component
@Slf4j
public class WebsocketMsgWrapper {
private RedisUtil redisUtil;
@Resource
private ScenarioResourceService scenarioResourceService;
public void msgHandle(Integer scenarioId,String roomId,String resourceId,String msg){
ResponseCmdInfo responseCmdInfo = new ResponseCmdInfo();
responseCmdInfo.setScenarioId(scenarioId);
responseCmdInfo.setRoom(roomId);
try {
JSONObject msgObj = (JSONObject) JSON.parse(msg);
if(msgObj.getString("cmdType").equals("scenarioInfo")){
ScenarioService scenarioService = SpringUtil.getBean(ScenarioService.class);
if(scenarioService != null){
ScenarioInfo scenarioInfo= scenarioService.listScenarioInfo(scenarioId,roomId,resourceId);
String scenarioInfoStr = com.alibaba.fastjson2.JSON.toJSONString(scenarioInfo);
responseCmdInfo.setData(scenarioInfoStr);
}else {
log.warn("=============scenarioService is null================================");
}
if( redisUtil == null) {
redisUtil = SpringUtil.getBean(RedisUtil.class);
}
JSONArray allScenario = new JSONArray();
List<ScenarioResource> scenarioResourceList = this.scenarioResourceService.list(new QueryWrapper<ScenarioResource>().eq("scenario_id",scenarioId));
for(ScenarioResource scenarioResource : scenarioResourceList) {
if(redisUtil.hasKey(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(), "scenarioInfo")) {
String jsonStr = (String) redisUtil.hget(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(), "scenarioInfo");
allScenario.add(jsonStr);
}
}
responseCmdInfo.setData(JSONArray.toJSONString(allScenario));
}
responseCmdInfo.setCmdType("scenarioInfo");
Global.sendCmdInfoQueue.add(responseCmdInfo);
}catch (Exception ex){
ex.printStackTrace();