Browse Source

Merge branch 'feature/1.0.0' of github.com:ab-inbev-apac/abi-cloud-qr-platform into feature/1.0.0

tanzhongran 3 years ago
parent
commit
0745bf8d7e
22 changed files with 570 additions and 156 deletions
  1. 24 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/ActiveController.java
  2. 5 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/BaseActive.java
  3. 52 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/ActiveAuditStatusEnum.java
  4. 14 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseActiveMapper.java
  5. 4 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseActiveQrPackageMappingMapper.java
  6. 42 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ActiveDetailVO.java
  7. 38 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ActivePackageVO.java
  8. 14 19
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/AddActiveReq.java
  9. 2 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GetActiveReq.java
  10. 9 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListActiveReq.java
  11. 22 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/PassActiveReq.java
  12. 22 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/RefuseActiveReq.java
  13. 6 21
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/UpdateActiveReq.java
  14. 8 25
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetActiveRes.java
  15. 54 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListActivePackage.java
  16. 6 26
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListActiveRes.java
  17. 16 26
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/GenerateCodeConsumer.java
  18. 18 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/ActiveService.java
  19. 142 36
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/ActiveServiceImpl.java
  20. 48 1
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseActiveMapper.xml
  21. 7 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseActiveQrPackageMappingMapper.xml
  22. 17 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseBrandMapper.xml

+ 24 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/ActiveController.java

@@ -2,6 +2,7 @@ package com.abi.qms.platform.controller.console;
 
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetActiveRes;
+import com.abi.qms.platform.dto.res.ListActivePackage;
 import com.abi.qms.platform.dto.res.ListActiveRes;
 import com.abi.qms.platform.service.ActiveService;
 import com.abi.task.common.api.base.BaseResponse;
@@ -59,6 +60,15 @@ public class ActiveController {
         return BaseResponse.create(result);
     }
 
+    @ApiOperation("分页查询关联码包列表")
+    @GetMapping("listActivePackage")
+    public BaseResponse<ListActivePackage> listActivePackage(@Validated GetActiveReq getActiveReq) throws Exception{
+        //分页查询
+        ListActivePackage result = activeService.listActivePackage(getActiveReq);
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
     @ApiOperation("查询活动明细")
     @GetMapping("getActive")
     public BaseResponse<GetActiveRes> getActive(@Validated GetActiveReq getActiveReq) throws Exception{
@@ -86,6 +96,20 @@ public class ActiveController {
         return BaseResponse.create();
     }
 
+    @ApiOperation("审核通过")
+    @PostMapping("/passActive")
+    public BaseResponse passActive(@Validated @RequestBody PassActiveReq passActiveReq) {
+        activeService.passActive(passActiveReq);
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("审核驳回")
+    @PostMapping("/refuseActive")
+    public BaseResponse refuseActive(@Validated @RequestBody RefuseActiveReq refuseActiveReq) {
+        activeService.refuseActive(refuseActiveReq);
+        return BaseResponse.create();
+    }
+
 }
 
 

+ 5 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/BaseActive.java

@@ -37,6 +37,9 @@ public class BaseActive {
     @ApiModelProperty(value = "活动审核状态 1-待审核 2-通过 9-驳回")
     private Integer auditStatus;
 
+    @ApiModelProperty(value = "申请时间")
+    private LocalDateTime applyTime;
+
     @ApiModelProperty(value = "申请人id")
     private Long applyUserId;
 
@@ -79,6 +82,7 @@ public class BaseActive {
 	@ApiModelProperty(value = "是否删除")
     private Integer isDelete;
 
-
+    @ApiModelProperty(value = "是否有效")
+    private Integer valid;
 
 }

+ 52 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/ActiveAuditStatusEnum.java

@@ -0,0 +1,52 @@
+package com.abi.qms.platform.dao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.EnumSet;
+import java.util.Set;
+
+/**
+ * @author Eurus
+ * @date 2021/5/25 19:38
+ * @Description: 活动审核状态
+ */
+@Getter
+@AllArgsConstructor
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
+public enum ActiveAuditStatusEnum {
+
+    //活动审核状态 1-待审核 2-通过 9-驳回
+    WAIT_REVIEW(1,"待审核"),
+    REVIEW_PASS(2,"审核通过"),
+    ENABLE(3, "启用"),
+    REVIEW_REFUSE(9,"审核驳回"),
+    DISABLE(10, "停用");
+
+
+    @EnumValue
+    private Integer code;
+    private String name;
+
+    private static final Set<ActiveAuditStatusEnum> ALL = EnumSet.allOf(ActiveAuditStatusEnum.class);
+
+    public static String getName(Integer code) {
+        return ALL.stream()
+                .filter(o -> o.code.equals(code))
+                .map(ActiveAuditStatusEnum::getName)
+                .findAny().orElse(null);
+    }
+
+    public static Integer getCode(String name) {
+        return ALL.stream()
+                .filter(o -> o.name.equals(name))
+                .map(ActiveAuditStatusEnum::getCode)
+                .findAny().orElse(null);
+    }
+
+    public boolean is(Integer code) {
+        return getCode().equals(code);
+    }
+}

+ 14 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseActiveMapper.java

@@ -1,7 +1,11 @@
 package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.BaseActive;
+import com.abi.qms.platform.dao.vo.result.ActivePackageVO;
+import com.abi.qms.platform.dto.req.ListActiveReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,4 +16,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BaseActiveMapper extends BaseMapper<BaseActive> {
 
+    IPage<BaseActive> listActivePage(IPage page, @Param("param") ListActiveReq param);
+
+    /**
+     * 通过码活动id查询关联码包列表
+     * @param page
+     * @param activeId
+     * @return
+     */
+    IPage<ActivePackageVO> listPackageById(IPage page, @Param("id") Long activeId);
+
 }

+ 4 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseActiveQrPackageMappingMapper.java

@@ -2,6 +2,9 @@ package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.BaseActiveQrPackageMapping;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,4 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BaseActiveQrPackageMappingMapper extends BaseMapper<BaseActiveQrPackageMapping> {
 
+    int batchInsert(@Param("activeId") Long activeId, @Param("qrPackageIdList") List<Long> qrPackageIdList,@Param("createBy")Long createBy);
 }

+ 42 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ActiveDetailVO.java

@@ -0,0 +1,42 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author Eurus
+ * @date 2021/5/26 17:56
+ * @Description: 码活动详情返回
+ */
+@Data
+@ApiModel
+public class ActiveDetailVO implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "活动code(即页面上的手输的活动id)")
+    private String activeCode;
+
+    @ApiModelProperty(value = "活动名称")
+    private String activeName;
+
+    @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
+    private Integer activeType;
+
+    @ApiModelProperty(value = "活动域名")
+    private String activeUrl;
+
+    @ApiModelProperty(value = "活动开始日期")
+    private LocalDateTime beginTime;
+
+    @ApiModelProperty(value = "活动结束日期")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "品牌code")
+    private String brandCode;
+}

+ 38 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ActivePackageVO.java

@@ -0,0 +1,38 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Eurus
+ * @date 2021/5/26 17:41
+ * @Description: 码活动关联码包返回
+ */
+@Data
+@ApiModel
+public class ActivePackageVO implements Serializable {
+
+    @ApiModelProperty("码包id")
+    private Long packageId;
+
+    @ApiModelProperty("码类型 1-箱码 2-盖码")
+    private Integer qrType;
+
+    @ApiModelProperty("sku名称")
+    private String skuName;
+
+    @ApiModelProperty("品牌名称")
+    private String brandName;
+
+    @ApiModelProperty("上级品牌名称")
+    private String parentBrandName;
+
+    @ApiModelProperty("码数量")
+    private Long qrNumber;
+
+
+}

+ 14 - 19
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/AddActiveReq.java

@@ -4,8 +4,11 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author:Andy.Tan
@@ -15,44 +18,36 @@ import java.time.LocalDateTime;
 @ApiModel
 public class AddActiveReq implements Serializable {
 
+    @NotEmpty(message = "活动ID为空")
     @ApiModelProperty(value = "活动code(即页面上的手输的活动id)")
     private String activeCode;
 
+    @NotEmpty(message = "活动名称为空")
     @ApiModelProperty(value = "活动名称")
     private String activeName;
 
+    @NotNull(message = "活动类型为空")
     @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
     private Integer activeType;
 
-    @ApiModelProperty(value = "活动审核状态 1-待审核 2-通过 9-驳回")
-    private Integer auditStatus;
-
-    @ApiModelProperty(value = "申请人id")
-    private Long applyUserId;
-
-    @ApiModelProperty(value = "申请人姓名")
-    private String applyUserName;
-
-    @ApiModelProperty(value = "审核人id")
-    private Long auditUserId;
-
-    @ApiModelProperty(value = "审核人姓名")
-    private String auditUserName;
-
+    @NotEmpty(message = "活动开始日期为空")
     @ApiModelProperty(value = "活动开始日期")
     private LocalDateTime beginTime;
 
+    @NotEmpty(message = "活动结束日期为空")
     @ApiModelProperty(value = "活动结束日期")
     private LocalDateTime endTime;
 
-    @ApiModelProperty(value = "品牌code")
+    @NotEmpty(message = "所属品牌为空")
+    @ApiModelProperty(value = "所属品牌")
     private String brandCode;
 
-    @ApiModelProperty(value = "子品牌code")
-    private String subBrandCode;
-
+    @NotEmpty(message = "活动域名为空")
     @ApiModelProperty(value = "活动域名")
     private String activeUrl;
 
+    @NotNull(message = "关联码包为空")
+    @ApiModelProperty(value = "关联码包")
+    private List<Long> qrPackageIdList;
 
 }

+ 2 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GetActiveReq.java

@@ -1,5 +1,6 @@
 package com.abi.qms.platform.dto.req;
 
+import com.abi.task.common.api.base.PageReq;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -14,7 +15,7 @@ import java.io.Serializable;
  */
 @Data
 @ApiModel
-public class GetActiveReq implements Serializable {
+public class GetActiveReq extends PageReq implements Serializable {
 
     @NotNull(message = "ID为空")
     @ApiModelProperty(value = "id")

+ 9 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListActiveReq.java

@@ -1,6 +1,7 @@
 package com.abi.qms.platform.dto.req;
 
 import com.abi.task.common.api.base.PageReq;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import java.io.Serializable;
@@ -13,4 +14,12 @@ import java.io.Serializable;
 @Schema
 public class ListActiveReq extends PageReq implements Serializable {
 
+    @ApiModelProperty(value = "活动名称")
+    private String activeName;
+
+    @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
+    private Integer activeType;
+
+    @ApiModelProperty(value = "活动状态 1-待审核 2-通过 3-启用 9-驳回 10-停用")
+    private Integer auditStatus;
 }

+ 22 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/PassActiveReq.java

@@ -0,0 +1,22 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author Eurus
+ * @date 2021/5/25 20:19
+ * @Description: 审核通过活动
+ */
+@Data
+@ApiModel
+public class PassActiveReq implements Serializable {
+
+    @NotNull(message = "id为空")
+    @ApiModelProperty(value = "id")
+    private Long id;
+}

+ 22 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/RefuseActiveReq.java

@@ -0,0 +1,22 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author Eurus
+ * @date 2021/5/25 20:20
+ * @Description: 审核驳回活动
+ */
+@Data
+@ApiModel
+public class RefuseActiveReq implements Serializable {
+
+    @NotNull(message = "id为空")
+    @ApiModelProperty(value = "id")
+    private Long id;
+}

+ 6 - 21
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/UpdateActiveReq.java

@@ -3,8 +3,11 @@ package com.abi.qms.platform.dto.req;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author:Andy.Tan
@@ -17,30 +20,12 @@ public class UpdateActiveReq implements Serializable {
     @ApiModelProperty(value = "id")
     private Long id;
 
-    @ApiModelProperty(value = "活动code(即页面上的手输的活动id)")
-    private String activeCode;
-
     @ApiModelProperty(value = "活动名称")
     private String activeName;
 
     @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
     private Integer activeType;
 
-    @ApiModelProperty(value = "活动审核状态 1-待审核 2-通过 9-驳回")
-    private Integer auditStatus;
-
-    @ApiModelProperty(value = "申请人id")
-    private Long applyUserId;
-
-    @ApiModelProperty(value = "申请人姓名")
-    private String applyUserName;
-
-    @ApiModelProperty(value = "审核人id")
-    private Long auditUserId;
-
-    @ApiModelProperty(value = "审核人姓名")
-    private String auditUserName;
-
     @ApiModelProperty(value = "活动开始日期")
     private LocalDateTime beginTime;
 
@@ -50,11 +35,11 @@ public class UpdateActiveReq implements Serializable {
     @ApiModelProperty(value = "品牌code")
     private String brandCode;
 
-    @ApiModelProperty(value = "子品牌code")
-    private String subBrandCode;
-
     @ApiModelProperty(value = "活动域名")
     private String activeUrl;
 
+    @NotNull(message = "关联码包为空")
+    @ApiModelProperty(value = "关联码包")
+    private List<Long> qrPackageIdList;
 
 }

+ 8 - 25
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetActiveRes.java

@@ -7,6 +7,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author:Andy.Tan
@@ -28,42 +29,24 @@ public class GetActiveRes implements Serializable {
     @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
     private Integer activeType;
 
-    @ApiModelProperty(value = "活动审核状态 1-待审核 2-通过 9-驳回")
-    private Integer auditStatus;
-
-    @ApiModelProperty(value = "申请人id")
-    private Long applyUserId;
-
-    @ApiModelProperty(value = "申请人姓名")
-    private String applyUserName;
-
-    @ApiModelProperty(value = "审核人id")
-    private Long auditUserId;
-
-    @ApiModelProperty(value = "审核人姓名")
-    private String auditUserName;
-
     @ApiModelProperty(value = "活动开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDateTime beginTime;
 
     @ApiModelProperty(value = "活动结束日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDateTime endTime;
 
     @ApiModelProperty(value = "品牌code")
-    private String brandCode;
+    private List<String> brandCodeList;
 
-    @ApiModelProperty(value = "子品牌code")
-    private String subBrandCode;
+    @ApiModelProperty(value = "品牌名称")
+    private List<String> brandNameList;
 
     @ApiModelProperty(value = "活动域名")
     private String activeUrl;
 
-    @ApiModelProperty(value = "创建时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "修改时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime updateTime;
+    @ApiModelProperty(value = "码包列表")
+    private ListActivePackage listActivePackage;
 
 }

+ 54 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListActivePackage.java

@@ -0,0 +1,54 @@
+package com.abi.qms.platform.dto.res;
+
+import com.abi.task.common.api.base.PageResp;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Eurus
+ * @date 2021/5/26 18:41
+ * @Description:
+ */
+@Data
+@ApiModel
+public class ListActivePackage extends PageResp implements Serializable {
+
+    @ApiModelProperty("码包列表")
+    private List<PackageBean> packageBeanList;
+
+    /**
+     * 码包bean
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListActivePackage_Package")
+    public static class PackageBean implements Serializable {
+
+        @ApiModelProperty("码包id")
+        private Long packageId;
+
+        @ApiModelProperty("码类型 1-箱码 2-盖码")
+        private Integer qrType;
+
+        @ApiModelProperty("sku名称")
+        private String skuName;
+
+        @ApiModelProperty("品牌名称")
+        private String brandName;
+
+        @ApiModelProperty("上级品牌名称")
+        private String parentBrandName;
+
+        @ApiModelProperty("码数量")
+        private Long qrNumber;
+    }
+}

+ 6 - 26
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListActiveRes.java

@@ -37,52 +37,32 @@ public class ListActiveRes extends PageResp implements Serializable {
         @ApiModelProperty(value = "id")
         private Long id;
 
-        @ApiModelProperty(value = "活动code(即页面上的手输的活动id)")
-        private String activeCode;
-
         @ApiModelProperty(value = "活动名称")
         private String activeName;
 
         @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
         private Integer activeType;
 
-        @ApiModelProperty(value = "活动审核状态 1-待审核 2-通过 9-驳回")
+        @ApiModelProperty(value = "活动状态 1-待审核 2-通过 3-启用 9-驳回 10-停用")
         private Integer auditStatus;
 
-        @ApiModelProperty(value = "申请人id")
-        private Long applyUserId;
+        @ApiModelProperty(value = "申请时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime applyTime;
 
         @ApiModelProperty(value = "申请人姓名")
         private String applyUserName;
 
-        @ApiModelProperty(value = "审核人id")
-        private Long auditUserId;
-
-        @ApiModelProperty(value = "审核人姓名")
-        private String auditUserName;
-
         @ApiModelProperty(value = "活动开始日期")
+        @JsonFormat(pattern = "yyyy-MM-dd")
         private LocalDateTime beginTime;
 
         @ApiModelProperty(value = "活动结束日期")
+        @JsonFormat(pattern = "yyyy-MM-dd")
         private LocalDateTime endTime;
 
-        @ApiModelProperty(value = "品牌code")
-        private String brandCode;
-
-        @ApiModelProperty(value = "子品牌code")
-        private String subBrandCode;
-
         @ApiModelProperty(value = "活动域名")
         private String activeUrl;
 
-        @ApiModelProperty(value = "创建时间")
-        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-        private LocalDateTime createTime;
-
-        @ApiModelProperty(value = "修改时间")
-        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-        private LocalDateTime updateTime;
-
     }
 }

+ 16 - 26
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/GenerateCodeConsumer.java

@@ -127,6 +127,9 @@ public class GenerateCodeConsumer {
 	/** 一次生成数量 */
 	public static final int ONCE_GENERATE_NUMBER = 5000;
 
+	/** 声明码对应的值 */
+	public Long codeIndex = 0L;
+
 	/** 系统url */
 	@Value("${system.url}")
 	private String systemUrl;
@@ -138,35 +141,18 @@ public class GenerateCodeConsumer {
         String str = JsonUtil.toBean(id, String.class);
 		QrPackageVO qrPackageVO = qrPackageMapper.selectQrPackageDetailById(Long.parseLong(str));
 		try {
-			//声明码对应的值
-			Long codeIndex = 0L;
 			Object code_qr_index = redisClient.get("code_qr_index");
 			if(ObjectUtils.isEmpty(code_qr_index)){
 				QueryWrapper<QrIndex>  indexQuery= new QueryWrapper<>();
 				indexQuery.orderByDesc("index_current").last("limit 1");
 				QrIndex qrIndex = qrIndexMapper.selectOne(indexQuery);
-				if(ObjectUtils.isEmpty(qrIndex)){
-					QrIndex index = new QrIndex();
-					index.setIndexCurrent(qrPackageVO.getQrNumber());
-					qrIndexMapper.insert(index);
-					redisClient.set("code_qr_index",qrPackageVO.getQrNumber());
-				} else {
+				if(!ObjectUtils.isEmpty(qrIndex)){
 					codeIndex = qrIndex.getIndexCurrent();
-					QrIndex index = new QrIndex();
-					index.setIndexCurrent(qrIndex.getIndexCurrent()+qrPackageVO.getQrNumber());
-					qrIndexMapper.insert(index);
-					redisClient.set("code_qr_index",qrIndex.getIndexCurrent()+qrPackageVO.getQrNumber());
 				}
-			} else {
-				codeIndex = Long.parseLong(code_qr_index.toString());
-				long l = qrPackageVO.getQrNumber() + Long.parseLong(code_qr_index.toString());
-				QrIndex index = new QrIndex();
-				index.setIndexCurrent(l);
-				qrIndexMapper.insert(index);
-				redisClient.set("code_qr_index",l);
+				redisClient.set("code_qr_index",codeIndex);
 			}
 			// 生成码
-			loopGenerateCode(qrPackageVO,codeIndex);
+			loopGenerateCode(qrPackageVO);
 		} catch (Exception e) {
 			log.error("生成码失败", e);
 			// 回滚
@@ -184,7 +170,7 @@ public class GenerateCodeConsumer {
 	/**
 	 * 生成码
 	 */
-	private void loopGenerateCode(QrPackageVO qrPackageVO,Long codeIndex) {
+	private void loopGenerateCode(QrPackageVO qrPackageVO) {
 		//刷新码包信息
 		QrPackage qrPackage = qrPackageMapper.selectById(qrPackageVO.getId());
 
@@ -243,7 +229,7 @@ public class GenerateCodeConsumer {
 			 * boxCodeFormat 箱码幅面
 			 */
 			// 循环生成码
-			List<QrData> codeList = loopGenerateCode(qrRepertoryColumnList, qrRepertoryId, urlMap, qrRepertorySerialNumberMap, qrNumber, batchNumber, repeatTimes,boxCodeFormat,codeIndex);
+			List<QrData> codeList = loopGenerateCode(qrRepertoryColumnList, qrRepertoryId, urlMap, qrRepertorySerialNumberMap, qrNumber, batchNumber, repeatTimes,boxCodeFormat);
 
             // 更新码库流水号
             if (!qrRepertorySerialNumberMap.isEmpty()) {
@@ -300,6 +286,11 @@ public class GenerateCodeConsumer {
 		qrPackageService.sendEmailForQrPackageCreated(baseFactory.getEmail(),qrPackage.getSapOrderNo(),aliPath,qrPackage.getZipPassword());
 		//邮件发送后修改状态
 		qrPackageMapper.updateById(qrPackage);
+		QrIndex index = new QrIndex();
+		index.setIndexCurrent(codeIndex);
+		qrIndexMapper.insert(index);
+		redisClient.set("code_qr_index",codeIndex);
+		codeIndex = 0l;
 		qrDataList.clear();
 	}
 
@@ -372,8 +363,7 @@ public class GenerateCodeConsumer {
      * repeatTimes 失败次数
 	 * formatNumber 幅面数量
      */
-	private List<QrData> loopGenerateCode(List<QrRepertoryColumnVO> qrRepertoryColumnList, Long qrRepertoryId, Map<Long, String> urlMap, Map<String, QrRepertorySerialNumber> qrRepertorySerialNumberMap, Long qrNumber, String batchNumber, int repeatTimes,QrBoxCodeFormat boxCodeFormat,Long codeIndex ) {
-		codeIndex ++;
+	private List<QrData> loopGenerateCode(List<QrRepertoryColumnVO> qrRepertoryColumnList, Long qrRepertoryId, Map<Long, String> urlMap, Map<String, QrRepertorySerialNumber> qrRepertorySerialNumberMap, Long qrNumber, String batchNumber, int repeatTimes,QrBoxCodeFormat boxCodeFormat ) {
         LocalDateTime localDateTime = LocalDateTime.now();
 		while (true) {
 			// 计算还需生成的数量
@@ -434,14 +424,14 @@ public class GenerateCodeConsumer {
 								QrInnerData qrInnerData = new QrInnerData();
 								qrInnerData.setCode(String.valueOf(chars)).setUrl(url);
 								qrInnerData.setQrRepertoryColumnId(qrRepertoryColumnId).setSortNumber(qrRepertoryColumn.getSortNumber());
-								qrInnerData.setCodeIndex(codeIndex);
+								qrInnerData.setCodeIndex(codeIndex+=1);
 								qrInnerDataList.add(qrInnerData);
 							}
 						} else {
 							QrInnerData qrInnerData = new QrInnerData();
 							qrInnerData.setCode(code).setUrl(url);
 							qrInnerData.setQrRepertoryColumnId(qrRepertoryColumnId).setSortNumber(qrRepertoryColumn.getSortNumber());
-							qrInnerData.setCodeIndex(codeIndex);
+							qrInnerData.setCodeIndex(codeIndex+=1);
 							qrInnerDataList.add(qrInnerData);
 						}
 					}

+ 18 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/ActiveService.java

@@ -3,6 +3,7 @@ package com.abi.qms.platform.service;
 
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetActiveRes;
+import com.abi.qms.platform.dto.res.ListActivePackage;
 import com.abi.qms.platform.dto.res.ListActiveRes;
 
 /**
@@ -42,6 +43,13 @@ public interface ActiveService{
      */
     GetActiveRes getActive(GetActiveReq getActiveReq);
 
+    /**
+     * 分页查询关联的码包列表
+     * @param getActiveReq
+     * @return
+     */
+    ListActivePackage listActivePackage(GetActiveReq getActiveReq);
+
     /**
      * 活动启用
      * @param enableActiveReq
@@ -54,4 +62,14 @@ public interface ActiveService{
      */
     void disableActive(DisableActiveReq disableActiveReq);
 
+    /**
+     * 审核通过活动
+     */
+    void passActive(PassActiveReq req);
+
+    /**
+     * 审核驳回活动
+     */
+    void refuseActive(RefuseActiveReq req);
+
 }

+ 142 - 36
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/ActiveServiceImpl.java

@@ -1,19 +1,36 @@
 package com.abi.qms.platform.service.impl;
 
 import com.abi.qms.platform.dao.entity.BaseActive;
+import com.abi.qms.platform.dao.entity.BaseActiveQrPackageMapping;
+import com.abi.qms.platform.dao.entity.BaseBrand;
+import com.abi.qms.platform.dao.enums.ActiveAuditStatusEnum;
+import com.abi.qms.platform.dao.enums.ValidEnum;
 import com.abi.qms.platform.dao.mapper.BaseActiveMapper;
+import com.abi.qms.platform.dao.mapper.BaseActiveQrPackageMappingMapper;
+import com.abi.qms.platform.dao.mapper.BaseBrandMapper;
+import com.abi.qms.platform.dao.vo.result.ActivePackageVO;
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetActiveRes;
+import com.abi.qms.platform.dto.res.ListActivePackage;
 import com.abi.qms.platform.dto.res.ListActiveRes;
 import com.abi.qms.platform.infrastructure.util.AssertUtil;
 import com.abi.qms.platform.infrastructure.util.PageUtil;
+import com.abi.qms.platform.infrastructure.util.UserUtil;
 import com.abi.qms.platform.service.ActiveService;
+import com.abi.task.common.api.exception.BusinessException;
 import com.abi.task.common.utils.PojoConverterUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -28,32 +45,52 @@ public class ActiveServiceImpl implements ActiveService {
     @Autowired
     private BaseActiveMapper baseActiveMapper;
 
+    @Autowired
+    private BaseActiveQrPackageMappingMapper baseActiveQrPackageMappingMapper;
 
+    @Autowired
+    private UserUtil userUtil;
+
+    @Autowired
+    private BaseBrandMapper baseBrandMapper;
+    
     /**
      * 新增活动
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void addActive(AddActiveReq req){
         //校验入参
-        //TODO
+        //活动ID不可重复创建。
+        QueryWrapper<BaseActive> activeVali = new QueryWrapper<>();
+        activeVali.eq("active_code", req.getActiveCode());
+        activeVali.eq("is_delete", 0);
+        BaseActive baseActive = baseActiveMapper.selectOne(activeVali);
+        if (Objects.nonNull(baseActive)){
+            throw new BusinessException("活动ID" + req.getActiveCode() + "已存在。");
+        }
 
         //1-新增
+        Long userId = userUtil.getUser().getId();
         BaseActive active = new BaseActive();
         active.setActiveCode(req.getActiveCode());
         active.setActiveName(req.getActiveName());
         active.setActiveType(req.getActiveType());
-        active.setAuditStatus(req.getAuditStatus());
-        active.setApplyUserId(req.getApplyUserId());
-        active.setApplyUserName(req.getApplyUserName());
-        active.setAuditUserId(req.getAuditUserId());
-        active.setAuditUserName(req.getAuditUserName());
+        active.setAuditStatus(ActiveAuditStatusEnum.WAIT_REVIEW.getCode());
+        active.setApplyTime(LocalDateTime.now());
+        active.setApplyUserId(userId);
+        active.setApplyUserName(userUtil.getUser().getUserName());
         active.setBeginTime(req.getBeginTime());
         active.setEndTime(req.getEndTime());
         active.setBrandCode(req.getBrandCode());
-        active.setSubBrandCode(req.getSubBrandCode());
         active.setActiveUrl(req.getActiveUrl());
+        active.setCreateBy(userId);
+        active.setUpdateBy(userId);
         baseActiveMapper.insert(active);
 
+        //添加码活动和码包的关联
+        baseActiveQrPackageMappingMapper.batchInsert(active.getId(), req.getQrPackageIdList(), userId);
+
     }
 
     /**
@@ -67,21 +104,27 @@ public class ActiveServiceImpl implements ActiveService {
         AssertUtil.isNull(active,"活动不存在");
 
         //2-修改活动
-        active.setActiveCode(req.getActiveCode());
+        Long userId = userUtil.getUser().getId();
         active.setActiveName(req.getActiveName());
         active.setActiveType(req.getActiveType());
-        active.setAuditStatus(req.getAuditStatus());
-        active.setApplyUserId(req.getApplyUserId());
-        active.setApplyUserName(req.getApplyUserName());
-        active.setAuditUserId(req.getAuditUserId());
-        active.setAuditUserName(req.getAuditUserName());
+        //只要经过编辑,就恢复成待审核状态
+        active.setAuditStatus(ActiveAuditStatusEnum.WAIT_REVIEW.getCode());
+        active.setApplyTime(LocalDateTime.now());
+        active.setApplyUserId(userId);
+        active.setApplyUserName(userUtil.getUser().getUserName());
         active.setBeginTime(req.getBeginTime());
         active.setEndTime(req.getEndTime());
         active.setBrandCode(req.getBrandCode());
-        active.setSubBrandCode(req.getSubBrandCode());
         active.setActiveUrl(req.getActiveUrl());
+        active.setUpdateBy(userId);
         baseActiveMapper.updateById(active);
 
+        //删除关联的码包,重新插入
+        UpdateWrapper<BaseActiveQrPackageMapping> aqpmQW = new UpdateWrapper<>();
+        aqpmQW.set("is_delete", 1)
+                .eq("active_id", active.getId());
+        baseActiveQrPackageMappingMapper.update(null, aqpmQW);
+        baseActiveQrPackageMappingMapper.batchInsert(active.getId(), req.getQrPackageIdList(), userId);
     }
 
     /**
@@ -90,15 +133,19 @@ public class ActiveServiceImpl implements ActiveService {
     @Override
     public ListActiveRes listActive(ListActiveReq req){
 
-        //1-拼接条件
-        QueryWrapper<BaseActive> activeQw = new QueryWrapper<>();
-        //activeQw.like(StringUtils.isNotBlank(req.getXxx()), "xxx_xxx", "%" + req.getXxx() + "%");
-        //activeQw.eq(req.getXxx2() != null, "xxx_xxx2", req.getXxx2());
-
-        //2-分页查询
-        IPage<BaseActive> iPage = baseActiveMapper.selectPage(PageUtil.createPage(req), activeQw);
+        //分页查询
+        IPage<BaseActive> iPage = baseActiveMapper.listActivePage(PageUtil.createPage(req), req);
         List<BaseActive> activeList = iPage.getRecords();
-
+        //活动状态作处理  1-待审核 2-通过 3-启用 9-驳回 10-停用
+        activeList.forEach(active -> {
+            if(ActiveAuditStatusEnum.REVIEW_PASS.is(active.getAuditStatus())){
+                if(ValidEnum.VALID.is(active.getValid())){
+                    active.setAuditStatus(ActiveAuditStatusEnum.ENABLE.getCode());
+                }else{
+                    active.setAuditStatus(ActiveAuditStatusEnum.DISABLE.getCode());
+                }
+            }
+        });
         //封装出参
         ListActiveRes res = new ListActiveRes();
         //放入分页信息
@@ -123,11 +170,35 @@ public class ActiveServiceImpl implements ActiveService {
 
         //转化出参
         GetActiveRes res = PojoConverterUtils.copy(active, GetActiveRes.class);
+        //处理品牌code,品牌名称
+        if(Objects.nonNull(active.getBrandCode())){
+            String[] brandSplit = active.getBrandCode().trim().split(",");
+            res.setBrandCodeList(Arrays.asList(brandSplit));
+            QueryWrapper<BaseBrand> baseBrandQW = new QueryWrapper<>();
+            baseBrandQW.in("brand_code", brandSplit);
+            List<BaseBrand> baseBrands = baseBrandMapper.selectList(baseBrandQW);
+            List<String> baseBrandNameList = baseBrands.stream().map(BaseBrand::getBrandName).collect(Collectors.toList());
+            res.setBrandNameList(baseBrandNameList);
+        }
 
+        //查询码活动关联的码包列表
+        res.setListActivePackage(listActivePackage(req));
         return res;
 
     }
 
+    @Override
+    public ListActivePackage listActivePackage(GetActiveReq req) {
+        //查询码活动关联的码包列表
+        IPage<ActivePackageVO> activePackageVOIPage = baseActiveMapper.listPackageById(PageUtil.createPage(req), req.getId());
+        List<ActivePackageVO> records = activePackageVOIPage.getRecords();
+        ListActivePackage listActivePackage = new ListActivePackage();
+        PageUtil.copyPageInfo(listActivePackage, activePackageVOIPage);
+        List<ListActivePackage.PackageBean> packageBeans = PojoConverterUtils.copyList(records, ListActivePackage.PackageBean.class);
+        listActivePackage.setPackageBeanList(packageBeans);
+        return listActivePackage;
+    }
+
     /**
      * 活动启用
      */
@@ -141,13 +212,13 @@ public class ActiveServiceImpl implements ActiveService {
             BaseActive active = baseActiveMapper.selectById(id);
             AssertUtil.isNull(active, "活动不存在");
 
-//            if (!ValidEnum.NOT_VALID.is(active.getValid())) {
-//                continue;
-//            }
-//
-//            //2-修改状态
-//            active.setValid(ValidEnum.VALID.getCode());
-//            baseActiveMapper.updateById(active);
+            if (!ValidEnum.NOT_VALID.is(active.getValid())) {
+                continue;
+            }
+
+            //2-修改状态
+            active.setValid(ValidEnum.VALID.getCode());
+            baseActiveMapper.updateById(active);
         }
     }
 
@@ -164,14 +235,49 @@ public class ActiveServiceImpl implements ActiveService {
             BaseActive active = baseActiveMapper.selectById(id);
             AssertUtil.isNull(active, "活动不存在");
 
-//            if (!ValidEnum.VALID.is(active.getValid())) {
-//                return;
-//            }
-//
-//            //2-修改状态
-//            active.setValid(ValidEnum.NOT_VALID.getCode());
-//            baseActiveMapper.updateById(active);
+            if (!ValidEnum.VALID.is(active.getValid())) {
+                return;
+            }
+
+            //2-修改状态
+            active.setValid(ValidEnum.NOT_VALID.getCode());
+            baseActiveMapper.updateById(active);
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void passActive(PassActiveReq req) {
+        BaseActive active = baseActiveMapper.selectById(req.getId());
+        AssertUtil.isNull(active, "活动不存在");
+
+        if(ActiveAuditStatusEnum.WAIT_REVIEW.is(active.getAuditStatus())){
+            throw new BusinessException("该活动不能审核");
+        }
+        Long userId = userUtil.getUser().getId();
+        active.setAuditStatus(ActiveAuditStatusEnum.REVIEW_PASS.getCode());
+        active.setAuditUserId(userId);
+        active.setAuditUserName(userUtil.getUser().getUserName());
+        active.setUpdateBy(userId);
+        baseActiveMapper.updateById(active);
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void refuseActive(RefuseActiveReq req) {
+        BaseActive active = baseActiveMapper.selectById(req.getId());
+        AssertUtil.isNull(active, "活动不存在");
+        if(ActiveAuditStatusEnum.WAIT_REVIEW.is(active.getAuditStatus())){
+            throw new BusinessException("该活动不能审核");
+        }
+        Long userId = userUtil.getUser().getId();
+        active.setAuditStatus(ActiveAuditStatusEnum.REVIEW_REFUSE.getCode());
+        active.setAuditUserId(userId);
+        active.setAuditUserName(userUtil.getUser().getUserName());
+        active.setUpdateBy(userId);
+        baseActiveMapper.updateById(active);
+
+    }
+
 }

+ 48 - 1
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseActiveMapper.xml

@@ -9,6 +9,11 @@
         <result column="active_name" property="activeName" />
         <result column="active_type" property="activeType" />
         <result column="audit_status" property="auditStatus" />
+        <result column="apply_time" property="applyTime" />
+        <result column="apply_user_id" property="applyUserId" />
+        <result column="apply_user_name" property="applyUserName" />
+        <result column="audit_user_id" property="auditUserId" />
+        <result column="audit_user_name" property="auditUserName" />
         <result column="begin_time" property="beginTime" />
         <result column="end_time" property="endTime" />
         <result column="brand_code" property="brandCode" />
@@ -19,11 +24,53 @@
         <result column="update_time" property="updateTime" />
         <result column="update_by" property="updateBy" />
         <result column="is_delete" property="isDelete" />
+        <result column="valid" property="valid" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, active_code, active_name, active_type, audit_status, begin_time, end_time, brand_code, sub_brand_code, active_url, create_time, create_by, update_time, update_by, is_delete
+        id, active_code, active_name, active_type, audit_status, apply_time, apply_user_id, apply_user_name, audit_user_id, audit_user_name, begin_time, end_time, brand_code, sub_brand_code, active_url, create_time, create_by, update_time, update_by, is_delete, valid
     </sql>
 
+    <select id="listActivePage" resultMap="BaseResultMap">
+        select <include refid="Base_Column_List"/>
+        from base_active
+        <where>
+            is_delete = 0
+            <if test="param.activeName != null and param.activeName != ''">
+                AND active_name like concat('%',#{param.activeName},'%')
+            </if>
+            <if test="param.activeType != null">
+                AND active_type = #{param.activeType}
+            </if>
+            <if test="param.auditStatus != null ">
+                <if test="param.auditStatus == 1 or param.auditStatus == 2 or param.auditStatus == 9">
+                    AND audit_status = #{param.auditStatus}
+                </if>
+                <if test="param.auditStatus == 3 or param.auditStatus == 10">
+                    AND audit_status = 2 and valid = #{param.valid}
+                </if>
+            </if>
+        </where>
+        order by apply_time
+    </select>
+
+    <!--通过码活动id查询关联码包列表-->
+    <select id="listPackageById" resultType="com.abi.qms.platform.dao.vo.result.ActivePackageVO">
+        select
+        qp.id as packageId,
+        qp.qr_type,
+        bs.sku_name,
+        bb.brand_name,
+        bb.parent_brand_name,
+        qp.qr_number
+        from base_active ba
+        left join base_active_qr_package_mapping baqpm on ba.id = baqpm.active_id
+        left join qr_package qp on baqpm.qr_package_id = qp.id
+        left join base_material bm on qp.material_id = bm.id
+        left join base_sku bs on bm.sku_id = bs.id
+        left join base_brand bb on bs.brand_code = bb.brand_code
+        where ba.id = #{id}
+    </select>
+
 </mapper>

+ 7 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseActiveQrPackageMappingMapper.xml

@@ -19,4 +19,11 @@
         id, active_id, qr_package_id, create_time, create_by, update_time, update_by, is_delete
     </sql>
 
+    <insert id="batchInsert">
+        INSERT INTO base_active_qr_package_mapping (active_id, qr_package_id, create_by, update_by) VALUES
+        <foreach item="item" index="index" collection="qrPackageIdList" separator=",">
+            ( #{activeId}, #{item}, #{createBy}, #{createBy} )
+        </foreach>
+    </insert>
+
 </mapper>

+ 17 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseBrandMapper.xml

@@ -22,4 +22,21 @@
         ID, BRAND_CODE, BRAND_NAME, BRAND_LEVEL, PARENT_BRAND_CODE, PARENT_BRAND_NAME, CREATE_TIME, CREATE_BY, UPDATE_TIME, UPDATE_BY, IS_DELETE
     </sql>
 
+    <!--通过品牌code查询关联码包列表-->
+    <select id="listPackageById" resultType="com.abi.qms.platform.dao.vo.result.ActivePackageVO">
+--         select
+--         qp.id as packageId,
+--         qp.qr_type,
+--         bs.sku_name,
+--         bb.brand_name,
+--         bb.parent_brand_name,
+--         qp.qr_number
+--         from base_active ba
+--         left join base_active_qr_package_mapping baqpm on ba.id = baqpm.active_id
+--         left join qr_package qp on baqpm.qr_package_id = qp.id
+--         left join base_material bm on qp.material_id = bm.id
+--         left join base_sku bs on bm.sku_id = bs.id
+--         left join base_brand bb on bs.brand_code = bb.brand_code
+--         where ba.id = #{id}
+    </select>
 </mapper>