Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

xiari 11 miesięcy temu
rodzic
commit
f5bc4d0c05

+ 3 - 8
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -250,13 +250,8 @@ public class BaseBusiness {
 
     public void completeUploadRecord(ConsumptionBo bo, RemoteUserAccountVo accountVo) {
         // 消费记录上传完成,还有一些后续工作,不需要知道处理结果,采用异步任务提交
-        List<Runnable> afterTasks = new ArrayList<>();
-        afterTasks.add(() -> sendConsumeToKafka(bo, accountVo));
-        afterTasks.add(() -> sendCloudConsume(bo));
-
-        for (Runnable task : afterTasks) {
-            taskExecutor.submit(() -> task);
-        }
+        taskExecutor.submit(() -> sendConsumeToKafka(bo, accountVo));
+        taskExecutor.submit(() -> sendCloudConsume(bo));
     }
 
     public List<RemoteSendMessageRecordBo> queryConsumeErrorList(RemoteSendMessageRecordBo remoteBo) {
@@ -411,7 +406,7 @@ public class BaseBusiness {
      * @param bo 请求消费数据
      */
     public void sendCloudConsume(ConsumptionBo bo) {
-        log.info("[发送消费请求至云平台]-[{}]", bo);
+        log.info("[向云平台发送消费请求]-[{}]", bo);
         kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.TO_CLOUD_TOPIC, EventTypeConstants.CONSUME, EventSenderEnum.CONSUME.code(), bo);
     }
 

+ 4 - 10
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/ConsumeBusiness.java

@@ -76,12 +76,12 @@ public class ConsumeBusiness {
         long startTime = System.currentTimeMillis();
         log.warn("[请求交易]-[开始记录有效性验证]-[{}]", JSONUtil.toJsonStr(bo));
         AllowConsumeValidationContext ctx = AllowConsumeValidationContext.create(bo);
-        R<ErrorInfo> result = commonCheck.consumeValidation(bo, ctx);
-        log.info("[请求交易]-[记录有效性验证完成]-[耗时: {} 毫秒]-[记录:{}]", System.currentTimeMillis() - startTime, JSONUtil.toJsonStr(bo));
+        R<ErrorInfo> result = commonCheck.consumeValidation(ctx);
         if (R.isError(result)) {
-            log.error("[请求交易]-[记录有效性验证失败]-[{}]", result.getData());
+            log.error("[请求交易]-[记录有效性验证失败]-[耗时: {} 毫秒]-[错误:{}]", System.currentTimeMillis() - startTime, result.getData());
             return result;
         }
+        log.info("[请求交易]-[记录有效性验证完成]-[耗时: {} 毫秒]-[记录:{}]", System.currentTimeMillis() - startTime, JSONUtil.toJsonStr(bo));
 
         RemoteUserAccountVo userAccountVo = ctx.getUserAccountVo();
         RemoteCardVo userCardVo = ctx.getUserCardVo();
@@ -122,7 +122,7 @@ public class ConsumeBusiness {
         long startTime = System.currentTimeMillis();
         // log.warn("[上传交易]-[开始记录有效性验证]-[{}]", JSONUtil.toJsonStr(bo));
         AllowConsumeValidationContext ctx = AllowConsumeValidationContext.create(bo);
-        R<ErrorInfo> result = commonCheck.consumeValidation(bo, ctx);
+        R<ErrorInfo> result = commonCheck.consumeValidation(ctx);
         log.info("[上传交易]-[记录有效性验证完成]-[耗时: {} 毫秒]-[记录:{}]", System.currentTimeMillis() - startTime, JSONUtil.toJsonStr(bo));
         if (R.isError(result)) {
             log.error("[上传交易]-[记录有效性验证失败]-[{}]", result.getData());
@@ -278,12 +278,6 @@ public class ConsumeBusiness {
     @Async
     public void postOrderAsync(ConsumptionBo bo, String mac, String xfPwd) {
         R<ErrorInfo> result = SpringUtils.getAopProxy(this).postOrder(bo, mac, xfPwd);
-        if (R.isSuccess(result)) {
-            // 发送消息
-            if (ObjectUtil.equals(defaultConfig.getLocationFlag(), DefaultConstants.LOCAL_FLAG)) {
-                ThreadUtil.execAsync(() -> baseBusiness.sendCloudConsume(bo));
-            }
-        }
         log.info("[上传交易结果完成]");
     }
 }

+ 3 - 6
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/CommonCheck.java

@@ -60,11 +60,11 @@ public class CommonCheck {
 
     /**
      * 账户、设备有效性验证
-     * @param bo 消费业务对象
+     *
      * @param ctx 验证上下文
      * @return 校验结果,包含错误信息或成功标识
      */
-    public R<ErrorInfo> consumeValidation(ConsumptionBo bo, AllowConsumeValidationContext ctx) {
+    public R<ErrorInfo> consumeValidation(AllowConsumeValidationContext ctx) {
         // 2. 执行异步验证链
         R<ErrorInfo> result = executeTermValidationChain(ctx);
         if (R.isError(result)) {
@@ -486,14 +486,12 @@ public class CommonCheck {
      *                       该对象可能被用于验证消费是否符合规则。
      * @param userCardVo     用户卡片信息对象,包含与用户卡片相关的数据(如余额、有效期等)。
      *                       该对象可能被用于验证卡片的有效性或更新卡片状态。
-     * @param termVo         终端信息对象,包含与消费终端相关的数据(如终端编号、位置等)。
-     *                       该对象可能被用于记录消费终端的相关信息。
      * @param mapCardLimited 卡片限制映射,包含卡片的限制条件(如每日限额、每餐限额等)。
      *                       该映射可能以键值对的形式存储限制条件的状态(例如是否超出限制)。
      * @param cardLimitedVo  卡片限制信息对象,包含详细的卡片限制规则(如每日最大消费次数、每餐最大消费金额等)。
      *                       该对象可能被用于检查或更新卡片的限制状态。
      */
-    public void updateValidationData(ConsumptionBo bo, RemoteCardVo userCardVo, XfTermVo termVo,
+    public void updateValidationData(ConsumptionBo bo, RemoteCardVo userCardVo,
                                      Map<String, Boolean> mapCardLimited,
                                      XfCardLimitedVo cardLimitedVo) {
         Long mealType = bo.getMealType();
@@ -542,6 +540,5 @@ public class CommonCheck {
         ctx.getBo().setTenantId(accountVo.getTenantId());
         ctx.getBo().setExpireDate(accountVo.getLifespan());
         ctx.getBo().setDeptName(accountVo.getDeptName());
-
     }
 }

+ 1 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/ConsumeRequestCheck.java

@@ -123,7 +123,7 @@ public class ConsumeRequestCheck {
         bo.setRecordId(originalVo.getRecordId());
         bo.setOriginalId(originalVo.getOriginalId());
 
-        commonCheck.updateValidationData(bo, userCardVo, useTermVo, mapCardLimited, cardLimitedVo);
+        commonCheck.updateValidationData(bo, userCardVo, mapCardLimited, cardLimitedVo);
 
         return R.ok();
     }

+ 1 - 8
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/ConsumeController.java

@@ -13,7 +13,6 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.domain.model.ErrorResult;
 import org.dromara.common.core.enums.SystemUseTypeEnum;
-import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
 import org.dromara.server.consume.business.BaseBusiness;
@@ -106,14 +105,8 @@ public class ConsumeController {
     @PostMapping("/Consume")
     public Object uploadRecord(@RequestBody Object record, @RequestParam(name = "mac", required = false) String mac) {
         log.warn("[消费机上传消费记录]-[{}]", JSONUtil.parseObj(record));
-        Object object = doRecordData(record, "uploadRecord", mac, "");
-        JSONObject jsonObject = JSONUtil.parseObj(object);
 
-        // sendConsumeToCloud(jsonObject, record);
-        // 使用 spring 代理执行异步发送kafka
-        SpringUtils.getAopProxy(this).sendConsumeToCloud(jsonObject, record);
-
-        return object;
+        return doRecordData(record, "uploadRecord", mac, "");
     }
 
     /**

+ 12 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/InitDataController.java

@@ -148,4 +148,16 @@ public class InitDataController {
 
         return R.ok();
     }
+
+    /**
+     * 初始化设备数据.
+     *
+     * @return 结果
+     */
+    @GetMapping("/term")
+    public R<Void> initTerms() {
+        initBusiness.initTermInfo();
+
+        return R.ok();
+    }
 }

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

@@ -41,7 +41,7 @@ public class TermsController {
                 return ErrorResult.badRequestResponse("设备机号不能为空");
             }
             // 2. 执行业务逻辑
-            R<TermInfo> result =  termBusiness.getTermInfoByTermNo(termNo);
+            R<TermInfo> result = termBusiness.getTermInfoByTermNo(termNo);
 
             // 4. 处理业务结果
             if (R.isError(result)) {
@@ -53,7 +53,7 @@ public class TermsController {
         } catch (Exception e) {
             // 5. 捕获所有未处理异常
             log.error("{}-[系统异常: {}]-[详情: {}]",
-                      logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
+                logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
             return ErrorResult.innternalErrorResponse("服务暂时不可用,请稍后重试");
         } finally {
             log.info("{}-[结束,耗时: {}ms]", logPrefix, System.currentTimeMillis() - startTime);
@@ -91,7 +91,7 @@ public class TermsController {
         } catch (Exception e) {
             // 5. 捕获所有未处理异常
             log.error("{}-[系统异常: {}]-[详情: {}]",
-                      logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
+                logPrefix, e.getClass().getSimpleName(), e.getMessage(), e);
             return ErrorResult.innternalErrorResponse("服务暂时不可用,请稍后重试");
         } finally {
             log.info("{}-[结束,耗时: {}ms]", logPrefix, System.currentTimeMillis() - startTime);

+ 3 - 3
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/impl/FaceEngineServiceImpl.java

@@ -54,7 +54,7 @@ public class FaceEngineServiceImpl implements FaceEngineService {
         detectCfg.setDetectFaceOrientPriority(DetectOrient.ASF_OP_0_ONLY);
         this.faceEngineGeneralPool = new GenericObjectPool<FaceEngine>(
             new FaceEngineFactory(this.arcFaceConfig.getSdkLibPath(), this.arcFaceConfig.getAppId(), this.arcFaceConfig.getSdkKey(),
-                                  this.arcFaceConfig.getActiveKey(), detectCfg), detectPoolConfig);
+                this.arcFaceConfig.getActiveKey(), detectCfg), detectPoolConfig);
     }
 
     // 人脸检测
@@ -114,10 +114,10 @@ public class FaceEngineServiceImpl implements FaceEngineService {
                 FaceFeature faceFeature = new FaceFeature();
                 if (this.arcFaceConfig.isFaceMask()) {
                     faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(),
-                                                  faceInfoList.get(0), ExtractType.REGISTER, 1, faceFeature);
+                        faceInfoList.get(0), ExtractType.REGISTER, 1, faceFeature);
                 } else {
                     faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(),
-                                                  faceInfoList.get(0), ExtractType.RECOGNIZE, 0, faceFeature);
+                        faceInfoList.get(0), ExtractType.RECOGNIZE, 0, faceFeature);
                 }
 
                 return Base64.encode(faceFeature.getFeatureData());