Quellcode durchsuchen

fix: 消费服务
1.本地请求消费改在本地消费明细入库成功后再发kafka消息
2.云端处理消费时,如果请求参数中没有useType、creditType和statusFlag参数,则默认为消费系统、消费机消费、状态为4

luo.yibo@datuai.com vor 1 Jahr
Ursprung
Commit
cd78a1fbd6

+ 0 - 5
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/bo/RemoteDoorOpenBo.java

@@ -1,11 +1,6 @@
 package org.dromara.hotel.api.domain.bo;
 
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
 
 import java.io.Serial;
 import java.io.Serializable;

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

@@ -2,6 +2,7 @@ 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 cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -13,6 +14,8 @@ import org.dromara.common.core.config.AsyncConfig;
 import org.dromara.common.core.constant.ApiErrorTypeConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
+import org.dromara.common.core.enums.ConsumeRecordTypeEnum;
+import org.dromara.common.core.enums.CreditTypeEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.json.utils.JsonUtils;
@@ -54,7 +57,7 @@ public class ConsumeBusiness {
      * @param xfPwd 消费密码
      * @return 请求结果
      */
-    public R<ErrorInfo> createOrder(ConsumptionBo bo, java.lang.String mac, java.lang.String xfPwd) {
+    public R<ErrorInfo> createOrder(ConsumptionBo bo, String mac, String xfPwd) {
         //检查下客户的公钥与么钥
         baseBusiness.getRegisterInfo();
 
@@ -117,7 +120,7 @@ public class ConsumeBusiness {
      * @param xfPwd 消费密码
      * @return 上传结果
      */
-    public R<ErrorInfo> postOrder(ConsumptionBo bo, java.lang.String mac, java.lang.String xfPwd) {
+    public R<ErrorInfo> postOrder(ConsumptionBo bo, String mac, String xfPwd) {
         log.info("[上传交易]-[开始参数验证]-[{}]", JSONUtil.toJsonStr(bo));
         R<ErrorInfo> result = checkBusiness.checkParam(bo);
         if (R.isError(result)) {
@@ -158,7 +161,17 @@ public class ConsumeBusiness {
      * @param xfPwd 消费密码
      * @return 处理结果
      */
-    public R<ErrorInfo> fullOrder(ConsumptionBo bo, java.lang.String mac, java.lang.String xfPwd) {
+    public R<ErrorInfo> fullOrder(ConsumptionBo bo, String mac, String xfPwd) {
+        if (ObjectUtil.isEmpty(bo.getCreditType())) {
+            bo.setCreditType(CreditTypeEnum.TERM_CONSUME.code());
+        }
+        if (ObjectUtil.isEmpty(bo.getUseType())) {
+            bo.setUseType(SystemUseTypeEnum.CONSUME.code());
+        }
+        if (ObjectUtil.isEmpty(bo.getStatusFlag())) {
+            bo.setStatusFlag(Integer.valueOf(ConsumeRecordTypeEnum.XFJXF_4.code()));
+        }
+
         R<ErrorInfo> result = this.createOrder(bo, mac, xfPwd);
         if(!R.isSuccess(result)) {
             log.error("[请求交易]-[请求交易处理失败]-[{}]", JSONUtil.toJsonStr(result.getData()));
@@ -182,7 +195,7 @@ public class ConsumeBusiness {
         if (CollectionUtil.isEmpty(list)) {
             return R.ok(new ErrorInfo(ResultCodeEnum.DATA_NOT_FOUND.code(), ApiErrorTypeConstants.NOT_FOUND, "没有待入账的原始消费记录"));
         }
-        List<java.lang.String> doMessage = new ArrayList<>();
+        List<String> doMessage = new ArrayList<>();
         //循环写入原始消费记录
         int total = list.size();
         AtomicInteger success = new AtomicInteger();

+ 0 - 17
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/ConsumeController.java

@@ -1,6 +1,5 @@
 package org.dromara.server.consume.controller.v1;
 
-import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -26,10 +25,8 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Date;
 import java.util.Objects;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 
 /**
  * name: ConsumeController
@@ -79,12 +76,6 @@ public class ConsumeController {
 
         return doRecordData(record, "requestConsume", mac, xfPwd);
 
-        //Object object = doRecordData(record, "requestConsume", mac, xfPwd);
-        //JSONObject jsonObject = JSONUtil.parseObj(object);
-        //
-        //sendConsumeToCloud(jsonObject, record);
-
-        //return object;
     }
 
     /**
@@ -100,12 +91,6 @@ public class ConsumeController {
                                   @RequestParam(name = "xfPwd", required = false) java.lang.String xfPwd) {
 
         return doRecordData(record, "requestConsume", mac, xfPwd);
-        //Object object = doRecordData(record, "requestConsume", mac, xfPwd);
-        //JSONObject jsonObject = JSONUtil.parseObj(object);
-        //
-        //sendConsumeToCloud(jsonObject, record);
-        //
-        //return object;
     }
 
     /**
@@ -181,9 +166,7 @@ public class ConsumeController {
         if (Objects.equals(type, "requestConsume")) {
             if (ObjectUtil.equals(bo.getCreditType(), CreditTypeEnum.TERM_CONSUME.code())) {
                 // 如果是消费机请求消费,将消费时间设置为当前时间,以防消费时时钟不对造成实际消费时间不正确
-                String requestTime = DateUtil.format(bo.getConsumeDate(), DefaultConstants.DATE_TIME_FORMAT);
                 bo.setConsumeDate(DateUtil.date());
-                log.info("[请求消费时间:{},调整后消费时间:{}",requestTime, DateUtil.format(bo.getConsumeDate(), DefaultConstants.DATE_TIME_FORMAT));
             }
             errorInfo = consumeBusiness.createOrder(bo, mac, xfPwd);
         } else if (Objects.equals(type, "uploadRecord")) {

+ 0 - 5
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/ConsumeEventStrategyImpl.java

@@ -33,12 +33,7 @@ public class ConsumeEventStrategyImpl implements IYktEventStrategy {
         if (ObjectUtil.equals(eventType, EventTypeConstants.CONSUME)) {
             // 解决枚举类转换异常的问题
             JSONObject entries = JSONUtil.parseObj(msg);
-            //entries.set("creditType", null);
-            //entries.set("useType", null);
             RemoteConsumeBo recordBo = JSONUtil.toBean(entries, RemoteConsumeBo.class);
-            //recordBo.setStatusFlag(4);
-            //recordBo.setUseType(String.CONSUME);
-            //recordBo.setCreditType(CreditTypeEnum.TERM_CONSUME);
             log.info("[处理本地->云端消费请求]-[消费信息:{}]", JSONUtil.toJsonStr(recordBo));
             remoteConsumeService.dealKafkaConsumeData(recordBo);
         }