package com.thhy.staff.modules.biz.platuser.controller;
|
|
import com.alibaba.fastjson.JSON;
|
import com.thhy.general.config.GlobalConfig;
|
import com.thhy.general.utils.SpringContextUtils;
|
import com.thhy.staff.modules.biz.platuser.entity.AreaAdmin;
|
import com.thhy.staff.modules.biz.platuser.service.PlatUserService;
|
import org.redisson.api.RBucket;
|
import org.redisson.api.RedissonClient;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import javax.websocket.OnClose;
|
import javax.websocket.OnMessage;
|
import javax.websocket.OnOpen;
|
import javax.websocket.Session;
|
import javax.websocket.server.PathParam;
|
import javax.websocket.server.ServerEndpoint;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.CopyOnWriteArraySet;
|
import java.util.concurrent.TimeUnit;
|
|
@ServerEndpoint("/faceserver/{usertoken}")
|
@Component
|
public class FaceServer {
|
|
private Logger logger = LoggerFactory.getLogger("FaceServer");
|
|
public static final CopyOnWriteArraySet<Session> SESSIONS = new CopyOnWriteArraySet<>();
|
|
|
private PlatUserService platUserService;
|
|
private RedissonClient redissonClient;
|
|
private GlobalConfig globalConfig;
|
|
public GlobalConfig getGlobalConfig() {
|
return SpringContextUtils.getBean(GlobalConfig.class);
|
}
|
|
public PlatUserService getPlatUserService() {
|
return SpringContextUtils.getBean(PlatUserService.class);
|
}
|
|
public RedissonClient getRedissonClient() {
|
return SpringContextUtils.getBean(RedissonClient.class);
|
}
|
|
@OnOpen
|
public void open(Session session,@PathParam("usertoken") String userToken){
|
logger.info(session.getId()+"连接成功");
|
SESSIONS.add(session);
|
PlatUserService userService = getPlatUserService();
|
RedissonClient redissonClient = getRedissonClient();
|
GlobalConfig globalConfig = getGlobalConfig();
|
if(userService==null)logger.info("userservice为空");
|
logger.info(session.getId()+"连接信息保存成功");
|
String host = NetUtils.getIp();
|
RBucket<String> rBucketSess = redissonClient.getBucket(globalConfig.getKeyPrefix()+":ws:facetoken:"+host+"-"+globalConfig.getServerPort()+"-"+session.getId());
|
rBucketSess.set(userToken,365, TimeUnit.DAYS);
|
List<Map<String,Object>> dataMapList = new ArrayList<>();
|
Map<String,Object> map = userService.todayWorkUser(userToken);
|
dataMapList.add(map);
|
Map<String,Object> map1 = userService.groupUserWork(userToken);
|
Map<String,Object> map2 = userService.faceRecord(userToken);
|
|
|
List<HashMap<String,Object>> AudioGroupList = userService.queryGroups();
|
Map<String, Object> map3 = new HashMap<>();
|
map3.put("mod","audioGroup");
|
map3.put("groupList",AudioGroupList);
|
|
|
List<HashMap<String,Object>> HelmetWarnList = userService.queryHelmetWarn();
|
Map<String, Object> map4 = new HashMap<>();
|
map4.put("mod","helmetWarn");
|
map4.put("helmetWarnList",HelmetWarnList);
|
|
List<AreaAdmin> areaAdminList = userService.areaAdminInfo();
|
Map<String, Object> map5 = new HashMap<>();
|
map5.put("mod","areaAdmin");
|
map5.put("areaAdminList",areaAdminList);
|
dataMapList.add(map1);
|
dataMapList.add(map2);
|
dataMapList.add(map3);
|
dataMapList.add(map4);
|
dataMapList.add(map5);
|
try {
|
session.getBasicRemote().sendText(JSON.toJSONString(dataMapList));
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
/**
|
* 连接关闭
|
*
|
* @param session
|
*/
|
@OnClose
|
public void onClose(Session session) {
|
logger.info(session.getId()+"连接关闭");
|
SESSIONS.remove(session);
|
logger.info(session.getId()+"连接信息清除成功");
|
}
|
|
/**
|
* 接收到消息
|
*
|
* @param text
|
*/
|
@OnMessage
|
public String onMsg(String text) throws IOException {
|
return "servet 发送:" + text;
|
}
|
}
|