Commit 7fb594bb by 涂亚平

人脸识别版本备个份

1 parent 421d9309
...@@ -16,7 +16,6 @@ import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry ...@@ -16,7 +16,6 @@ import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry
* @author DengMin * @author DengMin
* @since 2022/7/13 * @since 2022/7/13
*/ */
@Configuration @Configuration
@EnableWebSocket @EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer { public class WebSocketConfig implements WebSocketConfigurer {
......
...@@ -28,12 +28,6 @@ public class WebSocketInterceptor implements HandshakeInterceptor { ...@@ -28,12 +28,6 @@ public class WebSocketInterceptor implements HandshakeInterceptor {
/** /**
* 自定义验证规则, 如果该用户不存在数据表中,拒绝此次连接 * 自定义验证规则, 如果该用户不存在数据表中,拒绝此次连接
* @param request
* @param serverHttpResponse
* @param webSocketHandler
* @param map
* @return
* @throws Exception
*/ */
@Override @Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object> map) throws Exception { public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object> map) throws Exception {
......
...@@ -43,7 +43,8 @@ public class CompanyDictController { ...@@ -43,7 +43,8 @@ public class CompanyDictController {
} }
@PostMapping("addCompany") @PostMapping("addCompany")
@ApiOperation("添加企业 {accountName:账号 superviseName 第三方监管名称 companyName:企业名称 address 企业所在地 shortName 简称 banner:标语 field[]:领域 role 1:超级管理员 2:普通成员}") @ApiOperation("添加企业 {accountName:账号 superviseName 第三方监管名称 companyName:企业名称 address 企业所在地 shortName " +
"简称 banner:标语 field[]:领域 role 1:超级管理员 2:普通成员}")
@LoginRequired @LoginRequired
public ResponseVO addOperator(@RequestBody AddCompanyDTO addCompanyDTO){ public ResponseVO addOperator(@RequestBody AddCompanyDTO addCompanyDTO){
return ResponseData.generateCreatedResponse(0,companyDictService.addOperator(addCompanyDTO)); return ResponseData.generateCreatedResponse(0,companyDictService.addOperator(addCompanyDTO));
...@@ -81,7 +82,7 @@ public class CompanyDictController { ...@@ -81,7 +82,7 @@ public class CompanyDictController {
@PostMapping("getAllCompany") @PostMapping("getAllCompany")
@ApiOperation("获取全部企业 {companyName}") @ApiOperation("获取全部企业 {companyName}")
@LoginRequired // @LoginRequired
public ResponseVO getAllCompany(@RequestBody CompanyDictDO companyDictDO){ public ResponseVO getAllCompany(@RequestBody CompanyDictDO companyDictDO){
return ResponseData.generateCreatedResponse(0,companyDictService.getAllCompany(companyDictDO)); return ResponseData.generateCreatedResponse(0,companyDictService.getAllCompany(companyDictDO));
} }
......
...@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/** /**
* <p> * <p>
* 学生签到表 前端控制器 * 学生签到表 前端控制器
...@@ -47,8 +49,8 @@ public class SignInRecordController { ...@@ -47,8 +49,8 @@ public class SignInRecordController {
// @LoginRequired // @LoginRequired
@TimeRequired @TimeRequired
@CachePut(value = "ResultData" ,key = "'classId_'+#signInRecordDO.getClassId()") @CachePut(value = "ResultData" ,key = "'classId_'+#signInRecordDO.getClassId()")
public ResponseVO signIn(@RequestBody SignInRecordDO signInRecordDO) { public ResponseVO signIn(@RequestBody SignInRecordDO signInRecordDO, HttpServletRequest request) {
return ResponseData.generateCreatedResponse(0, signInRecordService.signIn(signInRecordDO)); return ResponseData.generateCreatedResponse(0, signInRecordService.signIn(signInRecordDO,request));
} }
@PostMapping("dataView") @PostMapping("dataView")
......
...@@ -8,6 +8,8 @@ import com.subsidy.model.SignInRecordDO; ...@@ -8,6 +8,8 @@ import com.subsidy.model.SignInRecordDO;
import com.subsidy.vo.member.GetMemberSignInfoVO; import com.subsidy.vo.member.GetMemberSignInfoVO;
import com.subsidy.vo.sign.SignInStatusVO; import com.subsidy.vo.sign.SignInStatusVO;
import javax.servlet.http.HttpServletRequest;
/** /**
* <p> * <p>
* 学生签到表 服务类 * 学生签到表 服务类
...@@ -20,7 +22,7 @@ public interface SignInRecordService extends IService<SignInRecordDO> { ...@@ -20,7 +22,7 @@ public interface SignInRecordService extends IService<SignInRecordDO> {
IPage<GetMemberSignInfoVO> getMemberSignInfo(GetMemberSignInfoDTO getMemberSignInfoDTO); IPage<GetMemberSignInfoVO> getMemberSignInfo(GetMemberSignInfoDTO getMemberSignInfoDTO);
String signIn(SignInRecordDO signInRecordDO); String signIn(SignInRecordDO signInRecordDO, HttpServletRequest request);
IPage dataView(DataViewDTO classSignInfoDTO); IPage dataView(DataViewDTO classSignInfoDTO);
......
...@@ -1004,7 +1004,7 @@ public class AdministerServiceImpl extends ServiceImpl<AdministerMapper, Adminis ...@@ -1004,7 +1004,7 @@ public class AdministerServiceImpl extends ServiceImpl<AdministerMapper, Adminis
List<GetMemberCheckDetailVO> memberCheckDetail = imageCheckRecordMapper.getMemberCheckDetail(imageCheckRecordDO.getMemberId(), imageCheckRecordDO.getClassId()); List<GetMemberCheckDetailVO> memberCheckDetail = imageCheckRecordMapper.getMemberCheckDetail(imageCheckRecordDO.getMemberId(), imageCheckRecordDO.getClassId());
for (GetMemberCheckDetailVO gcdv : memberCheckDetail) { for (GetMemberCheckDetailVO gcdv : memberCheckDetail) {
if (gcdv.getSimilarity() > 60.0) { if (null != gcdv.getSimilarity() && gcdv.getSimilarity() > 60.0) {
gcdv.setResult("通过"); gcdv.setResult("通过");
} else { } else {
gcdv.setResult("不通过"); gcdv.setResult("不通过");
......
...@@ -188,19 +188,28 @@ public class ImageCheckRecordServiceImpl extends ServiceImpl<ImageCheckRecordMap ...@@ -188,19 +188,28 @@ public class ImageCheckRecordServiceImpl extends ServiceImpl<ImageCheckRecordMap
IdCardTicketsVO idCardTicketsVO = this.signTickets(getLatestAccessToken()); IdCardTicketsVO idCardTicketsVO = this.signTickets(getLatestAccessToken());
//生成签名 //生成签名
List<String> signList1 = new ArrayList(Arrays.asList(WBAPPID, imageCheckRecordDO.getId() + "", memberDO.getUserName(), memberDO.getIdCard(), memberDO.getId() + "", "1.0.0")); List<String> signList1 = new ArrayList<>();
String sign = sign(signList1, idCardTicketsVO.getValue()); signList1.add(WBAPPID);
signList1.add(imageCheckRecordDO.getId()+"");
signList1.add(memberDO.getId()+"");
signList1.add("1.0.0");
String sign = "";
//合作方后台上送身份信息 //合作方后台上送身份信息
// 查看之前是否有验证过,没有的话就调取权威库,有的话就进行两个图片对比 // 查看之前是否有验证过,没有的话就调取权威库,有的话就进行两个图片对比
SendIdCardInfoVO sendIdCardInfoVO = null; SendIdCardInfoVO sendIdCardInfoVO = null;
if (StringUtils.isEmpty(memberDO.getCheckImage())) { if (StringUtils.isEmpty(memberDO.getCheckImage())) {
signList1.add(memberDO.getUserName());
signList1.add(memberDO.getIdCard());
sign = sign(signList1, idCardTicketsVO.getValue());
sendIdCardInfoVO = this.sendIdCardInfo(imageCheckRecordDO.getId() + "", memberDO, sign); sendIdCardInfoVO = this.sendIdCardInfo(imageCheckRecordDO.getId() + "", memberDO, sign);
}else { }else {
sign = sign(signList1, idCardTicketsVO.getValue());
sendIdCardInfoVO = this.sendIdCardInfoCompare(imageCheckRecordDO.getId()+"",memberDO,sign); sendIdCardInfoVO = this.sendIdCardInfoCompare(imageCheckRecordDO.getId()+"",memberDO,sign);
} }
if (!"0".equals(sendIdCardInfoVO.getCode())) { if (!"0".equals(sendIdCardInfoVO.getCode())) {
//删除这个订单
imageCheckRecordMapper.deleteById(imageCheckRecordDO.getId()); imageCheckRecordMapper.deleteById(imageCheckRecordDO.getId());
throw new HttpException(10026); throw new HttpException(10026);
} }
...@@ -238,27 +247,27 @@ public class ImageCheckRecordServiceImpl extends ServiceImpl<ImageCheckRecordMap ...@@ -238,27 +247,27 @@ public class ImageCheckRecordServiceImpl extends ServiceImpl<ImageCheckRecordMap
//存数据库 //存数据库
ImageCheckRecordDO imageCheckRecordDO = imageCheckRecordMapper.selectById(checkResultDTO.getId()); ImageCheckRecordDO imageCheckRecordDO = imageCheckRecordMapper.selectById(checkResultDTO.getId());
BeanUtils.copyProperties(resultVO, imageCheckRecordDO); if (!StringUtils.isEmpty(resultVO.getSimilarity())){
BeanUtils.copyProperties(resultVO, imageCheckRecordDO);
try { try {
if ((Double.valueOf(imageCheckRecordDO.getSimilarity()) > 60)) { if ((Double.valueOf(imageCheckRecordDO.getSimilarity()) > 50)) {
imageCheckRecordDO.setResult(1); imageCheckRecordDO.setResult(1);
//如果是签到页的认证,则把图片写到member表里 //如果是签到页的认证,则把图片写到member表里
if (imageCheckRecordDO.getCheckPlace()==1){ if (imageCheckRecordDO.getCheckPlace()==1){
MemberDO memberDO = memberMapper.selectById(imageCheckRecordDO.getMemberId()); MemberDO memberDO = memberMapper.selectById(imageCheckRecordDO.getMemberId());
memberDO.setCheckImage(imageCheckRecordDO.getPhoto()); memberDO.setCheckImage(imageCheckRecordDO.getPhoto());
memberDO.setCheckTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L)); memberDO.setCheckTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L));
memberMapper.updateById(memberDO); memberMapper.updateById(memberDO);
}
} else {
imageCheckRecordDO.setResult(0);
} }
} else { }catch (Exception e){
imageCheckRecordDO.setResult(0); imageCheckRecordDO.setResult(0);
} }
}catch (Exception e){
imageCheckRecordDO.setResult(0);
}
imageCheckRecordMapper.updateById(imageCheckRecordDO);
imageCheckRecordMapper.updateById(imageCheckRecordDO);
}
return imageCheckRecordDO; return imageCheckRecordDO;
} }
......
...@@ -13,7 +13,6 @@ import com.subsidy.mapper.*; ...@@ -13,7 +13,6 @@ import com.subsidy.mapper.*;
import com.subsidy.model.*; import com.subsidy.model.*;
import com.subsidy.service.MemberService; import com.subsidy.service.MemberService;
import com.subsidy.util.*; import com.subsidy.util.*;
//import com.subsidy.util.RedisUtil;
import com.subsidy.vo.administer.UserRoleVO; import com.subsidy.vo.administer.UserRoleVO;
import com.subsidy.vo.member.*; import com.subsidy.vo.member.*;
import com.subsidy.vo.paper.QueryPapersVO; import com.subsidy.vo.paper.QueryPapersVO;
...@@ -28,7 +27,6 @@ import org.apache.http.impl.client.HttpClients; ...@@ -28,7 +27,6 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -37,9 +35,8 @@ import java.time.LocalDateTime; ...@@ -37,9 +35,8 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; //import com.subsidy.util.RedisUtil;
import java.util.concurrent.Future;
/** /**
* <p> * <p>
...@@ -689,7 +686,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple ...@@ -689,7 +686,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
.lambda() .lambda()
.eq(ImageCheckRecordDO::getMemberId, myCoursesDTO.getMemberId()) .eq(ImageCheckRecordDO::getMemberId, myCoursesDTO.getMemberId())
.eq(ImageCheckRecordDO::getClassId, myCoursesVO.getClassId()) .eq(ImageCheckRecordDO::getClassId, myCoursesVO.getClassId())
.eq(ImageCheckRecordDO::getCheckPlace, 1) .isNull(ImageCheckRecordDO::getPaperId)
.eq(ImageCheckRecordDO::getCheckPlace, 0)
.eq(ImageCheckRecordDO::getResult, 1)); .eq(ImageCheckRecordDO::getResult, 1));
int checkCnt = imageCheckRecordMapper.checkDailyCount(myCoursesDTO.getMemberId(), myCoursesVO.getClassId(), 1,null); int checkCnt = imageCheckRecordMapper.checkDailyCount(myCoursesDTO.getMemberId(), myCoursesVO.getClassId(), 1,null);
......
...@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
...@@ -79,7 +80,7 @@ public class SignInRecordServiceImpl extends ServiceImpl<SignInRecordMapper, Sig ...@@ -79,7 +80,7 @@ public class SignInRecordServiceImpl extends ServiceImpl<SignInRecordMapper, Sig
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String signIn(SignInRecordDO signInRecordDO) { public String signIn(SignInRecordDO signInRecordDO, HttpServletRequest request) {
//查看学生所有在读班级 //查看学生所有在读班级
List<ClassDictDO> classDictDOS = classMemberMappingMapper.getMemberClass(signInRecordDO.getMemberId()); List<ClassDictDO> classDictDOS = classMemberMappingMapper.getMemberClass(signInRecordDO.getMemberId());
...@@ -101,10 +102,11 @@ public class SignInRecordServiceImpl extends ServiceImpl<SignInRecordMapper, Sig ...@@ -101,10 +102,11 @@ public class SignInRecordServiceImpl extends ServiceImpl<SignInRecordMapper, Sig
this.baseMapper.deleteById(sign.getId()); this.baseMapper.deleteById(sign.getId());
} }
// signInRecordDO.setIpAddress(IpAddressUtil.getIpAddress()); signInRecordDO.setIpAddress(IpAddressUtil.getIpAddress(request));
signInRecordDO.setClassId(classDictDO.getId()); signInRecordDO.setClassId(classDictDO.getId());
signInRecordDO.setSignInDate(LocalDateTime.now()); signInRecordDO.setSignInDate(LocalDateTime.now());
signInRecordDO.setCreateDate(LocalDateTime.now()); signInRecordDO.setCreateDate(LocalDateTime.now());
signInRecordDO.setDeviceNo(signInRecordDO.getDeviceNo());
this.baseMapper.insert(signInRecordDO); this.baseMapper.insert(signInRecordDO);
} }
return ConstantUtils.ADD_SUCCESS; return ConstantUtils.ADD_SUCCESS;
......
package com.subsidy.util; package com.subsidy.util;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException; import java.net.UnknownHostException;
public class IpAddressUtil { public class IpAddressUtil {
...@@ -36,4 +41,52 @@ public class IpAddressUtil { ...@@ -36,4 +41,52 @@ public class IpAddressUtil {
} }
return ipAddress; return ipAddress;
} }
/**
* @Description:获取客户端外网ip
* @Author:zrt
* @Date:2019/6/13 11:23
**/
public static String getPublicIp() {
try {
String path = "http://subsidy.youkehulian.cn/";// 要获得html页面内容的地址
URL url = new URL(path);// 创建url对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 打开连接
conn.setRequestProperty("contentType", "GBK"); // 设置url中文参数编码
conn.setConnectTimeout(5 * 1000);// 请求的时间
conn.setRequestMethod("GET");// 请求方式
InputStream inStream = conn.getInputStream();
// readLesoSysXML(inStream);
BufferedReader in = new BufferedReader(new InputStreamReader(
inStream, "GBK"));
StringBuffer buffer = new StringBuffer();
String line = "";
// 读取获取到内容的最后一行,写入
while ((line = in.readLine()) != null) {
buffer.append(line);
}
String str = buffer.toString();
String ipString1 = str.substring(str.indexOf("["));
// 获取你的IP是中间的[182.149.82.50]内容
String ipsString2 = ipString1.substring(ipString1.indexOf("[") + 1,
ipString1.lastIndexOf("]"));
//获取当前IP地址所在地址
/* String ipsString3=ipString1.substring(ipString1.indexOf(": "),ipString1.lastIndexOf("</center>"));
System.err.println(ipsString3);*/
// 返回公网IP值
return ipsString2;
} catch (Exception e) {
System.out.println("获取公网IP连接超时");
return "连接超时";
}
}
} }
...@@ -2,45 +2,30 @@ package com.subsidy.util.websocket; ...@@ -2,45 +2,30 @@ package com.subsidy.util.websocket;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseData;
import com.subsidy.mapper.ClassDictMapper; import com.subsidy.mapper.ClassDictMapper;
import com.subsidy.mapper.CompanyDictMapper;
import com.subsidy.mapper.MemberMapper; import com.subsidy.mapper.MemberMapper;
import com.subsidy.mapper.OprMemDictMapper; import com.subsidy.mapper.OprMemDictMapper;
import com.subsidy.model.CompanyDictDO;
import com.subsidy.model.MemberDO;
import com.subsidy.model.OprMemDictDO; import com.subsidy.model.OprMemDictDO;
import com.subsidy.util.DateFormatUtil;
import com.subsidy.vo.classdict.ClassSettingsVO; import com.subsidy.vo.classdict.ClassSettingsVO;
import com.subsidy.vo.classdict.SystemSettings; import com.subsidy.vo.classdict.SystemSettings;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.*;
import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.handler.AbstractWebSocketHandler;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import java.io.IOException; import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
/** /**
* <p> * <p>
* WebSocket * WebSocket
* </p> * </p>
* * https://zhuanlan.zhihu.com/p/531474864
* @author DengMin * @author DengMin
* @since 2022/7/13 * @since 2022/7/13
*/ */
...@@ -127,7 +112,18 @@ public class WebSocketUtil implements WebSocketHandler { ...@@ -127,7 +112,18 @@ public class WebSocketUtil implements WebSocketHandler {
} }
/** /**
* 处理WebSocket transport error * 接收WebSocket客户端Message
*/
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
// if (message instanceof TextMessage) {
// System.out.println(message.getPayload());
// }
this.handleMessage(session,message);
}
/**
* 链接发生错误:处理WebSocket transport error
*/ */
@Override @Override
public void handleTransportError(WebSocketSession session, Throwable throwable) throws Exception { public void handleTransportError(WebSocketSession session, Throwable throwable) throws Exception {
...@@ -143,7 +139,7 @@ public class WebSocketUtil implements WebSocketHandler { ...@@ -143,7 +139,7 @@ public class WebSocketUtil implements WebSocketHandler {
} }
/** /**
* 在两端WebSocket connection都关闭或transport error发生后执行 * 关闭链接 :在两端WebSocket connection都关闭或transport error发生后执行
*/ */
@Override @Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
...@@ -159,12 +155,20 @@ public class WebSocketUtil implements WebSocketHandler { ...@@ -159,12 +155,20 @@ public class WebSocketUtil implements WebSocketHandler {
} }
/** /**
* 支持分片消息
*/
@Override
public boolean supportsPartialMessages() {
return false;
}
/**
* 断开连接后进行三次心跳验证判断是否重新连接了,如果没有连接成功则判断为下线 * 断开连接后进行三次心跳验证判断是否重新连接了,如果没有连接成功则判断为下线
*/ */
public void heartbeat(WebSocketSession session) { public void heartbeat(WebSocketSession session) {
ScheduledExecutorService service = Executors.newScheduledThreadPool(1); ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
ScheduledFuture scheduledFuture = service.scheduleAtFixedRate(new Runnable() { ScheduledFuture scheduledFuture = service.scheduleAtFixedRate(new Runnable() {
int beatsNum = heartbeatMin; int beatsNum = heartbeatMin; //至少一次
@SneakyThrows @SneakyThrows
@Override @Override
...@@ -185,6 +189,7 @@ public class WebSocketUtil implements WebSocketHandler { ...@@ -185,6 +189,7 @@ public class WebSocketUtil implements WebSocketHandler {
beatsNum++; beatsNum++;
} else if (null != session && session.isOpen()) { } else if (null != session && session.isOpen()) {
/* 时间段内重新连接了结束验证 */ /* 时间段内重新连接了结束验证 */
beatsNum = heartbeatMin;
taskMap.get(session.getId()).cancel(true); taskMap.get(session.getId()).cancel(true);
} }
} }
...@@ -192,18 +197,4 @@ public class WebSocketUtil implements WebSocketHandler { ...@@ -192,18 +197,4 @@ public class WebSocketUtil implements WebSocketHandler {
taskMap.put(session.getId(), scheduledFuture); taskMap.put(session.getId(), scheduledFuture);
} }
/**
* 接收WebSocket客户端Message
*/
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
if (message instanceof TextMessage) {
// System.out.println(message.getPayload());
}
}
@Override
public boolean supportsPartialMessages() {
return false;
}
} }
\ No newline at end of file
...@@ -7,6 +7,8 @@ import java.util.List; ...@@ -7,6 +7,8 @@ import java.util.List;
@Data @Data
public class SystemSettings { public class SystemSettings {
private Long id;
/** /**
* 上课时间不晚于23:30,不早于6:30 * 上课时间不晚于23:30,不早于6:30
*/ */
......
...@@ -333,6 +333,7 @@ ...@@ -333,6 +333,7 @@
<select id="companySettings" parameterType="long" resultType="com.subsidy.vo.classdict.SystemSettings"> <select id="companySettings" parameterType="long" resultType="com.subsidy.vo.classdict.SystemSettings">
SELECT SELECT
t2.id,
t2.time_limit, t2.time_limit,
t2.ip_address_record, t2.ip_address_record,
t2.device_no_record t2.device_no_record
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!