Преглед изворни кода

Merge remote-tracking branch 'origin/master'

xiari пре 11 месеци
родитељ
комит
8cffd04b3d

+ 20 - 9
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/CheckBusiness.java

@@ -23,6 +23,7 @@ import org.dromara.common.core.utils.RecordIdUtils;
 import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
 import org.dromara.server.consume.cache.TokenManager;
 import org.dromara.server.consume.domain.bo.XfCardLimitedBo;
+import org.dromara.server.consume.domain.convert.RemoteVoConvert;
 import org.dromara.server.consume.domain.vo.PtBagVo;
 import org.dromara.server.consume.domain.vo.XfCardLimitedVo;
 import org.dromara.server.consume.domain.vo.XfConsumeDetailOriginalVo;
@@ -178,6 +179,7 @@ public class CheckBusiness {
         long factoryId = ObjectUtil.isEmpty(bo.getFactoryId()) ? 0 : bo.getFactoryId();
         long userNo = ObjectUtil.isEmpty(bo.getUserNo()) ? 0 : bo.getUserNo();
         String userNumb = bo.getUserNumb() == null ? null : bo.getUserNumb();
+
         // 卡流水号检查
         if (cardNo > 0) {
             return checkCardNo(bo, userAccountVo, userCardVo);
@@ -212,7 +214,6 @@ public class CheckBusiness {
             remoteXfTermVo = remoteXfTermService.queryByNo(bo.getTermNo(), tenantId);
         } else {
             remoteXfTermVo = remoteXfTermService.queryByMac(bo.getTermMac());
-            bo.setTermNo(remoteXfTermVo.getTermNo());
         }
         if (ObjectUtil.isEmpty(remoteXfTermVo)) {
             ErrorInfo errorInfo = new ErrorInfo(400, "", "设备不存在",
@@ -220,7 +221,9 @@ public class CheckBusiness {
 
             return R.fail(errorInfo);
         }
+        bo.setTermNo(remoteXfTermVo.getTermNo());
         BeanUtil.copyProperties(remoteXfTermVo, useTermVo);
+        RemoteVoConvert.INSTANCE.copyRemoteTermVo(useTermVo, remoteXfTermVo);
         return R.ok();
     }
 
@@ -375,8 +378,10 @@ public class CheckBusiness {
         bo.setCardTypeName(cardVo.getCardTypeName());
         bo.setExpireDate(accountVo.getLifespan());
         bo.setDeptName(accountVo.getDeptName());
-        BeanUtil.copyProperties(accountVo, userAccountVo);
-        BeanUtil.copyProperties(cardVo, userCardVo);
+        // BeanUtil.copyProperties(accountVo, userAccountVo);
+        RemoteVoConvert.INSTANCE.copyRemoteUserAccountVo(userAccountVo,accountVo);
+        // BeanUtil.copyProperties(cardVo, userCardVo);
+        RemoteVoConvert.INSTANCE.copyRemoteCardVo(userCardVo,cardVo);
         return R.ok();
     }
 
@@ -409,8 +414,10 @@ public class CheckBusiness {
         bo.setCardTypeName(cardVo.getCardTypeName());
         bo.setExpireDate(accountVo.getLifespan());
         bo.setDeptName(accountVo.getDeptName());
-        BeanUtil.copyProperties(accountVo, userAccountVo);
-        BeanUtil.copyProperties(cardVo, userCardVo);
+        // BeanUtil.copyProperties(accountVo, userAccountVo);
+        RemoteVoConvert.INSTANCE.copyRemoteUserAccountVo(userAccountVo,accountVo);
+        // BeanUtil.copyProperties(cardVo, userCardVo);
+        RemoteVoConvert.INSTANCE.copyRemoteCardVo(userCardVo,cardVo);
         return R.ok();
     }
 
@@ -453,8 +460,10 @@ public class CheckBusiness {
         bo.setCardTypeName(cardVo.getCardTypeName());
         bo.setExpireDate(accountVo.getLifespan());
         bo.setDeptName(accountVo.getDeptName());
-        BeanUtil.copyProperties(accountVo, userAccountVo);
-        BeanUtil.copyProperties(cardVo, userCardVo);
+        // BeanUtil.copyProperties(accountVo, userAccountVo);
+        RemoteVoConvert.INSTANCE.copyRemoteUserAccountVo(userAccountVo,accountVo);
+        // BeanUtil.copyProperties(cardVo, userCardVo);
+        RemoteVoConvert.INSTANCE.copyRemoteCardVo(userCardVo,cardVo);
         return R.ok();
     }
 
@@ -498,8 +507,10 @@ public class CheckBusiness {
         bo.setFactoryId(cardVo.getFactoryId());
         bo.setCardTypeName(cardVo.getCardTypeName());
 
-        BeanUtil.copyProperties(accountVo, userAccountVo);
-        BeanUtil.copyProperties(cardVo, userCardVo);
+        // BeanUtil.copyProperties(accountVo, userAccountVo);
+        RemoteVoConvert.INSTANCE.copyRemoteUserAccountVo(userAccountVo,accountVo);
+        // BeanUtil.copyProperties(cardVo, userCardVo);
+        RemoteVoConvert.INSTANCE.copyRemoteCardVo(userCardVo,cardVo);
 
         return R.ok();
     }

+ 25 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/TermBusiness.java

@@ -11,6 +11,8 @@ import org.dromara.common.core.config.DefaultConfig;
 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.core.utils.StringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.server.consume.cache.TokenManager;
 import org.dromara.server.consume.domain.vo.XfTermVo;
 import org.dromara.server.consume.domain.vo.yc.RoomInfo;
@@ -106,6 +108,29 @@ public class TermBusiness {
         return R.ok(MessageFormat.format("获取token成功,设备编号[{0}],账号[{1}]", termNo, admin), termToken);
     }
 
+    public R<TermToken> getTermTokenNew(Long termNo, String admin, String pwd){
+        String strTermNo = String.valueOf(termNo);
+        String cacheName = StringUtils.format("{}:term_token", defaultConfig.getTenantId());
+        TermToken termToken =  RedisUtils.getCacheMapValue(cacheName, strTermNo);
+        if(ObjectUtil.isEmpty(termToken)|| termToken.getExpireTime() < new Date().getTime()){
+            LocalDateTime ldt = LocalDateTime.of(2000, 1, 1, 0, 0, 0);
+            Date minDate = Date.from(ldt.toInstant(ZoneOffset.of("+8")));
+
+            LocalDateTime now = LocalDateTime.now();
+            LocalDateTime expireTime = now.plusHours(4);
+
+            RemoteXfTermVo remoteVo = remoteTermService.queryByNo(termNo, defaultConfig.getTenantId());
+            if (ObjectUtil.isEmpty(remoteVo)) {
+                return R.fail(MessageFormat.format("机号为[{0}]的设备不存在", termNo), null);
+            }
+
+            termToken = new TermToken(strTermNo, UUID.randomUUID().toString(), admin, new Date().getTime(), minDate.getTime(),
+                                      Date.from(expireTime.toInstant(ZoneOffset.of("+8"))).getTime(), remoteVo.getRoomName());
+
+            RedisUtils.setCacheMapValue(cacheName, strTermNo, termToken);
+        }
+        return R.ok(MessageFormat.format("获取token成功,设备编号[{0}],账号[{1}]", termNo, admin), termToken);
+    }
     public R<TermInfo> getTermInfoByTermNo(Long termNo) {
         return this.getTermInfoByTermNo(termNo, defaultConfig.getTenantId());
     }

+ 2 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/AuthController.java

@@ -35,7 +35,8 @@ public class AuthController {
         if (ObjectUtil.isEmpty(pwd)) {
             pwd = "123456";
         }
-        R<TermToken> mapResult = termBusiness.getTermToken(termId, admin, pwd);
+        // R<TermToken> mapResult = termBusiness.getTermToken(termId, admin, pwd);
+        R<TermToken> mapResult = termBusiness.getTermTokenNew(termId, admin, pwd);
 
         if (R.isError(mapResult)) {
             ErrorResult result = new ErrorResult();

+ 0 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/TermsController.java

@@ -50,7 +50,6 @@ public class TermsController {
      * @param termNo 设备编号
      * @return 校时
      */
-
     @GetMapping("/CheckTime/{termNo}")
     public Object checkTermTime(@PathVariable("termNo") Integer termNo){
         R<Map<String,Object>> mapResult = termBusiness.checkTermTime(termNo);

+ 2 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v2/AuthController.java

@@ -24,7 +24,8 @@ public class AuthController {
 	public Object getTermToken(@PathVariable("termId") Long termId, @RequestHeader(name = "admin") String admin,
                                @RequestHeader(name = "pwd") String pwd) {
 
-		R<TermToken> mapResult = termBusiness.getTermToken(termId, admin, pwd);
+		// R<TermToken> mapResult = termBusiness.getTermToken(termId, admin, pwd);
+		R<TermToken> mapResult = termBusiness.getTermTokenNew(termId, admin, pwd);
 
 		if (R.isError(mapResult)) {
             return new ReturnResult(false, 1, "获取设备Token失败", null, System.currentTimeMillis());

+ 31 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/domain/convert/RemoteVoConvert.java

@@ -0,0 +1,31 @@
+package org.dromara.server.consume.domain.convert;
+
+import org.dromara.backstage.api.domain.vo.RemoteCardVo;
+import org.dromara.backstage.api.domain.vo.RemoteUserAccountVo;
+import org.dromara.backstage.api.domain.vo.RemoteXfTermVo;
+import org.dromara.server.consume.domain.vo.XfTermVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingConstants;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * 消费业务对象转换类
+ * <p>
+ *
+ * @author luoyibo
+ * @version 2.2.0
+ * @date 2025-06-06
+ * @since JDK17
+ */
+@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface RemoteVoConvert {
+    RemoteVoConvert INSTANCE = Mappers.getMapper(RemoteVoConvert.class);
+
+    void copyRemoteUserAccountVo(@MappingTarget RemoteUserAccountVo target, RemoteUserAccountVo source);
+
+    void copyRemoteCardVo(@MappingTarget RemoteCardVo target, RemoteCardVo source);
+
+    void copyRemoteTermVo(@MappingTarget XfTermVo target, RemoteXfTermVo source);
+}