Ver código fonte

最新代码

liu 2 anos atrás
pai
commit
2665b5b2ca
100 arquivos alterados com 4989 adições e 396 exclusões
  1. 191 87
      .idea/workspace.xml
  2. 1 1
      src/main/java/com/template/AutoCode.java
  3. 57 4
      src/main/java/com/template/api/HouseNumberStateAPI.java
  4. 49 2
      src/main/java/com/template/api/HouseOrderAPI.java
  5. 7 2
      src/main/java/com/template/api/HousePriceAPI.java
  6. 7 0
      src/main/java/com/template/api/PermissionSettingAPI.java
  7. 64 0
      src/main/java/com/template/common/utils/ExcelUtils.java
  8. 8 0
      src/main/java/com/template/common/utils/MD5.java
  9. 12 0
      src/main/java/com/template/common/utils/weixin/DictionaryCompare.java
  10. 51 0
      src/main/java/com/template/common/utils/weixin/EndPay.java
  11. 168 0
      src/main/java/com/template/common/utils/weixin/JaxbUtil.java
  12. 128 0
      src/main/java/com/template/common/utils/weixin/PayWxUtil.java
  13. 84 0
      src/main/java/com/template/common/utils/weixin/TongYiReturn.java
  14. 1 0
      src/main/java/com/template/config/DoorLockConfig.java
  15. 5 1
      src/main/java/com/template/config/WeixiaoConfig.java
  16. 25 14
      src/main/java/com/template/controller/HouseController.java
  17. 920 81
      src/main/java/com/template/controller/HouseNumberStateController.java
  18. 1027 6
      src/main/java/com/template/controller/HouseOrderController.java
  19. 55 13
      src/main/java/com/template/controller/HousePriceController.java
  20. 112 39
      src/main/java/com/template/controller/PasswordIssController.java
  21. 2 2
      src/main/java/com/template/controller/PermissionSettingController.java
  22. 3 3
      src/main/java/com/template/controller/HouseStateController.java
  23. 21 0
      src/main/java/com/template/controller/UsersController.java
  24. 3 0
      src/main/java/com/template/mapper/HouseLockMapper.java
  25. 2 1
      src/main/java/com/template/mapper/HouseMapper.java
  26. 7 1
      src/main/java/com/template/mapper/HouseNumberStateMapper.java
  27. 10 1
      src/main/java/com/template/mapper/HouseOrderMapper.java
  28. 7 2
      src/main/java/com/template/mapper/HousePriceMapper.java
  29. 3 3
      src/main/java/com/template/mapper/HouseStateMapper.java
  30. 18 0
      src/main/java/com/template/mapper/UsersMapper.java
  31. 14 0
      src/main/java/com/template/model/dto/CancelDto.java
  32. 3 0
      src/main/java/com/template/model/dto/CardInfoDto.java
  33. 40 0
      src/main/java/com/template/model/dto/CheckIdCardDto.java
  34. 14 0
      src/main/java/com/template/model/dto/CheckOutDto.java
  35. 11 0
      src/main/java/com/template/model/dto/CleanRoomDto.java
  36. 11 0
      src/main/java/com/template/model/dto/DirtyRoomDto.java
  37. 0 13
      src/main/java/com/template/model/dto/EstablishOrder.java
  38. 31 0
      src/main/java/com/template/model/dto/EstablishOrderDto.java
  39. 5 0
      src/main/java/com/template/model/dto/FingerprintDataDto.java
  40. 14 0
      src/main/java/com/template/model/dto/MaintainDto.java
  41. 3 0
      src/main/java/com/template/model/dto/PasswordDto.java
  42. 29 0
      src/main/java/com/template/model/dto/ReserveDto.java
  43. 18 0
      src/main/java/com/template/model/dto/RoomChangeDto.java
  44. 2 2
      src/main/java/com/template/model/enumModel/PasswordUrlEnum.java
  45. 2 2
      src/main/java/com/template/model/pojo/HouseNumber.java
  46. 3 3
      src/main/java/com/template/model/pojo/HouseNumberState.java
  47. 25 13
      src/main/java/com/template/model/pojo/HouseOrder.java
  48. 15 0
      src/main/java/com/template/model/pojo/LockRoomDto.java
  49. 20 11
      src/main/java/com/template/model/pojo/HouseState.java
  50. 86 0
      src/main/java/com/template/model/pojo/Users.java
  51. 18 13
      src/main/java/com/template/model/vo/CalendarPageVo.java
  52. 1 0
      src/main/java/com/template/model/vo/HouseNumberStateDateVo.java
  53. 1 1
      src/main/java/com/template/model/vo/HouseNumberStatePageVo.java
  54. 47 0
      src/main/java/com/template/model/vo/HouseOrderPageListVo.java
  55. 8 2
      src/main/java/com/template/model/vo/HouseStateVo.java
  56. 23 0
      src/main/java/com/template/model/vo/HouseStustaVo.java
  57. 13 0
      src/main/java/com/template/model/vo/PriceVo.java
  58. 11 0
      src/main/java/com/template/model/vo/ReserveDayVo.java
  59. 23 0
      src/main/java/com/template/model/weixin/AccessToken.java
  60. 41 0
      src/main/java/com/template/model/weixin/CodeEntity.java
  61. 32 0
      src/main/java/com/template/model/weixin/CodeEntityVo.java
  62. 42 0
      src/main/java/com/template/model/weixin/Ordering.java
  63. 76 0
      src/main/java/com/template/model/weixin/Pay.java
  64. 283 0
      src/main/java/com/template/model/weixin/PayResult.java
  65. 144 0
      src/main/java/com/template/model/weixin/Users.java
  66. 57 0
      src/main/java/com/template/model/weixin/WechatResult.java
  67. 32 0
      src/main/java/com/template/model/weixin/WechatUnifiedOrder.java
  68. 93 0
      src/main/java/com/template/model/weixin/Wechat_userinfo.java
  69. 26 0
      src/main/java/com/template/model/weixin/WeiXinUtil.java
  70. 41 0
      src/main/java/com/template/model/weixin/Wx_user.java
  71. 4 0
      src/main/java/com/template/services/HouseLockService.java
  72. 7 1
      src/main/java/com/template/services/HouseNumberStateService.java
  73. 28 1
      src/main/java/com/template/services/HouseOrderService.java
  74. 6 1
      src/main/java/com/template/services/HousePriceService.java
  75. 3 5
      src/main/java/com/template/services/HouseStateService.java
  76. 16 0
      src/main/java/com/template/services/UsersService.java
  77. 9 0
      src/main/java/com/template/services/impl/HouseLockServiceImpl.java
  78. 13 1
      src/main/java/com/template/services/impl/HouseNumberStateServiceImpl.java
  79. 282 3
      src/main/java/com/template/services/impl/HouseOrderServiceImpl.java
  80. 7 1
      src/main/java/com/template/services/impl/HousePriceServiceImpl.java
  81. 0 20
      src/main/java/com/template/services/impl/HouseStateServiceImpl.java
  82. 20 0
      src/main/java/com/template/services/impl/UnlockingServiceImpl.java
  83. 20 0
      src/main/java/com/template/services/impl/UsersServiceImpl.java
  84. 9 0
      src/main/resources/mapper/template/HouseLockMapper.xml
  85. 21 14
      src/main/resources/mapper/template/HouseNumberMapper.xml
  86. 18 2
      src/main/resources/mapper/template/HouseNumberStateMapper.xml
  87. 69 0
      src/main/resources/mapper/template/HouseOrderMapper.xml
  88. 49 2
      src/main/resources/mapper/template/HousePriceMapper.xml
  89. 1 1
      src/main/resources/mapper/template/HouseStateMapper.xml
  90. 1 1
      target/classes/mapper/template/HouseStateMapper.xml
  91. 0 20
      target/classes/META-INF/spring-configuration-metadata.json
  92. BIN
      target/classes/com/template/AutoCode.class
  93. BIN
      target/classes/com/template/api/HouseNumberStateAPI.class
  94. BIN
      target/classes/com/template/api/HouseOrderAPI.class
  95. BIN
      target/classes/com/template/common/utils/MD5.class
  96. BIN
      target/classes/com/template/common/utils/weixin/DictionaryCompare.class
  97. BIN
      target/classes/com/template/common/utils/weixin/EndPay.class
  98. BIN
      target/classes/com/template/common/utils/weixin/JaxbUtil$CollectionWrapper.class
  99. BIN
      target/classes/com/template/common/utils/weixin/JaxbUtil.class
  100. 0 0
      target/classes/com/template/common/utils/weixin/PayWxUtil.class

+ 191 - 87
.idea/workspace.xml

@@ -5,61 +5,140 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="42a0d34b-c484-4704-92dd-be5ac61d2f66" name="Changes" comment="">
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/api/ClassScheduleAPI.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/api/HouseOrderAPI.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/EstablishOrder.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/CalendarPageVo.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/ClassListVo.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseNumberStateDateVo.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseNumberStatePageVo.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/ParticularHouseNumberStatusVo.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/ScheduleVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/api/PermissionSettingAPI.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/ExcelUtils.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/weixin/DictionaryCompare.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/weixin/EndPay.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/weixin/JaxbUtil.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/weixin/PayWxUtil.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/weixin/TongYiReturn.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/CancelDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/CheckIdCardDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/CheckOutDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/CleanRoomDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/DirtyRoomDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/EstablishOrderDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/MaintainDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/ReserveDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/RoomChangeDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/LockRoomDto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseOrderPageListVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseStustaVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/PriceVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/ReserveDayVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/AccessToken.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/CodeEntity.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/CodeEntityVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/Ordering.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/Pay.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/PayResult.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/Users.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/WechatResult.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/WechatUnifiedOrder.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/Wechat_userinfo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/WeiXinUtil.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/weixin/Wx_user.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/AutoCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/AutoCode.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/api/HouseNumberStateAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/api/HouseNumberStateAPI.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/ClassScheduleController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/ClassScheduleController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/api/HouseOrderAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/api/HouseOrderAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/api/HousePriceAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/api/HousePriceAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/common/utils/MD5.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/MD5.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/config/DoorLockConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/config/DoorLockConfig.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/config/WeixiaoConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/config/WeixiaoConfig.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/handler/MyMetaObjectHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/handler/MyMetaObjectHandler.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/ClassScheduleMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/ClassScheduleMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/HousePriceController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/HousePriceController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/HouseStateController.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/PasswordIssController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/PasswordIssController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/PermissionSettingController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/PermissionSettingController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseLockMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseLockMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseNumberMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseNumberMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseNumberStateMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseNumberStateMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/ClassSchedule.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/ClassSchedule.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseOrderMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseOrderMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HousePriceMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/mapper/HousePriceMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/mapper/HouseStateMapper.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/dto/CardInfoDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/CardInfoDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/dto/EstablishOrder.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/dto/FingerprintDataDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/FingerprintDataDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/dto/PasswordDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/dto/PasswordDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/enumModel/PasswordUrlEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/enumModel/PasswordUrlEnum.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/HouseNumber.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/HouseNumber.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/HouseNumberState.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/HouseNumberState.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/HouseOrder.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/pojo/HouseState.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/vo/CalendarPageVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/CalendarPageVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseNumberStateDateVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseNumberStateDateVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseNumberStatePageVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseNumberStatePageVo.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseStateVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/HouseStateVo.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/ClassScheduleService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/ClassScheduleService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HouseNumberService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/HouseNumberService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HouseLockService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/HouseLockService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HouseNumberStateService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/HouseNumberStateService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HouseService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/HouseService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/ClassScheduleServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/ClassScheduleServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseNumberServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseNumberServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HouseOrderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/HouseOrderService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HousePriceService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/HousePriceService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/HouseStateService.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseLockServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseLockServiceImpl.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseNumberStateServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseNumberStateServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/ClassScheduleMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/ClassScheduleMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseOrderServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseOrderServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HousePriceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HousePriceServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/HouseStateServiceImpl.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseLockMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseLockMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseNumberMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseNumberMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseNumberStateMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseNumberStateMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseOrderMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseOrderMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HousePriceMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/HousePriceMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/HouseStateMapper.xml" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/META-INF/spring-configuration-metadata.json" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/META-INF/spring-configuration-metadata.json" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/AutoCode.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/AutoCode.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/api/HouseNumberStateAPI.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/api/HouseNumberStateAPI.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/ClassScheduleController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/controller/ClassScheduleController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/api/HouseOrderAPI.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/api/HouseOrderAPI.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/common/utils/MD5.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/common/utils/MD5.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/config/DoorLockConfig.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/config/DoorLockConfig.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/config/WeixiaoConfig.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/config/WeixiaoConfig.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/HouseController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/controller/HouseController.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/HouseNumberStateController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/controller/HouseNumberStateController.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/handler/MyMetaObjectHandler.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/handler/MyMetaObjectHandler.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/ClassScheduleMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/ClassScheduleMapper.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseNumberMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseNumberMapper.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/HouseOrderController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/controller/HouseOrderController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/HousePriceController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/controller/HousePriceController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/HouseStateController.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/controller/PasswordIssController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/controller/PasswordIssController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseLockMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseLockMapper.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseMapper.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseNumberStateMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseNumberStateMapper.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/pojo/ClassSchedule.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/pojo/ClassSchedule.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseOrderMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseOrderMapper.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HousePriceMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/mapper/HousePriceMapper.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/mapper/HouseStateMapper.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/dto/CardInfoDto.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/dto/CardInfoDto.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/dto/EstablishOrder.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/dto/FingerprintDataDto.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/dto/FingerprintDataDto.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/dto/PasswordDto.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/dto/PasswordDto.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/enumModel/PasswordUrlEnum.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/enumModel/PasswordUrlEnum.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseNumber.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseNumber.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseNumberState.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseNumberState.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseOrder.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseOrder.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/pojo/HouseState.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/vo/CalendarPageVo.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/vo/CalendarPageVo.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/vo/HouseNumberStatePageVo.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/vo/HouseNumberStatePageVo.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/model/vo/HouseStateVo.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/model/vo/HouseStateVo.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/ClassScheduleService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/ClassScheduleService.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/HouseNumberService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/HouseNumberService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/HouseLockService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/HouseLockService.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/HouseNumberStateService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/HouseNumberStateService.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/ClassScheduleServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/impl/ClassScheduleServiceImpl.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseNumberServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseNumberServiceImpl.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/HouseOrderService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/HouseOrderService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/HousePriceService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/HousePriceService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/HouseStateService.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseLockServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseLockServiceImpl.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseNumberStateServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseNumberStateServiceImpl.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/ClassScheduleMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/ClassScheduleMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HouseMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/HouseMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseOrderServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseOrderServiceImpl.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/HousePriceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/template/services/impl/HousePriceServiceImpl.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/template/services/impl/HouseStateServiceImpl.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HouseLockMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/HouseLockMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HouseNumberMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/HouseNumberMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HouseNumberStateMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/HouseNumberStateMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HouseOrderMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/HouseOrderMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HousePriceMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/template/HousePriceMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/template/HouseStateMapper.xml" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar.original" beforeDir="false" afterPath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar.original" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -69,8 +148,8 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
-        <option value="Interface" />
         <option value="Class" />
+        <option value="Interface" />
       </list>
     </option>
   </component>
@@ -91,6 +170,9 @@
   <component name="MavenRunner">
     <option name="skipTests" value="true" />
   </component>
+  <component name="ProblemsViewState">
+    <option name="selectedTabId" value="ProjectErrors" />
+  </component>
   <component name="ProjectId" id="2YHd6TDRlyqYh3OC9nI7fVxdhno" />
   <component name="ProjectViewState">
     <option name="showExcludedFiles" value="false" />
@@ -106,6 +188,7 @@
     "RunOnceActivity.ShowReadmeOnStart": "true",
     "SHARE_PROJECT_CONFIGURATION_FILES": "true",
     "WebServerToolWindowFactoryState": "false",
+    "last_opened_file_path": "E:/company/backend_code",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.tslint": "true",
     "node.js.selected.package.eslint": "(autodetect)",
@@ -118,12 +201,17 @@
   }
 }]]></component>
   <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\company\iHotel_student_houtai\src\main\java\com\template\common\utils" />
+      <recent name="E:\company\iHotel_student_houtai\src\main\java\com\template\model\weixin" />
+    </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="E:\company\iHotel_student_houtai\src\main\resources\mapper\template" />
       <recent name="E:\company\iHotel_student_houtai\src\main\resources\mapper" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
       <recent name="com.template.common.utils" />
+      <recent name="com.template.model.weixin" />
     </key>
   </component>
   <component name="RunDashboard">
@@ -133,47 +221,9 @@
       </set>
     </option>
   </component>
-  <component name="RunManager" selected="Spring Boot.MybatisPlusApplication">
-    <configuration name="AutoCode" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
-      <option name="MAIN_CLASS_NAME" value="com.template.AutoCode" />
-      <module name="iHotel_student_houtai" />
-      <extension name="coverage">
-        <pattern>
-          <option name="PATTERN" value="com.template.*" />
-          <option name="ENABLED" value="true" />
-        </pattern>
-      </extension>
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="ClassScheduleController" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
-      <option name="MAIN_CLASS_NAME" value="com.template.controller.ClassScheduleController" />
-      <module name="iHotel_student_houtai" />
-      <extension name="coverage">
-        <pattern>
-          <option name="PATTERN" value="com.template.controller.*" />
-          <option name="ENABLED" value="true" />
-        </pattern>
-      </extension>
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="HouseNumberStateController" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
-      <option name="MAIN_CLASS_NAME" value="com.template.controller.HouseNumberStateController" />
-      <module name="iHotel_student_houtai" />
-      <extension name="coverage">
-        <pattern>
-          <option name="PATTERN" value="com.template.controller.*" />
-          <option name="ENABLED" value="true" />
-        </pattern>
-      </extension>
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
+  <component name="RunManager">
     <configuration name="MybatisPlusApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <option name="ACTIVE_PROFILES" />
       <module name="iHotel_student_houtai" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.template.MybatisPlusApplication" />
       <extension name="coverage">
@@ -186,13 +236,6 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <recent_temporary>
-      <list>
-        <item itemvalue="Application.ClassScheduleController" />
-        <item itemvalue="Application.HouseNumberStateController" />
-        <item itemvalue="Application.AutoCode" />
-      </list>
-    </recent_temporary>
   </component>
   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
   <component name="SshConsoleOptionsProvider">
@@ -206,7 +249,8 @@
       <option name="presentableId" value="Default" />
       <updated>1700186263832</updated>
       <workItem from="1700186265128" duration="1452000" />
-      <workItem from="1700187845025" duration="107397000" />
+      <workItem from="1700187845025" duration="272442000" />
+      <workItem from="1701824578863" duration="58559000" />
     </task>
     <servers />
   </component>
@@ -228,11 +272,6 @@
     <breakpoint-manager>
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
-          <line>274</line>
-          <option name="timeStamp" value="14" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/ClassScheduleController.java</url>
           <line>98</line>
           <option name="timeStamp" value="15" />
@@ -242,6 +281,71 @@
           <line>124</line>
           <option name="timeStamp" value="16" />
         </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java</url>
+          <line>162</line>
+          <option name="timeStamp" value="31" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java</url>
+          <line>412</line>
+          <option name="timeStamp" value="38" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java</url>
+          <line>166</line>
+          <option name="timeStamp" value="41" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java</url>
+          <line>135</line>
+          <option name="timeStamp" value="42" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>149</line>
+          <option name="timeStamp" value="47" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>521</line>
+          <option name="timeStamp" value="48" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>825</line>
+          <option name="timeStamp" value="50" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/PasswordIssController.java</url>
+          <line>110</line>
+          <option name="timeStamp" value="55" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>210</line>
+          <option name="timeStamp" value="58" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseOrderController.java</url>
+          <line>338</line>
+          <option name="timeStamp" value="60" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>610</line>
+          <option name="timeStamp" value="61" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>665</line>
+          <option name="timeStamp" value="62" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/HouseNumberStateController.java</url>
+          <line>629</line>
+          <option name="timeStamp" value="64" />
+        </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
     <watches-manager>

+ 1 - 1
src/main/java/com/template/AutoCode.java

@@ -56,7 +56,7 @@ public class AutoCode {
         mpg.setPackageInfo(pc);
         //4、策略配置
         StrategyConfig strategy = new StrategyConfig();
-        strategy.setInclude("house_lock"); // 设置要映射的表名
+        strategy.setInclude("unlocking"); // 设置要映射的表名
         strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
         strategy.setEntityLombokModel(true); // 自动lombok;

+ 57 - 4
src/main/java/com/template/api/HouseNumberStateAPI.java

@@ -1,8 +1,13 @@
 package com.template.api;
 
+import com.template.model.dto.*;
+import com.template.model.pojo.LockRoomDto;
 import com.template.model.result.CommonResult;
+import com.tencentcloudapi.mrs.v20200910.models.Check;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 @RequestMapping("/auto/house-number-state")
@@ -10,17 +15,65 @@ public interface HouseNumberStateAPI {
 
     @GetMapping("/dayList")
     @ApiOperation(value = "房态管理-单日", notes = "房态管理-单日", httpMethod = "GET")
-    CommonResult page(String keyWord,String houseType,int page,int size);
+    CommonResult page(String keyWord, String houseType, int page, int size);
 
 
     @GetMapping("/calendarList")
     @ApiOperation(value = "房态管理-日历", notes = "房态管理-日历", httpMethod = "GET")
-    CommonResult calendarPage(String dateTime,String keyWord,String houseType,int page,int size);
-
+    CommonResult calendarPage(String dateTime, String keyWord, String houseType, int page, int size);
 
     @GetMapping("/particular")
     @ApiOperation(value = "房态管理-房间详情", notes = "房态管理-房间详情", httpMethod = "GET")
-    CommonResult particular(String houseNumberId);
+    CommonResult particular(String houseNumberId, String dateTime);
+
+    @GetMapping("/reserveDay")
+    @ApiOperation(value = "房态管理-管理端预定未来8天占用状态", notes = "房态管理-管理端预定未来8天占用状态", httpMethod = "GET")
+    CommonResult reserveDay(String houseNumberId, String startTime, String endTime, int adminId);
+
+    @GetMapping("/reservePrice")
+    @ApiOperation(value = "房态管理-管理端预定需付总金额", notes = "房态管理-管理端预定需付总金额", httpMethod = "GET")
+    CommonResult reservePrice(String houseId, String cardNumber, String liveTime, String leaveTime);
+
+    @PostMapping("/reserve")
+    @ApiOperation(value = "房态管理-管理端预定", notes = "房态管理-管理端预定", httpMethod = "POST")
+    CommonResult reserve(@RequestBody ReserveDto reserveDto);
+
+    @PostMapping("/checkIdCard")
+    @ApiOperation(value = "房态管理-管理端入住", notes = "房态管理-管理端入住", httpMethod = "POST")
+    CommonResult checkIdCard(@RequestBody CheckIdCardDto checkIdCardDto);
+
+    @GetMapping("/roomChangePage")
+    @ApiOperation(value = "房态管理-换房页面", notes = "房态管理-换房页面", httpMethod = "GET")
+    CommonResult roomChangePage(String liveTime, String leaveTime, String houseNumberId, int adminId);
+
+    @PostMapping("/roomChange")
+    @ApiOperation(value = "房态管理-换房", notes = "房态管理-换房", httpMethod = "POST")
+    CommonResult roomChange(@RequestBody RoomChangeDto roomChangeDto);
+
+    @PostMapping("/checkOut")
+    @ApiOperation(value = "房态管理-退房", notes = "房态管理-退房", httpMethod = "POST")
+    CommonResult checkOut(@RequestBody CheckOutDto checkOutDto);
+
+    @PostMapping("/refund")
+    @ApiOperation(value = "房态管理-退款", notes = "房态管理-退款", httpMethod = "POST")
+    CommonResult refund();
+
+    @PostMapping("/maintain")
+    @ApiOperation(value = "房态管理-维修", notes = "房态管理-维修", httpMethod = "POST")
+    CommonResult maintain(@RequestBody MaintainDto maintainDto);
+
+    @PostMapping("/lockRoom")
+    @ApiOperation(value = "房态管理-锁房", notes = "房态管理-锁房", httpMethod = "POST")
+    CommonResult lockRoom(@RequestBody LockRoomDto lockRoomDto);
+
+    @PostMapping("/dirtyRoom")
+    @ApiOperation(value = "房态管理-置脏", notes = "房态管理-置脏", httpMethod = "POST")
+    CommonResult dirtyRoom(@RequestBody DirtyRoomDto dirtyRoomDto);
+
+    @PostMapping("/cleanRoom")
+    @ApiOperation(value = "房态管理-置净", notes = "房态管理-置净", httpMethod = "POST")
+    CommonResult cleanRoom(@RequestBody CleanRoomDto cleanRoomDto);
+
 
 
 }

+ 49 - 2
src/main/java/com/template/api/HouseOrderAPI.java

@@ -1,6 +1,6 @@
 package com.template.api;
 
-import com.template.model.pojo.HouseOrder;
+import com.template.model.dto.*;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -8,13 +8,60 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import javax.servlet.http.HttpServletResponse;
+
 @RequestMapping("/auto/house-order")
 public interface HouseOrderAPI {
 
+
+    @GetMapping("/houseOrderPrice")
+    @ApiOperation(value = "订单金额", notes = "订单金额", httpMethod = "GET")
+    CommonResult getHouseOrderPrice(int houseOrderNumber, String userId, String houseId, String liveTime, String leaveTime);
+
+
     @PostMapping("/establishOrder")
     @ApiOperation(value = "创建订单", notes = "创建订单", httpMethod = "POST")
-    CommonResult establishOrder(@RequestBody HouseOrder houseOrder);
+    CommonResult establishOrder(@RequestBody EstablishOrderDto establishOrderDto);
+
+
+    @GetMapping("/pay")
+    @ApiOperation(value = "订单支付", notes = "订单支付", httpMethod = "GET")
+    CommonResult payOrder(String houseOrderId);
+
+    @GetMapping("/checkIn")
+    @ApiOperation(value = "移动端入住", notes = "移动端入住", httpMethod = "GET")
+    CommonResult checkIn(String houseOrderId, String userId);
+
+    @GetMapping("/pageList")
+    @ApiOperation(value = "订单管理-订单页面展示", notes = "订单管理-订单页面展示", httpMethod = "GET")
+    CommonResult pageList(int adminId,int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime);
+
+    @PostMapping("/cancel")
+    @ApiOperation(value = "订单管理-订单取消", notes = "订单管理-订单取消", httpMethod = "POST")
+    CommonResult cancel(@RequestBody CancelDto cancelDto);
+
+    @GetMapping("/particulars")
+    @ApiOperation(value = "订单管理-订单详情", notes = "订单管理-订单详情", httpMethod = "GET")
+    CommonResult particulars(String orderNumber, int adminId);
+
+    @PostMapping("/checkIdCard")
+    @ApiOperation(value = "订单管理-入住", notes = "订单管理-入住", httpMethod = "POST")
+    CommonResult checkIdCard(@RequestBody CheckIdCardDto checkIdCardDto);
+
+    @PostMapping("/checkOut")
+    @ApiOperation(value = "订单管理-退房", notes = "订单管理-退房", httpMethod = "POST")
+    CommonResult checkOut(@RequestBody CheckOutDto checkOutDto);
+
+    @PostMapping("/refund")
+    @ApiOperation(value = "房态管理-退款", notes = "房态管理-退款", httpMethod = "POST")
+    CommonResult refund();
 
+    @PostMapping("/roomChange")
+    @ApiOperation(value = "房态管理-换房", notes = "房态管理-换房", httpMethod = "POST")
+    CommonResult roomChange(@RequestBody RoomChangeDto roomChangeDto);
 
+    @GetMapping("/queryExport")
+    @ApiOperation(value = "订单导出", notes = "订单导出", httpMethod = "GET")
+    void queryExport(HttpServletResponse response,int adminId,int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime);
 
 }

+ 7 - 2
src/main/java/com/template/api/HousePriceAPI.java

@@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import javax.servlet.http.HttpServletResponse;
+
 @RequestMapping("/auto/house-price")
 public interface HousePriceAPI {
 
@@ -23,11 +25,14 @@ public interface HousePriceAPI {
 
     @GetMapping("/alterPriceRecord")
     @ApiOperation(value = "批量改价记录", notes = "批量改价记录", httpMethod = "GET")
-    CommonResult alterPriceRecord(int adminId,String type,String houseName,String operatingTime,String priceTime,String operatingName,int page,int size);
+    CommonResult alterPriceRecord(int adminId, String type, String houseName, String operatingTime, String priceTime, String operatingName, int page, int size);
 
 
     @GetMapping("/housePricePage")
     @ApiOperation(value = "房价管理展示", notes = "房价管理展示", httpMethod = "GET")
-        CommonResult housePricePage(String date,String houseName,String houseType,int page,int size);
+    CommonResult housePricePage(String date, String houseName, String houseType, int page, int size);
 
+    @GetMapping("/queryExport")
+    @ApiOperation(value = "改价记录导出", notes = "改价记录导出", httpMethod = "GET")
+    void queryExport(HttpServletResponse response, String type, String houseName, String operatingTime, String priceTime, String operatingName);
 }

+ 7 - 0
src/main/java/com/template/api/PermissionSettingAPI.java

@@ -0,0 +1,7 @@
+package com.template.api;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/auto/permission-setting")
+public interface PermissionSettingAPI {
+}

+ 64 - 0
src/main/java/com/template/common/utils/ExcelUtils.java

@@ -0,0 +1,64 @@
+package com.template.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.boot.system.ApplicationHome;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/10 星期一 14:21
+ * @Description: com.repair.common.utils
+ * @Version: 1.0
+ */
+@Slf4j
+public class ExcelUtils {
+    public static void fileDownload(String fileName, HttpServletResponse response) {
+        try {
+            ApplicationHome applicationHome = new ApplicationHome(ExcelUtils.class);
+            String pathResouce = applicationHome.getDir().getParentFile().getParentFile().getAbsolutePath();
+            String decode = URLDecoder.decode(pathResouce, "utf-8");
+            File readPath = new File(decode + "/project/repair" + File.separator);
+            File file = new File(readPath.getAbsolutePath() + fileName);
+            // 获取文件名
+            String filename = file.getName();
+            // 获取文件后缀名
+            String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
+            InputStream inputStream = new FileInputStream(file);//根据路径获取要下载的文件输入流
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(filename, "UTF-8"));
+            OutputStream out = response.getOutputStream();
+            byte[] b = new byte[1024];  //创建数据缓冲区
+            int length;
+            while ((length = inputStream.read(b)) > 0) {  //把文件流写到缓冲区里
+                out.write(b, 0, length);
+            }
+            out.flush();
+            out.close();
+            inputStream.close();
+        } catch (IOException ex) {
+            System.out.println("模板导出失败:" + ex.getMessage());
+            ex.printStackTrace();
+        }
+    }
+
+    public static void excelDownload(Workbook workbook, String fileName, HttpServletResponse response) {
+        try {
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));
+            OutputStream out = response.getOutputStream();
+            workbook.write(out);
+            out.flush();
+            out.close();
+        } catch (IOException ex) {
+            System.out.println("模板导出失败:" + ex.getMessage());
+            ex.printStackTrace();
+        }
+    }
+}

+ 8 - 0
src/main/java/com/template/common/utils/MD5.java

@@ -43,4 +43,12 @@ public class MD5 {
         }
         return str;
     }
+
+    public static void main(String[] args) {
+        String s="appid=sc5efc60f2bd373df9&timestamp=1701848895000&schoolno=SL1701743624375793&key=fe0d767a2a394d1b81ccda6fc0ce5ecc";
+        String md5 = getMD5(s);
+        System.out.println("md5 = " + md5);
+    }
+
+
 }

+ 12 - 0
src/main/java/com/template/common/utils/weixin/DictionaryCompare.java

@@ -0,0 +1,12 @@
+package com.template.common.utils.weixin;
+
+import java.util.Comparator;
+
+/**
+ * 按字典序排序
+ */
+class DictionaryCompare implements Comparator<String> {
+	public int compare(String o1, String o2) {
+		return o1.compareTo(o2);
+	}
+}

+ 51 - 0
src/main/java/com/template/common/utils/weixin/EndPay.java

@@ -0,0 +1,51 @@
+package com.template.common.utils.weixin;
+/**
+ * 最后调用接口传的数据实体类;
+ * @author QT-666
+ *
+ */
+public class EndPay {
+      private String appId;//商户注册具有支付权限的公众号成功后即可获得
+      private String timeStamp;//当前的时间,其他详见时间戳规则
+      private String nonceStr;//随机字符串,不长于32位。推荐随机数生成算法
+      private String prepay_id;//统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=***
+      private String signType;//签名算法,暂支持MD5
+      private String paySign;//签名,详见签名生成算法
+	public String getAppId() {
+		return appId;
+	}
+	public void setAppId(String appId) {
+		this.appId = appId;
+	}
+	public String getTimeStamp() {
+		return timeStamp;
+	}
+	public void setTimeStamp(String timeStamp) {
+		this.timeStamp = timeStamp;
+	}
+	public String getNonceStr() {
+		return nonceStr;
+	}
+	public void setNonceStr(String nonceStr) {
+		this.nonceStr = nonceStr;
+	}
+	public String getPrepay_id() {
+		return prepay_id;
+	}
+	public void setPrepay_id(String prepay_id) {
+		this.prepay_id = prepay_id;
+	}
+	public String getSignType() {
+		return signType;
+	}
+	public void setSignType(String signType) {
+		this.signType = signType;
+	}
+	public String getPaySign() {
+		return paySign;
+	}
+	public void setPaySign(String paySign) {
+		this.paySign = paySign;
+	}
+      
+}

+ 168 - 0
src/main/java/com/template/common/utils/weixin/JaxbUtil.java

@@ -0,0 +1,168 @@
+package com.template.common.utils.weixin;
+
+
+
+import org.apache.commons.lang3.StringUtils;
+
+import javax.xml.bind.*;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.namespace.QName;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+/** 
+ * 使用Jaxb2.0实现XML<->Java Object的Binder. 
+ *  
+ * 特别支持Root对象是List的情形. 
+ *  
+ * @author 
+ */  
+public class JaxbUtil {  
+    // 多线程安全的Context.  
+    private JAXBContext jaxbContext;  
+  
+    /** 
+     * @param types 
+     *            所有需要序列化的Root对象的类型. 
+     */  
+    public JaxbUtil(Class<?>... types) {  
+        try {  
+            jaxbContext = JAXBContext.newInstance(types);  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * Java Object->Xml. 
+     */  
+    public String toXml(Object root, String encoding) {  
+        try {  
+            StringWriter writer = new StringWriter();  
+            createMarshaller(encoding).marshal(root, writer);  
+            return writer.toString();  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * Java Object->Xml, 特别支持对Root Element是Collection的情形. 
+     */  
+    @SuppressWarnings("unchecked")  
+    public String toXml(Collection root, String rootName, String encoding) {  
+        try {  
+            CollectionWrapper wrapper = new CollectionWrapper();  
+            wrapper.collection = root;  
+  
+            JAXBElement<CollectionWrapper> wrapperElement = new JAXBElement<CollectionWrapper>(  
+                    new QName(rootName), CollectionWrapper.class, wrapper);  
+  
+            StringWriter writer = new StringWriter();  
+            createMarshaller(encoding).marshal(wrapperElement, writer);  
+  
+            return writer.toString();  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * Xml->Java Object. 
+     */  
+    @SuppressWarnings("unchecked")  
+    public <T> T fromXml(String xml) {  
+        try {  
+            StringReader reader = new StringReader(xml);  
+            return (T) createUnmarshaller().unmarshal(reader);  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * Xml->Java Object, 支持大小写敏感或不敏感. 
+     */  
+    @SuppressWarnings("unchecked")  
+    public <T> T fromXml(String xml, boolean caseSensitive) {  
+        try {  
+            String fromXml = xml;  
+            if (!caseSensitive)  
+                fromXml = xml.toLowerCase();  
+            StringReader reader = new StringReader(fromXml);  
+            return (T) createUnmarshaller().unmarshal(reader);  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * 创建Marshaller, 设定encoding(可为Null). 
+     */  
+    public Marshaller createMarshaller(String encoding) {  
+        try {  
+            Marshaller marshaller = jaxbContext.createMarshaller();  
+  
+            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);  
+  
+            if (StringUtils.isNotBlank(encoding)) {
+                marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);  
+            }  
+            return marshaller;  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * 创建UnMarshaller. 
+     */  
+    public Unmarshaller createUnmarshaller() {  
+        try {  
+            return jaxbContext.createUnmarshaller();  
+        } catch (JAXBException e) {  
+            throw new RuntimeException(e);  
+        }  
+    }  
+  
+    /** 
+     * 封装Root Element 是 Collection的情况. 
+     */  
+    public static class CollectionWrapper {  
+        @SuppressWarnings("unchecked")  
+        @XmlAnyElement  
+        protected Collection collection;  
+    }
+    /**
+     * 把map转换成xml格式
+     * @param params
+     * @return
+     * @throws Exception
+     */
+    public static String getRequestXml(Map<String, String> params) throws Exception{
+        StringBuffer sb = new StringBuffer();
+        sb.append("<xml>");
+        Set<Entry<String, String>> es = params.entrySet();
+        Iterator<Entry<String, String>> it = es.iterator();
+        while (it.hasNext()) {
+            Entry<String, String> entry = (Entry<String, String>) it
+                    .next();
+            String k = (String) entry.getKey();
+            String v = (String) entry.getValue();
+            if ("attach".equalsIgnoreCase(k) || "body".equalsIgnoreCase(k)) {
+                sb.append("<" + k + ">" + "<![CDATA[" + v + "]]></" + k + ">");
+            } else {
+                sb.append("<" + k + ">" + v + "</" + k + ">");
+            }
+        }
+        sb.append("</xml>");
+
+//        return sb.toString();
+        return new String(sb.toString().toString().getBytes(), "utf-8");
+    }
+} 

+ 128 - 0
src/main/java/com/template/common/utils/weixin/PayWxUtil.java

@@ -0,0 +1,128 @@
+package com.template.common.utils.weixin;
+
+import org.apache.commons.codec.digest.DigestUtils;
+
+import java.security.MessageDigest;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * Created by Song on 2016/11/8. mail: 1147649695@qq.com 微信支付相关工具类
+ */
+public class PayWxUtil {
+	// 上一次订单请求日期
+	private static Date preDay = new Date();
+	// 当前订单日期
+	private static Date curDay = new Date();
+	// 用于记录已产生的订单号
+	private static Set<Long> numPoul = new HashSet<Long>();
+
+	/**
+	 * 获得签名
+	 * 
+	 * @param params
+	 *            待编码参数,参数值为空不传入
+	 * @param key
+	 *            key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
+	 * @return
+	 */
+	public static String getSign(Map<String, String> params, String key)
+			throws Exception {
+		List<String> list = new ArrayList<String>(params.keySet());
+		Collections.sort(list, new DictionaryCompare());
+		StringBuffer sb = new StringBuffer();
+		for (String keyVal : list) {
+			if (params.get(keyVal) != null) {
+				sb.append(keyVal + "=" + params.get(keyVal) + "&");
+			}
+		}
+		sb.append("key=" + key);
+		return DigestUtils
+				.md5Hex(new String(sb.toString().getBytes(), "utf-8"))
+				.toUpperCase();
+	}
+
+	/**
+	 * 获得随机字符串
+	 * 
+	 * @return
+	 */
+	public static String getNonceStr() {
+		Random random = new Random();
+		long val = random.nextLong();
+		String res = DigestUtils.md5Hex(val + "yzx").toUpperCase();
+		if (32 < res.length())
+			return res.substring(0, 32);
+		else
+			return res;
+	}
+
+	/**
+	 * 获取订单号 商户订单号(每个订单号必须唯一) 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。
+	 * 
+	 * @param mchId
+	 * @return
+	 */
+	public static String getMchBillno(String mchId) {
+		Random random = new Random();
+		long val = random.nextLong() % 10000000000L;// 获得0-9999999999内的数字
+		curDay = new Date();
+		// 隔天清空
+		if (curDay.after(preDay))
+			numPoul.clear();
+		while (numPoul.contains(val)) {
+			val = random.nextLong() % 10000000000L;
+		}
+		numPoul.add(val);
+		preDay = curDay;
+		// 按要求,日期格式化输出
+		DateFormat df = new SimpleDateFormat("yyyymmdd");
+		return mchId + df.format(curDay) + format(val + "", 10);
+	}
+
+	/**
+	 * 将字符串str按长度在前面添0补齐
+	 * 
+	 * @param str
+	 * @param length
+	 * @return
+	 */
+	private static String format(String str, int length) {
+		String pre = "0000000000";
+		int len = str.length();
+		if (10 <= len)
+			return str.substring(0, 10);
+		else
+			return pre.substring(0, 10 - len).concat(str);
+	}
+
+	// SHA1加密方法,jssdk签名算法
+	public static String getSha1(String str) {
+		if (str == null || str.length() == 0) {
+			return null;
+		}
+		char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+				'a', 'b', 'c', 'd', 'e', 'f' };
+		try {
+			MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
+			mdTemp.update(str.getBytes("UTF-8"));
+
+			byte[] md = mdTemp.digest();
+			int j = md.length;
+			char buf[] = new char[j * 2];
+			int k = 0;
+			for (int i = 0; i < j; i++) {
+				byte byte0 = md[i];
+				buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
+				buf[k++] = hexDigits[byte0 & 0xf];
+			}
+			return new String(buf);
+		} catch (Exception e) {
+			// TODO: handle exception
+			return null;
+		}
+	}
+
+}
+

+ 84 - 0
src/main/java/com/template/common/utils/weixin/TongYiReturn.java

@@ -0,0 +1,84 @@
+package com.template.common.utils.weixin;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * 调用统一下单接口返回的数据实体类
+ * @author QT-666
+ *
+ */
+@XmlRootElement(name="xml")
+public class TongYiReturn {
+    private String return_code; //
+    private String return_msg;  // 
+    private String appid;       // 调用接口提交的公众账号ID
+    private String mch_id;      // 调用接口提交的商户号
+    private String nonce_str;   //微信返回的随机字符串
+    private String sign;        //微信返回的签名值,详见签名算法
+    private String prepay_id;   //微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
+    private String result_code; //SUCCESS/FAIL
+    private String trade_type;  //交易类型,取值为:JSAPI,NATIVE,APP等,说明详见参数规定
+	public String getReturn_code() {
+		return return_code;
+	}
+	public void setReturn_code(String return_code) {
+		this.return_code = return_code;
+	}
+	public String getReturn_msg() {
+		return return_msg;
+	}
+	public void setReturn_msg(String return_msg) {
+		this.return_msg = return_msg;
+	}
+	public String getAppid() {
+		return appid;
+	}
+	public void setAppid(String appid) {
+		this.appid = appid;
+	}
+	public String getMch_id() {
+		return mch_id;
+	}
+	public void setMch_id(String mch_id) {
+		this.mch_id = mch_id;
+	}
+	public String getNonce_str() {
+		return nonce_str;
+	}
+	public void setNonce_str(String nonce_str) {
+		this.nonce_str = nonce_str;
+	}
+	public String getSign() {
+		return sign;
+	}
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+	public String getPrepay_id() {
+		return prepay_id;
+	}
+	public void setPrepay_id(String prepay_id) {
+		this.prepay_id = prepay_id;
+	}
+	public String getResult_code() {
+		return result_code;
+	}
+	public void setResult_code(String result_code) {
+		this.result_code = result_code;
+	}
+	public String getTrade_type() {
+		return trade_type;
+	}
+	public void setTrade_type(String trade_type) {
+		this.trade_type = trade_type;
+	}
+	@Override
+	public String toString() {
+		return "TongYiReturn [return_code=" + return_code + ", return_msg="
+				+ return_msg + ", appid=" + appid + ", mch_id=" + mch_id
+				+ ", nonce_str=" + nonce_str + ", sign=" + sign
+				+ ", prepay_id=" + prepay_id + ", result_code=" + result_code
+				+ ", trade_type=" + trade_type + "]";
+	}
+    
+}

+ 1 - 0
src/main/java/com/template/config/DoorLockConfig.java

@@ -12,6 +12,7 @@ import org.springframework.context.annotation.Configuration;
 @Data
 //@ConfigurationProperties(prefix = "door-lock")
 public class DoorLockConfig {
+
     @Value("${door-lock.app-id}")
     private String appId;
     @Value("${door-lock.app-secret}")

+ 5 - 1
src/main/java/com/template/config/WeixiaoConfig.java

@@ -1,6 +1,7 @@
 package com.template.config;
 
 import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
@@ -12,10 +13,13 @@ import org.springframework.context.annotation.Configuration;
  **/
 @Data
 @Configuration
-@ConfigurationProperties(prefix = "weixiao")
+//@ConfigurationProperties(prefix = "weixiao")
 public class WeixiaoConfig {
 
+    @Value("${weixiao.app-key}")
     private String appKey;
+    @Value("${weixiao.app-secret}")
     private String appSecret;
+    @Value("${weixiao.ocode}")
     private String ocode;
 }

+ 25 - 14
src/main/java/com/template/controller/HouseController.java

@@ -1,7 +1,6 @@
 package com.template.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.annotation.Encrypt;
@@ -9,21 +8,24 @@ import com.template.api.HouseAPI;
 import com.template.model.dto.HouseDto;
 import com.template.model.pojo.House;
 import com.template.model.pojo.HouseNumber;
+import com.template.model.pojo.HouseNumberState;
 import com.template.model.pojo.PermissionSetting;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.HouseVo;
 import com.template.model.vo.HousedetailsVo;
 import com.template.services.HouseNumberService;
+import com.template.services.HouseNumberStateService;
 import com.template.services.HouseService;
-import com.template.services.HouseStateService;
 import com.template.services.PermissionSettingService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -42,7 +44,7 @@ public class HouseController implements HouseAPI {
     HouseNumberService houseNumberService;
 
     @Autowired
-    HouseStateService houseStateService;
+    HouseNumberStateService houseNumberStateService;
 
     @Autowired
     PermissionSettingService permissionSettingService;
@@ -89,10 +91,10 @@ public class HouseController implements HouseAPI {
         }
 
 //        房间号不能重复
-        LambdaQueryWrapper<HouseNumber> wrapperHn=new LambdaQueryWrapper<>();
-        wrapperHn.in(HouseNumber::getRoomNumber,roomNumbers);
+        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
+        wrapperHn.in(HouseNumber::getRoomNumber, roomNumbers);
         List<HouseNumber> list = houseNumberService.list(wrapperHn);
-        if (ObjectUtils.isNotEmpty(list)&&list.size()>0) {
+        if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
             return CommonResult.fail("该房间号已存在");
         }
 
@@ -108,8 +110,8 @@ public class HouseController implements HouseAPI {
                 houseNumber.setHouseId(house.getId() + "");
 //                默认净房
                 houseNumber.setHouseStatus(1);
-//               默认空闲
-                houseNumber.setStatus(1);
+////               默认空闲
+//                houseNumber.setStatus(1);
 //                默认关电
                 houseNumber.setElectricType("2");
 
@@ -193,7 +195,7 @@ public class HouseController implements HouseAPI {
 
 //        判断修改的房型名称和房型类型是是否已存在
         House byId = houseService.getById(house.getId());
-        if (!house.getNumber().equals(byId.getNumber()) && house.getRoomType() != byId.getRoomType()) {
+        if (!house.getNumber().equals(byId.getNumber()) && !Objects.equals(house.getRoomType(), byId.getRoomType())) {
             LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
             wrapper.eq(House::getRoomName, house.getRoomName())
                     .eq(House::getRoomType, house.getRoomType());
@@ -213,8 +215,12 @@ public class HouseController implements HouseAPI {
                 String roomNumber = houseNumber.getRoomNumber();
 //            不存在则删除
                 if (!roomNumbers.contains(roomNumber)) {
-//                判断房间是否在使用,在使用则不能删除
-                    if (houseNumber.getStatus() != 1) {
+//                判断房间是否有订单,有则不能删除
+                    LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
+                    wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
+                            .ge(HouseNumberState::getEndTime, new Date());
+                    List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
+                    if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
                         return CommonResult.fail(roomNumber + "房间在使用");
                     }
                     houseNumberService.removeById(houseNumber);
@@ -235,8 +241,8 @@ public class HouseController implements HouseAPI {
                     houseNumber.setHouseId(house.getId() + "");
 //                默认净房
                     houseNumber.setHouseStatus(1);
-//               默认空闲
-                    houseNumber.setStatus(1);
+////               默认空闲
+//                    houseNumber.setStatus(1);
 //                默认关电
                     houseNumber.setElectricType("2");
 
@@ -278,7 +284,12 @@ public class HouseController implements HouseAPI {
         wrapperHn.eq(HouseNumber::getHouseId, houseId);
         List<HouseNumber> list = houseNumberService.list(wrapperHn);
         for (HouseNumber houseNumber : list) {
-            if (houseNumber.getStatus() != 1) {
+//            判断房间是否有订单,有则不能删除
+            LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
+            wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
+                    .ge(HouseNumberState::getEndTime, new Date());
+            List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
+            if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
                 return CommonResult.fail(houseNumber.getRoomNumber() + "房间在使用,无法删除");
             }
         }

Diferenças do arquivo suprimidas por serem muito extensas
+ 920 - 81
src/main/java/com/template/controller/HouseNumberStateController.java


Diferenças do arquivo suprimidas por serem muito extensas
+ 1027 - 6
src/main/java/com/template/controller/HouseOrderController.java


+ 55 - 13
src/main/java/com/template/controller/HousePriceController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.api.HousePriceAPI;
 import com.template.common.utils.DateUtil;
+import com.template.common.utils.ExcelUtils;
 import com.template.model.dto.AlterDto;
 import com.template.model.dto.AlterPriceDto;
 import com.template.model.pojo.House;
@@ -22,11 +23,17 @@ import com.template.model.vo.RoomTypeVo;
 import com.template.services.HousePriceService;
 import com.template.services.HouseService;
 import com.template.services.PermissionSettingService;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -192,15 +199,15 @@ public class HousePriceController implements HousePriceAPI {
 
 
         //        获取当时时间
-        LocalDate localDate;
-        DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDateTime localDate;
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         if (ObjectUtils.isEmpty(date)) {
-            localDate = LocalDate.now();
+            localDate = LocalDateTime.now();
         } else {
-            localDate = LocalDate.parse(date, dateTimeFormatter2);
+            localDate = LocalDateTime.parse(date, dateTimeFormatter1);
         }
 //      需获取21天内的所有改价信息
-        LocalDate endLocalDate = localDate.plusDays(20);
+        LocalDateTime endLocalDate = localDate.plusDays(20);
 
 //        返回格式
         HashMap<String, Object> map = new HashMap<>();
@@ -209,11 +216,11 @@ public class HousePriceController implements HousePriceAPI {
         //        时间日期
         ArrayList<String> list = new ArrayList<>();
         for (int i = 0; i < 21; i++) {
-            LocalDate localDate1 = localDate.plusDays(i);
-            String format = localDate1.format(dateTimeFormatter2);
+            LocalDateTime localDate1 = localDate.plusDays(i);
+            String format = localDate1.format(dateTimeFormatter1);
             list.add(format);
         }
-        map.put("dateTime",list);
+        map.put("dateTime", list);
 
 //      先获取房型数据
         LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
@@ -224,7 +231,7 @@ public class HousePriceController implements HousePriceAPI {
 
         List<House> houseList = houseIPage.getRecords();
         if (ObjectUtils.isEmpty(houseList) && houseList.size() <= 0) {
-            map.put("page",houseIPage);
+            map.put("page", houseIPage);
             return CommonResult.ok(map);
         }
 
@@ -253,8 +260,8 @@ public class HousePriceController implements HousePriceAPI {
             ArrayList<HousePriceVo> housePriceVos = new ArrayList<>();
             for (int i = 0; i < 21; i++) {
                 HousePriceVo housePriceVo = new HousePriceVo();
-                LocalDate localDate1 = localDate.plusDays(i);
-                String format = localDate1.format(dateTimeFormatter2);
+                LocalDateTime localDate1 = localDate.plusDays(i);
+                String format = localDate1.format(dateTimeFormatter1);
                 housePriceVo.setDate(format);
                 housePriceVo.setPrice(house.getRoomPrice());
 //                判断这个时间内是否有
@@ -264,7 +271,7 @@ public class HousePriceController implements HousePriceAPI {
                         String[] split = setDate.split(",");
                         Date startDate = DateUtil.parseDateOnly(split[0]);
                         Date endDate = DateUtil.parseDateOnly(split[1]);
-                        Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+                        Date date1 = Date.from(localDate1.atZone(ZoneId.systemDefault()).toInstant());
                         //      判断当前时间是否在[startTime, endTime]区间
                         assert startDate != null;
                         boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
@@ -285,11 +292,46 @@ public class HousePriceController implements HousePriceAPI {
 
         housePricePageVoIPage.setRecords(housePricePageVos);
 
-        map.put("page",housePricePageVoIPage);
+        map.put("page", housePricePageVoIPage);
         return CommonResult.ok(map);
 
     }
 
+    @Override
+    public void queryExport(HttpServletResponse response, String type, String houseName, String operatingTime, String priceTime, String operatingName) {
+        String fileName = "改价记录.xls";
+        List<AlterPriceRecordVo> vos = housePriceService.queryExport(type, houseName, operatingTime, priceTime, operatingName);
+        //        导出
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("支付成功记录表");
+        Row headerRow = sheet.createRow(0);
+        headerRow.createCell(0).setCellValue("类型");
+        headerRow.createCell(1).setCellValue("房型名称");
+        headerRow.createCell(2).setCellValue("价格设置日期");
+        headerRow.createCell(3).setCellValue("修改后价格");
+        headerRow.createCell(4).setCellValue("原价");
+        headerRow.createCell(5).setCellValue("操作人");
+        headerRow.createCell(6).setCellValue("操作时间");
+
+        if (ObjectUtils.isNotEmpty(vos) && vos.size() > 0) {
+            for (int i = 0; i < vos.size(); i++) {
+                AlterPriceRecordVo vo = vos.get(i);
+                Row dataRow1 = sheet.createRow(i + 1);
+                dataRow1.createCell(0).setCellValue(vo.getHouseType());
+                dataRow1.createCell(1).setCellValue(vo.getHouseName());
+                dataRow1.createCell(2).setCellValue(vo.getSetDate());
+                dataRow1.createCell(3).setCellValue(vo.getAlterPrice().doubleValue());
+                dataRow1.createCell(4).setCellValue(vo.getOriginalPrice().doubleValue());
+                dataRow1.createCell(5).setCellValue(vo.getName());
+                dataRow1.createCell(6).setCellValue(vo.getDate());
+            }
+        }
+        // 将工作簿写入文件
+        ExcelUtils.excelDownload(workbook, "改价记录表.xlsx", response);
+
+
+    }
+
 
 }
 

+ 112 - 39
src/main/java/com/template/controller/PasswordIssController.java

@@ -11,6 +11,7 @@ import com.template.model.dto.CardInfoDto;
 import com.template.model.dto.FingerprintDataDto;
 import com.template.model.dto.PasswordDto;
 import com.template.model.enumModel.PasswordUrlEnum;
+import com.template.model.pojo.Unlocking;
 import org.apache.ibatis.annotations.Param;
 import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +27,6 @@ import java.util.HashMap;
  * @Version: 1.0
  */
 @RestController
-@RequestMapping("passwordIss")
 public class PasswordIssController {
 
     @Autowired
@@ -34,46 +34,54 @@ public class PasswordIssController {
 
 
 
+
+
 //    @Scheduled(cron = "0 0/1 * * * ?")
-    public void addPassword() {
+    public void test() {
 //        密码下发,后续需通过luid(设备id)通过aes解码
-//        HashMap<String, Object> map = new HashMap<>();
-//        map.put("luid", "047863CA78E0");//"80A036AEA1D3");
-////        map.put("categoryId", "d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
-//        map.put("categoryId", doorLockConfig.getCategoryId());//设备分类ID 所有蓝牙wifi锁默认统一值
-//        map.put("startTime", "1700018634000");
-//        map.put("endTime", "1700022234000");
-//        map.put("userName", "13097286670");// 用户名 也就是管理锁的账号
-//        map.put("type", 4);
-//
-//        String jsonContent = JSONObject.toJSONString(map);
-//
-//
-//        try {
-//            Object data = queryData(jsonContent, PasswordUrlEnum.Password.getUrl());
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-
-//        添加卡片
         HashMap<String, Object> map = new HashMap<>();
         map.put("luid", "047863CA78E0");//"80A036AEA1D3");
-        map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
-        map.put("card", "70109262");//"0F8A50A9");
-        map.put("cardType", 0); //卡类型 0 卡片 1 身份证
+//        map.put("categoryId", "d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
+        map.put("categoryId", doorLockConfig.getCategoryId());//设备分类ID 所有蓝牙wifi锁默认统一值
+        map.put("startTime", "1701424953000");
+        map.put("endTime", "1701428553000");
         map.put("userName", "13097286670");// 用户名 也就是管理锁的账号
         map.put("type", 4);
-        map.put("startTime", "1700031770000");//"1686067200000");
-        map.put("endTime", "1700035370000");//"1686204000000");
 
         String jsonContent = JSONObject.toJSONString(map);
 
+
         try {
-            queryData(jsonContent, PasswordUrlEnum.Card_Info.getUrl());
+//            Object data = queryData(jsonContent, PasswordUrlEnum.Password.getUrl());
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.Password.getUrl());
+            JSONObject data = jsonObject.getJSONObject("data");
+            String temporaryPassword = data.getString("temporaryPassword");
+            String decryptString = AesUtils.decrypt(temporaryPassword,"047863CA78E0");
+            String passWord = AesUtils.decrypt(temporaryPassword,"047863CA78E0");
+            System.out.println("passWord = " + passWord);
         } catch (Exception e) {
             e.printStackTrace();
         }
 
+//        添加卡片
+//        HashMap<String, Object> map = new HashMap<>();
+//        map.put("luid", "047863CA78E0");//"80A036AEA1D3");
+//        map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
+//        map.put("card", "70109262");//"0F8A50A9");
+//        map.put("cardType", 0); //卡类型 0 卡片 1 身份证
+//        map.put("userName", "13097286670");// 用户名 也就是管理锁的账号
+//        map.put("type", 4);
+//        map.put("startTime", "1700031770000");//"1686067200000");
+//        map.put("endTime", "1700035370000");//"1686204000000");
+//
+//        String jsonContent = JSONObject.toJSONString(map);
+//
+//        try {
+//            queryData(jsonContent, PasswordUrlEnum.Card_Info.getUrl());
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+
 //        指纹下发
 //        HashMap<String, Object> map = new HashMap<>();
 //        map.put("luid", "047863CA78E0");//"80A036AEA1D3");
@@ -99,8 +107,7 @@ public class PasswordIssController {
     /**
      * 获取设备详情
      */
-    @GetMapping("getDeviceInfo")
-    public void getDeviceInfo(@Param("luid") String luid) {
+    public String getDeviceInfo( String luid) {
         HashMap<String, String> map = new HashMap<>();
         map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
         map.put("luid", luid);//"80A036AEA1D3"
@@ -108,17 +115,21 @@ public class PasswordIssController {
         String jsonContent = JSONObject.toJSONString(map);
 
         try {
-            queryData(jsonContent, PasswordUrlEnum.Device_Info.getUrl());
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.Device_Info.getUrl());
+            JSONObject data = jsonObject.getJSONObject("data");
+//          电量
+            String battery = data.getString("battery");
+            return battery;
         } catch (Exception e) {
             e.printStackTrace();
         }
+        return null;
     }
 
     /**
      * 添加卡片
      */
-    @PostMapping("addCardInfo")
-    public void addCardInfo(@RequestBody CardInfoDto ciq) {
+    public Unlocking addCardInfo( CardInfoDto ciq) {
         HashMap<String, Object> map = new HashMap<>();
         map.put("luid", ciq.getLuid());//"80A036AEA1D3");
         map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
@@ -132,17 +143,27 @@ public class PasswordIssController {
         String jsonContent = JSONObject.toJSONString(map);
 
         try {
-            queryData(jsonContent, PasswordUrlEnum.Card_Info.getUrl());
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.Card_Info.getUrl());
+            JSONObject data = jsonObject.getJSONObject("data");
+            Unlocking unlocking = new Unlocking();
+//            锁用户id
+            String id = data.getString("id");
+            unlocking.setLockUserId(id);
+            unlocking.setLockStatus("2");
+            unlocking.setLuid(ciq.getLuid());
+            unlocking.setHouseNumberId(ciq.houseNumberId);
+            unlocking.setOrderNumber(ciq.orderNumber);
+            return unlocking;
         } catch (Exception e) {
             e.printStackTrace();
         }
+        return null;
     }
 
     /**
      * 下发指纹
      */
-    @PostMapping("addFingerprintData")
-    public void addFingerprintData(@RequestBody FingerprintDataDto fd) {
+    public Unlocking addFingerprintData( FingerprintDataDto fd) {
         HashMap<String, Object> map = new HashMap<>();
         map.put("luid", fd.getLuid());//"80A036AEA1D3");
         map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
@@ -155,19 +176,31 @@ public class PasswordIssController {
         String jsonContent = JSONObject.toJSONString(map);
 
         try {
-            queryData(jsonContent, PasswordUrlEnum.Fingerprint_Data.getUrl());
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.Fingerprint_Data.getUrl());
+            JSONObject data = jsonObject.getJSONObject("data");
+            Unlocking unlocking = new Unlocking();
+//            锁用户id
+            String id = data.getString("id");
+            unlocking.setLockUserId(id);
+            unlocking.setLockStatus("3");
+            unlocking.setLuid(fd.getLuid());
+            unlocking.setHouseNumberId(fd.houseNumberId);
+            unlocking.setOrderNumber(fd.orderNumber);
+            return unlocking;
+
         } catch (Exception e) {
             e.printStackTrace();
         }
+        return null;
     }
 
     /**
      * 下发密码
      */
-    @PostMapping("addPassword")
-    public void addPassword(@RequestBody PasswordDto pr) {
+    public Unlocking addPassword(PasswordDto pr) {
         HashMap<String, Object> map = new HashMap<>();
         map.put("luid", pr.getLuid());//"80A036AEA1D3");
+        System.out.println("doorLockConfig = " + doorLockConfig);
         map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
         map.put("startTime", pr.getStartTime());//"1686067200000");
         map.put("endTime", pr.getEndTime());//"1686204000000");
@@ -177,12 +210,52 @@ public class PasswordIssController {
         String jsonContent = JSONObject.toJSONString(map);
 
         try {
-            queryData(jsonContent, PasswordUrlEnum.Password.getUrl());
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.Password.getUrl());
+            JSONObject data = jsonObject.getJSONObject("data");
+            String temporaryPassword = data.getString("temporaryPassword");
+            String passWord = AesUtils.decrypt(temporaryPassword, pr.getLuid());
+            Unlocking unlocking = new Unlocking();
+            unlocking.setPassWord(passWord);
+//            锁用户id
+            String id = data.getString("id");
+            unlocking.setLockUserId(id);
+            unlocking.setLockStatus("1");
+            unlocking.setLuid(pr.getLuid());
+            unlocking.setHouseNumberId(pr.houseNumberId);
+            unlocking.setOrderNumber(pr.orderNumber);
+            return unlocking;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 删除锁用户
+     * @param luid
+     * @param id
+     * @return
+     */
+    public void deleteLockUser(String luid,String id){
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("categoryId", doorLockConfig.getCategoryId());
+        map.put("luid", luid);
+        map.put("id",id);
+        String jsonContent = JSONObject.toJSONString(map);
+        try {
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.DeleteLockUser.getUrl());
+            System.out.println("jsonObject = " + jsonObject);
+//            return jsonObject;
         } catch (Exception e) {
             e.printStackTrace();
         }
+//        return null;
     }
 
+
+
+
+
     /**
      * 请求数据
      *

+ 2 - 2
src/main/java/com/template/controller/PermissionSettingController.java

@@ -1,6 +1,7 @@
 package com.template.controller;
 
 
+import com.template.api.PermissionSettingAPI;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -14,8 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2023-11-15
  */
 @RestController
-@RequestMapping("/auto/permission-setting")
-public class PermissionSettingController {
+public class PermissionSettingController implements PermissionSettingAPI {
 
 }
 

+ 3 - 3
src/main/java/com/template/controller/HouseStateController.java

@@ -11,11 +11,11 @@ import org.springframework.web.bind.annotation.RestController;
  * </p>
  *
  * @author ceshi
- * @since 2023-11-07
+ * @since 2023-12-01
  */
 @RestController
-@RequestMapping("/auto/house-state")
-public class HouseStateController {
+@RequestMapping("/auto/unlocking")
+public class UnlockingController {
 
 }
 

+ 21 - 0
src/main/java/com/template/controller/UsersController.java

@@ -0,0 +1,21 @@
+package com.template.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-27
+ */
+@RestController
+@RequestMapping("/auto/users")
+public class UsersController {
+
+}
+

+ 3 - 0
src/main/java/com/template/mapper/HouseLockMapper.java

@@ -4,6 +4,8 @@ import com.template.model.pojo.HouseLock;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -15,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface HouseLockMapper extends BaseMapper<HouseLock> {
 
+    List<HouseLock> getHouseNumberId(String houseNumberId);
 }

+ 2 - 1
src/main/java/com/template/mapper/HouseMapper.java

@@ -8,6 +8,7 @@ import com.template.model.vo.HouseVo;
 import com.template.model.vo.HousedetailsVo;
 import com.template.model.vo.RoomTypeVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -22,7 +23,7 @@ import java.util.List;
 @Mapper
 public interface HouseMapper extends BaseMapper<House> {
 
-    IPage<HouseVo> getPage(Page<HouseVo> pageVo, int type, String keyWord);
+    IPage<HouseVo> getPage(Page<HouseVo> pageVo, @Param("type") int type,@Param("keyWord") String keyWord);
 
     HousedetailsVo  details(String houseId);
 

+ 7 - 1
src/main/java/com/template/mapper/HouseNumberStateMapper.java

@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -19,6 +21,10 @@ import java.util.List;
 @Mapper
 public interface HouseNumberStateMapper extends BaseMapper<HouseNumberState> {
 
-    List<HouseNumberState> houseNumberStateList(@Param("localDate") LocalDate localDate, @Param("endLocalDate") LocalDate endLocalDate, @Param("houseNumberIds") String houseNumberIds);
+    List<HouseNumberState> houseNumberStateList(@Param("localDate") LocalDateTime localDate, @Param("endLocalDate") LocalDateTime endLocalDate, @Param("houseNumberIds") String houseNumberIds);
 
+    List<HouseNumberState> beBooked(@Param("ids") String ids,@Param("reserveLiveTime") String reserveLiveTime, @Param("reserveLeaveTime")String reserveLeaveTime);
+
+
+    HouseNumberState getData(@Param("date") Date date,@Param("houseNumberId") String houseNumberId);
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 10 - 1
src/main/java/com/template/mapper/HouseOrderMapper.java


+ 7 - 2
src/main/java/com/template/mapper/HousePriceMapper.java

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -22,7 +23,11 @@ import java.util.List;
 @Mapper
 public interface HousePriceMapper extends BaseMapper<HousePrice> {
 
-    IPage<AlterPriceRecordVo> alterPriceRecord(Page<AlterPriceRecordVo> pageVo, String type, String houseName, String operatingTime, String priceTime, String operatingName);
+    IPage<AlterPriceRecordVo> alterPriceRecord(Page<AlterPriceRecordVo> pageVo,@Param("type") String type,@Param("houseName") String houseName,@Param("operatingTime") String operatingTime,@Param("priceTime") String priceTime,@Param("operatingName") String operatingName);
+
+    List<HousePrice> housePrice(@Param("localDate") LocalDateTime localDate, @Param("endLocalDate") LocalDateTime endLocalDate, @Param("ids") String ids);
+
+    List<AlterPriceRecordVo> queryExport(@Param("type") String type,@Param("houseName") String houseName,@Param("operatingTime") String operatingTime,@Param("priceTime") String priceTime,@Param("operatingName") String operatingName);
+
 
-    List<HousePrice> housePrice(@Param("localDate") LocalDate localDate, @Param("endLocalDate") LocalDate endLocalDate, @Param("ids") String ids);
 }

+ 3 - 3
src/main/java/com/template/mapper/HouseStateMapper.java

@@ -1,6 +1,6 @@
 package com.template.mapper;
 
-import com.template.model.pojo.HouseState;
+import com.template.model.pojo.Unlocking;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -10,9 +10,9 @@ import org.apache.ibatis.annotations.Mapper;
  * </p>
  *
  * @author ceshi
- * @since 2023-11-07
+ * @since 2023-12-01
  */
 @Mapper
-public interface HouseStateMapper extends BaseMapper<HouseState> {
+public interface UnlockingMapper extends BaseMapper<Unlocking> {
 
 }

+ 18 - 0
src/main/java/com/template/mapper/UsersMapper.java

@@ -0,0 +1,18 @@
+package com.template.mapper;
+
+import com.template.model.pojo.Users;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-27
+ */
+@Mapper
+public interface UsersMapper extends BaseMapper<Users> {
+
+}

+ 14 - 0
src/main/java/com/template/model/dto/CancelDto.java

@@ -0,0 +1,14 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class CancelDto {
+    private int adminId;
+
+    private String orderNumber;
+
+    private String houseNumberId;
+
+
+}

+ 3 - 0
src/main/java/com/template/model/dto/CardInfoDto.java

@@ -38,4 +38,7 @@ public class CardInfoDto {
     @NotNull(message = "结束时间不能为空")
     public String endTime;
 
+    public String houseNumberId;
+
+    public String orderNumber;
 }

+ 40 - 0
src/main/java/com/template/model/dto/CheckIdCardDto.java

@@ -0,0 +1,40 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class CheckIdCardDto {
+//    管理端用户id
+    private String adminId;
+//    房型id
+    private String houseId;
+//    房间号
+    private String houseNumberId;
+//  入住人姓名
+    private String liveName;
+//  入住人电话
+    private String phone;
+//    入住人身份证号
+    private String idCard;
+//    入住人卡号(不传则无法使用密码开锁)
+    private String cardNumber;
+//   入住时间
+    private String liveTime;
+//    离开时间
+    private String leaveTime;
+//    房间总价
+    private BigDecimal payPrice;
+//    入住天数
+    private int liveDay;
+//   开锁方式
+    private String lockStatus;
+//    指纹特征码
+    private String fingerprint;
+//    身份证特殊码
+    private String idCardInformation;
+//     订单号
+    private String orderNumber;
+
+}

+ 14 - 0
src/main/java/com/template/model/dto/CheckOutDto.java

@@ -0,0 +1,14 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class CheckOutDto {
+
+    private String orderNumber;
+
+    private String houseNumberId;
+
+    private int adminId;
+
+}

+ 11 - 0
src/main/java/com/template/model/dto/CleanRoomDto.java

@@ -0,0 +1,11 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class CleanRoomDto {
+    private int adminId;
+
+    private String houseNumberId;
+
+}

+ 11 - 0
src/main/java/com/template/model/dto/DirtyRoomDto.java

@@ -0,0 +1,11 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class DirtyRoomDto {
+    private int adminId;
+
+    private String houseNumberId;
+
+}

+ 0 - 13
src/main/java/com/template/model/dto/EstablishOrder.java

@@ -1,13 +0,0 @@
-package com.template.model.dto;
-
-import com.template.model.pojo.HouseOrder;
-import lombok.Data;
-
-@Data
-public class EstablishOrder {
-    private String cardNumber;
-
-    private HouseOrder houseOrder;
-
-
-}

+ 31 - 0
src/main/java/com/template/model/dto/EstablishOrderDto.java

@@ -0,0 +1,31 @@
+package com.template.model.dto;
+
+import com.template.model.pojo.HouseOrder;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class EstablishOrderDto {
+//    用户id
+    private String userId;
+//     房型id
+    private String houseId;
+//   需付金额
+    private BigDecimal payPrice;
+//     所需房间数
+    private int houseOrderNumber;
+//      住宿时长
+    private String liveDay;
+//    预定入住时间
+    private String reserveLiveTime;
+//    预定离开时间
+    private String reserveLeaveTime;
+//  预定人电话
+    private String reservePhone;
+//    预定人姓名
+    private String reserveName;
+
+}

+ 5 - 0
src/main/java/com/template/model/dto/FingerprintDataDto.java

@@ -36,4 +36,9 @@ public class FingerprintDataDto {
     @NotNull(message = "结束时间不能为空")
     public String endTime;
 
+
+    public String houseNumberId;
+
+    public String orderNumber;
+
 }

+ 14 - 0
src/main/java/com/template/model/dto/MaintainDto.java

@@ -0,0 +1,14 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class MaintainDto {
+    private String startTime;
+
+    private String endTime;
+
+    private String houseNumberId;
+
+    private Integer adminId;
+}

+ 3 - 0
src/main/java/com/template/model/dto/PasswordDto.java

@@ -30,4 +30,7 @@ public class PasswordDto {
     @NotNull(message = "结束时间不能为空")
     public String endTime;
 
+    public String houseNumberId;
+
+    public String orderNumber;
 }

+ 29 - 0
src/main/java/com/template/model/dto/ReserveDto.java

@@ -0,0 +1,29 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ReserveDto {
+//    预定人
+    private String name;
+//     手机号
+    private String phone;
+//  房间号id
+    private String houseNumberId;
+//    房型id
+    private String houseId;
+
+    //    预定入住时间
+    private String reserveLiveTime;
+    //    预定离开时间
+    private String reserveLeaveTime;
+
+    //   需付金额
+    private BigDecimal payPrice;
+
+//  工号/学号
+    private String cardNumber;
+    private int adminId;
+}

+ 18 - 0
src/main/java/com/template/model/dto/RoomChangeDto.java

@@ -0,0 +1,18 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class RoomChangeDto {
+
+    //  初始房间号
+    private String initialHouseNumberId;
+
+    //      所换房间号
+    private String houseNumberId;
+    //      订单号
+    private String orderNumber;
+
+    private int adminId;
+
+}

+ 2 - 2
src/main/java/com/template/model/enumModel/PasswordUrlEnum.java

@@ -11,8 +11,8 @@ public enum PasswordUrlEnum {
     Device_Info("getDeviceInfo","获取设备详情"),
     Card_Info("addCardInfo","添加卡片"),
     Fingerprint_Data("addFingerprintData","下发指纹"),
-    Password("addPassword","下发密码");
-
+    Password("addPassword","下发密码"),
+    DeleteLockUser("deleteLockUser","删除锁用户");
     String url;
     String dsc;
 

+ 2 - 2
src/main/java/com/template/model/pojo/HouseNumber.java

@@ -43,8 +43,8 @@ public class HouseNumber implements Serializable {
     @ApiModelProperty(value = "房间状态 1.净房 2.脏房")
     private Integer houseStatus;
 
-    @ApiModelProperty(value = "状态 1.空闲 2.正在使用")
-    private Integer status;
+//    @ApiModelProperty(value = "状态 1.空闲 2.正在使用")
+//    private Integer status;
 
     @ApiModelProperty(value = "电开关操作 1开电,2关电")
     private String electricType;

+ 3 - 3
src/main/java/com/template/model/pojo/HouseNumberState.java

@@ -37,7 +37,7 @@ public class HouseNumberState implements Serializable {
     @ApiModelProperty(value = "房间的id")
     private String houseNumberId;
 
-    @ApiModelProperty(value = "状态 1空闲、2预定、3入住、4脏房、5锁定")
+    @ApiModelProperty(value = "状态 1空闲、2脏房,3预定、4入住、5锁定、6维修")
     private Integer status;
 
     @ApiModelProperty(value = "状态开始时间")
@@ -46,8 +46,8 @@ public class HouseNumberState implements Serializable {
     @ApiModelProperty(value = "状态结束时间")
     private String endTime;
 
-    @ApiModelProperty(value = "预定订单id")
-    private String bookingId;
+    @ApiModelProperty(value = "订单号")
+    private String orderNumber;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)

+ 25 - 13
src/main/java/com/template/model/pojo/HouseOrder.java

@@ -21,7 +21,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author ceshi
- * @since 2023-11-21
+ * @since 2023-11-27
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -38,11 +38,14 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "订单号")
     private String orderNumber;
 
-    @ApiModelProperty(value = "订单状态:1待支付,2已支付,3待入住,4已入住,5已消费,6支付超时,7已取消,8已退单,9已退款,10退款中")
+    @ApiModelProperty(value = "订单状态 1.待支付,2.已支付,3.待入住,4.已入住,5.待结账,6.退款中,7.已退款,8.已退房,9.已取消,超时")
     private String orderStatus;
 
+    @ApiModelProperty(value = "房型id")
+    private String houseId;
+
     @ApiModelProperty(value = "房间号id")
-    private Integer houseNumberId;
+    private String houseNumberId;
 
     @ApiModelProperty(value = "入住人姓名")
     private String liveName;
@@ -50,17 +53,23 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "预定人姓名")
     private String reserveName;
 
-    @ApiModelProperty(value = "入住人身份证")
-    private String liveCard;
+    @ApiModelProperty(value = "预定人电话")
+    private String reservePhone;
+
+    @ApiModelProperty(value = "入住人id")
+    private String liveUsersId;
 
     @ApiModelProperty(value = "预定入住时间")
-    private Date reserveLiveTime;
+    private String reserveLiveTime;
 
     @ApiModelProperty(value = "预定离开时间")
-    private Date reserveLeaveTime;
+    private String reserveLeaveTime;
 
     @ApiModelProperty(value = "房间单价")
-    private String price;
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "订房数量")
+    private Integer houseOrderNumber;
 
     @ApiModelProperty(value = "入住天数")
     private String liveDay;
@@ -77,11 +86,14 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "支付时间")
     private Date payTime;
 
+    @ApiModelProperty(value = "退款时间")
+    private Date refundTime;
+
     @ApiModelProperty(value = "支付人")
     private String payUserId;
 
-    @ApiModelProperty(value = "支付渠道(线上,线下)")
-    private String payChannel;
+    @ApiModelProperty(value = "订单渠道(1线上,2线下)")
+    private String orderChannel;
 
     @ApiModelProperty(value = "支付方式(微信支付,现金)")
     private String payType;
@@ -89,6 +101,9 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "付款金额")
     private BigDecimal payPrice;
 
+    @ApiModelProperty(value = "取消时间")
+    private Date cancelTime;
+
     @ApiModelProperty(value = "电表起码(入住后才有)")
     private String electricStart;
 
@@ -101,9 +116,6 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "水表止码(订单结束后)")
     private String waterEnd;
 
-    @ApiModelProperty(value = "订单状态 1.待支付,2.已支付,3.带入住,4.已入住,5.待结账,6.退款中,7.已退款,8.已退房,9.已取消")
-    private String status;
-
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     private Date createTime;

+ 15 - 0
src/main/java/com/template/model/pojo/LockRoomDto.java

@@ -0,0 +1,15 @@
+package com.template.model.pojo;
+
+import lombok.Data;
+
+@Data
+public class LockRoomDto {
+    private String startTime;
+
+    private String endTime;
+
+    private String houseNumberId;
+
+    private int adminId;
+
+}

+ 20 - 11
src/main/java/com/template/model/pojo/HouseState.java

@@ -2,7 +2,7 @@ package com.template.model.pojo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import java.util.Date;
-
+import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableLogic;
@@ -20,27 +20,36 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author ceshi
- * @since 2023-11-07
+ * @since 2023-12-01
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="HouseState对象", description="")
-public class HouseState implements Serializable {
+@ApiModel(value="Unlocking对象", description="")
+public class Unlocking implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    @ApiModelProperty(value = "房间id")
-    private Integer houseId;
+    @ApiModelProperty(value = "订单号")
+    private String orderNumber;
+
+    @ApiModelProperty(value = "订单号id")
+    private String houseNumberId;
+
+    @ApiModelProperty(value = "锁用户id(每次生成密码/卡片/指纹时都会产生)")
+    private String lockUserId;
+
+    @ApiModelProperty(value = "锁设备UID")
+    private String luid;
 
-    @ApiModelProperty(value = "状态 1空闲、2预定、3入住、4脏房、5锁定")
-    private int status;
+    @ApiModelProperty(value = "开锁的方式(1.密码,2.卡片,3.指纹)")
+    private String lockStatus;
 
-    @ApiModelProperty(value = "预定订单id")
-    private String bookingId;
+    @ApiModelProperty(value = "开锁密码")
+    private String passWord;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
@@ -60,7 +69,7 @@ public class HouseState implements Serializable {
 
     @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
     @TableField(fill = FieldFill.INSERT)
-    @TableLogic(value = "0", delval = "1")
+    @TableLogic
     private Integer deleted;
 
 

+ 86 - 0
src/main/java/com/template/model/pojo/Users.java

@@ -0,0 +1,86 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="Users对象", description="")
+public class Users implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户表")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "部门")
+    private String department;
+
+    @ApiModelProperty(value = "用户名")
+    private String userName;
+
+    @ApiModelProperty(value = "用户角色")
+    private String userRole;
+
+    @ApiModelProperty(value = "微校卡号")
+    private String wxCard;
+
+    @ApiModelProperty(value = "身份证号码")
+    private String idCard;
+
+    @ApiModelProperty(value = "工号")
+    private String cardNumber;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "指纹生成后的编码")
+    private String fingerprint;
+
+    @ApiModelProperty(value = "身份证生成后的编码")
+    private String idCardInformation;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 18 - 13
src/main/java/com/template/model/vo/CalendarPageVo.java

@@ -6,8 +6,9 @@ import java.math.BigDecimal;
 
 @Data
 public class CalendarPageVo {
+
     //    房间号id
-    private int houseNumberId;
+    private String houseNumberId;
 //    房型id
     private String houseId;
     //      房间号
@@ -16,22 +17,26 @@ public class CalendarPageVo {
     private Integer houseStatus;
 
     //  房间状态 (无房态数据时使用)  1.空闲 2.正在使用
-    private String houseType;
+//    private String houseType;
     //  房态状态(有房态数据时使用) 状态 1空闲、2预定、3入住、4脏房、5锁定
-    private String status;
-
+//    private String status;
+//
     //    房型名称
     private String houseName;
-
-    //  预定人
-    private String reserveName;
-    //    预计入住时间
-    private String reserveLiveTime;
-    //    预计离开时间
-    private String reserveLeaveTime;
-
-    //    价格
+//
+//    //  预定人
+//    private String reserveName;
+//    //    预计入住时间
+//    private String reserveLiveTime;
+//    //    预计离开时间
+//    private String reserveLeaveTime;
+//
+//    //    价格
     private BigDecimal price;
 
+    //    居住时长
+    private String roomLiveTime;
 
+    //    营业时间
+    private String receivingTime;
 }

+ 1 - 0
src/main/java/com/template/model/vo/HouseNumberStateDateVo.java

@@ -9,4 +9,5 @@ public class HouseNumberStateDateVo {
 //    剩余房间数
     private int count;
 
+
 }

+ 1 - 1
src/main/java/com/template/model/vo/HouseNumberStatePageVo.java

@@ -8,6 +8,6 @@ import java.util.List;
 @Data
 public class HouseNumberStatePageVo {
     private CalendarPageVo calendarPageVo;
+    private List<HouseStustaVo> houseStustaVos;
 
-    private List<HousePriceVo> housePriceVos;
 }

+ 47 - 0
src/main/java/com/template/model/vo/HouseOrderPageListVo.java

@@ -0,0 +1,47 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class HouseOrderPageListVo {
+//    订单号
+    private String orderNumber;
+//  入住时间
+    private String liveTime;
+//  离店时间
+    private String leaveTime;
+//  用户名称
+    private String reserveName;
+//    入住名称
+    private String liveName;
+
+//  手机号
+    private String phone;
+
+    //    房型
+    private String houseName;
+    //    房间号
+    private String houseNumber;
+    //  订单金额
+    private BigDecimal orderPrice;
+    //    支付渠道
+    private String payType;
+    //     订单状态
+    private String orderStart;
+    //    支付时间
+    private String payTime;
+    //    退款时间
+    private Date refundTime;
+    //    取消时间
+    private Date cancelTime;
+
+    private String houseNumberId;
+    private String houseId;
+
+//    1:取消,2:退款,3:入住,4:退房,5:换房,6:详情
+    private String choiceBox;
+
+}

+ 8 - 2
src/main/java/com/template/model/vo/HouseStateVo.java

@@ -6,8 +6,10 @@ import java.math.BigDecimal;
 
 @Data
 public class HouseStateVo {
+//    房态id
     private int houseNumberId;
-
+//     订单号
+    private String orderNumber;
     private String houseId;
 //      房间号
     private String houseNumber;
@@ -15,7 +17,7 @@ public class HouseStateVo {
     private Integer houseStatus;
 
 //  房间状态 (无订单时的)  1.空闲 2.正在使用
-    private String houseType;
+//    private String houseType;
 //  房态状态(有订单时使用) 状态 1空闲、2预定、3入住、4脏房、5锁定
     private String status;
 
@@ -29,6 +31,10 @@ public class HouseStateVo {
 //    预计离开时间
     private String reserveLeaveTime;
 
+//    居住时长
+    private String roomLiveTime;
 
+//    营业时间
+    private String receivingTime;
 
 }

+ 23 - 0
src/main/java/com/template/model/vo/HouseStustaVo.java

@@ -0,0 +1,23 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+@Data
+public class HouseStustaVo {
+    //    房态数据
+//    房间状态 状态 1空闲、2预定、3入住、4脏房、5锁定
+    private Integer status;
+    //  预定人
+    private String reserveName;
+    //    预计入住时间
+    private String reserveLiveTime;
+    //    预计离开时间
+    private String reserveLeaveTime;
+    //    房态id
+    private int houseNumberStateId;
+    //    订单号
+    private String orderNumber;
+    private String date;
+    private BigDecimal price;
+}

+ 13 - 0
src/main/java/com/template/model/vo/PriceVo.java

@@ -0,0 +1,13 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class PriceVo {
+    private BigDecimal price;
+
+    private BigDecimal totalPrice;
+
+}

+ 11 - 0
src/main/java/com/template/model/vo/ReserveDayVo.java

@@ -0,0 +1,11 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+@Data
+public class ReserveDayVo {
+    private String date;
+
+    private String status;
+
+}

+ 23 - 0
src/main/java/com/template/model/weixin/AccessToken.java

@@ -0,0 +1,23 @@
+package com.template.model.weixin;
+
+public class AccessToken {
+	private String access_token;// 网页获取用户信息凭证
+	private String expires_in;// 有效时间
+
+	public String getAccess_token() {
+		return access_token;
+	}
+
+	public void setAccess_token(String access_token) {
+		this.access_token = access_token;
+	}
+
+	public String getExpires_in() {
+		return expires_in;
+	}
+
+	public void setExpires_in(String expires_in) {
+		this.expires_in = expires_in;
+	}
+
+}

+ 41 - 0
src/main/java/com/template/model/weixin/CodeEntity.java

@@ -0,0 +1,41 @@
+package com.template.model.weixin;
+
+public class CodeEntity {
+
+    public String openid;
+    public String sessionkey;
+    public String unionid;
+    public boolean flagPhone;
+
+    public String getOpenid() {
+        return openid;
+    }
+
+    public void setOpenid(String openid) {
+        this.openid = openid;
+    }
+
+    public String getSessionkey() {
+        return sessionkey;
+    }
+
+    public void setSessionkey(String sessionkey) {
+        this.sessionkey = sessionkey;
+    }
+
+    public String getUnionid() {
+        return unionid;
+    }
+
+    public void setUnionid(String unionid) {
+        this.unionid = unionid;
+    }
+
+    public boolean isFlagPhone() {
+        return flagPhone;
+    }
+
+    public void setFlagPhone(boolean flagPhone) {
+        this.flagPhone = flagPhone;
+    }
+}

+ 32 - 0
src/main/java/com/template/model/weixin/CodeEntityVo.java

@@ -0,0 +1,32 @@
+package com.template.model.weixin;
+
+public class CodeEntityVo {
+
+    public String code;
+    public String encryptedData;
+    public String iv;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getEncryptedData() {
+        return encryptedData;
+    }
+
+    public void setEncryptedData(String encryptedData) {
+        this.encryptedData = encryptedData;
+    }
+
+    public String getIv() {
+        return iv;
+    }
+
+    public void setIv(String iv) {
+        this.iv = iv;
+    }
+}

+ 42 - 0
src/main/java/com/template/model/weixin/Ordering.java

@@ -0,0 +1,42 @@
+package com.template.model.weixin;
+
+public class Ordering {
+
+    public String card_number;  // 卡号
+    public String h_type;  // 预定房型
+    public String live_time;  // 居住时间
+    public String end_time;   // 离店时间
+
+    public String getCard_number() {
+        return card_number;
+    }
+
+    public void setCard_number(String card_number) {
+        this.card_number = card_number;
+    }
+
+    public String getH_type() {
+        return h_type;
+    }
+
+    public void setH_type(String h_type) {
+        this.h_type = h_type;
+    }
+
+    public String getLive_time() {
+        return live_time;
+    }
+
+    public void setLive_time(String live_time) {
+        this.live_time = live_time;
+    }
+
+    public String getEnd_time() {
+        return end_time;
+    }
+
+    public void setEnd_time(String end_time) {
+        this.end_time = end_time;
+    }
+
+}

+ 76 - 0
src/main/java/com/template/model/weixin/Pay.java

@@ -0,0 +1,76 @@
+package com.template.model.weixin;
+/**
+ * 充值记录实体来
+ * @author QT-666
+ *
+ */
+public class Pay {
+    private int pay_id;//
+    private int user_id;//用户id
+    private String open_id;//用户相对于公众号的唯一id
+    private String user_name;//用户名称
+    private double pay_money;//支付金额
+    private String pay_time;//支付时间
+    private int pay_type;//支付方式(1微信2支付宝
+    private String pay_no;//订单号
+    //private String pay_state;//F:未支付;T:已支付
+
+    private String user_account;//页面显示作用,表里无此字段
+    
+	public String getUser_account() {
+		return user_account;
+	}
+	public void setUser_account(String user_account) {
+		this.user_account = user_account;
+	}
+	public int getPay_id() {
+		return pay_id;
+	}
+	public void setPay_id(int pay_id) {
+		this.pay_id = pay_id;
+	}
+	public int getUser_id() {
+		return user_id;
+	}
+	public void setUser_id(int user_id) {
+		this.user_id = user_id;
+	}
+	public String getOpen_id() {
+		return open_id;
+	}
+	public void setOpen_id(String open_id) {
+		this.open_id = open_id;
+	}
+	public String getUser_name() {
+		return user_name;
+	}
+	public void setUser_name(String user_name) {
+		this.user_name = user_name;
+	}
+	public double getPay_money() {
+		return pay_money;
+	}
+	public void setPay_money(double pay_money) {
+		this.pay_money = pay_money;
+	}
+	public String getPay_time() {
+		return pay_time;
+	}
+	public void setPay_time(String pay_time) {
+		this.pay_time = pay_time;
+	}
+	public int getPay_type() {
+		return pay_type;
+	}
+	public void setPay_type(int pay_type) {
+		this.pay_type = pay_type;
+	}
+	public String getPay_no() {
+		return pay_no;
+	}
+	public void setPay_no(String pay_no) {
+		this.pay_no = pay_no;
+	}
+    
+    
+}

+ 283 - 0
src/main/java/com/template/model/weixin/PayResult.java

@@ -0,0 +1,283 @@
+package com.template.model.weixin;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * 微信支付结果返回
+ * 
+ * @author QT-666
+ * 
+ */
+@XmlRootElement(name="xml")
+public class PayResult {
+	private String appid;// 微信分配的公众账号ID(企业号corpid即为此appId)
+	private String attach;//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。
+	private String bank_type;// 银行类型,采用字符串类型的银行标识,银行类型见银行列表
+	private String fee_type;// 货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
+	private String is_subscribe;// 用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
+	private String mch_id;// 微信支付分配的商户号
+	private String nonce_str;// 随机字符串,不长于32位
+	private String openid;// 用户在商户appid下的唯一标识
+	private String out_trade_no;// 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@
+								// ,且在同一个商户号下唯一。
+	private String result_code;// SUCCESS/FAIL
+	private String return_code;// 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
+	private String sign;// 签名,详见签名算法
+	private String sub_mch_id;//
+	private String time_end;// 支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
+	private int total_fee;// 订单总金额,单位为分
+	private String trade_type;// JSAPI、NATIVE、APP
+	private String transaction_id;// 微信支付订单号
+	private int cash_fee;// 现金金额
+	
+	private String device_info; //微信支付分配的终端设备号,
+    private String sign_type;//签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
+    private String settlement_total_fee ;//应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。 
+    private String cash_fee_type;//货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
+    private String  coupon_fee;//代金券金额<=订单金额,订单金额-代金券金额=现金支付金额,详见支付金额
+    private String coupon_count;//代金券使用数量
+    private String coupon_type_$n;// CASH--充值代金券 NO_CASH---非充值代金券 仅在使用了免充值代金券时有返回(取值:CASH、NO_CASH)。$n为下标,从0开始编号,举例:coupon_type_0
+    private String coupon_id_$n;//代金券ID,$n为下标,从0开始编号
+    private String coupon_fee_$n;//单个代金券支付金额,$n为下标,从0开始编号
+	private String trade_state;
+    
+
+	public String getDevice_info() {
+		return device_info;
+	}
+
+	public void setDevice_info(String device_info) {
+		this.device_info = device_info;
+	}
+
+	public String getSign_type() {
+		return sign_type;
+	}
+
+	public void setSign_type(String sign_type) {
+		this.sign_type = sign_type;
+	}
+
+	public String getSettlement_total_fee() {
+		return settlement_total_fee;
+	}
+
+	public void setSettlement_total_fee(String settlement_total_fee) {
+		this.settlement_total_fee = settlement_total_fee;
+	}
+
+	public String getCash_fee_type() {
+		return cash_fee_type;
+	}
+
+	public void setCash_fee_type(String cash_fee_type) {
+		this.cash_fee_type = cash_fee_type;
+	}
+
+	public String getCoupon_fee() {
+		return coupon_fee;
+	}
+
+	public void setCoupon_fee(String coupon_fee) {
+		this.coupon_fee = coupon_fee;
+	}
+
+	public String getCoupon_count() {
+		return coupon_count;
+	}
+
+	public void setCoupon_count(String coupon_count) {
+		this.coupon_count = coupon_count;
+	}
+
+	public String getCoupon_type_$n() {
+		return coupon_type_$n;
+	}
+
+	public void setCoupon_type_$n(String coupon_type_$n) {
+		this.coupon_type_$n = coupon_type_$n;
+	}
+
+	public String getCoupon_id_$n() {
+		return coupon_id_$n;
+	}
+
+	public void setCoupon_id_$n(String coupon_id_$n) {
+		this.coupon_id_$n = coupon_id_$n;
+	}
+
+	public String getCoupon_fee_$n() {
+		return coupon_fee_$n;
+	}
+
+	public void setCoupon_fee_$n(String coupon_fee_$n) {
+		this.coupon_fee_$n = coupon_fee_$n;
+	}
+
+	public String getAppid() {
+		return appid;
+	}
+
+	public void setAppid(String appid) {
+		this.appid = appid;
+	}
+
+	public String getAttach() {
+		return attach;
+	}
+
+	public void setAttach(String attach) {
+		this.attach = attach;
+	}
+
+	public String getBank_type() {
+		return bank_type;
+	}
+
+	public void setBank_type(String bank_type) {
+		this.bank_type = bank_type;
+	}
+
+	public String getFee_type() {
+		return fee_type;
+	}
+
+	public void setFee_type(String fee_type) {
+		this.fee_type = fee_type;
+	}
+
+	public String getIs_subscribe() {
+		return is_subscribe;
+	}
+
+	public void setIs_subscribe(String is_subscribe) {
+		this.is_subscribe = is_subscribe;
+	}
+
+	public String getMch_id() {
+		return mch_id;
+	}
+
+	public void setMch_id(String mch_id) {
+		this.mch_id = mch_id;
+	}
+
+	public String getNonce_str() {
+		return nonce_str;
+	}
+
+	public void setNonce_str(String nonce_str) {
+		this.nonce_str = nonce_str;
+	}
+
+	public String getOpenid() {
+		return openid;
+	}
+
+	public void setOpenid(String openid) {
+		this.openid = openid;
+	}
+
+	public String getOut_trade_no() {
+		return out_trade_no;
+	}
+
+	public void setOut_trade_no(String out_trade_no) {
+		this.out_trade_no = out_trade_no;
+	}
+
+	public String getResult_code() {
+		return result_code;
+	}
+
+	public void setResult_code(String result_code) {
+		this.result_code = result_code;
+	}
+
+	public String getReturn_code() {
+		return return_code;
+	}
+
+	public void setReturn_code(String return_code) {
+		this.return_code = return_code;
+	}
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getSub_mch_id() {
+		return sub_mch_id;
+	}
+
+	public void setSub_mch_id(String sub_mch_id) {
+		this.sub_mch_id = sub_mch_id;
+	}
+
+	public String getTime_end() {
+		return time_end;
+	}
+
+	public void setTime_end(String time_end) {
+		this.time_end = time_end;
+	}
+
+	public int getTotal_fee() {
+		return total_fee;
+	}
+
+	public void setTotal_fee(int total_fee) {
+		this.total_fee = total_fee;
+	}
+
+	public String getTrade_type() {
+		return trade_type;
+	}
+
+	public void setTrade_type(String trade_type) {
+		this.trade_type = trade_type;
+	}
+
+	public String getTransaction_id() {
+		return transaction_id;
+	}
+
+	public void setTransaction_id(String transaction_id) {
+		this.transaction_id = transaction_id;
+	}
+
+	public int getCash_fee() {
+		return cash_fee;
+	}
+
+	public void setCash_fee(int cash_fee) {
+		this.cash_fee = cash_fee;
+	}
+
+	public String getTrade_state() {
+		return trade_state;
+	}
+
+	public void setTrade_state(String trade_state) {
+		this.trade_state = trade_state;
+	}
+
+	@Override
+	public String toString() {
+		return "PayResult [appid=" + appid + ", attach=" + attach
+				+ ", bank_type=" + bank_type + ", fee_type=" + fee_type
+				+ ", is_subscribe=" + is_subscribe + ", mch_id=" + mch_id
+				+ ", nonce_str=" + nonce_str + ", openid=" + openid
+				+ ", out_trade_no=" + out_trade_no + ", result_code="
+				+ result_code + ", return_code=" + return_code + ", sign="
+				+ sign + ", sub_mch_id=" + sub_mch_id + ", time_end="
+				+ time_end + ", total_fee=" + total_fee + ", trade_type="
+				+ trade_type + ", transaction_id=" + transaction_id
+				+ ", cash_fee=" + cash_fee +",trade_state="+trade_state;
+	}
+   
+}

+ 144 - 0
src/main/java/com/template/model/weixin/Users.java

@@ -0,0 +1,144 @@
+package com.template.model.weixin;
+
+/**
+ * 游客表,
+ */
+public class Users {
+
+    public int id;
+    public String card_number;  // 身份证
+    public String user_name;
+    public String user_phone;
+    public String user_zz;   // 职务
+    public String openid;   // 微信openid
+    public String create_time;
+    public String remark;   // 备注
+    public int identity_type;   // 用户分类
+    private String contactId;   // 关联人id(用于常联系人关联)
+    private String contactName;   // 关联人姓名(用于常联系人关联)
+    private String dataType; // 数据类型
+    private String headPhoto; // 用户头像地址
+    private String collect_hotel; // 收藏酒店
+    private String live_hotel;// 住过酒店
+
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getCard_number() {
+        return card_number;
+    }
+
+    public void setCard_number(String card_number) {
+        this.card_number = card_number;
+    }
+
+    public String getUser_name() {
+        return user_name;
+    }
+
+    public void setUser_name(String user_name) {
+        this.user_name = user_name;
+    }
+
+    public String getUser_phone() {
+        return user_phone;
+    }
+
+    public void setUser_phone(String user_phone) {
+        this.user_phone = user_phone;
+    }
+
+    public String getUser_zz() {
+        return user_zz;
+    }
+
+    public void setUser_zz(String user_zz) {
+        this.user_zz = user_zz;
+    }
+
+    public String getOpenid() {
+        return openid;
+    }
+
+    public void setOpenid(String openid) {
+        this.openid = openid;
+    }
+
+    public String getCreate_time() {
+        return create_time;
+    }
+
+    public void setCreate_time(String create_time) {
+        this.create_time = create_time;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public int getIdentity_type() {
+        return identity_type;
+    }
+
+    public void setIdentity_type(int identity_type) {
+        this.identity_type = identity_type;
+    }
+
+    public String getContactId() {
+        return contactId;
+    }
+
+    public void setContactId(String contactId) {
+        this.contactId = contactId;
+    }
+
+    public String getContactName() {
+        return contactName;
+    }
+
+    public void setContactName(String contactName) {
+        this.contactName = contactName;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getHeadPhoto() {
+        return headPhoto;
+    }
+
+    public void setHeadPhoto(String headPhoto) {
+        this.headPhoto = headPhoto;
+    }
+
+    public String getCollect_hotel() {
+        return collect_hotel;
+    }
+
+    public void setCollect_hotel(String collect_hotel) {
+        this.collect_hotel = collect_hotel;
+    }
+
+    public String getLive_hotel() {
+        return live_hotel;
+    }
+
+    public void setLive_hotel(String live_hotel) {
+        this.live_hotel = live_hotel;
+    }
+}

+ 57 - 0
src/main/java/com/template/model/weixin/WechatResult.java

@@ -0,0 +1,57 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package com.template.model.weixin;
+
+public class WechatResult {
+	private String access_token;
+	private int expires_in;
+	private String refresh_token;
+	private String openid;
+	private String scope;
+
+	public WechatResult() {
+	}
+
+	public String getAccess_token() {
+		return this.access_token;
+	}
+
+	public void setAccess_token(String access_token) {
+		this.access_token = access_token;
+	}
+
+	public int getExpires_in() {
+		return this.expires_in;
+	}
+
+	public void setExpires_in(int expires_in) {
+		this.expires_in = expires_in;
+	}
+
+	public String getRefresh_token() {
+		return this.refresh_token;
+	}
+
+	public void setRefresh_token(String refresh_token) {
+		this.refresh_token = refresh_token;
+	}
+
+	public String getOpenid() {
+		return this.openid;
+	}
+
+	public void setOpenid(String openid) {
+		this.openid = openid;
+	}
+
+	public String getScope() {
+		return this.scope;
+	}
+
+	public void setScope(String scope) {
+		this.scope = scope;
+	}
+}

+ 32 - 0
src/main/java/com/template/model/weixin/WechatUnifiedOrder.java

@@ -0,0 +1,32 @@
+package com.template.model.weixin;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+/**
+ * 统一下单实体类
+ * @author QT-666
+ *
+ */
+
+@Data
+public class WechatUnifiedOrder implements Serializable{
+	private String appid;   //微信支付分配的公众账号ID(企业号corpid即为此appId)
+	private String mch_id;  //微信支付分配的商户号
+	private String nonce_str;   //随机字符串,长度要求在32位以内。推荐随机数生成算法
+	private String sign;  //通过签名算法计算得出的签名值,详见签名生成算法
+	private String body;   //商品简单描述,该字段请按照规范传递,具体请见参数规定
+	private String out_trade_no;  //	商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。详见商户订单号
+	private String out_refund_no;  // 退款单号
+	private int total_fee;   //订单总金额,单位为分,详见支付金额
+	private Integer refund_fee;  // 退款金额
+	private String spbill_create_ip;  //APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
+	private String notify_url;   //异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
+	private String trade_type;  //取值如下:JSAPI,NATIVE,APP等,说明详见参数规定
+	private String openid;   //trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识
+	private String attach;//数据包
+	
+
+}

+ 93 - 0
src/main/java/com/template/model/weixin/Wechat_userinfo.java

@@ -0,0 +1,93 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package com.template.model.weixin;
+
+import java.util.List;
+
+public class Wechat_userinfo {
+
+	public String openid;
+	public String nickname;   // 昵称
+	public String sex;   // 性别
+	public String province;    // 省份
+	public String city;    // 城市
+	public String country;   // 国家
+	public String headimgurl;   // 头像
+	public List<String> privilege;   // 特权
+	public String unionid;   // 只有在用户将公众号绑定到微信开放平台账号后,才会出现该字段。
+
+	public String getOpenid() {
+		return openid;
+	}
+
+	public void setOpenid(String openid) {
+		this.openid = openid;
+	}
+
+	public String getNickname() {
+		return nickname;
+	}
+
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+
+	public String getSex() {
+		return sex;
+	}
+
+	public void setSex(String sex) {
+		this.sex = sex;
+	}
+
+	public String getProvince() {
+		return province;
+	}
+
+	public void setProvince(String province) {
+		this.province = province;
+	}
+
+	public String getCity() {
+		return city;
+	}
+
+	public void setCity(String city) {
+		this.city = city;
+	}
+
+	public String getCountry() {
+		return country;
+	}
+
+	public void setCountry(String country) {
+		this.country = country;
+	}
+
+	public String getHeadimgurl() {
+		return headimgurl;
+	}
+
+	public void setHeadimgurl(String headimgurl) {
+		this.headimgurl = headimgurl;
+	}
+
+	public List<String> getPrivilege() {
+		return privilege;
+	}
+
+	public void setPrivilege(List<String> privilege) {
+		this.privilege = privilege;
+	}
+
+	public String getUnionid() {
+		return unionid;
+	}
+
+	public void setUnionid(String unionid) {
+		this.unionid = unionid;
+	}
+}

+ 26 - 0
src/main/java/com/template/model/weixin/WeiXinUtil.java

@@ -0,0 +1,26 @@
+package com.template.model.weixin;
+
+public class WeiXinUtil {
+
+    // 民宿小程序
+    public static String appid_c = "wxb064310cc85cf115";
+    public static String screct_c = "6f99b6724ad5714d3f253d524aa8d365";
+    // 民宿公众号
+    public static String appid_g = "wx3f20e656effd6400";
+    public static String screct_g = "5c30468b960221b1edf443030d20eebc";
+    // 民宿商户
+    public static String APIid = "gjkgjdkoowpjc46352AqiTTv708poJNV";  // 商户密钥
+    public static String key = "gjkgjdkoowpjc46352AqiTTv708poJNV"; // 商户密钥
+    public static String account = "1650403896";  // 商户号
+
+    public static String ip = "101.42.162.31";//测试回跳ip
+                              // "172.16.20.88";//线上回跳ip
+    public static String ip_h = // "https://chtech.ncjti.edu.cn/homestay/mhotel/";//31回调地址
+                                //"https://www.xn--gmq052a5d255v.com/hotelReservation/mhotel";//测试回跳地址 这个中文域名测试跳不过去
+                                // 不知道这个乡宿的域名微信是否会回调,不会的话要改成 https://chtech.ncjti.edu.cn/homestay/mhotel/
+                                 "https://chtech.ncjti.edu.cn/hotelReservation/mhotel";//88线上回跳地址
+
+    //public static String ip_q = "https://chtech.ncjti.edu.cn/hotelReservation/dist";
+    public static String ip_q = "http://192.168.161.227:8000/hotelReservation/dist";
+
+}

+ 41 - 0
src/main/java/com/template/model/weixin/Wx_user.java

@@ -0,0 +1,41 @@
+package com.template.model.weixin;
+
+public class Wx_user {
+
+    public String card_number;
+    public String name;
+    public String telephone; // 联系电话
+    public int identity_type;   // 用户分类
+
+    public String getCard_number() {
+        return card_number;
+    }
+
+    public void setCard_number(String card_number) {
+        this.card_number = card_number;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTelephone() {
+        return telephone;
+    }
+
+    public void setTelephone(String telephone) {
+        this.telephone = telephone;
+    }
+
+    public int getIdentity_type() {
+        return identity_type;
+    }
+
+    public void setIdentity_type(int identity_type) {
+        this.identity_type = identity_type;
+    }
+}

+ 4 - 0
src/main/java/com/template/services/HouseLockService.java

@@ -3,6 +3,8 @@ package com.template.services;
 import com.template.model.pojo.HouseLock;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +15,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface HouseLockService extends IService<HouseLock> {
 
+    List<HouseLock> getHouseNumberId(String houseNumberId);
+
 }

+ 7 - 1
src/main/java/com/template/services/HouseNumberStateService.java

@@ -4,6 +4,8 @@ import com.template.model.pojo.HouseNumberState;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,5 +18,9 @@ import java.util.List;
  */
 public interface HouseNumberStateService extends IService<HouseNumberState> {
 
-    List<HouseNumberState> houseNumberStateList(LocalDate localDate, LocalDate endLocalDate, String houseNumberIds);
+    List<HouseNumberState> houseNumberStateList(LocalDateTime localDate, LocalDateTime endLocalDate, String houseNumberIds);
+
+    List<HouseNumberState> beBooked(String ids, String reserveLiveTime, String reserveLeaveTime);
+
+    HouseNumberState getData(Date date,String houseNumberId);
 }

+ 28 - 1
src/main/java/com/template/services/HouseOrderService.java

@@ -1,7 +1,12 @@
 package com.template.services;
 
-import com.template.model.pojo.HouseOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.template.model.vo.HouseOrderPageListVo;
+import com.template.model.pojo.HouseOrder;
+import com.template.model.result.PageUtils;
+import com.template.model.vo.PriceVo;
+
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -12,5 +17,27 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-11-21
  */
 public interface HouseOrderService extends IService<HouseOrder> {
+    /**
+     * 移动端计算总金额
+     * @param houseOrderNumber
+     * @param userId
+     * @param houseId
+     * @param liveTime
+     * @param leaveTime
+     * @return
+     */
+    BigDecimal getHouseOrderPrice(int houseOrderNumber, String userId, String houseId, String liveTime, String leaveTime);
+
+    /**
+     * 管理端计算总金额
+     * @param houseId
+     * @param cardNumber
+     * @param liveTime
+     * @param leaveTime
+     * @return
+     */
+    PriceVo reservePrice(String houseId, String cardNumber, String liveTime, String leaveTime);
+
+    PageUtils<HouseOrderPageListVo> pageList(int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime);
 
 }

+ 6 - 1
src/main/java/com/template/services/HousePriceService.java

@@ -6,6 +6,7 @@ import com.template.model.result.PageUtils;
 import com.template.model.vo.AlterPriceRecordVo;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -20,5 +21,9 @@ public interface HousePriceService extends IService<HousePrice> {
 
     PageUtils<AlterPriceRecordVo> alterPriceRecord(String type, String houseName, String operatingTime, String priceTime, String operatingName, int page, int size);
 
-    List<HousePrice> housePrice(LocalDate localDate, LocalDate endLocalDate, String ids);
+    List<HousePrice> housePrice(LocalDateTime localDate, LocalDateTime endLocalDate, String ids);
+
+    List<AlterPriceRecordVo> queryExport(String type, String houseName, String operatingTime, String priceTime, String operatingName);
+
+
 }

+ 3 - 5
src/main/java/com/template/services/HouseStateService.java

@@ -1,6 +1,6 @@
 package com.template.services;
 
-import com.template.model.pojo.HouseState;
+import com.template.model.pojo.Unlocking;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -9,10 +9,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * </p>
  *
  * @author ceshi
- * @since 2023-11-07
+ * @since 2023-12-01
  */
-public interface HouseStateService extends IService<HouseState> {
-
-
+public interface UnlockingService extends IService<Unlocking> {
 
 }

+ 16 - 0
src/main/java/com/template/services/UsersService.java

@@ -0,0 +1,16 @@
+package com.template.services;
+
+import com.template.model.pojo.Users;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-27
+ */
+public interface UsersService extends IService<Users> {
+
+}

+ 9 - 0
src/main/java/com/template/services/impl/HouseLockServiceImpl.java

@@ -4,8 +4,11 @@ import com.template.model.pojo.HouseLock;
 import com.template.mapper.HouseLockMapper;
 import com.template.services.HouseLockService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -16,5 +19,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class HouseLockServiceImpl extends ServiceImpl<HouseLockMapper, HouseLock> implements HouseLockService {
+    @Autowired
+    HouseLockMapper houseLockMapper;
 
+    @Override
+    public List<HouseLock> getHouseNumberId(String houseNumberId) {
+        return houseLockMapper.getHouseNumberId(houseNumberId);
+    }
 }

+ 13 - 1
src/main/java/com/template/services/impl/HouseNumberStateServiceImpl.java

@@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,7 +27,17 @@ public class HouseNumberStateServiceImpl extends ServiceImpl<HouseNumberStateMap
     HouseNumberStateMapper houseNumberStateMapper;
 
     @Override
-    public List<HouseNumberState> houseNumberStateList(LocalDate localDate, LocalDate endLocalDate, String houseNumberIds) {
+    public List<HouseNumberState> houseNumberStateList(LocalDateTime localDate, LocalDateTime endLocalDate, String houseNumberIds) {
         return houseNumberStateMapper.houseNumberStateList(localDate,endLocalDate,houseNumberIds);
     }
+
+    @Override
+    public List<HouseNumberState> beBooked(String ids, String reserveLiveTime, String reserveLeaveTime) {
+        return houseNumberStateMapper.beBooked(ids,reserveLiveTime,reserveLeaveTime);
+    }
+
+    @Override
+    public HouseNumberState getData(Date date,String houseNumberId) {
+        return houseNumberStateMapper.getData(date,houseNumberId);
+    }
 }

+ 282 - 3
src/main/java/com/template/services/impl/HouseOrderServiceImpl.java

@@ -1,14 +1,33 @@
 package com.template.services.impl;
 
-import com.template.model.pojo.HouseOrder;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.template.common.utils.DateUtil;
 import com.template.mapper.HouseOrderMapper;
-import com.template.services.HouseOrderService;
+import com.template.model.vo.HouseOrderPageListVo;
+import com.template.model.pojo.*;
+import com.template.model.result.PageUtils;
+import com.template.model.vo.PriceVo;
+import com.template.services.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author ceshi
@@ -17,4 +36,264 @@ import org.springframework.stereotype.Service;
 @Service
 public class HouseOrderServiceImpl extends ServiceImpl<HouseOrderMapper, HouseOrder> implements HouseOrderService {
 
+    @Autowired
+    HouseService houseService;
+
+    @Autowired
+    HousePriceService housePriceService;
+
+    @Autowired
+    UsersService usersService;
+
+    @Autowired
+    ClassScheduleService classScheduleService;
+
+    @Autowired
+    HouseOrderMapper houseOrderMapper;
+
+    @Override
+    public BigDecimal getHouseOrderPrice(int houseOrderNumber, String userId, String houseId, String liveTime, String leaveTime) {
+
+        House house = houseService.getById(houseId);
+
+        //        原价
+        BigDecimal roomPrice = house.getRoomPrice();
+
+        DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDate state = LocalDateTime.parse(liveTime, dateTimeFormatter1).toLocalDate();
+        LocalDate end = LocalDateTime.parse(leaveTime, dateTimeFormatter1).toLocalDate();
+        LocalDateTime stateTime = LocalDateTime.parse(liveTime, dateTimeFormatter1);
+        LocalDateTime endTime = LocalDateTime.parse(leaveTime, dateTimeFormatter1);
+
+//        获取这段时间内的所有改价记录
+        List<HousePrice> housePrices = housePriceService.housePrice(stateTime, endTime, houseId);
+
+//        是否是钟点房
+        Integer roomType = house.getRoomType();
+        if (roomType == 2) {
+
+//            计算小时差
+            Duration duration = Duration.between(stateTime, endTime);
+//            小时差
+            long hours = duration.toHours();
+
+            if (ObjectUtils.isNotEmpty(housePrices)) {
+                for (HousePrice housePrice : housePrices) {
+                    String setDate = housePrice.getSetDate();
+                    String[] split = setDate.split(",");
+                    Date startDate = DateUtil.parseDateOnly(split[0]);
+                    Date endDate = DateUtil.parseDateOnly(split[1]);
+                    Date date1 = Date.from(stateTime.atZone(ZoneId.systemDefault()).toInstant());
+                    //      判断当前时间是否在[startTime, endTime]区间
+                    assert startDate != null;
+                    boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+                    if (effectiveDate) {
+                        BigDecimal price = housePrice.getPrice();
+                        BigDecimal totalPrice = price.multiply(new BigDecimal(houseOrderNumber));
+                        return totalPrice;
+                    }
+                }
+
+            }
+            BigDecimal totalPrice = roomPrice.multiply(new BigDecimal(houseOrderNumber));
+            return totalPrice;
+        }
+        //   计算2个时间差
+        long until = state.until(end, ChronoUnit.DAYS);
+
+//        获取这断时间内的上 8 9节课的老师
+        Users users = usersService.getById(userId);
+
+        LambdaQueryWrapper<ClassSchedule> wrapperCS = new LambdaQueryWrapper<>();
+        wrapperCS.eq(ClassSchedule::getJsgh, users.getCardNumber())
+                .between(ClassSchedule::getDateTime, state, end);
+        List<ClassSchedule> scheduleList = classScheduleService.list(wrapperCS);
+
+        BigDecimal totalPrice = new BigDecimal(0);
+        for (int i = 0; i < until; i++) {
+            LocalDate localDate1 = state.plusDays(i);
+            if (ObjectUtils.isNotEmpty(scheduleList)) {
+                for (ClassSchedule classSchedule : scheduleList) {
+                    String dateTime = classSchedule.getDateTime();
+                    LocalDate parse = LocalDate.parse(dateTime, dateTimeFormatter2);
+                    if (!localDate1.equals(parse)) {
+                        if (ObjectUtils.isNotEmpty(housePrices)) {
+                            for (HousePrice housePrice : housePrices) {
+                                String setDate = housePrice.getSetDate();
+                                String[] split = setDate.split(",");
+                                Date startDate = DateUtil.parseDateOnly(split[0]);
+                                Date endDate = DateUtil.parseDateOnly(split[1]);
+                                Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+                                //      判断当前时间是否在[startTime, endTime]区间
+                                assert startDate != null;
+                                boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+                                if (effectiveDate) {
+                                    BigDecimal price = housePrice.getPrice();
+                                    totalPrice = totalPrice.add(price);
+                                } else {
+                                    totalPrice = totalPrice.add(roomPrice);
+                                }
+                            }
+
+                        }
+                    }
+                }
+            } else {
+                if (ObjectUtils.isNotEmpty(housePrices)) {
+                    for (HousePrice housePrice : housePrices) {
+                        String setDate = housePrice.getSetDate();
+                        String[] split = setDate.split(",");
+                        Date startDate = DateUtil.parseDateOnly(split[0]);
+                        Date endDate = DateUtil.parseDateOnly(split[1]);
+                        Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+                        //      判断当前时间是否在[startTime, endTime]区间
+                        assert startDate != null;
+                        boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+                        if (effectiveDate) {
+                            BigDecimal price = housePrice.getPrice();
+                            totalPrice = totalPrice.add(price);
+                        } else {
+                            totalPrice = totalPrice.add(roomPrice);
+                        }
+                    }
+                } else {
+                    totalPrice = totalPrice.add(roomPrice);
+                }
+            }
+
+
+        }
+
+
+        return totalPrice.multiply(new BigDecimal(houseOrderNumber));
+    }
+
+    @Override
+    public PriceVo reservePrice(String houseId, String cardNumber, String liveTime, String leaveTime) {
+        PriceVo priceVo = new PriceVo();
+
+        House house = houseService.getById(houseId);
+
+//        原价
+        BigDecimal roomPrice = house.getRoomPrice();
+
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDateTime stateTime = LocalDateTime.parse(liveTime, dateTimeFormatter1);
+        LocalDateTime endTime = LocalDateTime.parse(leaveTime, dateTimeFormatter1);
+
+//        获取这段时间内的所有改价记录
+        List<HousePrice> housePrices = housePriceService.housePrice(stateTime, endTime, houseId);
+//        是否是钟点房 是的话则不需要判断是否有免费的
+        Integer roomType = house.getRoomType();
+        if (roomType == 2) {
+
+//            计算小时差
+            Duration duration = Duration.between(stateTime, endTime);
+//            小时差
+            long hours = duration.toHours();
+
+            if (ObjectUtils.isNotEmpty(housePrices)) {
+                for (HousePrice housePrice : housePrices) {
+                    String setDate = housePrice.getSetDate();
+                    String[] split = setDate.split(",");
+                    Date startDate = DateUtil.parseDateOnly(split[0]);
+                    Date endDate = DateUtil.parseDateOnly(split[1]);
+                    Date date1 = Date.from(stateTime.atZone(ZoneId.systemDefault()).toInstant());
+                    //      判断当前时间是否在[startTime, endTime]区间
+                    assert startDate != null;
+                    boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+                    if (effectiveDate) {
+                        BigDecimal price = housePrice.getPrice();
+                        BigDecimal totalPrice = price;
+                        priceVo.setTotalPrice(totalPrice);
+                        priceVo.setPrice(price);
+                        return priceVo;
+                    }
+                }
+
+            }
+            BigDecimal totalPrice = roomPrice;
+            priceVo.setTotalPrice(totalPrice);
+            priceVo.setPrice(roomPrice);
+            return priceVo;
+        }
+
+        LocalDate state = LocalDateTime.parse(liveTime, dateTimeFormatter1).toLocalDate();
+        LocalDate end = LocalDateTime.parse(leaveTime, dateTimeFormatter1).toLocalDate();
+
+        //   计算2个时间差
+        long until = state.until(end, ChronoUnit.DAYS);
+
+//        获取这断时间内的上 8 9节课的老师
+        LambdaQueryWrapper<ClassSchedule> wrapperCS = new LambdaQueryWrapper<>();
+        wrapperCS.eq(ClassSchedule::getJsgh,cardNumber)
+                .between(ClassSchedule::getDateTime, state, end);
+        List<ClassSchedule> scheduleList = classScheduleService.list(wrapperCS);
+
+        BigDecimal totalPrice = new BigDecimal(0);
+        for (int i = 0; i < until; i++) {
+            LocalDate localDate1 = state.plusDays(i);
+            if (ObjectUtils.isNotEmpty(scheduleList)) {
+                for (ClassSchedule classSchedule : scheduleList) {
+                    String dateTime = classSchedule.getDateTime();
+                    LocalDate parse = LocalDate.parse(dateTime, dateTimeFormatter2);
+                    if (!localDate1.equals(parse)) {
+                        if (ObjectUtils.isNotEmpty(housePrices)) {
+                            for (HousePrice housePrice : housePrices) {
+                                String setDate = housePrice.getSetDate();
+                                String[] split = setDate.split(",");
+                                Date startDate = DateUtil.parseDateOnly(split[0]);
+                                Date endDate = DateUtil.parseDateOnly(split[1]);
+                                Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+                                //      判断当前时间是否在[startTime, endTime]区间
+                                assert startDate != null;
+                                boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+                                if (effectiveDate) {
+                                    BigDecimal price = housePrice.getPrice();
+                                    totalPrice = totalPrice.add(price);
+                                } else {
+                                    totalPrice = totalPrice.add(roomPrice);
+                                }
+                            }
+
+                        }
+                    }
+                }
+            } else {
+                if (ObjectUtils.isNotEmpty(housePrices)) {
+                    for (HousePrice housePrice : housePrices) {
+                        String setDate = housePrice.getSetDate();
+                        String[] split = setDate.split(",");
+                        Date startDate = DateUtil.parseDateOnly(split[0]);
+                        Date endDate = DateUtil.parseDateOnly(split[1]);
+                        Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+                        //      判断当前时间是否在[startTime, endTime]区间
+                        assert startDate != null;
+                        boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+                        if (effectiveDate) {
+                            BigDecimal price = housePrice.getPrice();
+                            totalPrice = totalPrice.add(price);
+                        } else {
+                            totalPrice = totalPrice.add(roomPrice);
+                        }
+                    }
+                } else {
+                    totalPrice = totalPrice.add(roomPrice);
+                }
+            }
+        }
+        priceVo.setTotalPrice(totalPrice);
+        BigDecimal price = totalPrice.divide(new BigDecimal(until), 2, BigDecimal.ROUND_HALF_UP);
+        priceVo.setPrice(price);
+        return priceVo;
+    }
+
+    @Override
+    public PageUtils<HouseOrderPageListVo> pageList(int page, int size, String keyWord, String houseType, String orderStatus, String payPriceStartTime, String payPriceEndTime, String refundStartTime, String refundEndTime, String cancelStartTime, String cancelEndTime, String liveStartTime, String liveEndTime, String leaveStartTime, String leaveEndTime) {
+        Page<HouseOrderPageListVo> pageVo = new Page<>(page,size);
+        IPage<HouseOrderPageListVo> result=houseOrderMapper.pageList(pageVo,keyWord,houseType,orderStatus,payPriceStartTime,payPriceEndTime,refundStartTime,refundEndTime,cancelStartTime,cancelEndTime,liveStartTime,liveEndTime,leaveStartTime,leaveEndTime);
+        return new PageUtils(result);
+    }
 }

+ 7 - 1
src/main/java/com/template/services/impl/HousePriceServiceImpl.java

@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -35,7 +36,12 @@ public class HousePriceServiceImpl extends ServiceImpl<HousePriceMapper, HousePr
     }
 
     @Override
-    public List<HousePrice> housePrice(LocalDate localDate, LocalDate endLocalDate, String ids) {
+    public List<HousePrice> housePrice(LocalDateTime localDate, LocalDateTime endLocalDate, String ids) {
         return housePriceMapper.housePrice(localDate,endLocalDate,ids);
     }
+
+    @Override
+    public List<AlterPriceRecordVo> queryExport(String type, String houseName, String operatingTime, String priceTime, String operatingName) {
+        return housePriceMapper.queryExport(type,houseName,operatingTime,priceTime,operatingName);
+    }
 }

+ 0 - 20
src/main/java/com/template/services/impl/HouseStateServiceImpl.java

@@ -1,20 +0,0 @@
-package com.template.services.impl;
-
-import com.template.model.pojo.HouseState;
-import com.template.mapper.HouseStateMapper;
-import com.template.services.HouseStateService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author ceshi
- * @since 2023-11-07
- */
-@Service
-public class HouseStateServiceImpl extends ServiceImpl<HouseStateMapper, HouseState> implements HouseStateService {
-
-}

+ 20 - 0
src/main/java/com/template/services/impl/UnlockingServiceImpl.java

@@ -0,0 +1,20 @@
+package com.template.services.impl;
+
+import com.template.model.pojo.Unlocking;
+import com.template.mapper.UnlockingMapper;
+import com.template.services.UnlockingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-12-01
+ */
+@Service
+public class UnlockingServiceImpl extends ServiceImpl<UnlockingMapper, Unlocking> implements UnlockingService {
+
+}

+ 20 - 0
src/main/java/com/template/services/impl/UsersServiceImpl.java

@@ -0,0 +1,20 @@
+package com.template.services.impl;
+
+import com.template.model.pojo.Users;
+import com.template.mapper.UsersMapper;
+import com.template.services.UsersService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-27
+ */
+@Service
+public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService {
+
+}

+ 9 - 0
src/main/resources/mapper/template/HouseLockMapper.xml

@@ -2,4 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.template.mapper.HouseLockMapper">
 
+    <select id="getHouseNumberId" resultType="com.template.model.pojo.HouseLock">
+        SELECT
+            *
+        FROM
+            `house_lock`
+        WHERE
+            FIND_IN_SET( house_number_id, #{houseNumberId})
+          AND deleted =0
+    </select>
 </mapper>

+ 21 - 14
src/main/resources/mapper/template/HouseNumberMapper.xml

@@ -8,12 +8,16 @@
         hn.house_id as houseId,
         hn.room_number as houseNumber,
         hn.house_status as houseStatus,
-        hn.`status` as houseType,
+--         hn.`status` as houseType,
         h.room_name as houseName,
         hns.`status` AS status,
         ho.reserve_name as reserveName,
         ho.reserve_live_time as reserveLiveTime,
-        ho.reserve_leave_time as reserveLeaveTime
+        ho.reserve_leave_time as reserveLeaveTime,
+        h.room_live_time as roomLiveTime,
+        h.receiving_time as receivingTime,
+        hns.id as houseNumberStateId,
+        ho.order_number as orderNumber
         FROM
         `house_number` hn
         LEFT JOIN house h ON h.id = hn.house_id
@@ -22,7 +26,7 @@
         AND hns.deleted = 0
         AND #{date} > hns.start_time
         AND hns.end_time > #{date}
-        LEFT JOIN house_order ho ON hns.booking_id = ho.id
+        LEFT JOIN house_order ho ON hns.order_number = ho.order_number
         AND ho.deleted = 0
         <where>
             hn.deleted = 0
@@ -45,22 +49,25 @@
         hn.house_id as houseId,
         hn.room_number as houseNumber,
         hn.house_status as houseStatus,
-        hn.`status` as houseType,
+        hn.id as houseNumberStateId,
+--         hn.`status` as houseType,
         h.room_name as houseName,
-        hns.`status` AS status,
-        ho.reserve_name as reserveName,
-        ho.reserve_live_time as reserveLiveTime,
-        ho.reserve_leave_time as reserveLeaveTime,
-        h.room_price as price
+--         hns.`status` AS status
+--         ho.reserve_name as reserveName,
+--         ho.reserve_live_time as reserveLiveTime,
+--         ho.reserve_leave_time as reserveLeaveTime,
+        h.room_price as price,
+        h.room_live_time as roomLiveTime,
+        h.receiving_time as receivingTime
         FROM
         `house_number` hn
         LEFT JOIN house h ON h.id = hn.house_id
         AND h.deleted = 0
-        LEFT JOIN house_number_state hns ON hn.id = hns.house_number_id
-        AND hns.deleted = 0
+--         LEFT JOIN house_number_state hns ON hn.id = hns.house_number_id
+--         AND hns.deleted = 0
 
-        LEFT JOIN house_order ho ON hns.booking_id = ho.id
-        AND ho.deleted = 0
+--         LEFT JOIN house_order ho ON hns.order_number = ho.order_number
+--         AND ho.deleted = 0
         <where>
             hn.deleted = 0
             <if test="houseType != null and houseType != ''">
@@ -68,7 +75,7 @@
             </if>
 
             <if test="keyWord != null and keyWord != ''">
-                AND ( hn.room_number LIKE '%' #{keyWord} '%' OR ho.reserve_name LIKE '%' #{keyWord} '%' )
+                AND  hn.room_number LIKE '%' #{keyWord} '%'
             </if>
 
         </where>

+ 18 - 2
src/main/resources/mapper/template/HouseNumberStateMapper.xml

@@ -6,8 +6,24 @@
         SELECT *
         FROM `house_number_state`
         WHERE FIND_IN_SET(house_number_id, #{houseNumberIds})
-          and #{endLocalDate} > start_time
-          and end_time > #{localDate}
+          AND #{endLocalDate} > start_time
+          AND end_time > #{localDate}
           and deleted = 0
     </select>
+    <select id="beBooked" resultType="com.template.model.pojo.HouseNumberState">
+        SELECT *
+        FROM `house_number_state`
+        WHERE FIND_IN_SET(house_number_id, #{ids})
+          AND #{reserveLeaveTime} > start_time
+          AND end_time > #{reserveLiveTime}
+          and deleted = 0
+    </select>
+    <select id="getData" resultType="com.template.model.pojo.HouseNumberState">
+        SELECT *
+        FROM `house_number_state`
+        WHERE deleted = 0
+           AND FIND_IN_SET(house_number_id, #{houseNumberId})
+          AND #{date} >= start_time
+          AND end_time >= #{date}
+    </select>
 </mapper>

+ 69 - 0
src/main/resources/mapper/template/HouseOrderMapper.xml

@@ -2,4 +2,73 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.template.mapper.HouseOrderMapper">
 
+    <select id="pageList" resultType="com.template.model.vo.HouseOrderPageListVo">
+        SELECT
+        ho.order_number as orderNumber,
+        ho.live_time as liveTime,
+        ho.leave_time as leaveTime,
+        ho.reserve_name as reserveName,
+        ho.live_name as liveName,
+        ho.reserve_phone as phone,
+        h.room_name as houseName,
+        hn.room_number as houseNumber,
+        ho.pay_price as orderPrice,
+        ho.pay_type as payType,
+        ho.order_status as orderStart,
+        ho.pay_time as payTime,
+        ho.refund_time as refundTime,
+        ho.cancel_time as cancelTime,
+        h.id as houseId,
+        hn.id as houserNumberId
+
+        FROM
+        `house_order` ho
+        LEFT JOIN house_number hn ON hn.id = ho.house_number_id
+        AND hn.deleted = 0
+        LEFT JOIN house h ON h.id = hn.house_id
+        AND hn.deleted = 0
+        <where>
+            ho.deleted=0
+            <if test="orderStatus != null and orderStatus != ''">
+                AND ho.order_status = #{orderStatus}
+            </if>
+
+            <if test="houseType != null and houseType != ''">
+                AND h.room_type = #{houseType}
+            </if>
+
+            <if test="keyWord != null and keyWord != ''">
+                AND (ho.reserve_name LIKE '%' #{keyWord} '%' or ho.live_name LIKE '%' #{keyWord} '%' )
+            </if>
+
+            <if test="payPriceStartTime != null and payPriceStartTime != '' and payPriceEndTime != null and payPriceEndTime != ''  ">
+                AND #{payPriceEndTime} >= ho.pay_time
+                AND ho.pay_time >= #{payPriceStartTime}
+            </if>
+
+            <if test="refundStartTime != null and refundStartTime != '' and refundEndTime != null and refundEndTime != ''  ">
+                AND ho.refund_time >= #{refundStartTime}
+                AND #{refundEndTime} >= ho.refund_time
+            </if>
+
+            <if test="cancelStartTime != null and cancelStartTime != '' and cancelEndTime != null and cancelEndTime != ''  ">
+                AND ho.cancel_time >= #{cancelStartTime}
+                AND #{cancelEndTime} >= ho.cancel_time
+            </if>
+
+            <if test="liveStartTime != null and liveStartTime != '' and liveEndTime != null and liveEndTime != ''  ">
+                AND #{liveEndTime} >= ho.live_time
+                AND ho.live_time >= #{liveStartTime}
+            </if>
+
+            <if test="leaveStartTime != null and leaveStartTime != '' and leaveEndTime != null and leaveEndTime != ''  ">
+                AND #{leaveEndTime} >= ho.leave_time
+                AND ho.leave_time >= #{leaveStartTime}
+            </if>
+
+        </where>
+        ORDER BY
+        ho.create_time DESC
+
+    </select>
 </mapper>

+ 49 - 2
src/main/resources/mapper/template/HousePriceMapper.xml

@@ -53,9 +53,56 @@
     <select id="housePrice" resultType="com.template.model.pojo.HousePrice">
         SELECT *
         FROM `house_price`
-        WHERE #{endLocalDate} > substring_index(set_date, ',', 1)
-          and substring_index(set_date, ',', -1) > #{localDate}
+        WHERE #{endLocalDate} >= substring_index(set_date, ',', 1)
+          and substring_index(set_date, ',', -1) >= #{localDate}
           and FIND_IN_SET(house_id, #{ids})
           and deleted = 0
     </select>
+
+    <select id="queryExport" resultType="com.template.model.vo.AlterPriceRecordVo">
+        SELECT t2.room_type as houseType,
+        t2.room_name AS houseName,
+        group_concat(REPLACE(t1.set_date, ',', ' 至 ')) AS setDate,
+        t1.price AS alterPrice,
+        t1.original_price AS originalPrice,
+        a.name as `name`,
+        t1.create_time as date
+        FROM house_price t1
+        LEFT JOIN house t2 ON t1.house_id = t2.id
+        and t2.deleted = 0
+        LEFT JOIN admin a on a.id = t1.create_user
+        and a.deleted = 0
+        <where>
+            t1.deleted = 0
+            <if test="type != null and type != ''">
+                AND t2.room_type = #{type}
+            </if>
+
+            <if test="houseName != null and houseName != ''">
+                AND t2.room_name = #{houseName}
+            </if>
+
+            <if test="operatingTime != null and operatingTime != ''">
+                AND t1.create_time BETWEEN SUBSTRING_INDEX(#{operatingTime}, ',', 1) and
+                SUBSTRING_INDEX(#{operatingTime}, ',', -1)
+            </if>
+
+            <if test="priceTime != null and priceTime != ''">
+                AND (substring_index(t1.set_date, ',', 1) BETWEEN SUBSTRING_INDEX(#{priceTime}, ',', 1) and
+                SUBSTRING_INDEX(#{priceTime}, ',', -1)
+                or
+                substring_index(t1.set_date, ',', -1) BETWEEN SUBSTRING_INDEX(#{priceTime}, ',', 1) and
+                SUBSTRING_INDEX(#{priceTime}, ',', -1)
+                )
+            </if>
+
+            <if test="operatingName != null and operatingName != ''">
+                AND a.`name` LIKE '%' #{operatingName} '%'
+            </if>
+
+        </where>
+
+        GROUP BY t1.id
+        ORDER BY t1.create_time DESC
+    </select>
 </mapper>

+ 1 - 1
src/main/resources/mapper/template/HouseStateMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.template.mapper.HouseStateMapper">
+<mapper namespace="com.template.mapper.UnlockingMapper">
 
 </mapper>

+ 1 - 1
target/classes/mapper/template/HouseStateMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.template.mapper.HouseStateMapper">
+<mapper namespace="com.template.mapper.UsersMapper">
 
 </mapper>

+ 0 - 20
target/classes/META-INF/spring-configuration-metadata.json

@@ -4,11 +4,6 @@
       "name": "water-electric",
       "type": "com.template.config.WaterElectricConfig",
       "sourceType": "com.template.config.WaterElectricConfig"
-    },
-    {
-      "name": "weixiao",
-      "type": "com.template.config.WeixiaoConfig",
-      "sourceType": "com.template.config.WeixiaoConfig"
     }
   ],
   "properties": [
@@ -47,21 +42,6 @@
       "type": "java.lang.String",
       "description": "签名秘钥",
       "sourceType": "com.template.config.WaterElectricConfig"
-    },
-    {
-      "name": "weixiao.app-key",
-      "type": "java.lang.String",
-      "sourceType": "com.template.config.WeixiaoConfig"
-    },
-    {
-      "name": "weixiao.app-secret",
-      "type": "java.lang.String",
-      "sourceType": "com.template.config.WeixiaoConfig"
-    },
-    {
-      "name": "weixiao.ocode",
-      "type": "java.lang.String",
-      "sourceType": "com.template.config.WeixiaoConfig"
     }
   ],
   "hints": []

BIN
target/classes/com/template/AutoCode.class


BIN
target/classes/com/template/api/HouseNumberStateAPI.class


BIN
target/classes/com/template/api/HouseOrderAPI.class


BIN
target/classes/com/template/common/utils/MD5.class


BIN
target/classes/com/template/common/utils/weixin/DictionaryCompare.class


BIN
target/classes/com/template/common/utils/weixin/EndPay.class


BIN
target/classes/com/template/common/utils/weixin/JaxbUtil$CollectionWrapper.class


BIN
target/classes/com/template/common/utils/weixin/JaxbUtil.class


+ 0 - 0
target/classes/com/template/common/utils/weixin/PayWxUtil.class


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff