Răsfoiți Sursa

产品模块接口代码完成

mac 2 ani în urmă
părinte
comite
faa7485031
64 a modificat fișierele cu 1595 adăugiri și 189 ștergeri
  1. 0 32
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineBindListDTO.java
  2. 0 32
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineUnBindListDTO.java
  3. 15 10
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineStoreListDTO.java
  4. 7 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineTransferDTO.java
  5. 9 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineTransferListDTO.java
  6. 9 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineUserListDTO.java
  7. 10 5
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/RecycleMachineQuery.java
  8. 7 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/SearchUserMachineDTO.java
  9. 1 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MachineRatioDTO.java
  10. 1 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MerchantListDTO.java
  11. 2 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/ToMerchantMakerDTO.java
  12. 7 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/ticket/TicketTransferDTO.java
  13. 28 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/ticket/TicketTransferQuery.java
  14. 6 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachine.java
  15. 18 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachineTransfer.java
  16. 23 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsTicketTransfer.java
  17. 5 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineApplyRemarkVO.java
  18. 1 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineBindListVO.java
  19. 0 45
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineSearchStoreMachineVO.java
  20. 1 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineStoreListVO.java
  21. 1 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineTransferListVO.java
  22. 1 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineUnBindListVO.java
  23. 1 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineUserListVO.java
  24. 12 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/RecycleMachinesVO.java
  25. 1 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/SearchUserMachineVO.java
  26. 1 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantDetailVO.java
  27. 1 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java
  28. 1 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantTotalVO.java
  29. 0 6
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketListVO.java
  30. 14 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketTransferDetailVO.java
  31. 2 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketTransferListVO.java
  32. 24 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/MachineRecycleStatusEnum.java
  33. 43 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/MachineTypeEnum.java
  34. 27 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/MerchantEnum.java
  35. 8 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/ProductErrorTypeEnum.java
  36. 23 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/TicketTypeEnum.java
  37. 7 8
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/BrandController.java
  38. 199 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/MachineController.java
  39. 98 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/MerchantController.java
  40. 90 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/TicketController.java
  41. 71 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineMapper.java
  42. 13 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineTransferMapper.java
  43. 25 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsTicketMapper.java
  44. 16 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsTicketTransferMapper.java
  45. 1 1
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsBrandService.java
  46. 92 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsMachineService.java
  47. 12 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsMachineTransferService.java
  48. 11 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketService.java
  49. 31 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketTransferService.java
  50. 3 3
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsBrandServiceImpl.java
  51. 188 1
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMachineServiceImpl.java
  52. 12 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMachineTransferServiceImpl.java
  53. 29 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketServiceImpl.java
  54. 163 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketTransferServiceImpl.java
  55. 1 1
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsBrandMapper.xml
  56. 99 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml
  57. 15 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineTransferMapper.xml
  58. 17 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketMapper.xml
  59. 25 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketTransferMapper.xml
  60. 4 0
      kxs-system/kxs-system-biz/pom.xml
  61. 19 2
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/admin/LoginController.java
  62. 18 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java
  63. 0 3
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsAppController.java
  64. 26 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java

+ 0 - 32
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineBindListDTO.java

@@ -1,32 +0,0 @@
-package com.kxs.product.api.dto.kxsapp.machine;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-
-/**
- * 已绑定列表-dto
- *
- * @author 系统
- * @date 2023-12-20 10:09:38
- */
-@Data
-public class MachineMachineBindListDTO {
-
-    /**
-     * 品牌ID
-     */
-    @Schema(description = "品牌ID")
-    private Integer brandId;
-
-
-    /**
-     * 搜索关键字
-     */
-    @Schema(description = "搜索关键字")
-    private String keyword;
-
-
-
-
-}

+ 0 - 32
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineUnBindListDTO.java

@@ -1,32 +0,0 @@
-package com.kxs.product.api.dto.kxsapp.machine;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-
-/**
- * 未绑定机具列表-dto
- *
- * @author 系统
- * @date 2023-12-20 10:09:37
- */
-@Data
-public class MachineMachineUnBindListDTO {
-
-    /**
-     * 品牌ID
-     */
-    @Schema(description = "品牌ID")
-    private Integer brandId;
-
-
-    /**
-     * 搜索关键字
-     */
-    @Schema(description = "搜索关键字")
-    private String keyword;
-
-
-
-
-}

+ 15 - 10
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineSearchStoreMachineDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineStoreListDTO.java

@@ -1,39 +1,44 @@
 package com.kxs.product.api.dto.kxsapp.machine;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 
 /**
- * 机具搜索-dto
+ * 仓库库存机具列表-dto
  *
  * @author 系统
  * @date 2023-12-20 10:09:39
  */
 @Data
-public class MachineSearchStoreMachineDTO {
-
-    /**
-     * 机具码
-     */
-    @Schema(description = "机具码")
-    private String posSn;
-
+public class MachineStoreListDTO {
 
     /**
      * 仓库ID
      */
     @Schema(description = "仓库ID")
+    @NotNull(message = "仓库ID不能为空")
     private Integer warehouseId;
 
 
+    /**
+     * 品牌ID
+     */
+    @Schema(description = "品牌ID")
+    private Integer brandId;
+
     /**
      * 箱码
      */
     @Schema(description = "箱码")
     private String boxSn;
 
-
+    /**
+     * sn
+     */
+    @Schema(description = "sn")
+    private String posSn;
 
 
 }

+ 7 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineTransferDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineTransferDTO.java

@@ -1,6 +1,9 @@
 package com.kxs.product.api.dto.kxsapp.machine;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.util.List;
@@ -13,12 +16,13 @@ import java.util.List;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MachineMachineTransferDTO {
+public class MachineTransferDTO {
 
     /**
      * 品牌ID
      */
     @Schema(description = "品牌ID")
+    @NotNull(message = "品牌ID不能为空")
     private Integer brandId;
 
 
@@ -26,6 +30,7 @@ public class MachineMachineTransferDTO {
      * 机具ID集合
      */
     @Schema(description = "机具ID集合")
+    @NotEmpty(message = "机具不能为空")
     private List<String> snList;
 
 
@@ -33,6 +38,7 @@ public class MachineMachineTransferDTO {
      * 划拨创客编号
      */
     @Schema(description = "划拨创客编号")
+    @NotBlank(message = "创客编号不能为空")
     private String userCode;
 
 

+ 9 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineTransferListDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineTransferListDTO.java

@@ -1,6 +1,7 @@
 package com.kxs.product.api.dto.kxsapp.machine;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 
@@ -11,12 +12,19 @@ import lombok.Data;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MachineMachineTransferListDTO {
+public class MachineTransferListDTO {
+
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Integer userId;
 
     /**
      * 品牌ID
      */
     @Schema(description = "品牌ID")
+    @NotNull(message = "品牌ID不能为空")
     private Integer brandId;
 
 

+ 9 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineUserListDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineUserListDTO.java

@@ -1,6 +1,7 @@
 package com.kxs.product.api.dto.kxsapp.machine;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 
@@ -11,12 +12,19 @@ import lombok.Data;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MachineMachineUserListDTO {
+public class MachineUserListDTO {
+
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Integer userId;
 
     /**
      * 品牌ID
      */
     @Schema(description = "品牌ID")
+    @NotNull(message = "品牌ID不能为空")
     private Integer brandId;
 
 

+ 10 - 5
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineMachineStoreListDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/RecycleMachineQuery.java

@@ -11,14 +11,14 @@ import lombok.Data;
  * @date 2023-12-20 10:09:39
  */
 @Data
-public class MachineMachineStoreListDTO {
+public class RecycleMachineQuery {
+
 
     /**
-     * 仓库ID
+     * 用户ID
      */
-    @Schema(description = "仓库ID")
-    private Integer warehouseId;
-
+    @Schema(description = "用户ID")
+    private Integer userId;
 
     /**
      * 品牌ID
@@ -27,6 +27,11 @@ public class MachineMachineStoreListDTO {
     private Integer brandId;
 
 
+    /**
+     * sn
+     */
+    @Schema(description = "sn")
+    private String posSn;
 
 
 }

+ 7 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineSearchUserMachineDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/SearchUserMachineDTO.java

@@ -11,7 +11,13 @@ import lombok.Data;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MachineSearchUserMachineDTO {
+public class SearchUserMachineDTO {
+
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Integer userId;
 
     /**
      * 机具码

+ 1 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MerchantMachineRatioDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MachineRatioDTO.java

@@ -13,7 +13,7 @@ import java.math.BigDecimal;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MerchantMachineRatioDTO {
+public class MachineRatioDTO {
 
     /**
      * 机具费率

+ 1 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MerchantMerchantListDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MerchantListDTO.java

@@ -11,7 +11,7 @@ import lombok.Data;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MerchantMerchantListDTO {
+public class MerchantListDTO {
 
     /**
      * 品牌ID

+ 2 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/machine/MachineToMerchantMakerDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/ToMerchantMakerDTO.java

@@ -1,4 +1,4 @@
-package com.kxs.product.api.dto.kxsapp.machine;
+package com.kxs.product.api.dto.kxsapp.merchant;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -11,7 +11,7 @@ import lombok.Data;
  * @date 2023-12-20 10:09:38
  */
 @Data
-public class MachineToMerchantMakerDTO {
+public class ToMerchantMakerDTO {
 
     /**
      * 机具码

+ 7 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/ticket/TicketTicketTransferDTO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/ticket/TicketTransferDTO.java

@@ -1,6 +1,9 @@
 package com.kxs.product.api.dto.kxsapp.ticket;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.util.List;
@@ -13,12 +16,13 @@ import java.util.List;
  * @date 2023-12-20 10:09:37
  */
 @Data
-public class TicketTicketTransferDTO {
+public class TicketTransferDTO {
 
     /**
      * 券码类型 0电签 1大pos
      */
     @Schema(description = "券码类型 0电签 1大pos")
+    @NotNull(message = "券码类型不能为空")
     private Integer ticketType;
 
 
@@ -26,6 +30,7 @@ public class TicketTicketTransferDTO {
      * 兑换券集合
      */
     @Schema(description = "兑换券集合")
+    @NotEmpty(message = "兑换券不能为空")
     private List<String> ticketCodes;
 
 
@@ -33,6 +38,7 @@ public class TicketTicketTransferDTO {
      * 创客编号
      */
     @Schema(description = "创客编号")
+    @NotBlank(message = "创客编号不能为空")
     private String userCode;
 
 

+ 28 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/ticket/TicketTransferQuery.java

@@ -0,0 +1,28 @@
+package com.kxs.product.api.dto.kxsapp.ticket;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 创业邦机具券划拨表
+ * @author Apple
+ */
+@Data
+public class TicketTransferQuery {
+
+    /**
+     * 拨入用户id
+     */
+    private Integer toUserId;
+
+    /**
+     * 拨出用户id
+     */
+    private Integer sendUserId;
+
+    /**
+     * 1:拨入;2:拨出
+     */
+    private Integer transferType;
+}

+ 6 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachine.java

@@ -80,6 +80,12 @@ public class KxsMachine extends Model<KxsMachine> implements Serializable {
     @Schema(description = "仓库ID")
     private Integer warehouseId;
 
+    /**
+     * 仓库名称
+     */
+    @Schema(description = "仓库名称")
+    private String warehouseName;
+
 
     /**
      * 所属创客ID

+ 18 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachineTransfer.java

@@ -67,6 +67,12 @@ public class KxsMachineTransfer extends Model<KxsMachineTransfer> implements Ser
     private Integer version;
 
 
+    /**
+     * 机具ID
+     */
+    @Schema(description = "机具ID")
+    private Integer machineId;
+
     /**
      * 机具号
      */
@@ -94,6 +100,18 @@ public class KxsMachineTransfer extends Model<KxsMachineTransfer> implements Ser
     @Schema(description = "拨入用户ID")
     private Integer toUserId;
 
+    /**
+     * 拨入用户
+     */
+    @Schema(description = "拨入用户")
+    private String toUserName;
+
+    /**
+     * 拨入用户码
+     */
+    @Schema(description = "拨入用户码")
+    private String toUserCode;
+
 
     /**
      * 机具类型 0兑换机 1循环机

+ 23 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsTicketTransfer.java

@@ -80,6 +80,17 @@ public class KxsTicketTransfer extends Model<KxsTicketTransfer> implements Seria
     @Schema(description = "拨出用户ID")
     private Integer sendUserId;
 
+    /**
+     * 拨出用户姓名
+     */
+    @Schema(description = "拨入用户姓名")
+    private String sendUserName;
+
+    /**
+     * 拨出用户编码
+     */
+    @Schema(description = "拨入用户编码")
+    private String sendUserCode;
 
     /**
      * 拨入用户ID
@@ -87,6 +98,18 @@ public class KxsTicketTransfer extends Model<KxsTicketTransfer> implements Seria
     @Schema(description = "拨入用户ID")
     private Integer toUserId;
 
+    /**
+     * 拨入用户姓名
+     */
+    @Schema(description = "拨入用户姓名")
+    private String toUserName;
+
+    /**
+     * 拨入用户编码
+     */
+    @Schema(description = "拨入用户编码")
+    private String toUserCode;
+
 
     /**
      * 数量

+ 5 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineApplyRemarkVO.java

@@ -2,6 +2,7 @@ package com.kxs.product.api.vo.kxsapp.machine;
 
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
 import lombok.Data;
 
 import java.io.Serial;
@@ -17,6 +18,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "申请机具说明返回实体")
+@Builder
 public class MachineApplyRemarkVO implements Serializable {
 
 	@Serial
@@ -27,21 +29,21 @@ public class MachineApplyRemarkVO implements Serializable {
      * 激活台数
      */
     @Schema(description = "激活台数")
-    private Integer actCount;
+    private Long actCount;
 
 
     /**
      * 过期台数
      */
     @Schema(description = "过期台数")
-    private Integer pastCount;
+    private Long pastCount;
 
 
     /**
      * 最多领取台数
      */
     @Schema(description = "最多领取台数")
-    private Integer maxCount;
+    private Long maxCount;
 
 
     /**

+ 1 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineMachineBindListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineBindListVO.java

@@ -7,8 +7,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 已绑定列表vo
@@ -18,7 +16,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "已绑定列表返回实体")
-public class MachineMachineBindListVO implements Serializable {
+public class MachineBindListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 0 - 45
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineSearchStoreMachineVO.java

@@ -1,45 +0,0 @@
-package com.kxs.product.api.vo.kxsapp.machine;
-
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * 机具搜索vo
- *
- * @author 系统
- * @date 2023-12-20 10:09:39
- */
-@Data
-@Schema(description = "机具搜索返回实体")
-public class MachineSearchStoreMachineVO implements Serializable {
-
-	@Serial
-	private static final long serialVersionUID = 1L;
-
-
-    /**
-     * 新增时间
-     */
-    @Schema(description = "新增时间")
-    private LocalDateTime createTime;
-
-
-    /**
-     * 机具码
-     */
-    @Schema(description = "机具码")
-    private String posSn;
-
-
-
-
-
-	
-
-}

+ 1 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineMachineStoreListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineStoreListVO.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 仓库库存机具列表vo
@@ -17,7 +16,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "仓库库存机具列表返回实体")
-public class MachineMachineStoreListVO implements Serializable {
+public class MachineStoreListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 1 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineMachineTransferListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineTransferListVO.java

@@ -6,8 +6,6 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
-import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 机具-未绑定划拨记录vo
@@ -17,7 +15,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "机具-未绑定划拨记录返回实体")
-public class MachineMachineTransferListVO implements Serializable {
+public class MachineTransferListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 1 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineMachineUnBindListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineUnBindListVO.java

@@ -8,7 +8,6 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 未绑定机具列表vo
@@ -18,7 +17,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "未绑定机具列表返回实体")
-public class MachineMachineUnBindListVO implements Serializable {
+public class MachineUnBindListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 1 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineMachineUserListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineUserListVO.java

@@ -8,7 +8,6 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 全部机具vo
@@ -18,7 +17,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "全部机具返回实体")
-public class MachineMachineUserListVO implements Serializable {
+public class MachineUserListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 12 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineRecycleMachinesVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/RecycleMachinesVO.java

@@ -1,6 +1,7 @@
 package com.kxs.product.api.vo.kxsapp.machine;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -17,7 +18,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "可循环机列表返回实体")
-public class MachineRecycleMachinesVO implements Serializable {
+public class RecycleMachinesVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;
@@ -37,7 +38,17 @@ public class MachineRecycleMachinesVO implements Serializable {
     private Integer machineType;
 
 
+    /**
+     * 循环结束时间
+     */
+    @Schema(description = "循环结束时间")
+    private LocalDateTime recycleEndTime;
+
 
+    /**
+     * 可使用品牌集合ids
+     */
+    private List<Integer> brandList;
 
 
 	

+ 1 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/MachineSearchUserMachineVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/machine/SearchUserMachineVO.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 用户机具和箱具码搜索vo
@@ -17,7 +16,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "用户机具和箱具码搜索返回实体")
-public class MachineSearchUserMachineVO implements Serializable {
+public class SearchUserMachineVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 1 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantMerchantDetailVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantDetailVO.java

@@ -8,7 +8,6 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 商户详情vo
@@ -18,7 +17,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "商户详情返回实体")
-public class MerchantMerchantDetailVO implements Serializable {
+public class MerchantDetailVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 1 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantMerchantListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java

@@ -8,7 +8,6 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 商户列表vo
@@ -18,7 +17,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "商户列表返回实体")
-public class MerchantMerchantListVO implements Serializable {
+public class MerchantListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 1 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantMerchantTotalVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantTotalVO.java

@@ -6,8 +6,6 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
-import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 汇总数据激活等vo
@@ -17,7 +15,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "汇总数据激活等返回实体")
-public class MerchantMerchantTotalVO implements Serializable {
+public class MerchantTotalVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 0 - 6
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketListVO.java

@@ -50,10 +50,4 @@ public class TicketListVO implements Serializable {
     @Schema(description = "可用品牌ID集合")
     private List<Integer> brandList;
 
-
-
-
-
-	
-
 }

+ 14 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketTicketTransferDetailVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketTransferDetailVO.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 兑换券划拨详情vo
@@ -17,7 +16,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "兑换券划拨详情返回实体")
-public class TicketTicketTransferDetailVO implements Serializable {
+public class TicketTransferDetailVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;
@@ -43,6 +42,18 @@ public class TicketTicketTransferDetailVO implements Serializable {
     @Schema(description = "券码集合")
     private String ticketCodes;
 
+    /**
+     * 券码类型 0电签 1大pos
+     */
+    @Schema(description = "券码集合")
+    private String ticketType;
+
+    /**
+     * 券码类型 电签 大pos
+     */
+    @Schema(description = "券码集合")
+    private String ticketTypeSn;
+
 
     /**
      * 拨出用户ID
@@ -69,7 +80,7 @@ public class TicketTicketTransferDetailVO implements Serializable {
      * 创客姓名
      */
     @Schema(description = "创客姓名")
-    private String realName;
+    private String username;
 
 
     /**

+ 2 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketTicketTransferListVO.java → kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/ticket/TicketTransferListVO.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * 兑换券划拨记录vo
@@ -17,7 +16,7 @@ import java.util.List;
  */
 @Data
 @Schema(description = "兑换券划拨记录返回实体")
-public class TicketTicketTransferListVO implements Serializable {
+public class TicketTransferListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;
@@ -48,7 +47,7 @@ public class TicketTicketTransferListVO implements Serializable {
      * 创客姓名
      */
     @Schema(description = "创客姓名")
-    private String realName;
+    private String username;
 
 
     /**

+ 24 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/MachineRecycleStatusEnum.java

@@ -0,0 +1,24 @@
+package com.kxs.product.biz.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 机具循环状态
+ *
+ * @author Lxq
+ * @date 2023-10-25
+ */
+@Getter
+@AllArgsConstructor
+public enum MachineRecycleStatusEnum {
+
+    UN_RECYCLE_STATUS(0, "不可循环"),
+    CAN_RECYCLE_STATUS(1, "可循环");
+
+    //状态码
+    private final Integer type;
+
+    //状态码码描述
+    private final String description;
+}

+ 43 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/MachineTypeEnum.java

@@ -0,0 +1,43 @@
+package com.kxs.product.biz.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 机器类型enum
+ *
+ * @author Lxq
+ * @date 2023-10-25
+ */
+@Getter
+@AllArgsConstructor
+public enum MachineTypeEnum {
+
+    /**
+     * 机具状态
+     */
+    STATUS_IS(0, "在库"),
+    STATUS_OUT(1, "已出库"),
+    STATUS_REFUND(2, "已退回"),
+    STATUS_RECYCLE(3, "可回收"),
+    /**
+     * 机具类型
+     */
+    M_TYPE_SN(0, "兑换机"),
+    M_TYPE_RE(1, "循环机"),
+    /**
+     * 机具激活
+     */
+    NO_ACT(0, "未激活"),
+    ACT(1, "已激活"),
+    /**
+     * 机具绑定
+     */
+    NO_BIND(0, "未绑定"),
+    BIND(1, "已绑定");
+
+    //状态码
+    private final Integer type;
+    //状态码码描述
+    private final String description;
+}

+ 27 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/MerchantEnum.java

@@ -0,0 +1,27 @@
+package com.kxs.product.biz.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 商户模块枚举类
+ *
+ * @author Lxq
+ * @date 2023-10-25
+ */
+@Getter
+@AllArgsConstructor
+public enum MerchantEnum {
+
+    M_TYPE_SN(0, "兑换机"),
+    M_TYPE_RE(1, "循环机"),
+    NO_ACT(0, "未激活"),
+    ACT(1, "已激活"),
+    NO_BIND(0, "未绑定"),
+    BIND(1, "已绑定");
+
+    //状态码
+    private final Integer type;
+    //状态码码描述
+    private final String description;
+}

+ 8 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/ProductErrorTypeEnum.java

@@ -16,6 +16,14 @@ public enum ProductErrorTypeEnum {
 	ORDER_EMPTY(-1, "订单不存在"),
 	ORDER_NO_CANCEL(-1, "订单已不能取消"),
 	ORDER_NO_CONFIRM(-1, "订单已不能收货"),
+	USER_IS_NOT_FIND(-1, "该创客不是下级"),
+	USER_IS_NOT_AUTH(-1, "该创客未实名认证"),
+	MACHINE_NOT_FOUND(-1, "SN码不存在"),
+	MACHINE_BIND(-1, "该机具已绑定"),
+	TICKET_NOT_FOUND(-1, "券码不存在"),
+	TICKET_NOT_USER(-1, "券码不属于该创客"),
+	MACHINE_NOT_USER(-1, "机具不属于该创客"),
+	MACHINE_TRANSFER_NO(-1, "循环机不可划拨"),
 	SYS_USER_UPDATE_PASSWORD_ERROR(-1, "用户原密码错误"), SYS_DICT_UPDATE_SYSTEM(-1, "系统内置字典不能修改");
 
 	private final int code;

+ 23 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/TicketTypeEnum.java

@@ -0,0 +1,23 @@
+package com.kxs.product.biz.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 机具状态
+ *
+ * @author Lxq
+ * @date 2023-10-25
+ */
+@Getter
+@AllArgsConstructor
+public enum TicketTypeEnum {
+
+    DIANQIAN(0, "电签兑换券"),
+    DAJI(1, "大机兑换券");
+
+    //状态码
+    private final Integer type;
+    //状态码码描述
+    private final String description;
+}

+ 7 - 8
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/BrandController.java

@@ -5,6 +5,9 @@ import com.kxs.product.biz.service.KxsBrandService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 产品模块(品牌管理)控制层
  *
@@ -38,17 +41,13 @@ public class BrandController {
     /**
      * 品牌排序
      *
-     * @param sorts 实体对象
+     * @param param 实体对象
      * @return 品牌排序
      */
-    @PutMapping("/sort")
-    public R sort(@RequestBody Long[] sorts) {
-        return R.ok(kxsBrandService.sortByList(sorts));
+    @PostMapping("/sort")
+    public R sort(@RequestBody Map<String, List<Integer>> param) {
+        return R.ok(kxsBrandService.sortByList(param.get("sorts")));
     }
 
-
-
-
-
 }
 

+ 199 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/MachineController.java

@@ -0,0 +1,199 @@
+package com.kxs.product.biz.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.kxsapp.machine.*;
+import com.kxs.product.api.vo.kxsapp.machine.*;
+import com.kxs.product.biz.service.KxsBrandService;
+import com.kxs.product.biz.service.KxsMachineService;
+import com.kxs.product.biz.service.KxsMachineTransferService;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 仓库模块(Machine)控制层
+ *
+ * @author 系统
+ * @since 2024-01-04 16:20:14
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("machine")
+public class MachineController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsMachineService kxsMachineService;
+    private final KxsBrandService kxsBrandService;
+    private final KxsMachineTransferService kxsMachineTransferService;
+
+
+
+    /**
+     * 可循环机列表
+     *
+     * @param page 分页对象
+     * @return 可循环机列表
+     */
+    @GetMapping("/recycleMachines")
+    public R recycleMachines(@ParameterObject Page<RecycleMachinesVO> page, @RequestParam("brandId") Integer brandId ) {
+
+        return R.ok(kxsMachineService.recycleMachinesPage(page, brandId));
+    }
+
+
+    /**
+     * 申请机具说明
+     *
+     * @return 申请机具说明
+     */
+    @GetMapping("/applyRemark")
+    public R applyRemark() {
+
+        return R.ok(kxsMachineService.applyRemark());
+    }
+
+
+    /**
+     * 未绑定机具列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 未绑定机具列表
+     */
+    @GetMapping("/machineUnBindList")
+    public R machineUnBindList(@ParameterObject Page<MachineUnBindListVO> page, @Valid @ParameterObject MachineUserListDTO param) {
+
+        return R.ok(kxsMachineService.machineUnBindListPage(page, param));
+    }
+
+
+    /**
+     * 已绑定列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 已绑定列表
+     */
+    @GetMapping("/machineBindList")
+    public R machineBindList(@ParameterObject Page<MachineBindListVO> page, @Valid @ParameterObject MachineUserListDTO param) {
+
+        return R.ok(kxsMachineService.machineBindList(page, param));
+    }
+
+
+    /**
+     * 全部机具
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 全部机具
+     */
+    @GetMapping("/machineUserList")
+    public R machineUserList(@ParameterObject Page<MachineUserListVO> page, @Valid @ParameterObject MachineUserListDTO param) {
+
+        return R.ok(kxsMachineService.getByPage(page, param));
+    }
+
+
+    /**
+     * 机具修改活动
+     *
+     * @param param 实体对象
+     * @return 机具修改活动
+     */
+    @PostMapping("/updatePledge")
+    public R updatePledge(@RequestBody MachineUpdatePledgeDTO param) {
+        return R.ok();
+    }
+
+
+    /**
+     * 机具未绑定划拨
+     *
+     * @param param 实体对象
+     * @return 机具未绑定划拨
+     */
+    @PostMapping("/machineTransfer")
+    public R machineTransfer(@Valid @RequestBody MachineTransferDTO param) {
+
+        return kxsMachineService.machineTransferUser(param);
+    }
+
+
+    /**
+     * 未绑定划拨记录
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 未绑定划拨记录
+     */
+    @GetMapping("/machineTransferList")
+    public R machineTransferList(@ParameterObject Page<MachineTransferListVO> page, @Valid @ParameterObject MachineTransferListDTO param) {
+
+        return R.ok(kxsMachineTransferService.machineTransferList(page, param));
+    }
+
+
+    /**
+     * 用户机具和箱具码搜索
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 用户机具和箱具码搜索
+     */
+    @GetMapping("/searchUserMachine")
+    public R searchUserMachine(@ParameterObject Page<SearchUserMachineVO> page, @ParameterObject SearchUserMachineDTO param) {
+
+        return R.ok(kxsMachineService.searchUserMachine(page, param));
+    }
+
+    /**
+     * 机具可回收列表
+     *
+     * @param page 分页对象
+     * @return 机具可回收列表
+     */
+    @GetMapping("/recycleList")
+    public R recycleList(@ParameterObject Page<MachineRecycleListVO> page, @ParameterObject RecycleMachineQuery param) {
+
+        return R.ok(kxsMachineService.recycleList(page, param));
+    }
+
+
+    /**
+     * 仓库库存机具列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 仓库库存机具列表
+     */
+    @GetMapping("/machineStoreList")
+    public R machineStoreList(@ParameterObject Page<MachineStoreListVO> page, @Valid @ParameterObject MachineStoreListDTO param) {
+
+        return R.ok(kxsMachineService.machineStoreList(page, param));
+    }
+
+
+    /**
+     * 机具搜索
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 机具搜索
+     */
+    @GetMapping("/searchStoreMachine")
+    public R searchStoreMachine(@ParameterObject Page<MachineStoreListVO> page, @Valid @ParameterObject MachineStoreListDTO param) {
+
+        return R.ok(kxsMachineService.searchStoreMachine(page, param));
+    }
+
+
+
+
+
+}
+

+ 98 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/MerchantController.java

@@ -0,0 +1,98 @@
+package com.kxs.product.biz.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.kxsapp.merchant.ToMerchantMakerDTO;
+import com.kxs.product.api.dto.kxsapp.merchant.MachineRatioDTO;
+import com.kxs.product.api.dto.kxsapp.merchant.MerchantListDTO;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO;
+import com.kxs.product.biz.service.KxsMachineService;
+import com.kxs.product.biz.service.KxsMerchantService;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 我的商户(Merchant)控制层
+ *
+ * @author 系统
+ * @since 2024-01-04 16:20:14
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("merchant")
+public class MerchantController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsMerchantService kxsMerchantService;
+    private final KxsMachineService kxsMachineService;
+
+
+
+    /**
+     * 汇总数据激活等
+     *
+     * @param brandId 品牌ID
+     * @return 汇总数据激活等
+     */
+    @GetMapping("/merchantTotal")
+    public R merchantTotal(@RequestParam("brandId") Integer brandId) {
+        return R.ok();
+    }
+
+
+    /**
+     * 商户列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 商户列表
+     */
+    @GetMapping("/merchantList")
+    public R merchantList(@ParameterObject Page<MerchantListVO> page, @ParameterObject MerchantListDTO param) {
+        return R.ok();
+    }
+
+
+    /**
+     * 商户详情
+     *
+     * @param merchantId 商户ID
+     * @return 商户详情
+     */
+    @GetMapping("/merchantDetail")
+    public R merchantDetail(@RequestParam("merchantId") Object merchantId) {
+        return R.ok();
+    }
+
+
+    /**
+     * 费率调整
+     *
+     * @param param 实体对象
+     * @return 费率调整
+     */
+    @PutMapping("/machineRatio")
+    public R machineRatio(@RequestBody MachineRatioDTO param) {
+        return R.ok();
+    }
+
+
+
+    /**
+     * 转商户型创客
+     *
+     * @param param 实体对象
+     * @return 转商户型创客
+     */
+    @PutMapping("/toMerchantMaker")
+    public R toMerchantMaker(@RequestBody ToMerchantMakerDTO param) {
+        return R.ok();
+    }
+
+
+
+}
+

+ 90 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/TicketController.java

@@ -0,0 +1,90 @@
+package com.kxs.product.biz.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferDTO;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferQuery;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO;
+import com.kxs.product.biz.service.KxsTicketService;
+import com.kxs.product.biz.service.KxsTicketTransferService;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 兑换券(Ticket)控制层
+ *
+ * @author 系统
+ * @since 2024-01-04 16:20:14
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("ticket")
+public class TicketController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsTicketService kxsTicketService;
+    private final KxsTicketTransferService kxsTicketTransferService;
+
+
+
+    /**
+     * 兑换券列表
+     *
+     * @param page 分页对象
+     * @return 兑换券列表
+     */
+    @GetMapping("/list")
+    public R list(@ParameterObject Page<TicketListVO> page, @RequestParam("ticketType") Integer ticketType) {
+        return R.ok(kxsTicketService.getByPage(page, ticketType));
+    }
+
+
+    /**
+     * 兑换券划拨记录
+     *
+     * @param page 分页对象
+     * @return 兑换券划拨记录
+     */
+    @GetMapping("/ticketTransferList")
+    public R ticketTransferList(@ParameterObject Page<TicketTransferListVO> page, @ParameterObject TicketTransferQuery ticketTransferQuery) {
+
+        return R.ok(kxsTicketTransferService.getByPage(page, ticketTransferQuery));
+    }
+
+
+    /**
+     * 兑换券划拨详情
+     *
+     * @param id 主键ID
+     * @return 兑换券划拨详情
+     */
+    @GetMapping("/ticketTransferDetail")
+    public R ticketTransferDetail(@RequestParam("id") Integer id) {
+
+        return R.ok(kxsTicketTransferService.getByData(id));
+    }
+
+
+    /**
+     * 兑换券划拨
+     *
+     * @param param 实体对象
+     * @return 兑换券划拨
+     */
+    @PostMapping("/ticketTransfer")
+    public R ticketTransfer(@Valid @RequestBody TicketTransferDTO param) {
+
+        return kxsTicketTransferService.ticketTransfer(param);
+    }
+
+
+
+
+
+}
+

+ 71 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineMapper.java

@@ -1,8 +1,16 @@
 package com.kxs.product.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.product.api.dto.kxsapp.machine.MachineStoreListDTO;
+import com.kxs.product.api.dto.kxsapp.machine.MachineUserListDTO;
+import com.kxs.product.api.dto.kxsapp.machine.RecycleMachineQuery;
+import com.kxs.product.api.dto.kxsapp.machine.SearchUserMachineDTO;
 import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.api.vo.kxsapp.machine.*;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 客小爽机具表(KxsMachine)表数据库访问层
@@ -13,5 +21,68 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsMachineMapper extends BaseMapper<KxsMachine> {
 
+    /**
+     * app 仓库库存机具列表
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineStoreListVO}>
+     */
+    IPage<MachineStoreListVO> machineStoreList(Page<MachineStoreListVO> page, @Param("query") MachineStoreListDTO param);
+
+    /**
+     * app 可循环机列表
+     *
+     * @param page    页
+     * @param userId
+     * @param brandId
+     * @return {@link IPage}<{@link RecycleMachinesVO}>
+     */
+    IPage<RecycleMachinesVO> recycleMachinesPage(Page<RecycleMachinesVO> page, @Param("userId") Long userId, @Param("brandId") Integer brandId);
+
+    /**
+     * app 未绑定列表
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineUnBindListVO}>
+     */
+    IPage<MachineUnBindListVO> machineUnBindListPage(Page<MachineUnBindListVO> page, @Param("query") MachineUserListDTO param);
+
+    /**
+     * app 已绑定列表
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineBindListVO}>
+     */
+    IPage<MachineBindListVO> machineBindList(Page<MachineBindListVO> page, @Param("query") MachineUserListDTO param);
+
+    /**
+     * app 全部机具
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineUserListVO}>
+     */
+    IPage<MachineUserListVO> getByPage(Page<MachineUserListVO> page, @Param("query") MachineUserListDTO param);
+
+    /**
+     * app 用户机具和箱具码搜索
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link SearchUserMachineVO}>
+     */
+    IPage<SearchUserMachineVO> searchUserMachine(Page<SearchUserMachineVO> page, @Param("query") SearchUserMachineDTO param);
+
+    /**
+     * 机具可回收列表
+     *
+     * @param page   页
+     * @param query 查询
+     * @return {@link IPage}<{@link MachineRecycleListVO}>
+     */
+    IPage<MachineRecycleListVO> recyclePageList(Page<MachineRecycleListVO> page, @Param("query") RecycleMachineQuery query);
 }
 

+ 13 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineTransferMapper.java

@@ -1,8 +1,13 @@
 package com.kxs.product.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.product.api.dto.kxsapp.machine.MachineTransferListDTO;
 import com.kxs.product.api.model.KxsMachineTransfer;
+import com.kxs.product.api.vo.kxsapp.machine.MachineTransferListVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 客小爽机具划拨表(KxsMachineTransfer)表数据库访问层
@@ -13,5 +18,13 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsMachineTransferMapper extends BaseMapper<KxsMachineTransfer> {
 
+    /**
+     * app 分页
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineTransferListVO}>
+     */
+    IPage<MachineTransferListVO> getByPage(Page<MachineTransferListVO> page, @Param("query") MachineTransferListDTO param);
 }
 

+ 25 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsTicketMapper.java

@@ -1,8 +1,14 @@
 package com.kxs.product.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.product.api.model.KxsTicket;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 客小爽券码表(KxsTicket)表数据库访问层
@@ -13,5 +19,24 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsTicketMapper extends BaseMapper<KxsTicket> {
 
+    /**
+     * 兑换券列表
+     *
+     * @param page       页
+     * @param userId     用户 ID
+     * @param ticketType
+     * @return {@link IPage}<{@link TicketListVO}>
+     */
+    IPage<TicketListVO> getByPage(Page<TicketListVO> page, @Param("userId") Long userId, @Param("ticketType") Integer ticketType);
+
+    /**
+     * 划拨记录分页列表
+     *
+     * @param ticketCodes 码
+     * @param userId      用户 ID
+     */
+    void updateBatchTransfer(@Param("ticketCodes") List<String> ticketCodes, @Param("userId") Integer userId);
+
+
 }
 

+ 16 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsTicketTransferMapper.java

@@ -1,8 +1,14 @@
 package com.kxs.product.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferQuery;
 import com.kxs.product.api.model.KxsTicketTransfer;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferDetailVO;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 客小爽券码划拨记录表(KxsTicketTransfer)表数据库访问层
@@ -13,5 +19,15 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsTicketTransferMapper extends BaseMapper<KxsTicketTransfer> {
 
+    /**
+     * app 分页列表
+     *
+     * @param page                页
+     * @param ticketTransferQuery 票务转移查询
+     * @return {@link IPage}<{@link TicketTransferListVO}>
+     */
+    IPage<TicketTransferListVO> getByPage(Page<TicketTransferListVO> page, @Param("query") TicketTransferQuery ticketTransferQuery);
+
+
 }
 

+ 1 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsBrandService.java

@@ -20,7 +20,7 @@ public interface KxsBrandService extends IService<KxsBrand> {
      * @param sorts 排序
      * @return {@link Boolean}
      */
-    Boolean sortByList(Long[] sorts);
+    Boolean sortByList(List<Integer> sorts);
 
     /**
      * 按照排序字段查询品牌列表

+ 92 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsMachineService.java

@@ -1,7 +1,12 @@
 package com.kxs.product.biz.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.kxsapp.machine.*;
 import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.api.vo.kxsapp.machine.*;
 
 /**
  * 客小爽机具表(KxsMachine)表服务接口
@@ -11,5 +16,92 @@ import com.kxs.product.api.model.KxsMachine;
  */
 public interface KxsMachineService extends IService<KxsMachine> {
 
+    /**
+     * 仓库库存机具列表
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineStoreListVO}>
+     */
+    IPage<MachineStoreListVO> machineStoreList(Page<MachineStoreListVO> page, MachineStoreListDTO param);
+
+    /**
+     * 机具搜索
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineStoreListVO}>
+     */
+    IPage<MachineStoreListVO> searchStoreMachine(Page<MachineStoreListVO> page, MachineStoreListDTO param);
+
+    /**
+     * 可循环机列表
+     *
+     * @param page    页
+     * @param brandId
+     * @return {@link IPage}<{@link RecycleMachinesVO}>
+     */
+    IPage<RecycleMachinesVO> recycleMachinesPage(Page<RecycleMachinesVO> page, Integer brandId);
+
+    /**
+     * 未绑定机具列表
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineUnBindListVO}>
+     */
+    IPage<MachineUnBindListVO> machineUnBindListPage(Page<MachineUnBindListVO> page, MachineUserListDTO param);
+
+    /**
+     * 已绑定列表
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineBindListVO}>
+     */
+    IPage<MachineBindListVO> machineBindList(Page<MachineBindListVO> page, MachineUserListDTO param);
+
+    /**
+     * 全部机具
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineUserListVO}>
+     */
+    IPage<MachineUserListVO> getByPage(Page<MachineUserListVO> page, MachineUserListDTO param);
+
+    /**
+     * 申请机具说明
+     *
+     * @return {@link MachineApplyRemarkVO}
+     */
+    MachineApplyRemarkVO applyRemark();
+
+    /**
+     * 机具未绑定划拨
+     *
+     * @param param 参数
+     * @return {@link R}
+     */
+    R machineTransferUser(MachineTransferDTO param);
+
+
+    /**
+     * 用户机具和箱具码搜索
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link SearchUserMachineVO}>
+     */
+    IPage<SearchUserMachineVO> searchUserMachine(Page<SearchUserMachineVO> page, SearchUserMachineDTO param);
+
+    /**
+     * 机具可回收列表
+     *
+     * @param page  页
+     * @param param
+     * @return {@link IPage}<>
+     */
+    IPage<MachineRecycleListVO> recycleList(Page<MachineRecycleListVO> page, RecycleMachineQuery param);
 }
 

+ 12 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsMachineTransferService.java

@@ -1,7 +1,11 @@
 package com.kxs.product.biz.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.dto.kxsapp.machine.MachineTransferListDTO;
 import com.kxs.product.api.model.KxsMachineTransfer;
+import com.kxs.product.api.vo.kxsapp.machine.MachineTransferListVO;
 
 /**
  * 客小爽机具划拨表(KxsMachineTransfer)表服务接口
@@ -11,5 +15,13 @@ import com.kxs.product.api.model.KxsMachineTransfer;
  */
 public interface KxsMachineTransferService extends IService<KxsMachineTransfer> {
 
+    /**
+     * 未绑定划拨记录
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link MachineTransferListVO}>
+     */
+    IPage<MachineTransferListVO> machineTransferList(Page<MachineTransferListVO> page, MachineTransferListDTO param);
 }
 

+ 11 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketService.java

@@ -1,7 +1,10 @@
 package com.kxs.product.biz.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.product.api.model.KxsTicket;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;
 
 /**
  * 客小爽券码表(KxsTicket)表服务接口
@@ -11,5 +14,13 @@ import com.kxs.product.api.model.KxsTicket;
  */
 public interface KxsTicketService extends IService<KxsTicket> {
 
+    /**
+     * 兑换券列表
+     *
+     * @param page       页
+     * @param ticketType
+     * @return {@link IPage}<{@link TicketListVO}>
+     */
+    IPage<TicketListVO> getByPage(Page<TicketListVO> page, Integer ticketType);
 }
 

+ 31 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketTransferService.java

@@ -1,7 +1,14 @@
 package com.kxs.product.biz.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferDTO;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferQuery;
 import com.kxs.product.api.model.KxsTicketTransfer;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferDetailVO;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO;
 
 /**
  * 客小爽券码划拨记录表(KxsTicketTransfer)表服务接口
@@ -11,5 +18,29 @@ import com.kxs.product.api.model.KxsTicketTransfer;
  */
 public interface KxsTicketTransferService extends IService<KxsTicketTransfer> {
 
+    /**
+     * 兑换券划拨
+     *
+     * @param param 参数
+     * @return {@link R}
+     */
+    R ticketTransfer(TicketTransferDTO param);
+
+    /**
+     * 分页列表
+     *
+     * @param page         页
+     * @param transferType
+     * @return {@link IPage}<{@link TicketTransferListVO}>
+     */
+    IPage<TicketTransferListVO> getByPage(Page<TicketTransferListVO> page, TicketTransferQuery transferType);
+
+    /**
+     * 划拨详情
+     *
+     * @param id 编号
+     * @return {@link TicketTransferDetailVO}
+     */
+    TicketTransferDetailVO getByData(Integer id);
 }
 

+ 3 - 3
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsBrandServiceImpl.java

@@ -20,12 +20,12 @@ import java.util.List;
 public class KxsBrandServiceImpl extends ServiceImpl<KxsBrandMapper, KxsBrand> implements KxsBrandService {
 
     @Override
-    public Boolean sortByList(Long[] sorts) {
+    public Boolean sortByList(List<Integer> sorts) {
 
-        for (int i = 0; i < sorts.length; i++) {
+        for (int i = 0; i < sorts.size(); i++) {
 
             LambdaUpdateWrapper<KxsBrand> updateWrapper = new LambdaUpdateWrapper<>();
-            updateWrapper.eq(KxsBrand::getId, sorts[i]).set(KxsBrand::getSort, i);
+            updateWrapper.eq(KxsBrand::getId, sorts.get(i)).set(KxsBrand::getSort, i);
 
             baseMapper.update(null, updateWrapper);
         }

+ 188 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMachineServiceImpl.java

@@ -1,10 +1,33 @@
 package com.kxs.product.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.ErrorTypeEnum;
+import com.kxs.common.core.exception.GlobalCustomerException;
+import com.kxs.common.core.util.R;
+import com.kxs.common.core.util.RetOps;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.dto.kxsapp.machine.*;
+import com.kxs.product.api.model.*;
+import com.kxs.product.api.vo.kxsapp.machine.*;
+import com.kxs.product.biz.constant.enums.MachineTypeEnum;
+import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
+import com.kxs.product.biz.mapper.KxsBrandMapper;
 import com.kxs.product.biz.mapper.KxsMachineMapper;
-import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.biz.mapper.KxsMachineTrackMapper;
+import com.kxs.product.biz.mapper.KxsMachineTransferMapper;
 import com.kxs.product.biz.service.KxsMachineService;
+import com.kxs.user.api.feign.RemoteKxsUserService;
+import com.kxs.user.api.model.KxsUser;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 客小爽机具表(KxsMachine)表服务实现类
@@ -13,7 +36,171 @@ import org.springframework.stereotype.Service;
  * @since 2023-12-20 10:09:35
  */
 @Service("kxsMachineService")
+@RequiredArgsConstructor
 public class KxsMachineServiceImpl extends ServiceImpl<KxsMachineMapper, KxsMachine> implements KxsMachineService {
 
+    private final KxsBrandMapper kxsBrandMapper;
+
+    private final KxsMachineTrackMapper kxsMachineTrackMapper;
+
+    private final KxsMachineTransferMapper kxsMachineTransferMapper;
+
+    private final RemoteKxsUserService remoteKxsUserService;
+
+    @Override
+    public IPage<MachineStoreListVO> machineStoreList(Page<MachineStoreListVO> page, MachineStoreListDTO param) {
+
+        return baseMapper.machineStoreList(page, param);
+    }
+
+    @Override
+    public IPage<MachineStoreListVO> searchStoreMachine(Page<MachineStoreListVO> page, MachineStoreListDTO param) {
+
+        return baseMapper.machineStoreList(page, param);
+    }
+
+    @Override
+    public IPage<RecycleMachinesVO> recycleMachinesPage(Page<RecycleMachinesVO> page, Integer brandId) {
+
+        Long userId = SecurityUtils.getUser().getId();
+
+        //查询品牌
+        KxsBrand kxsBrand = kxsBrandMapper.selectById(brandId);
+        List<KxsBrand> brands = kxsBrandMapper.selectList(Wrappers.<KxsBrand>lambdaQuery().eq(KxsBrand::getBrandType, kxsBrand.getBrandType()));
+        List<Integer> brandIds = brands.stream().map(KxsBrand::getId).toList();
+
+        IPage<RecycleMachinesVO> recycleMachines = baseMapper.recycleMachinesPage(page, userId, brandId);
+
+        recycleMachines.getRecords().forEach(item -> item.setBrandList(brandIds));
+
+        return recycleMachines;
+    }
+
+    @Override
+    public IPage<MachineUnBindListVO> machineUnBindListPage(Page<MachineUnBindListVO> page, MachineUserListDTO param) {
+
+        param.setUserId(SecurityUtils.getUser().getId().intValue());
+
+        return baseMapper.machineUnBindListPage(page, param);
+    }
+
+    @Override
+    public IPage<MachineBindListVO> machineBindList(Page<MachineBindListVO> page, MachineUserListDTO param) {
+
+        param.setUserId(SecurityUtils.getUser().getId().intValue());
+
+        return baseMapper.machineBindList(page, param);
+    }
+
+    @Override
+    public IPage<MachineUserListVO> getByPage(Page<MachineUserListVO> page, MachineUserListDTO param) {
+
+        param.setUserId(SecurityUtils.getUser().getId().intValue());
+
+        return baseMapper.getByPage(page, param);
+    }
+
+    @Override
+    public MachineApplyRemarkVO applyRemark() {
+
+        Integer userId = SecurityUtils.getUser().getId().intValue();
+
+        //兑换机 激活数量
+        Long actCount = baseMapper.selectCount(Wrappers.<KxsMachine>lambdaQuery()
+                .eq(KxsMachine::getUserId, userId)
+                .eq(KxsMachine::getMachineType, MachineTypeEnum.M_TYPE_SN.getType())
+                .eq(KxsMachine::getIsAct, MachineTypeEnum.ACT.getType()));
+
+        //过期的循环机数量,兑换机循环时间结束
+        Long pastCount = baseMapper.selectCount(Wrappers.<KxsMachine>lambdaQuery()
+                .eq(KxsMachine::getUserId, userId)
+                .eq(KxsMachine::getMachineType, MachineTypeEnum.M_TYPE_SN.getType())
+                .lt(KxsMachine::getRecycleEndTime, LocalDateTime.now()));
+
+        return MachineApplyRemarkVO.builder()
+                .actCount(actCount)
+                .pastCount(pastCount)
+                .maxCount(actCount - pastCount)
+                .minCount(actCount - pastCount > 0 ? 1 : 0)
+                .build();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R machineTransferUser(MachineTransferDTO param) {
+
+        Integer userId = SecurityUtils.getUser().getId().intValue();
+        R<KxsUser> result = remoteKxsUserService.loadUserByCode(param.getUserCode(), SecurityConstants.FROM_IN);
+        KxsUser toUser = RetOps.of(result)
+                .getData()
+                .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+
+        String pidPath = toUser.getPidPath();
+        //判断是否是下级
+        boolean contains = pidPath.contains("," + userId + ",");
+        if(!contains){
+            return R.failed(ProductErrorTypeEnum.USER_IS_NOT_FIND.getDescription());
+        }
+
+        for (String sn : param.getSnList()) {
+            KxsMachine machine = baseMapper.selectOne(Wrappers.<KxsMachine>lambdaQuery()
+                    .eq(KxsMachine::getUserId, userId)
+                    .eq(KxsMachine::getPosSn, sn));
+            if (machine == null) {
+                throw new GlobalCustomerException(sn + ProductErrorTypeEnum.MACHINE_NOT_FOUND.getDescription());
+            }
+            if(machine.getBindStatus().equals(MachineTypeEnum.BIND.getType())){
+                throw new GlobalCustomerException(sn + ProductErrorTypeEnum.MACHINE_BIND.getDescription());
+            }
+            if(!machine.getUserId().equals(userId)){
+                throw new GlobalCustomerException(sn + ProductErrorTypeEnum.MACHINE_NOT_USER.getDescription());
+            }
+            //循环机不可划拨
+            if (machine.getMachineType().equals(MachineTypeEnum.M_TYPE_RE.getType())) {
+                throw new GlobalCustomerException(sn + ProductErrorTypeEnum.MACHINE_TRANSFER_NO.getDescription());
+            }
+            //机具轨迹路径
+            String allotPath = machine.getAllotPath() == null ? "0," : machine.getAllotPath();
+            machine.setAllotPath(allotPath + machine.getUserId() + ",");
+            machine.setUserId(toUser.getId());
+            //修改机具所属
+            baseMapper.updateById(machine);
+
+            //添加机具划拨记录
+            KxsMachineTransfer machineTransfer = new KxsMachineTransfer();
+            //拨出用户
+            machineTransfer.setSendUserId(userId);
+            //拨入用户
+            machineTransfer.setToUserId(toUser.getId());
+            machineTransfer.setToUserName(toUser.getUsername());
+            machineTransfer.setToUserCode(toUser.getUserCode());
+            machineTransfer.setMachineSn(machine.getPosSn());
+            machineTransfer.setMachineId(machine.getId());
+            machineTransfer.setBrandId(machine.getBrandId());
+            kxsMachineTransferMapper.insert(machineTransfer);
+
+        }
+
+        return R.ok();
+    }
+
+    @Override
+    public IPage<SearchUserMachineVO> searchUserMachine(Page<SearchUserMachineVO> page, SearchUserMachineDTO param) {
+
+        param.setUserId(SecurityUtils.getUser().getId().intValue());
+
+        return baseMapper.searchUserMachine(page, param);
+    }
+
+    @Override
+    public IPage<MachineRecycleListVO> recycleList(Page<MachineRecycleListVO> page, RecycleMachineQuery param) {
+
+        Long userId = SecurityUtils.getUser().getId();
+        param.setUserId(userId.intValue());
+
+        return baseMapper.recyclePageList(page, param);
+    }
+
+
 }
 

+ 12 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMachineTransferServiceImpl.java

@@ -1,6 +1,11 @@
 package com.kxs.product.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.dto.kxsapp.machine.MachineTransferListDTO;
+import com.kxs.product.api.vo.kxsapp.machine.MachineTransferListVO;
 import com.kxs.product.biz.mapper.KxsMachineTransferMapper;
 import com.kxs.product.api.model.KxsMachineTransfer;
 import com.kxs.product.biz.service.KxsMachineTransferService;
@@ -15,5 +20,12 @@ import org.springframework.stereotype.Service;
 @Service("kxsMachineTransferService")
 public class KxsMachineTransferServiceImpl extends ServiceImpl<KxsMachineTransferMapper, KxsMachineTransfer> implements KxsMachineTransferService {
 
+    @Override
+    public IPage<MachineTransferListVO> machineTransferList(Page<MachineTransferListVO> page, MachineTransferListDTO param) {
+
+        param.setUserId(SecurityUtils.getUser().getId().intValue());
+
+        return baseMapper.getByPage(page, param);
+    }
 }
 

+ 29 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketServiceImpl.java

@@ -1,11 +1,21 @@
 package com.kxs.product.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.model.KxsBrand;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;
+import com.kxs.product.biz.mapper.KxsBrandMapper;
 import com.kxs.product.biz.mapper.KxsTicketMapper;
 import com.kxs.product.api.model.KxsTicket;
 import com.kxs.product.biz.service.KxsTicketService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 客小爽券码表(KxsTicket)表服务实现类
  *
@@ -13,7 +23,26 @@ import org.springframework.stereotype.Service;
  * @since 2023-12-20 10:09:35
  */
 @Service("kxsTicketService")
+@RequiredArgsConstructor
 public class KxsTicketServiceImpl extends ServiceImpl<KxsTicketMapper, KxsTicket> implements KxsTicketService {
 
+    private final KxsBrandMapper kxsBrandMapper;
+
+    @Override
+    public IPage<TicketListVO> getByPage(Page<TicketListVO> page, Integer ticketType) {
+
+        Long userId = SecurityUtils.getUser().getId();
+
+        //查询品牌
+        List<KxsBrand> brands = kxsBrandMapper.selectList(Wrappers.<KxsBrand>lambdaQuery().eq(KxsBrand::getBrandType, ticketType));
+        List<Integer> brandIds = brands.stream().map(KxsBrand::getId).toList();
+
+        //查询券
+        IPage<TicketListVO> byPage = baseMapper.getByPage(page, userId, ticketType);
+        byPage.getRecords().forEach(item -> item.setBrandList(brandIds));
+
+        return byPage;
+
+    }
 }
 

+ 163 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketTransferServiceImpl.java

@@ -1,10 +1,35 @@
 package com.kxs.product.biz.service.impl;
 
+import cn.hutool.core.util.EnumUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.ErrorTypeEnum;
+import com.kxs.common.core.exception.GlobalCustomerException;
+import com.kxs.common.core.util.R;
+import com.kxs.common.core.util.RetOps;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferDTO;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferQuery;
+import com.kxs.product.api.model.KxsTicket;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferDetailVO;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO;
+import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
+import com.kxs.product.biz.constant.enums.TicketTypeEnum;
+import com.kxs.product.biz.mapper.KxsTicketMapper;
 import com.kxs.product.biz.mapper.KxsTicketTransferMapper;
 import com.kxs.product.api.model.KxsTicketTransfer;
 import com.kxs.product.biz.service.KxsTicketTransferService;
+import com.kxs.user.api.feign.RemoteKxsUserService;
+import com.kxs.user.api.model.KxsUser;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * 客小爽券码划拨记录表(KxsTicketTransfer)表服务实现类
@@ -13,7 +38,145 @@ import org.springframework.stereotype.Service;
  * @since 2023-12-20 10:09:35
  */
 @Service("kxsTicketTransferService")
+@RequiredArgsConstructor
 public class KxsTicketTransferServiceImpl extends ServiceImpl<KxsTicketTransferMapper, KxsTicketTransfer> implements KxsTicketTransferService {
 
+    private final RemoteKxsUserService remoteKxsUserService;
+
+    private final KxsTicketMapper kxsTicketMapper;
+
+    private final KxsTicketTransferMapper kxsTicketTransferMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R ticketTransfer(TicketTransferDTO param) {
+
+        Integer userId = SecurityUtils.getUser().getId().intValue();
+
+        //查询用户信息
+        R<KxsUser> sendResult = remoteKxsUserService.loadUserById(userId, SecurityConstants.FROM_IN);
+        KxsUser sendUser = RetOps.of(sendResult)
+                .getData()
+                .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+
+        //查询拨入创客
+        R<KxsUser> toResult = remoteKxsUserService.loadUserByCode(param.getUserCode(), SecurityConstants.FROM_IN);
+        KxsUser toUser = RetOps.of(toResult)
+                .getData()
+                .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+
+        String pidPath = toUser.getPidPath();
+        //判断是否是下级
+        boolean contains = pidPath.contains("," + userId + ",");
+        if(!contains){
+            return R.failed(ProductErrorTypeEnum.USER_IS_NOT_FIND.getDescription());
+        }
+        //是否实名认证
+//        if(toUser.getRealStatus() != 1){
+//            return R.failed(ProductErrorTypeEnum.USER_IS_NOT_AUTH.getDescription());
+//        }
+
+        for (String ticketCode : param.getTicketCodes()) {
+            KxsTicket kxsTicket = kxsTicketMapper.selectOne(Wrappers.<KxsTicket>lambdaQuery().eq(KxsTicket::getTicketCode, ticketCode));
+            if (kxsTicket == null) {
+                throw new GlobalCustomerException(ProductErrorTypeEnum.TICKET_NOT_FOUND.getDescription());
+            }
+            if(!kxsTicket.getUserId().equals(userId)){
+                throw new GlobalCustomerException(ProductErrorTypeEnum.TICKET_NOT_USER.getDescription());
+            }
+            //机具轨迹路径
+            String allotPath = kxsTicket.getTicketAllotPath() == null ? "0," : kxsTicket.getTicketAllotPath();
+            kxsTicket.setTicketAllotPath(allotPath + kxsTicket.getUserId() + "," );
+            kxsTicket.setUserId(toUser.getId());
+            //修改机具所属
+            kxsTicketMapper.updateById(kxsTicket);
+
+        }
+
+
+        //添加划拨记录
+        KxsTicketTransfer ticketTransfer = new KxsTicketTransfer();
+        //拨出用户
+        ticketTransfer.setSendUserId(userId);
+        ticketTransfer.setSendUserName(sendUser.getUsername());
+        ticketTransfer.setSendUserCode(sendUser.getUserCode());
+        //拨入用户
+        ticketTransfer.setToUserId(toUser.getId());
+        ticketTransfer.setToUserName(toUser.getUsername());
+        ticketTransfer.setToUserCode(toUser.getUserCode());
+
+        ticketTransfer.setTicketCodes(String.join(",", param.getTicketCodes()));
+        ticketTransfer.setTransferNum(param.getTicketCodes().size());
+        ticketTransfer.setTicketType(param.getTicketType());
+
+        //插入划拨记录
+        kxsTicketTransferMapper.insert(ticketTransfer);
+
+        return R.ok();
+    }
+
+    @Override
+    public IPage<TicketTransferListVO> getByPage(Page<TicketTransferListVO> page, TicketTransferQuery ticketTransferQuery) {
+
+        Long userId = SecurityUtils.getUser().getId();
+
+        IPage<TicketTransferListVO> byPage = baseMapper.getByPage(page, ticketTransferQuery);
+
+        //拨入查询
+        if (ticketTransferQuery.getTransferType() == 1) {
+            ticketTransferQuery.setToUserId(userId.intValue());
+        }
+        //拨出查询
+        if (ticketTransferQuery.getTransferType() == 2) {
+            ticketTransferQuery.setSendUserId(userId.intValue());
+        }
+
+        return byPage;
+    }
+
+    @Override
+    public TicketTransferDetailVO getByData(Integer id) {
+
+        Long userId = SecurityUtils.getUser().getId();
+
+        TicketTransferDetailVO transferDetailVO = new TicketTransferDetailVO();
+
+        KxsTicketTransfer kxsTicketTransfer = baseMapper.selectById(id);
+        BeanUtils.copyProperties(kxsTicketTransfer, transferDetailVO);
+
+        //拨入
+        if(kxsTicketTransfer.getToUserId().equals(userId.intValue())){
+            R<KxsUser> result = remoteKxsUserService.loadUserById(kxsTicketTransfer.getSendUserId(), SecurityConstants.FROM_IN);
+            KxsUser sendUser = RetOps.of(result)
+                    .getData()
+                    .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+            transferDetailVO.setUsername(kxsTicketTransfer.getSendUserName());
+            transferDetailVO.setUserCode(kxsTicketTransfer.getSendUserCode());
+            transferDetailVO.setPhone(sendUser.getPhone());
+        }
+        //拨出
+        if(kxsTicketTransfer.getSendUserId().equals(userId.intValue())){
+            R<KxsUser> result = remoteKxsUserService.loadUserById(kxsTicketTransfer.getToUserId(), SecurityConstants.FROM_IN);
+            KxsUser toUser = RetOps.of(result)
+                    .getData()
+                    .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+            transferDetailVO.setUsername(kxsTicketTransfer.getToUserName());
+            transferDetailVO.setUserCode(kxsTicketTransfer.getToUserCode());
+            transferDetailVO.setPhone(toUser.getPhone());
+        }
+
+        String ticketType = EnumUtil.getFieldBy(TicketTypeEnum::getDescription, TicketTypeEnum::getType, kxsTicketTransfer.getTicketType());
+        transferDetailVO.setTicketType(String.valueOf(kxsTicketTransfer.getTicketType()));
+        transferDetailVO.setTicketTypeSn(ticketType);
+
+        return transferDetailVO;
+    }
+
+
+
+
+
+
+
 }
 

+ 1 - 1
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsBrandMapper.xml

@@ -16,7 +16,7 @@
 
     </resultMap>
     <select id="getSortByList" resultType="com.kxs.product.api.vo.kxsapp.brand.BrandListVO">
-        select * form kxs_brand
+        select * from kxs_brand
         <where>
             del_flag = 0
         </where>

+ 99 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml

@@ -10,6 +10,7 @@
         <result column="version" property="version" />
         <result column="pos_sn" property="posSn" />
         <result column="warehouse_id" property="warehouseId" />
+        <result column="warehouse_name" property="warehouseName" />
         <result column="user_id" property="userId" />
         <result column="merchant_id" property="merchantId" />
         <result column="brand_id" property="brandId" />
@@ -30,5 +31,103 @@
         <result column="is_ratio" property="isRatio" />
 
     </resultMap>
+    <select id="machineStoreList" resultType="com.kxs.product.api.vo.kxsapp.machine.MachineStoreListVO">
+        select create_time, pos_sn from kxs_machine
+          <where>
+              <if test="query.warehouseId != null">
+                  and warehouse_id = #{query.warehouseId}
+              </if>
+              <if test="query.brandId != null">
+                  and brand_id = #{query.brandId}
+              </if>
+              <if test="query.boxSn != null and query.boxSn != ''">
+                  and box_sn = #{query.boxSn}
+              </if>
+              <if test="query.posSn != null and query.posSn != ''">
+                  and pos_sn like concat('%', #{query.posSn}, '%')
+              </if>
+          </where>
+
+    </select>
+    <select id="recycleMachinesPage" resultType="com.kxs.product.api.vo.kxsapp.machine.RecycleMachinesVO">
+        select create_time, pos_sn, machine_type, recycle_end_time from kxs_machine
+        <where>
+            and del_flag = 0
+            and recycle_status = 1
+            and user_id = #{userId}
+            <if test="brandId != null">
+                and brand_id = #{brandId}
+            </if>
+        </where>
+
+    </select>
+    <select id="machineUnBindListPage" resultType="com.kxs.product.api.vo.kxsapp.machine.MachineUnBindListVO">
+
+        select cash_pledge, pos_sn, machine_type, recycle_end_time from kxs_machine
+        <where>
+            and del_flag = 0
+            and bind_status = 0
+            and user_id = #{query.userId}
+            <if test="query.brandId != null">
+                and brand_id = #{query.brandId}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                and pos_sn like concat('%', #{query.keyword}, '%')
+            </if>
+        </where>
+
+    </select>
+    <select id="machineBindList" resultType="com.kxs.product.api.vo.kxsapp.machine.MachineBindListVO">
+        select is_act, pos_sn, machine_type, cash_pledge from kxs_machine
+        <where>
+            and del_flag = 0
+            and bind_status = 1
+            and user_id = #{query.userId}
+            <if test="query.brandId != null">
+                and brand_id = #{query.brandId}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                and pos_sn like concat('%', #{query.keyword}, '%')
+            </if>
+        </where>
+    </select>
+    <select id="getByPage" resultType="com.kxs.product.api.vo.kxsapp.machine.MachineUserListVO">
+        select a.is_act, a.pos_sn, a.machine_type, a.cash_pledge, a.delivery_time, a.warehouse_name,
+               b.name as brand
+        from kxs_machine a
+        left join kxs_brand b on a.brand_id = b.id
+        <where>
+            and a.del_flag = 0
+            and a.user_id = #{query.userId}
+            <if test="query.brandId != null">
+                and a.brand_id = #{query.brandId}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                and a.pos_sn like concat('%', #{query.keyword}, '%')
+            </if>
+        </where>
+    </select>
+    <select id="searchUserMachine" resultType="com.kxs.product.api.vo.kxsapp.machine.SearchUserMachineVO">
+        select create_time, pos_sn from kxs_machine
+        <where>
+            <if test="query.userId != null">
+                and user_id = #{query.userId}
+            </if>
+            <if test="query.boxSn != null and query.boxSn != ''">
+                and box_sn = #{query.boxSn}
+            </if>
+            <if test="query.posSn != null and query.posSn != ''">
+                and pos_sn like concat('%', #{query.posSn}, '%')
+            </if>
+        </where>
+    </select>
+    <select id="recyclePageList" resultType="com.kxs.product.api.vo.kxsapp.machine.MachineRecycleListVO">
+        select recycle_end_time, pos_sn from kxs_machine
+        where del_flag = 0 and status = 3 and user_id = #{query.userId}
+        <if test="query.posSn != null and query.posSn != ''">
+            and pos_sn like concat('%', #{query.posSn}, '%')
+        </if>
+        order by recycle_end_time desc
+    </select>
 
 </mapper>

+ 15 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineTransferMapper.xml

@@ -9,12 +9,27 @@
         <result column="del_flag" property="delFlag" />
         <result column="version" property="version" />
         <result column="machine_sn" property="machineSn" />
+        <result column="machine_id" property="machineId" />
         <result column="send_user_id" property="sendUserId" />
         <result column="brand_id" property="brandId" />
         <result column="to_user_id" property="toUserId" />
         <result column="machine_type" property="machineType" />
         <result column="transfer_type" property="transferType" />
+        <result column="to_user_name" property="toUserName" />
+        <result column="to_user_code" property="toUserCode" />
 
     </resultMap>
 
+    <select id="getByPage" resultType="com.kxs.product.api.vo.kxsapp.machine.MachineTransferListVO">
+        select id, machine_sn, machine_type, to_user_name, to_user_code  from kxs_machine_transfer
+        <where>
+            and del_flag = 0
+            and send_user_id = #{query.userId}
+            and brand_id = #{query.brandId}
+            <if test="query.keyword != null and query.keyword != ''">
+                and (machine_sn like concat('%', #{query.keyword}, '%') or to_user_name like concat('%', #{query.keyword}, '%') or to_user_code like concat('%', #{query.keyword}, '%'))
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 17 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketMapper.xml

@@ -16,5 +16,22 @@
         <result column="is_leader" property="isLeader" />
 
     </resultMap>
+    <update id="updateBatchTransfer">
+        update kxs_ticket
+        <set>
+            <if test="userId != null">
+                user_id = #{userId},
+            </if>
+        </set>
+        where ticket_code in
+        <foreach collection="ticketCodes" item="code" open="(" close=")" separator=",">
+            #{code}
+        </foreach>
+    </update>
+
+    <select id="getByPage" resultType="com.kxs.product.api.vo.kxsapp.ticket.TicketListVO">
+        select id, ticket_code, ticket_type from kxs_ticket
+        where user_id = #{userId} and ticket_type = #{ticketType}
+    </select>
 
 </mapper>

+ 25 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketTransferMapper.xml

@@ -10,10 +10,35 @@
         <result column="version" property="version" />
         <result column="ticket_codes" property="ticketCodes" />
         <result column="send_user_id" property="sendUserId" />
+        <result column="send_user_name" property="sendUserName" />
+        <result column="send_user_code" property="sendUserCode" />
+        <result column="to_user_id" property="toUserId" />
+        <result column="to_user_name" property="toUserName" />
+        <result column="to_user_code" property="toUserCode" />
         <result column="to_user_id" property="toUserId" />
         <result column="transfer_num" property="transferNum" />
         <result column="ticket_type" property="ticketType" />
 
     </resultMap>
+    <select id="getByPage" resultType="com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO">
+        select a.id, a.transfer_num, a.ticket_type, a.to_user_id, a.send_user_id, a.create_time,
+        <if test="query.transferType == 1">
+            a.send_user_name as username, a.send_user_code as userCode
+        </if>
+        <if test="query.transferType == 2">
+            a.to_user_name as username, a.to_user_code as userCode
+        </if>
+        from kxs_ticket_transfer a
+        <where>
+            <if test="query.toUserId != null">
+                and a.to_user_id = #{query.toUserId}
+            </if>
+            <if test="query.sendUserId != null">
+                and a.send_user_id = #{query.sendUserId}
+            </if>
+        </where>
+        order by a.create_time desc
+    </select>
+
 
 </mapper>

+ 4 - 0
kxs-system/kxs-system-biz/pom.xml

@@ -77,6 +77,10 @@
             <groupId>com.kxs</groupId>
             <artifactId>kxs-common-swagger</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-poi</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 19 - 2
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/admin/LoginController.java

@@ -1,15 +1,20 @@
 package com.kxs.system.biz.controller.admin;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.poi.excel.ExcelReader;
+import cn.hutool.poi.excel.ExcelUtil;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.util.R;
 import com.kxs.common.security.annotation.Inner;
+import com.pig4cloud.plugin.excel.annotation.RequestExcel;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import org.springdoc.core.annotations.ParameterObject;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -38,8 +43,20 @@ public class LoginController {
 
 	@PostMapping("/testPost")
 	@Inner(value = false)
-	 public R testPost(@RequestBody Map randomStr){
-		return R.ok(randomStr);
+	 public R testPost(){
+
+		return R.ok();
 	 }
 
+	 //批量预设职级
+//	public static void main(String[] args) {
+//		ExcelReader reader = ExcelUtil.getReader("/Users/mac/Desktop/刘耀辉申请保级名单.xlsx");
+//		List<Map<String, Object>> readAll = reader.readAll();
+//		for (Map<String, Object> map : readAll) {
+//			String level = map.get("预设职级").toString();
+//			String sql = "INSERT INTO `UserRankWhite` (Id, CreateDate, UpdateDate, `Rank`, UserId) VALUES ("+map.get("创客Id")+", NOW(), '2024/6/1 00:00:00', "+level.charAt(1)+", "+map.get("创客Id")+") ON DUPLICATE KEY UPDATE UpdateDate = '2024/6/1 00:00:00', `Rank` = "+level.charAt(1)+";";
+//			System.out.println(sql);
+//		}
+//	}
+
 }

+ 18 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java

@@ -23,4 +23,22 @@ public interface RemoteKxsUserService {
 	@GetExchange("/user/loadUserByPhone")
 	R<KxsUser> loadUserByPhone(@RequestParam("phone") String phone, @RequestHeader(SecurityConstants.FROM) String from);
 
+	/**
+	 * 通过创客编号查询用户信息
+	 * @param userCode 电话信息
+	 * @param from 调用标志
+	 * @return R
+	 */
+	@GetExchange("/user/loadUserByCode")
+	R<KxsUser> loadUserByCode(@RequestParam("userCode") String userCode, @RequestHeader(SecurityConstants.FROM) String from);
+
+	/**
+	 * 通过用户ID数组查询用户信息
+	 * @param userId 用户ID
+	 * @param from 调用标志
+	 * @return R
+	 */
+	@GetExchange("/user/loadUserById")
+	R<KxsUser> loadUserById(@RequestParam("userId") Integer userId, @RequestHeader(SecurityConstants.FROM) String from);
+
 }

+ 0 - 3
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsAppController.java

@@ -148,8 +148,5 @@ public class KxsAppController {
     }
 
 
-
-
-
 }
 

+ 26 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java

@@ -48,6 +48,32 @@ public class KxsUserController {
         return R.ok(user);
     }
 
+    /**
+     * 根据code获取用户全部信息
+     * 内部调用
+     * @return 用户信息
+     */
+    @Inner
+    @GetMapping(value = { "/loadUserByCode" })
+    public R loadUserByCode(@RequestParam("userCode") String userCode) {
+        KxsUser user = kxsUserService.getOne(Wrappers.<KxsUser>query()
+                .lambda()
+                .eq(KxsUser::getUserCode, userCode));
+        return R.ok(user);
+    }
+
+    /**
+     * 根据code获取用户全部信息
+     * 内部调用
+     * @return 用户信息
+     */
+    @Inner
+    @GetMapping(value = { "/loadUserById" })
+    public R loadUserById(@RequestParam("userId") Integer userId) {
+
+        return R.ok(kxsUserService.getById(userId));
+    }
+
     /**
      * 获取用户数据
      *