Просмотр исходного кода

fix(消费服务和管理平台): 消费服务和管理平台bug修复

1.管理平台卡片挂失与解挂时同步更新缓存中卡片的状态
2.消费服务获取消费机token接口中头部的admin和pwd参数不是必须的
autumnal_wind 9 месяцев назад
Родитель
Сommit
0bd8f07bc6

+ 31 - 6
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtCardServiceImpl.java

@@ -29,11 +29,15 @@ import org.dromara.common.core.enums.CardOpenEnum;
 import org.dromara.common.core.enums.CardStatusEnum;
 import org.dromara.common.core.enums.CardStatusEnum;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.hotel.api.service.RemoteCardDataService;
 import org.dromara.hotel.api.service.RemoteCardDataService;
+import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Cacheable;
+import org.springframework.cache.annotation.Caching;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.smartcardio.Card;
 import javax.smartcardio.Card;
@@ -299,12 +303,16 @@ public class PtCardServiceImpl implements IPtCardService {
      */
      */
     @Override
     @Override
     public boolean lockCard(Long cardId) {
     public boolean lockCard(Long cardId) {
-        // sendCloudConsume(baseMapper.selectVoById(cardId));
-        return baseMapper.update(null, new LambdaUpdateWrapper<PtCard>()
+        int iCount = baseMapper.update(null, new LambdaUpdateWrapper<PtCard>()
             .set(PtCard::getStatus, '2')
             .set(PtCard::getStatus, '2')
             .set(PtCard::getChangeTime, DateUtil.date())
             .set(PtCard::getChangeTime, DateUtil.date())
             .eq(PtCard::getStatus, '1')
             .eq(PtCard::getStatus, '1')
-            .eq(PtCard::getCardId, cardId)) > 0;
+            .eq(PtCard::getCardId, cardId));
+        if (iCount > 0) {
+            resetCardCache(cardId);
+            return true;
+        }
+        return false;
     }
     }
 
 
     /**
     /**
@@ -315,12 +323,16 @@ public class PtCardServiceImpl implements IPtCardService {
      */
      */
     @Override
     @Override
     public boolean unlockCard(Long cardId) {
     public boolean unlockCard(Long cardId) {
-        // sendCloudConsume(baseMapper.selectVoById(cardId));
-        return baseMapper.update(null, new LambdaUpdateWrapper<PtCard>()
+        int iCount = baseMapper.update(null, new LambdaUpdateWrapper<PtCard>()
             .set(PtCard::getStatus, '1')
             .set(PtCard::getStatus, '1')
             .set(PtCard::getChangeTime, DateUtil.date())
             .set(PtCard::getChangeTime, DateUtil.date())
             .eq(PtCard::getStatus, '2')
             .eq(PtCard::getStatus, '2')
-            .eq(PtCard::getCardId, cardId)) > 0;
+            .eq(PtCard::getCardId, cardId));
+        if (iCount > 0) {
+            resetCardCache(cardId);
+            return true;
+        }
+        return false;
     }
     }
 
 
     /**
     /**
@@ -648,4 +660,17 @@ public class PtCardServiceImpl implements IPtCardService {
                 )
                 )
             ));
             ));
     }
     }
+
+    /**
+     * 更新指定Id的卡片缓存数据
+     * @param cardId 卡片Id
+     */
+    private void resetCardCache(Long cardId) {
+        PtCardVo vo = baseMapper.selectVoById(cardId);
+
+        RedisUtils.setCacheMapValue(CacheNames.PT_USER_CARD_FACTORYID,vo.getFactoryId().toString(),JsonUtils.toJsonString(vo));
+        RedisUtils.setCacheMapValue(CacheNames.PT_USER_CARD_USER_ID,vo.getUserId().toString(),JsonUtils.toJsonString(vo));
+        RedisUtils.setCacheMapValue(CacheNames.PT_USER_CARD_NO,vo.getCardNo().toString(),JsonUtils.toJsonString(vo));
+    }
+
 }
 }

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

@@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.api.ReturnResult;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorResult;
 import org.dromara.common.core.domain.model.ErrorResult;
 import org.dromara.server.consume.business.TermBusiness;
 import org.dromara.server.consume.business.TermBusiness;
@@ -59,7 +58,8 @@ public class AuthController {
             // 5. 捕获所有未处理异常
             // 5. 捕获所有未处理异常
             log.error("{}-[系统异常: {}]-[详情: {}]",
             log.error("{}-[系统异常: {}]-[详情: {}]",
                 logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
                 logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
-            return new ReturnResult(false, 503, "服务暂时不可用,请稍后重试", null, startTime);
+            // return new ReturnResult(false, 503, "服务暂时不可用,请稍后重试", null, startTime);
+            return ErrorResult.badRequestResponse("服务暂时不可用,请稍后重试");
         }
         }
     }
     }
 }
 }

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

@@ -5,7 +5,6 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.api.ReturnResult;
 import org.dromara.common.core.api.ReturnResult;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.domain.model.ErrorResult;
 import org.dromara.server.consume.business.TermBusiness;
 import org.dromara.server.consume.business.TermBusiness;
 import org.dromara.server.consume.domain.vo.yc.TermToken;
 import org.dromara.server.consume.domain.vo.yc.TermToken;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -25,8 +24,8 @@ public class AuthController {
 	 * @return token
 	 * @return token
 	 */
 	 */
 	@GetMapping("/token/term/{termId}")
 	@GetMapping("/token/term/{termId}")
-	public Object getTermToken(@PathVariable("termId") Long termId, @RequestHeader(name = "admin") String admin,
-                               @RequestHeader(name = "pwd") String pwd) {
+	public Object getTermToken(@PathVariable("termId") Long termId, @RequestHeader(name = "admin",required = false) String admin ,
+                               @RequestHeader(name = "pwd",required = false) String pwd) {
         final String logPrefix = String.format("[获取设备TokenV2]-[termId:%s]", termId);
         final String logPrefix = String.format("[获取设备TokenV2]-[termId:%s]", termId);
         long startTime = System.currentTimeMillis();
         long startTime = System.currentTimeMillis();
 
 
@@ -51,7 +50,8 @@ public class AuthController {
             // 4. 异常处理
             // 4. 异常处理
             log.error("{}-[系统异常: {}]-[详情: {}]",
             log.error("{}-[系统异常: {}]-[详情: {}]",
                 logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
                 logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
-            return ErrorResult.innternalErrorResponse("服务暂时不可用,请稍后重试");
+            return new ReturnResult(false, 400, "服务暂时不可用,请稍后重试", null, startTime);
+            // return ErrorResult.innternalErrorResponse("服务暂时不可用,请稍后重试");
         }
         }
 	}
 	}
 }
 }