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 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 rBucketSess = redissonClient.getBucket(globalConfig.getKeyPrefix()+":ws:facetoken:"+host+"-"+globalConfig.getServerPort()+"-"+session.getId()); rBucketSess.set(userToken,365, TimeUnit.DAYS); List> dataMapList = new ArrayList<>(); Map map = userService.todayWorkUser(userToken); dataMapList.add(map); Map map1 = userService.groupUserWork(userToken); Map map2 = userService.faceRecord(userToken); List> AudioGroupList = userService.queryGroups(); Map map3 = new HashMap<>(); map3.put("mod","audioGroup"); map3.put("groupList",AudioGroupList); List> HelmetWarnList = userService.queryHelmetWarn(); Map map4 = new HashMap<>(); map4.put("mod","helmetWarn"); map4.put("helmetWarnList",HelmetWarnList); List areaAdminList = userService.areaAdminInfo(); Map 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; } }