|
|
@@ -1,20 +1,14 @@
|
|
|
package org.dromara.server.consume.business;
|
|
|
|
|
|
-import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.dromara.backstage.api.domain.vo.RemoteCardVo;
|
|
|
import org.dromara.common.core.config.DefaultConfig;
|
|
|
-import org.dromara.common.core.constant.CacheNames;
|
|
|
import org.dromara.common.core.constant.DefaultConstants;
|
|
|
import org.dromara.common.core.domain.R;
|
|
|
import org.dromara.common.core.enums.SystemUseTypeEnum;
|
|
|
-import org.dromara.common.json.utils.JsonUtils;
|
|
|
-import org.dromara.common.redis.utils.RedisUtils;
|
|
|
import org.dromara.server.common.constant.ConsumeConstants;
|
|
|
-import org.dromara.server.consume.cache.CardCacheManager;
|
|
|
import org.dromara.server.consume.cache.TokenManager;
|
|
|
import org.dromara.server.consume.domain.vo.XfTermVo;
|
|
|
import org.dromara.server.consume.domain.vo.yc.RoomInfo;
|
|
|
@@ -78,32 +72,47 @@ public class TermBusiness {
|
|
|
* 如果操作成功,则 TermToken 将包含在返回值中;如果失败,则可能包含错误信息。
|
|
|
*/
|
|
|
public R<TermToken> getTermToken(Long termNo, String admin, String pwd) {
|
|
|
- R<TermInfo> result = this.getTermInfoByTermNo(termNo);
|
|
|
- if(R.isError(result)) {
|
|
|
- return R.fail(result.getMsg());
|
|
|
- }
|
|
|
- TermInfo termInfo = result.getData();
|
|
|
+ // R<TermInfo> result = this.getTermInfoByTermNo(termNo);
|
|
|
+ // if(R.isError(result)) {
|
|
|
+ // return R.fail(result.getMsg());
|
|
|
+ // }
|
|
|
+ // TermInfo termInfo = result.getData();
|
|
|
final String strTermNo = String.valueOf(termNo);
|
|
|
- final String roomName = termInfo == null ? "未知房间" : termInfo.getRoomName();
|
|
|
-
|
|
|
+ // final String roomName = termInfo == null ? "未知房间" : termInfo.getRoomName();
|
|
|
+ String roomName = termService.queryRoomNameByNo(termNo);
|
|
|
// 使用termNo字符串作为锁对象,减小锁粒度
|
|
|
- synchronized (strTermNo.intern()) {
|
|
|
- Map<String, TermToken> tokenMap = tokenManager.getTermToken();
|
|
|
- TermToken termToken = tokenMap.get(strTermNo);
|
|
|
+ // synchronized (strTermNo.intern()) {
|
|
|
+ // Map<String, TermToken> tokenMap = tokenManager.getTermToken();
|
|
|
+ // TermToken termToken = tokenMap.get(strTermNo);
|
|
|
+ //
|
|
|
+ // if (ObjectUtil.isEmpty(termToken)) {
|
|
|
+ // termToken = createNewTermToken(strTermNo, admin, roomName);
|
|
|
+ // tokenMap.put(strTermNo, termToken);
|
|
|
+ // } else {
|
|
|
+ // long currentTime = System.currentTimeMillis();
|
|
|
+ // if (termToken.getExpireTime() < currentTime) {
|
|
|
+ // resetTermToken(termToken, admin, roomName);
|
|
|
+ // } else {
|
|
|
+ // termToken.setAdmin(admin);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return R.ok(termToken);
|
|
|
+ // }
|
|
|
+ Map<String, TermToken> tokenMap = tokenManager.getTermToken();
|
|
|
+ TermToken termToken = tokenMap.get(strTermNo);
|
|
|
|
|
|
- if (ObjectUtil.isEmpty(termToken)) {
|
|
|
- termToken = createNewTermToken(strTermNo, admin, roomName);
|
|
|
- tokenMap.put(strTermNo, termToken);
|
|
|
+ if (ObjectUtil.isEmpty(termToken)) {
|
|
|
+ termToken = createNewTermToken(strTermNo, admin, roomName);
|
|
|
+ tokenMap.put(strTermNo, termToken);
|
|
|
+ } else {
|
|
|
+ long currentTime = System.currentTimeMillis();
|
|
|
+ if (termToken.getExpireTime() < currentTime) {
|
|
|
+ resetTermToken(termToken, admin, roomName);
|
|
|
} else {
|
|
|
- long currentTime = System.currentTimeMillis();
|
|
|
- if (termToken.getExpireTime() < currentTime) {
|
|
|
- resetTermToken(termToken, admin, roomName);
|
|
|
- } else {
|
|
|
- termToken.setAdmin(admin);
|
|
|
- }
|
|
|
+ termToken.setAdmin(admin);
|
|
|
}
|
|
|
- return R.ok(termToken);
|
|
|
}
|
|
|
+ return R.ok(termToken);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -123,14 +132,16 @@ public class TermBusiness {
|
|
|
final long lTermNo = termNo.longValue();
|
|
|
|
|
|
// 2. 带缓存的终端信息获取
|
|
|
- long startTime = System.currentTimeMillis();
|
|
|
- R<TermInfo> result = this.getTermInfoByTermNo(lTermNo);
|
|
|
- if(R.isError(result)) {
|
|
|
- return R.fail(result.getMsg());
|
|
|
- }
|
|
|
- TermInfo termInfo = result.getData();
|
|
|
- log.info("[设备校时]-[获取设备:{}]-[耗时: {} ms]",termNo,System.currentTimeMillis()-startTime);
|
|
|
+ // long startTime = System.currentTimeMillis();
|
|
|
+ // R<TermInfo> result = this.getTermInfoByTermNo(lTermNo);
|
|
|
+ // if(R.isError(result)) {
|
|
|
+ // return R.fail(result.getMsg());
|
|
|
+ // }
|
|
|
+ // TermInfo termInfo = result.getData();
|
|
|
+ // log.info("[设备校时]-[获取设备:{}]-[耗时: {} ms]",termNo,System.currentTimeMillis()-startTime);
|
|
|
// 3. 原子化时间检查与更新
|
|
|
+ String termName = termService.queryNameByNo(lTermNo);
|
|
|
+
|
|
|
final long currentTime = System.currentTimeMillis();
|
|
|
|
|
|
final Long lastCheck = lastCheckModify.get(termNo);
|
|
|
@@ -144,12 +155,12 @@ public class TermBusiness {
|
|
|
// oldVal
|
|
|
//);
|
|
|
}
|
|
|
- log.info("最后校时情况,设备:{},时间:{}", termNo, lastCheckModify.get(termNo));
|
|
|
+ // log.info("最后校时情况,设备:{},时间:{}", termNo, lastCheckModify.get(termNo));
|
|
|
// 4. 构建响应数据
|
|
|
Map<String, Object> resultMap = new HashMap<>(4);
|
|
|
resultMap.put("time", DateUtil.format(new Date(currentTime), DefaultConstants.DATE_TIME_FORMAT));
|
|
|
resultMap.put("type", "");
|
|
|
- resultMap.put("data", termInfo != null ? termInfo.getTermName() : "未知设备");
|
|
|
+ resultMap.put("data", ObjectUtil.isNotEmpty(termName) ? termName : "未知设备");
|
|
|
|
|
|
return R.ok(resultMap);
|
|
|
}
|