Bladeren bron

微校通知接入完成

wangzhengliang 3 jaren geleden
bovenliggende
commit
47df1f996a

+ 16 - 1
src/main/java/com/chuanghai/ihotel/controller/RoomDoorLockController.java

@@ -50,10 +50,25 @@ public class RoomDoorLockController {
      */
     @AdminLoginCheck
     @GetMapping("order/{orderId}")
-    public CommonResult<List<RoomDoorLockDataEntity>> getByorderId(@RequestHeader("admin_token")String adminToken,
+    public CommonResult<List<RoomDoorLockDataEntity>> getByOrderId(@RequestHeader("admin_token")String adminToken,
                                                                   @PathVariable("orderId") Long orderId) {
         RoomDoorLockDataEntity data = roomDoorLockService.queryByOrderId(orderId);
 
         return CommonResult.ok().setResult(data);
     }
+
+    /**
+     * 根据订单id下发密码锁
+     * @param adminToken 管理员token
+     * @param id 门锁id
+     * @return
+     */
+    @AdminLoginCheck
+    @GetMapping("sendPassword/{id}")
+    public CommonResult<List<RoomDoorLockDataEntity>> sendPasswordByOrderId(@RequestHeader("admin_token")String adminToken,
+                                                                   @PathVariable("id") Long id) {
+        roomDoorLockService.sendRoomPasswordByOrderId(id);
+
+        return CommonResult.ok();
+    }
 }

+ 1 - 1
src/main/java/com/chuanghai/ihotel/controller/RoomThirdSettingController.java

@@ -86,7 +86,7 @@ public class RoomThirdSettingController {
      * @return
      */
     @AdminLoginCheck
-    @GetMapping("changeElectric/{operType}")
+    @GetMapping("changeElectric/{roomId}/{operType}")
     public CommonResult<String> changeElectric(@RequestHeader("admin_token") String adminToken,
                                                @PathVariable("roomId") Long roomId,
                                                @PathVariable("operType") String operType) {

+ 1 - 1
src/main/java/com/chuanghai/ihotel/controller/TestController.java

@@ -84,6 +84,6 @@ public class TestController {
 
     @GetMapping("test8")
     public void test8() {
-        weiXiaoComponent.sendNotice(Arrays.asList("123456"), "公寓预定成功通知", "公寓预定成功", "你好,你的公寓预定成功,你好,你的公寓预定成功,你好,你的公寓预定成功,你好,你的公寓预定成功。", null);
+        weiXiaoComponent.sendNotice(Arrays.asList("360100188808088881"), "公寓预定成功通知", "公寓预定成功", "你好,你的公寓预定成功,你好,你的公寓预定成功,你好,你的公寓预定成功,你好,你的公寓预定成功。", Arrays.asList("点击跳转", "www.baidu.com"));
     }
 }

+ 7 - 1
src/main/java/com/chuanghai/ihotel/service/RoomDoorLockDataService.java

@@ -29,6 +29,12 @@ public interface RoomDoorLockDataService extends IService<RoomDoorLockDataEntity
      * 生成密码
      * @param order
      */
-    void generatePassword(HotelOrderEntity order);
+    RoomDoorLockDataEntity generatePassword(HotelOrderEntity order);
+
+    /**
+     * 根据订单id下发密码
+     * @param orderId
+     */
+    void sendRoomPasswordByOrderId(Long orderId);
 }
 

+ 19 - 1
src/main/java/com/chuanghai/ihotel/service/impl/HotelOrderServiceImpl.java

@@ -12,6 +12,7 @@ import com.chuanghai.ihotel.common.utils.MyQuery;
 import com.chuanghai.ihotel.common.utils.PageParam;
 import com.chuanghai.ihotel.common.utils.PageUtils;
 import com.chuanghai.ihotel.component.PayComponent;
+import com.chuanghai.ihotel.component.WeiXiaoComponent;
 import com.chuanghai.ihotel.config.JXNXSPayConfig;
 import com.chuanghai.ihotel.config.RabbitMQConfig;
 import com.chuanghai.ihotel.constant.TimeConstant;
@@ -63,8 +64,10 @@ import org.springframework.util.StringUtils;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -95,12 +98,17 @@ public class HotelOrderServiceImpl extends ServiceImpl<HotelOrderDao, HotelOrder
     @Autowired
     private PayComponent payComponent;
     @Autowired
+    private WeiXiaoComponent weiXiaoComponent;
+    @Autowired
     private JXNXSPayConfig jxnxsPayConfig;
     @Autowired
     private RabbitTemplate rabbitTemplate;
     @Autowired
     private RabbitMQConfig rabbitMQConfig;
 
+    private DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+    private String noticeTemplate = "办理入住成功,您的房号为【%s】,房间锁密码为:【%s】,密码有效时间为【%s】,请妥善保管,退房后密码自动失效。";
+
     @Override
     public PageUtils queryPage(PageParam pageParam, OrderQueryRequest request) {
         QueryWrapper<HotelOrderEntity> queryWrapper = new QueryWrapper<>();
@@ -580,7 +588,7 @@ public class HotelOrderServiceImpl extends ServiceImpl<HotelOrderDao, HotelOrder
         orderBillService.generateBill(orderId, roomId);
 
         // 门锁密码
-        doorLockService.generatePassword(order);
+        RoomDoorLockDataEntity roomDoorLockDataEntity = doorLockService.generatePassword(order);
 
         // 更新房态状态
         roomRealtimeStatuService.userHoldOrder(orderId);
@@ -591,6 +599,16 @@ public class HotelOrderServiceImpl extends ServiceImpl<HotelOrderDao, HotelOrder
         updateWrapper.set("order_statu", OrderStatuEnum.HOLD_ON.getCode());
         updateWrapper.last("limit 1");
         this.update(null, updateWrapper);
+
+        // 发送通知(优化:可以使用异步的方式发送通知)
+        try {
+            String lockRealtimePassword = roomDoorLockDataEntity.getLockRealtimePassword();
+            LocalDateTime startTime = roomDoorLockDataEntity.getStartTime();
+            LocalDateTime endTime = roomDoorLockDataEntity.getEndTime();
+
+            String content = String.format(noticeTemplate, order.getRoomNo(), lockRealtimePassword, dtf.format(startTime) + "-" + dtf.format(endTime));
+            weiXiaoComponent.sendNotice(Arrays.asList(order.getUserFlag()),"公寓办理入住成功", "办理入住成功", content, null);
+        } catch (Exception e) {}
     }
 
     String returnOrderTemplate = "订单id【%s】,用户【%s】,房间号【%s】已退房,需要清扫";

+ 4 - 0
src/main/java/com/chuanghai/ihotel/service/impl/HotelUserServiceImpl.java

@@ -70,6 +70,10 @@ public class HotelUserServiceImpl extends ServiceImpl<HotelUserDao, HotelUserEnt
             // 解析用户信息
             Map<String, Object> userInfoMap = mapper.readValue(userInfoResponseBody, new TypeReference<Map<String, Object>>() {});
             String cardNumber = userInfoMap.get("card_number").toString();
+//            Object nameObject = userInfoMap.get("name");
+//            Object typeObject = userInfoMap.get("identity_type");
+//            Object telObject = userInfoMap.get("telephone");
+//            Object headObject = userInfoMap.get("head_image");
             String name = userInfoMap.get("name").toString();
             String identityType = userInfoMap.get("identity_type").toString();
             String telephone = userInfoMap.get("telephone").toString();

+ 36 - 1
src/main/java/com/chuanghai/ihotel/service/impl/RoomDoorLockDataServiceImpl.java

@@ -3,10 +3,12 @@ package com.chuanghai.ihotel.service.impl;
 import com.chuanghai.ihotel.common.exception.BizCodeEnume;
 import com.chuanghai.ihotel.common.exception.RRException;
 import com.chuanghai.ihotel.component.DoorLockComponent;
+import com.chuanghai.ihotel.component.WeiXiaoComponent;
 import com.chuanghai.ihotel.dto.DoorLockAddPasswordRequestDTO;
 import com.chuanghai.ihotel.dto.DoorLockAddPasswordDataDTO;
 import com.chuanghai.ihotel.entity.HotelOrderEntity;
 import com.chuanghai.ihotel.entity.RoomThirdSettingEntity;
+import com.chuanghai.ihotel.service.HotelOrderService;
 import com.chuanghai.ihotel.service.RoomThirdSettingService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,6 +25,8 @@ import com.chuanghai.ihotel.service.RoomDoorLockDataService;
 
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -33,6 +37,13 @@ public class RoomDoorLockDataServiceImpl extends ServiceImpl<RoomDoorLockDataDao
     private DoorLockComponent doorLockComponent;
     @Autowired
     private RoomThirdSettingService roomThirdSettingService;
+    @Autowired
+    private HotelOrderService orderService;
+    @Autowired
+    private WeiXiaoComponent weiXiaoComponent;
+
+    private DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+    private String noticeTemplate = "办理入住成功,您的房号为【%s】,房间锁密码为:【%s】,密码有效时间为【%s】,请妥善保管,退房后密码自动失效。";
 
     @Override
     public PageUtils queryPage(PageParam pageParam) {
@@ -78,7 +89,7 @@ public class RoomDoorLockDataServiceImpl extends ServiceImpl<RoomDoorLockDataDao
     }
 
     @Override
-    public void generatePassword(HotelOrderEntity order) {
+    public RoomDoorLockDataEntity generatePassword(HotelOrderEntity order) {
         Long roomId = order.getRoomId();
         RoomThirdSettingEntity roomThirdSettingEntity = roomThirdSettingService.findByRoomId(roomId);
         if (roomThirdSettingEntity == null) {
@@ -114,6 +125,30 @@ public class RoomDoorLockDataServiceImpl extends ServiceImpl<RoomDoorLockDataDao
         doorLockData.setUpdateTime(LocalDateTime.now());
 
         this.save(doorLockData);
+
+        return doorLockData;
+    }
+
+    @Override
+    public void sendRoomPasswordByOrderId(Long id) {
+        // 查询密码锁
+        RoomDoorLockDataEntity roomDoorLock = this.getById(id);
+        if (roomDoorLock == null) {
+            throw new RRException(BizCodeEnume.DATA_NOT_EXIST, "门锁数据不存在");
+        }
+
+        // 查询订单
+        HotelOrderEntity order = orderService.getById(roomDoorLock.getOrderId());
+        if (order == null) {
+            throw new RRException(BizCodeEnume.UNKNOW_EXCEPTION, "获取订单信息异常,订单不存在");
+        }
+
+        String userFlag = order.getUserFlag();
+        String content = String.format(noticeTemplate,
+                order.getRoomNo(),
+                roomDoorLock.getLockRealtimePassword(),
+                dtf.format(roomDoorLock.getStartTime()) + "-" + dtf.format(roomDoorLock.getEndTime()));
+        weiXiaoComponent.sendNotice(Arrays.asList(userFlag), "公寓房间密码", "公寓房间密码下发", content, null);
     }
 
     /**

+ 2 - 0
src/main/resources/application.yml

@@ -24,6 +24,7 @@ spring:
   redis:
     host: 192.168.126.131
     port: 6379
+    # password: chuanghai.redis
     jedis:
       pool:
         max-active: 100
@@ -36,6 +37,7 @@ spring:
     virtual-host: dev
     username: guest
     password: guest
+    # password: chuanghai
     # 消息重试机制
     listener:
       simple:

+ 2 - 2
src/main/resources/mapper/ihotel/RoomRealtimeStatuDao.xml

@@ -38,10 +38,10 @@
         select *
         from room_realtime_statu
         where
-          (statu = '4') # 查询脏房
+          (statu = '4')
           or
           (
-            (statu != '1' and statu != '4') # 查询非空闲、非脏房
+            (statu != '1' and statu != '4')
             and room_id in
             <foreach collection="roomIds" item="item" open="(" close=")" index="i" separator=","> #{item}
             </foreach>