Przeglądaj źródła

feature: kafka对接
1.教职工的kafka增加了卡片类型及有效期字段

luo.yibo@datuai.com 1 rok temu
rodzic
commit
71d17637af

+ 3 - 2
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemoteCardBo.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 
@@ -67,7 +68,7 @@ public class RemoteCardBo implements Serializable {
     /**
      * 当日消费金额
      */
-    private Long dayTotal;
+    private BigDecimal dayTotal;
 
     /**
      * 当日消费次数
@@ -77,7 +78,7 @@ public class RemoteCardBo implements Serializable {
     /**
      * 当餐交易金额
      */
-    private Long mealTotal;
+    private BigDecimal mealTotal;
 
     /**
      * 当餐消费次数

+ 3 - 2
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/vo/RemoteCardVo.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 
@@ -67,7 +68,7 @@ public class RemoteCardVo implements Serializable {
     /**
      * 当日消费金额
      */
-    private Long dayTotal;
+    private BigDecimal dayTotal;
 
     /**
      * 当日消费次数
@@ -77,7 +78,7 @@ public class RemoteCardVo implements Serializable {
     /**
      * 当餐交易金额
      */
-    private Long mealTotal;
+    private BigDecimal mealTotal;
 
     /**
      * 当餐消费次数

+ 52 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/bo/kafka/TraineeCheckIn.java

@@ -0,0 +1,52 @@
+package org.dromara.backstage.domain.bo.kafka;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName TraineeCheckIn
+ * @Description kafka推送的培训学员报到信息
+ * @Author luoyibo
+ * @Date 2024-11-25 10:55
+ * @Version 1.0
+ * @since jdk17
+ */
+@Data
+public class TraineeCheckIn implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1709358144544375277L;
+
+    /**
+     * 人员统一标识
+     */
+    private String otherSysId;
+
+    /**
+     * 班级标识
+     */
+    private String classId;
+    /**
+     * 报到状态
+     */
+    private Boolean checkinState;
+
+    /**
+     * 报到日期
+     */
+    private Date checkInDate;
+
+    /**
+     * 支付状态
+     */
+    private Boolean payStatus;
+
+    /**
+     * 支付日期
+     */
+    private Date payDate;
+
+}

+ 8 - 0
ruoyi-server/ruoyi-server-common/src/main/java/org/dromara/server/common/domain/bo/ResourcePerson.java

@@ -58,6 +58,7 @@ public class ResourcePerson implements Serializable {
      * 手机号码
      */
     private String phone;
+
     /**
      * 账户卡片类型
      */
@@ -72,26 +73,33 @@ public class ResourcePerson implements Serializable {
      * 身份证号
      */
     private String idNumber;
+
     /**
      * 删除标志 默认为0,研究生系统数据会有此字段的值
      */
     private String delFlag;
+
     /**
      * 用户身份(1=教师 2=学员 3=研究生)
      */
     private String category;
+
     /**
      * 备注
      */
+
     private String remark;
+
     /**
      * 第三方人员状态
      */
     private String userState;
+
     /**
      * 操作员Id
      */
     private Long operatorId;
+
     /**
      * 人员所在部门(多部门情况)
      */

+ 37 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.backstage.api.domain.bo.RemoteCardBo;
 import org.dromara.backstage.api.domain.vo.RemoteCardVo;
 import org.dromara.backstage.api.domain.vo.RemoteMealTypeVo;
 import org.dromara.backstage.api.domain.vo.RemoteUserAccountVo;
@@ -13,6 +14,7 @@ import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.enums.BalanceUpdateEnum;
+import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.exception.consume.ConsumeException;
 import org.dromara.common.core.utils.RecordIdUtils;
 import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
@@ -72,7 +74,20 @@ public class BaseBusiness {
         originalBo.setDigitalSign(consumeBo.getDigitalSign());
         originalBo.setUserId(accountVo.getUserId());
         originalBo.setDeptId(accountVo.getDeptId());
-        XfConsumeDetailOriginalVo vo = originalService.insertByBo(originalBo);
+        XfConsumeDetailOriginalVo vo = originalService.queryById(originalId);
+        if (ObjUtil.isNotEmpty(vo)) {
+            // 如果原始消费记录表中已有该笔消费,则检查是否入账
+            XfConsumeDetailVo detailVo = consumeDetailService.queryById(originalId);
+            if (ObjUtil.isNotEmpty(detailVo)) {
+                // 该笔消费记录已入账
+                return R.fail(new ErrorInfo(ResultCodeEnum.DATA_ALREADY_EXISTED.code(), "该笔交易已入账", "该笔消费记录已入账,不能重复入账"));
+            }
+            // 未入账,直接返回入账数据
+            BeanUtil.copyProperties(vo, originalVo);
+            return R.ok();
+        }
+        // 原始记录表不存在此消费记录,直接插入
+        vo = originalService.insertByBo(originalBo);
         if (ObjUtil.isNotEmpty(vo)) {
             BeanUtil.copyProperties(vo, originalVo);
             return R.ok();
@@ -194,6 +209,26 @@ public class BaseBusiness {
         return result.get();
     }
 
+    public boolean updateCardData(ConsumptionBo bo, RemoteCardVo cardVo,RemoteMealTypeVo mealTypeVo) {
+        RemoteCardBo remoteCardBo = new RemoteCardBo();
+        // remoteCardBo.setCardNo();
+        // remoteCardBo.setCardType();
+        // remoteCardBo.setLifespan();
+        // remoteCardBo.setFactoryId();
+        // remoteCardBo.setMainCard();
+        // remoteCardBo.setStatus();
+        // remoteCardBo.setChangeTime();
+        remoteCardBo.setDayTotal(cardVo.getDayTotal().add(bo.getConsumeMoney()));
+        remoteCardBo.setDayCount(cardVo.getDayCount() + 1);
+        remoteCardBo.setMealTotal(cardVo.getMealTotal().add(bo.getConsumeMoney()));
+        remoteCardBo.setMealCount(cardVo.getMealCount() + 1);
+        remoteCardBo.setLastPay(bo.getConsumeDate());
+        remoteCardBo.setLastMeal(mealTypeVo.getMealId());
+
+
+        return true;
+    }
+
     /**
      * 创建一条消费明细记录
      *
@@ -245,4 +280,5 @@ public class BaseBusiness {
         return consumeDetailService.createConsumeDetailRecord(consumeDetailBo);
     }
 
+
 }

+ 1 - 2
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/CheckBusiness.java

@@ -426,8 +426,7 @@ public class CheckBusiness {
         return R.ok();
     }
 
-    public R<ErrorInfo> checkLimitDeal(ConsumptionBo bo, RemoteUserAccountVo userAccountVo, XfTermVo termVo, RemoteCardVo userCardVo,
-                                       RemoteMealTypeVo mealTypeVo) {
+    public R<ErrorInfo> checkLimitDeal(ConsumptionBo bo, RemoteUserAccountVo userAccountVo, XfTermVo termVo, RemoteCardVo userCardVo,RemoteMealTypeVo mealTypeVo) {
         Long termNo = termVo.getTermNo();
         String mealTypeId = mealTypeVo.getTypeId();
         if (termNo == 0 && ObjectUtil.equal("0", mealTypeId)) {

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

@@ -58,6 +58,7 @@ public class ConsumeController {
     public R<ErrorInfo> consumeKafka(@RequestBody ConsumptionBo bo) {
         return consumeBusiness.fullOrder(bo);
     }
+
     private Object doRecordData(Object record, String type) {
         if (ObjectUtil.length(record) == 0) {
             ErrorResult result = ErrorResult.instance(HttpStatus.FORBIDDEN, "处理失败", 1, "PARAM_ERROR", "参数错误",

+ 13 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/teacher/TeacherUtils.java

@@ -1,5 +1,7 @@
 package org.dromara.server.mq.event.kafka.impl.teacher;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import org.dromara.server.common.constant.DefaultConstants;
 import org.dromara.server.common.domain.bo.ResourceDept;
@@ -37,8 +39,18 @@ public class TeacherUtils {
         person.setPhone(data.get("mobile_phone").toString());
         person.setCategory("1");
         person.setUserState(data.get("status").toString());
-        person.setTenantId(DefaultConstants.TENANT_ID);
+        if(ObjectUtil.isNotEmpty(data.get("tenant_code").toString())) {
+            person.setTenantId(data.get("tenant_code").toString());
+        } else {
+            person.setTenantId(DefaultConstants.TENANT_ID);
+        }
         person.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
+        if(ObjectUtil.isNotEmpty(data.get("one_card_type"))){
+            person.setCardType(data.get("one_card_type").toString());
+        }
+        if(ObjectUtil.isNotEmpty(data.get("one_card_lifespan"))){
+            person.setLifespan(DateUtil.parseDate(data.get("one_card_lifespan").toString()));
+        }
         resourcePersonList.add(person);
 
         return resourcePersonList;