Bläddra i källkod

feature: 学员自助
1.学员报到完成后增加发送报到状态的kafka和入住信息短信

luo.yibo@datuai.com 1 år sedan
förälder
incheckning
4faee33455

+ 25 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/SelfBusiness.java

@@ -54,6 +54,11 @@ public class SelfBusiness {
     String rechargeBackUrl;
     @Value("${third-api.pay-api}")
     String payApi;
+    @Value("message-no-room")
+    String messageNoRoom;
+    @Value("message-has-room")
+    String messageHasRoom;
+
     private final AsyncTaskService asyncTaskService;
     private final IWxOrderService wxOrderService;
     private final IXfCreditAccountBackService creditAccountBackService;
@@ -93,6 +98,26 @@ public class SelfBusiness {
         asyncTaskService.asyncSendSms(phone, message);
     }
 
+    /**
+     * 发送有房间信息的入住信息
+     * @param phone 电话
+     * @param realName 姓名
+     * @param className 班级名
+     * @param roomCode 房间号
+     */
+    public void sendSmsHasRoom(String phone,String realName,String className,String roomCode){
+        sendSms(phone, String.format(messageHasRoom.replace("rn", "\r\n"), realName, className,roomCode));
+    }
+
+    /**
+     * 发送没有房间的入住信息
+     * @param phone 电话
+     * @param realName 姓名
+     * @param className 班级名
+     */
+    public void sendSmsNoRoom(String phone,String realName,String className){
+        sendSms(phone, String.format(messageNoRoom.replace("rn", "\r\n"), realName, className));
+    }
     public ReturnResult getWechatRechargeQrCode(Map<String, String> mapParams){
         long cardNo = Long.parseLong(mapParams.get("cardNo"));
         int termNo = Integer.parseInt(mapParams.get("termNo"));

+ 35 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java

@@ -11,6 +11,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.backstage.business.lock.LockBusiness;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
+import org.dromara.backstage.domain.bo.kafka.TraineeCheckIn;
 import org.dromara.backstage.domain.bo.lock.RoomCardBo;
 import org.dromara.backstage.domain.bo.yc.YcTraineeBo;
 import org.dromara.backstage.domain.convert.YcVoConvert;
@@ -18,6 +19,8 @@ import org.dromara.backstage.domain.vo.card.PtCardVo;
 import org.dromara.backstage.domain.vo.yc.YcBagVo;
 import org.dromara.backstage.domain.vo.yc.YcCardVo;
 import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
+import org.dromara.backstage.mq.KafkaNormalProducer;
+import org.dromara.backstage.mq.constant.YktEventConstaints;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
@@ -29,6 +32,8 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.enums.RoomCardTypeEnum;
+import org.dromara.common.message.kafka.domain.KafkaHeader;
+import org.dromara.common.message.kafka.domain.KafkaMessage;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
 import org.dromara.hotel.api.domain.bo.RemoteTeamBo;
@@ -72,6 +77,8 @@ public class TraineeBusiness {
     private final IPtCardService cardService;
     private final IPtBagService bagService;
     private final LockBusiness lockBusiness;
+    private final KafkaNormalProducer kafkaProducer;
+    private final SelfBusiness selfBusiness;
 
     /**
      * 获取报到学员信息
@@ -156,6 +163,11 @@ public class TraineeBusiness {
             // 获取房卡信息
             String cardData = getRoomCardData(kfOrderVo);
             ycTraineeVo.setRoomCardData(cardData);
+            // 发送报到短信(有房间)
+            selfBusiness.sendSmsHasRoom(ycTraineeVo.getMobilePhone(),ycTraineeVo.getUserXm(), remoteDeptVo.getDeptName(), roomCode);
+        } else {
+            // 发送短信,暂无房间
+            selfBusiness.sendSmsNoRoom(ycTraineeVo.getMobilePhone(),ycTraineeVo.getUserXm(),remoteDeptVo.getDeptName());
         }
         setCheckInfoStatus(bo, ycTraineeVo);
         // 培训班级信息
@@ -165,6 +177,8 @@ public class TraineeBusiness {
 
         BeanUtil.copyProperties(ycTraineeVo, traineeVo);
 
+        // 发送报到的kafka消息
+        sendCheckInMessageToKafka(bo, ycTraineeVo);
         return R.ok();
     }
 
@@ -326,4 +340,25 @@ public class TraineeBusiness {
             ycTraineeVo.setCheckinState(1);
         }
     }
+
+    private void sendCheckInMessageToKafka(YcTraineeBo bo, YcTraineeVo ycTraineeVo){
+        TraineeCheckIn traineeCheckIn = new TraineeCheckIn();
+        traineeCheckIn.setOtherSysId(ycTraineeVo.getOtherId());
+        traineeCheckIn.setClassId(ycTraineeVo.getUserClass().getOtherId());
+        traineeCheckIn.setCheckinState(true);
+        traineeCheckIn.setCheckInDate(bo.getCheckInDate());
+        traineeCheckIn.setPayStatus(true);
+        traineeCheckIn.setPayDate(bo.getCheckoutDate());
+
+
+        KafkaMessage<TraineeCheckIn> message = new KafkaMessage<>();
+        KafkaHeader header = message.getHeader();
+        header.setTimestamp(System.currentTimeMillis());
+        header.setEventId(YktEventConstaints.CHECKIN_STATE);
+        header.setEventType(YktEventConstaints.SENDER);
+        message.setHeader(header);
+        message.setBody(traineeCheckIn);
+
+        kafkaProducer.sendKafkaMessage("eventBus",bo.getGuestId(),message);
+    }
 }

+ 1 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/convert/YcVoConvert.java

@@ -188,6 +188,7 @@ public class YcVoConvert {
         classVo.setCanEat(1);
         classVo.setChooseRoom(ObjectUtil.isEmpty(vo.getChooseRoom()) ? 0 : 1);
         classVo.setJfhbd(0);
+        classVo.setOtherId(vo.getOtherId());
 
         return classVo;
     }

+ 6 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/vo/yc/YcClassVo.java

@@ -65,4 +65,10 @@ public class YcClassVo implements Serializable {
      * 是否缴费后报到 0-否 1-是 默认为否
      */
     private Integer jfhbd;
+
+    /**
+     * 唯一标识
+     */
+    private String otherId;
+
 }

+ 26 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/mq/constant/YktEventConstaints.java

@@ -0,0 +1,26 @@
+package org.dromara.backstage.mq.constant;
+
+/**
+ * @ClassName YktEventContraints
+ * @Description TODO
+ * @Author luoyibo
+ * @Date 2024-11-12 11:46
+ * @Version 1.0
+ * @since jdk17
+ */
+public class YktEventConstaints {
+    /**
+     * 一卡通业务系统编号
+     */
+    public static final String SENDER = "005";
+
+    // 消费记录
+    public static final String CONSUME_DETAIL = SENDER + "00001";
+    // 报道状态
+    public static final String CHECKIN_STATE = SENDER + "00002";
+    // 缴费状态
+    public static final String PayStatus = SENDER + "00003";
+
+    // 卡片信息
+    public static final String CARD_INFO = SENDER + "00004";
+}