Ver código fonte

feature: 自助报到
1.自助报到获取学员与报到时多租户的处理

luoyb 1 ano atrás
pai
commit
04beb85dd5

+ 1 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteGuestService.java

@@ -41,6 +41,7 @@ public interface RemoteGuestService {
      * 查询客人信息
      *
      * @param otherId 唯一标识
+     * @param tenantId 租户Id
      * @return 客人信息
      */
     R<RemoteGuestVo> selectGuestByOtherId(String otherId,String tenantId);

+ 8 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteOrderService.java

@@ -66,4 +66,12 @@ public interface RemoteOrderService {
      * @return 更新结果
      */
     Boolean updateCheckInStatus(Long guestId, Long TeamId);
+
+    /**
+     * 根据第三方标识和租户Id查询客人住信息
+     * @param otherId 第三方标识
+     * @param tenantId 租户Id
+     * @return 入住信息
+     */
+    RemoteOrderVo selectGuestOrderByOtherId(String otherId,String tenantId);
 }

+ 23 - 5
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java

@@ -122,7 +122,7 @@ public class TraineeBusiness {
         RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(traineeVo.getDeptId()));
         traineeVo.setUserClass(YcVoConvert.ycClassVoConvert(remoteDeptVo));
         // 入住信息
-        RemoteOrderVo kfOrderVo = kfOrderService.selectGuestOrderByOtherId(traineeVo.getOtherId());
+        RemoteOrderVo kfOrderVo = kfOrderService.selectGuestOrderByOtherId(traineeVo.getOtherId(),traineeVo.getTenantId());
         if (ObjectUtil.isNotEmpty(kfOrderVo)) {
             traineeVo.setGuesterId(kfOrderVo.getGuestId().toString());
             traineeVo.setRoomCode(kfOrderVo.getRoomCode());
@@ -154,16 +154,17 @@ public class TraineeBusiness {
         if(ycTraineeVo.getCheckinState()==1){
             return R.fail(new ErrorInfo(ResultCodeEnum.RESOURCE_EXISTED.code(),"","您已经报到过了,请勿重复报到"));
         }
+        bo.setTenantId(ycTraineeVo.getTenantId());
         bo.setUserXm(ycTraineeVo.getUserXm());
         // 学员培训班级信息
-        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(bo.getDeptId()));
+        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(ycTraineeVo.getDeptId()));
         bo.setTeamName(remoteDeptVo.getDeptName());
         bo.setCheckInDate(DateUtil.date());
         bo.setCheckoutDate(remoteDeptVo.getEndDate());
         // 获取学员作为入住客人的信息
         bo.setOtherUserId(ycTraineeVo.getOtherId());
         bo.setOtherDeptId(remoteDeptVo.getOtherId());
-        getGuestInfo(bo, ycTraineeVo.getOtherId(), remoteDeptVo.getOtherId());
+        getGuestInfo(bo, ycTraineeVo.getOtherId(), remoteDeptVo.getOtherId(),ycTraineeVo.getTenantId());
         // 1.如果当前人员没有住房,则安排房间
         String roomCode = bo.getRoomCode();
         if (ObjectUtil.isEmpty(roomCode)) {
@@ -279,6 +280,23 @@ public class TraineeBusiness {
         bo.setTeamId(getTeamVo.getData().getId());
     }
 
+    /**
+     * 获取学员对应的客人与团客信息
+     *
+     * @param bo 学员业务对象
+     * @param userOtherId 学员唯一标识
+     * @param deptOtherId 班级唯一标识
+     * @param tenantId 租户编号
+     */
+    private void getGuestInfo(YcTraineeBo bo, String userOtherId, String deptOtherId,String tenantId) {
+        R<RemoteGuestVo> getGuestVo = kfGuestService.selectGuestByOtherId(userOtherId,tenantId);
+        bo.setGuestId(getGuestVo.getData().getId());
+
+        RemoteTeamBo teamBo = new RemoteTeamBo().setOtherId(deptOtherId).setTenantId(tenantId);
+        R<RemoteTeamVo> getTeamVo = kfTeamService.selectTeamByBo(teamBo);
+        bo.setTeamId(getTeamVo.getData().getId());
+    }
+
     /**
      * 设置学员的卡片信息
      * @param traineeVo 学员数据视图
@@ -310,7 +328,7 @@ public class TraineeBusiness {
                 RedisUtils.deleteObject(key);
             }
         } else {
-            log.info("[redis获取缓存失败]-[key:{}]",key);
+            log.info("[redis获取锁房缓存失败]-[key:{}]",key);
         }
     }
 
@@ -366,7 +384,7 @@ public class TraineeBusiness {
      */
     private void setCheckInfoStatus(YcTraineeBo bo, YcTraineeVo ycTraineeVo){
         //更新报到状态
-        Boolean result = remoteDeptService.updateCheckInStatus(Long.valueOf(bo.getDeptId()),Long.valueOf(bo.getUserId()));
+        Boolean result = remoteDeptService.updateCheckInStatus(Long.valueOf(ycTraineeVo.getDeptId()),Long.valueOf(bo.getUserId()));
         if(result){
             ycTraineeVo.setCheckinState(1);
             ycTraineeVo.setCheckinDate(DateUtil.date());

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/bo/yc/YcTraineeBo.java

@@ -93,4 +93,9 @@ public class YcTraineeBo implements Serializable {
      * 所在培训班统一标识符
      */
     private String otherDeptId;
+
+    /**
+     * 租户编号
+     */
+    private String tenantId;
 }

+ 14 - 7
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/payment/PtUserAccountMapper.xml

@@ -84,15 +84,22 @@
         order by u.dept_id,u.user_id
     </select>
     <select id="selectTraineeByBo" resultType="org.dromara.backstage.domain.vo.yc.YcTraineeVo">
-        SELECT tpuA.user_id as userId,tpuA.real_name as userXm,tpuA.user_numb as userNumb,(CASE tpuA.sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '未知' END) as sexName
-             ,tpuA.phone as mobilePhone,tpuA.id_number as idNumber
-             ,tpuA.category,tpuA.card_type as userCardTypeId,tpuA.lifespan as userExpiryDate,tsd.dept_id as deptId,tsd.dept_name as deptName
-             ,tsd.check_Date as checkinDate,tsd.end_date as checkoutDate,(CASE a.main_dept WHEN 'Y' THEN 1 ELSE 0 END ) as isMainDept,
-              a.check_status as checkinState,a.pay_status as payStatus,tpuA.other_id as otherId
+        SELECT tpuA.user_id as userId,tpuA.real_name as userXm,tpuA.user_numb as userNumb,(CASE tpuA.sex WHEN '1' THEN
+        '男' WHEN '2' THEN '女' ELSE '未知' END) as sexName
+        ,tpuA.phone as mobilePhone,tpuA.id_number as idNumber
+        ,tpuA.category,tpuA.card_type as userCardTypeId,tpuA.lifespan as userExpiryDate,tsd.dept_id as
+        deptId,tsd.dept_name as deptName
+        ,tsd.check_Date as checkinDate,tsd.end_date as checkoutDate,(CASE a.main_dept WHEN 'Y' THEN 1 ELSE 0 END ) as
+        isMainDept,
+        a.check_status as checkinState,a.pay_status as payStatus,tpuA.other_id as otherId,tpuA.tenant_id as tenantId
         FROM t_pt_userAccount tpuA
-                 INNER JOIN t_user_dept a on a.user_id=tpuA.user_id and a.main_dept='Y'
-                 INNER JOIN t_sys_dept tsd on tsd.dept_id=a.dept_id
+        INNER JOIN t_user_dept a on a.user_id=tpuA.user_id and a.main_dept='Y'
+        INNER JOIN t_sys_dept tsd on tsd.dept_id=a.dept_id
         <where>
+            and tpuA.del_flag='0'
+            <if test="bo.category!=null and bo.category!=''">
+                and tpuA.category=#{bo.category}
+            </if>
             <if test="bo.phone != null and bo.phone != ''">
                 and tpuA.phone = #{bo.phone}
             </if>

+ 6 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/bo/KfOrderBo.java

@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.tenant.core.TenantEntity;
 import org.dromara.hotel.domain.KfOrder;
 
 import java.util.Date;
@@ -102,4 +103,9 @@ public class KfOrderBo extends BaseEntity {
      * 客团ID
      */
     private Long teamId;
+
+    /**
+     * 租户编号
+     */
+    private String tenantId;
 }

+ 1 - 1
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteGuestServiceImpl.java

@@ -108,7 +108,7 @@ public class RemoteGuestServiceImpl implements RemoteGuestService {
             }
             return R.fail("无此客人信息");
         } catch (Exception e){
-            log.error("获取指定客人信息失败-{}", JsonUtils.toJsonString(otherId));
+            log.error("[获取指定客人信息失败]-[客人标识Id:{},租户Id:{}]", otherId,tenantId);
             return R.fail("获取客人信息失败");
         }
     }

+ 16 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteOrderServiceImpl.java

@@ -99,4 +99,20 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
     public Boolean updateCheckInStatus(Long guestId, Long TeamId) {
         return kfOrderService.updateCheckInStatus(guestId, TeamId);
     }
+    /**
+     * 根据第三方标识和租户Id查询客人住信息
+     * @param otherId 第三方标识
+     * @param tenantId 租户Id
+     * @return 入住信息
+     */
+    @Override
+    public RemoteOrderVo selectGuestOrderByOtherId(String otherId, String tenantId) {
+        KfOrderBo bo = new KfOrderBo();
+        String[] status = {"1","3"};
+        bo.setOtherId(otherId);
+        bo.setTenantId(tenantId);
+        bo.setOrderStatusList(status);
+
+        return kfOrderService.selectByBo(bo);
+    }
 }

+ 1 - 1
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java

@@ -470,7 +470,7 @@ public class KfOrderServiceImpl implements IKfOrderService {
      */
     @Override
     public RemoteOrderVo selectByBo(KfOrderBo bo) {
-        return baseMapper.selectByBo(bo);
+        return TenantHelper.ignore(() -> baseMapper.selectByBo(bo));
     }
 
     @Override

+ 1 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfTeamServiceImpl.java

@@ -97,6 +97,7 @@ public class KfTeamServiceImpl implements IKfTeamService {
             KfTeam::getStartTime, params.get("beginStartTime"), params.get("endStartTime"));
         lqw.eq(bo.getPlanQuantity() != null, KfTeam::getPlanQuantity, bo.getPlanQuantity());
         lqw.eq(StringUtils.isNotBlank(bo.getOtherId()), KfTeam::getOtherId, bo.getOtherId());
+        lqw.eq(StringUtils.isNotBlank(bo.getTenantId()), KfTeam::getTenantId, bo.getTenantId());
         lqw.orderByDesc(KfTeam::getStartTime);
         return lqw;
     }

+ 3 - 0
ruoyi-modules/ruoyi-hotel/src/main/resources/mapper/hotel/business/KfOrderMapper.xml

@@ -127,6 +127,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bo.orderStatus != null and  bo.orderStatus != ''">
                 and tko.order_status = #{bo.orderStatus}
             </if>
+            <if test="bo.tenantId != null and  bo.tenantId != ''">
+                and tkg.tenant_id = #{bo.tenantId} and tko.tenant_id = #{bo.tenantId} AND tpr.tenant_id = #{bo.tenantId}
+            </if>
         </where>
     </select>
 

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

@@ -271,8 +271,6 @@ public class BaseBusiness {
                                                     userAccountVo.getUserNo().intValue(),
                                                     Integer.parseInt(bagVo.getBagCode()));
 
-        log.info("kkkkk-{}", JSONUtil.toJsonStr(bo));
-
         XfConsumeDetailBo consumeDetailBo = new XfConsumeDetailBo();
         BeanUtil.copyProperties(bo, consumeDetailBo);
         consumeDetailBo.setConsumeId(recordId);
@@ -308,7 +306,6 @@ public class BaseBusiness {
         consumeDetailBo.setUpdateTime(DateUtil.date());
 
         consumeDetailBo.setTenantId(bo.getTenantId());
-        log.info("tttt-{}", JSONUtil.toJsonStr(consumeDetailBo));
 
         return consumeDetailService.createConsumeDetailRecord(consumeDetailBo);
     }

+ 1 - 0
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaCloudConsumer.java

@@ -85,6 +85,7 @@ public class KafkaCloudConsumer {
             }
             IYktEventStrategy eventStrategy = SpringUtils.getBean(sender, IYktEventStrategy.class);
             eventStrategy.doMsgHandle(eventType, eventMsg);
+
         } catch (Exception e) {
             log.error("[kafka消息处理失败]-[消息:{}-[错误:]", receiveMsg, e);
         }