ソースを参照

根据业务修改 编辑活动(待审核/审核拒绝 初次) 接口
新增 修改码活动(已审核通过) 接口

v_HuilingDeng 3 年 前
コミット
985d6f6e29

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

@@ -40,7 +40,7 @@ public class ActiveController {
         return BaseResponse.create();
     }
 
-    @ApiOperation("编辑活动")
+    @ApiOperation("编辑活动(待审核/审核拒绝 初次)")
     @PostMapping("updateActive")
     public BaseResponse updateActive(@Validated @RequestBody UpdateActiveReq updateActiveReq) throws Exception{
         //编辑活动
@@ -49,6 +49,15 @@ public class ActiveController {
         return BaseResponse.create();
     }
 
+    @ApiOperation("修改码活动(已审核通过)")
+    @PostMapping("resubmitActive")
+    public BaseResponse resubmitActive(@Validated @RequestBody ResubmitActiveReq req) throws Exception{
+        //编辑活动
+        activeService.resubmitActive(req);
+        //包装出参
+        return BaseResponse.create();
+    }
+
     @ApiOperation("分页查询活动")
     @GetMapping("listActive")
     public BaseResponse<ListActiveRes> listActive(@Validated ListActiveReq listActiveReq) throws Exception{

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

@@ -33,7 +33,7 @@ public class BaseActiveModifyApplyQrPackageMapping {
 	@Schema(name = "码包id")
     private Long qrPackageId;
 
-	@Schema(name = "修改类型: 1-新增 2-删除 ")
+	@Schema(name = "修改类型: 1-新增 2-删除")
     private Integer modifyType;
 
 	@Schema(name = "创建时间")

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

@@ -0,0 +1,50 @@
+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/31 14:33
+ * @Description: 码活动关联码包 修改类型
+ */
+@Getter
+@AllArgsConstructor
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
+public enum ActiveModifyTypeEnum {
+
+    //修改类型: 1-新增 2-删除 3-未修改
+    ADD(1,"新增"),
+    DELETE(2,"删除");
+
+
+    @EnumValue
+    private Integer code;
+    private String name;
+
+    private static final Set<ActiveModifyTypeEnum> ALL = EnumSet.allOf(ActiveModifyTypeEnum.class);
+
+    public static String getName(Integer code) {
+        return ALL.stream()
+                .filter(o -> o.code.equals(code))
+                .map(ActiveModifyTypeEnum::getName)
+                .findAny().orElse(null);
+    }
+
+    public static Integer getCode(String name) {
+        return ALL.stream()
+                .filter(o -> o.name.equals(name))
+                .map(ActiveModifyTypeEnum::getCode)
+                .findAny().orElse(null);
+    }
+
+    public boolean is(Integer code) {
+        return getCode().equals(code);
+    }
+
+}

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

@@ -1,7 +1,11 @@
 package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.BaseActiveModifyApplyQrPackageMapping;
+import com.abi.qms.platform.dto.req.BatchInsertActiveModifyApplyQrPackageColumnReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,4 +16,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BaseActiveModifyApplyQrPackageMappingMapper extends BaseMapper<BaseActiveModifyApplyQrPackageMapping> {
 
+    int batchInsert(@Param("param") BatchInsertActiveModifyApplyQrPackageColumnReq param);
+
 }

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

@@ -0,0 +1,50 @@
+package com.abi.qms.platform.dto.req;
+
+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/31 11:53
+ * @Description: 批量插入活动编辑申请码包关联子表 入参
+ */
+@Data
+@ApiModel
+public class BatchInsertActiveModifyApplyQrPackageColumnReq implements Serializable {
+
+    @ApiModelProperty("修改申请表id")
+    private Long applyId;
+
+    @ApiModelProperty("活动id")
+    private Long activeId;
+
+    @ApiModelProperty("更新用户id")
+    private Long updateBy;
+
+    @ApiModelProperty("创建用户id")
+    private Long createBy;
+
+    @ApiModelProperty("码包id")
+    private List<PackageAndModifyType> packageAndModifyTypeList;
+
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "BatchInsertActiveModifyApplyQrPackageColumnReq_PackageAndModifyType")
+    public static class PackageAndModifyType implements Serializable {
+        @ApiModelProperty("码包id")
+        private Long qrPackageId;
+
+        @ApiModelProperty("修改类型")
+        private Integer modifyType;
+    }
+}

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

@@ -0,0 +1,50 @@
+package com.abi.qms.platform.dto.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+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 Eurus
+ * @date 2021/5/31 14:43
+ * @Description: 修改码活动(已审核通过) 入参
+ */
+@Data
+@ApiModel
+public class ResubmitActiveReq implements Serializable {
+
+    @ApiModelProperty(value = "码活动id")
+    private Long activeId;
+
+    @ApiModelProperty(value = "活动名称")
+    private String activeName;
+
+    @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
+    private Integer activeType;
+
+    @ApiModelProperty(value = "活动开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime beginTime;
+
+    @ApiModelProperty(value = "活动结束日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "品牌code")
+    private List<String> brandCodeList;
+
+    @ApiModelProperty(value = "活动域名")
+    private String activeUrl;
+
+    @ApiModelProperty(value = "关联码包(新增)")
+    private List<Long> qrPackageIdAddList;
+
+    @ApiModelProperty(value = "关联码包(删除)")
+    private List<Long> qrPackageIdDeleteList;
+}

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

@@ -41,8 +41,10 @@ public class UpdateActiveReq implements Serializable {
     @ApiModelProperty(value = "活动域名")
     private String activeUrl;
 
-    @NotNull(message = "关联码包为空")
-    @ApiModelProperty(value = "关联码包")
-    private List<Long> qrPackageIdList;
+    @ApiModelProperty(value = "关联码包(新增)")
+    private List<Long> qrPackageIdAddList;
+
+    @ApiModelProperty(value = "关联码包(删除)")
+    private List<Long> qrPackageIdDeleteList;
 
 }

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

@@ -30,6 +30,12 @@ public interface ActiveService{
      */
     void updateActive(UpdateActiveReq updateActiveReq);
 
+    /**
+     * 修改码活动(已审核通过)
+     * @param req
+     */
+    void resubmitActive(ResubmitActiveReq req);
+
     /**
      * 分页查询活动
      * @param listActiveReq

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

@@ -1,17 +1,12 @@
 package com.abi.qms.platform.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
-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.entity.QrPackage;
+import com.abi.qms.platform.dao.entity.*;
 import com.abi.qms.platform.dao.enums.ActiveAuditStatusEnum;
+import com.abi.qms.platform.dao.enums.ActiveModifyTypeEnum;
 import com.abi.qms.platform.dao.enums.QrPackageApplyStatusEnum;
 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.mapper.QrPackageMapper;
+import com.abi.qms.platform.dao.mapper.*;
 import com.abi.qms.platform.dao.vo.result.ActivePackageVO;
 import com.abi.qms.platform.dao.vo.result.PackageActiveSearchVO;
 import com.abi.qms.platform.dto.req.*;
@@ -60,6 +55,12 @@ public class ActiveServiceImpl implements ActiveService {
 
     @Autowired
     private QrPackageMapper qrPackageMapper;
+
+    @Autowired
+    private BaseActiveModifyApplyMapper baseActiveModifyApplyMapper;
+
+    @Autowired
+    private BaseActiveModifyApplyQrPackageMappingMapper baseActiveModifyApplyQrPackageMappingMapper;
     
     /**
      * 新增活动
@@ -108,12 +109,17 @@ public class ActiveServiceImpl implements ActiveService {
      * 编辑活动
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateActive(UpdateActiveReq req){
 
         //1-查询活动
         BaseActive active = baseActiveMapper.selectById(req.getId());
         AssertUtil.isNull(active,"活动不存在");
 
+        if(ActiveAuditStatusEnum.REVIEW_PASS.is(active.getAuditStatus())){
+            throw new BusinessException("该数据已审核通过,请调用重新提交审核的接口。");
+        }
+
         //2-修改活动
         Long userId = userUtil.getUser().getId();
         active.setActiveName(req.getActiveName());
@@ -132,7 +138,50 @@ public class ActiveServiceImpl implements ActiveService {
 
 
         //删除添加关联的码包,重新插入
-        updateActivePackageMappiing(req.getId(), req.getQrPackageIdList());
+        updateActivePackageMappiing(req.getId(), req.getQrPackageIdAddList(), req.getQrPackageIdDeleteList());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void resubmitActive(ResubmitActiveReq req) {
+        //1-查询活动
+        BaseActive active = baseActiveMapper.selectById(req.getActiveId());
+        AssertUtil.isNull(active,"活动不存在");
+
+        if(ActiveAuditStatusEnum.REVIEW_PASS.is(active.getAuditStatus())){
+            throw new BusinessException("该数据已审核通过,请调用重新提交审核的接口。");
+        }
+
+        //删除原有申请单数据
+        UpdateWrapper<BaseActiveModifyApply> basmaUpdate = new UpdateWrapper<>();
+        basmaUpdate.set("is_delete", 1)
+                .eq("active_id", req.getActiveId());
+        baseActiveModifyApplyMapper.update(null, basmaUpdate);
+        UpdateWrapper<BaseActiveModifyApplyQrPackageMapping> basmamUpdate = new UpdateWrapper<>();
+        basmamUpdate.set("is_delete", 1)
+                .eq("active_id", req.getActiveId());
+        baseActiveModifyApplyQrPackageMappingMapper.update(null, basmamUpdate);
+
+        //新增活动申请单
+        Long userId = userUtil.getUser().getId();
+        BaseActiveModifyApply baseActiveModifyApply = new BaseActiveModifyApply();
+        baseActiveModifyApply.setActiveId(req.getActiveId());
+        baseActiveModifyApply.setActiveName(req.getActiveName());
+        baseActiveModifyApply.setActiveType(req.getActiveType());
+        baseActiveModifyApply.setAuditStatus(ActiveAuditStatusEnum.WAIT_REVIEW.getCode());
+        baseActiveModifyApply.setApplyTime(LocalDateTime.now());
+        baseActiveModifyApply.setApplyUserId(userId);
+        baseActiveModifyApply.setApplyUserName(userUtil.getUser().getUserName());
+        baseActiveModifyApply.setBeginTime(req.getBeginTime());
+        baseActiveModifyApply.setEndTime(req.getEndTime());
+        baseActiveModifyApply.setBrandCode(CollectionUtil.isNotEmpty(req.getBrandCodeList()) ? String.join(",", req.getBrandCodeList()) : null);
+        baseActiveModifyApply.setActiveUrl(req.getActiveUrl());
+        baseActiveModifyApply.setUpdateBy(userId);
+        baseActiveModifyApply.setCreateBy(userId);
+        baseActiveModifyApplyMapper.insert(baseActiveModifyApply);
+
+        //批量插入 活动编辑申请码包关联子表
+        batchInsertActiveModifyApplyPackageMappiing(baseActiveModifyApply.getId(), req.getActiveId(), req.getQrPackageIdAddList(), req.getQrPackageIdDeleteList());
     }
 
     /**
@@ -213,6 +262,7 @@ public class ActiveServiceImpl implements ActiveService {
      * 活动启用
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void enableActive(EnableActiveReq req){
         List<Long> ids = req.getIds();
 
@@ -236,6 +286,7 @@ public class ActiveServiceImpl implements ActiveService {
      * 活动禁用
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void disableActive(DisableActiveReq req){
         List<Long> ids = req.getIds();
 
@@ -291,36 +342,33 @@ public class ActiveServiceImpl implements ActiveService {
     }
 
 
-    private void updateActivePackageMappiing(Long activeId, List<Long> qrPackageIdList){
-        //查询已存在的码活动和码包的关联
-        QueryWrapper<BaseActiveQrPackageMapping> baseActiveQrPackageMappingQW = new QueryWrapper<>();
-        baseActiveQrPackageMappingQW.eq("active_id", activeId);
-        baseActiveQrPackageMappingQW.eq("is_delete", 0);
-        List<BaseActiveQrPackageMapping> baseActiveQrPackageMappings = baseActiveQrPackageMappingMapper.selectList(baseActiveQrPackageMappingQW);
-        //聚合绑定的码包
-        List<Long> oldPackageIdList = baseActiveQrPackageMappings.stream().map(BaseActiveQrPackageMapping::getQrPackageId).collect(Collectors.toList());
-
-        //排除要添加的关联码包,和要删除的关联码包
-        List<Long> deleteBatch = new ArrayList<>(oldPackageIdList);
-        deleteBatch.removeAll(qrPackageIdList);
-        List<Long> addBatch = new ArrayList<>(qrPackageIdList);
-        addBatch.removeAll(oldPackageIdList);
+    /**
+     * 更新码活动和码包关联子表
+     * @param activeId
+     * @param qrPackageIdAddList
+     */
+    private void updateActivePackageMappiing(Long activeId, List<Long> qrPackageIdAddList, List<Long> qrPackageIdDeleteList){
+        //添加和删除的去重
+        List<Long> distinctBatch = new ArrayList<>(qrPackageIdAddList);
+        distinctBatch.retainAll(qrPackageIdAddList);
+        qrPackageIdAddList.removeAll(distinctBatch);
+        qrPackageIdDeleteList.removeAll(distinctBatch);
 
         Long loginUserId = userUtil.getUser().getId();
 
         //批量删除
-        if(CollectionUtil.isNotEmpty(deleteBatch)){
+        if(CollectionUtil.isNotEmpty(qrPackageIdDeleteList)){
             UpdateWrapper<BaseActiveQrPackageMapping> aqpmQW = new UpdateWrapper<>();
             aqpmQW.set("is_delete", 1)
                     .set("update_by", loginUserId)
                     .eq("active_id", activeId)
-                    .in("qr_package_id", deleteBatch);
+                    .in("qr_package_id", qrPackageIdDeleteList);
             baseActiveQrPackageMappingMapper.update(null, aqpmQW);
         }
 
         //批量添加
-        if(CollectionUtil.isNotEmpty(addBatch)){
-            List<QrPackage> qrPackages = searchReviewPassPackageByPackageIds(addBatch);
+        if(CollectionUtil.isNotEmpty(qrPackageIdAddList)){
+            List<QrPackage> qrPackages = searchReviewPassPackageByPackageIds(qrPackageIdAddList);
             List<Long> qrPackageIdsAdd = qrPackages.stream().map(QrPackage::getId).collect(Collectors.toList());
             if(CollectionUtil.isNotEmpty(qrPackageIdsAdd)) {
                 baseActiveQrPackageMappingMapper.batchInsert(activeId, qrPackageIdsAdd, loginUserId);
@@ -341,4 +389,42 @@ public class ActiveServiceImpl implements ActiveService {
         return qrPackageMapper.selectList(qrPackageQueryWrapper);
     }
 
+    /**
+     * 批量插入 活动编辑申请码包关联子表
+     * @param activeId
+     * @param qrPackageIdAddList
+     */
+    private void batchInsertActiveModifyApplyPackageMappiing(Long applyId, Long activeId, List<Long> qrPackageIdAddList, List<Long> qrPackageIdDeleteList){
+        //添加和删除的去重
+        List<Long> distinctBatch = new ArrayList<>(qrPackageIdAddList);
+        distinctBatch.retainAll(qrPackageIdAddList);
+        qrPackageIdAddList.removeAll(distinctBatch);
+        qrPackageIdDeleteList.removeAll(distinctBatch);
+
+        List<BatchInsertActiveModifyApplyQrPackageColumnReq.PackageAndModifyType> batchInsertamaqpcrpam = new ArrayList<>();
+        Long loginUserId = userUtil.getUser().getId();
+        qrPackageIdAddList.forEach(qrPackageIdAdd -> {
+            BatchInsertActiveModifyApplyQrPackageColumnReq.PackageAndModifyType packageAndModifyType = new BatchInsertActiveModifyApplyQrPackageColumnReq.PackageAndModifyType();
+            packageAndModifyType.setQrPackageId(qrPackageIdAdd);
+            packageAndModifyType.setModifyType(ActiveModifyTypeEnum.ADD.getCode());
+            batchInsertamaqpcrpam.add(packageAndModifyType);
+        });
+
+        qrPackageIdDeleteList.forEach(qrPackageIdDelete -> {
+            BatchInsertActiveModifyApplyQrPackageColumnReq.PackageAndModifyType packageAndModifyType = new BatchInsertActiveModifyApplyQrPackageColumnReq.PackageAndModifyType();
+            packageAndModifyType.setQrPackageId(qrPackageIdDelete);
+            packageAndModifyType.setModifyType(ActiveModifyTypeEnum.DELETE.getCode());
+            batchInsertamaqpcrpam.add(packageAndModifyType);
+        });
+
+        //批量插入
+        BatchInsertActiveModifyApplyQrPackageColumnReq columnReq = new BatchInsertActiveModifyApplyQrPackageColumnReq();
+        columnReq.setApplyId(applyId);
+        columnReq.setActiveId(activeId);
+        columnReq.setCreateBy(loginUserId);
+        columnReq.setUpdateBy(loginUserId);
+        columnReq.setPackageAndModifyTypeList(batchInsertamaqpcrpam);
+        baseActiveModifyApplyQrPackageMappingMapper.batchInsert(columnReq);
+    }
+
 }

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

@@ -21,4 +21,10 @@
         id, apply_id, active_id, qr_package_id, modify_type, create_time, create_by, update_time, update_by, is_delete
     </sql>
 
+    <insert id="batchInsert">
+        INSERT INTO base_active_modify_apply_qr_package_mapping (apply_id, active_id, qr_package_id, modify_type, create_by, update_by) VALUES
+        <foreach item="item" index="index" collection="param.packageAndModifyTypeList" separator=",">
+            ( #{param.applyId}, #{param.activeId}, #{item.qrPackageId}, #{item.modifyType}, #{param.createBy}, #{param.updateBy} )
+        </foreach>
+    </insert>
 </mapper>