From 880e22a34173b51cd72a6a3c49538ec37265d6ef Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 29 Nov 2022 16:14:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B4=BB=E5=8A=A8=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TbsActivityTemplateController.java | 159 ++++++++++++++++++ .../serve/modules/tbs/entity/TbsActivity.java | 3 + .../tbs/entity/TbsActivityTemplate.java | 104 ++++++++++++ .../tbs/entity/TbsActivityTemplateRegion.java | 87 ++++++++++ .../modules/tbs/entity/bo/TbsActivityBo.java | 3 + .../tbs/entity/bo/TbsActivityTemplateBo.java | 67 ++++++++ .../tbs/entity/so/TbsActivityTemplateSo.java | 40 +++++ .../tbs/mapper/TbsActivityTemplateMapper.java | 14 ++ .../TbsActivityTemplateRegionMapper.java | 14 ++ .../TbsActivityTemplateRegionService.java | 18 ++ .../service/TbsActivityTemplateService.java | 17 ++ .../TbsActivityTemplateRegionServiceImpl.java | 67 ++++++++ .../impl/TbsActivityTemplateServiceImpl.java | 85 ++++++++++ 13 files changed, 678 insertions(+) create mode 100644 src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplateRegion.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/so/TbsActivityTemplateSo.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateMapper.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateRegionMapper.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateRegionServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java new file mode 100644 index 00000000..fba0a454 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java @@ -0,0 +1,159 @@ +package com.qs.serve.modules.tbs.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplateRegion; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateRegionService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.tbs.entity.so.TbsActivityTemplateSo; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityTemplateBo; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateService; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 预算 活动模板 + * @author YenHex + * @since 2022-11-29 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("tbs/activityTemplate") +public class TbsActivityTemplateController { + + private TbsActivityTemplateService tbsActivityTemplateService; + private TbsActivityTemplateRegionService tbsActivityTemplateRegionService; + + /** + * 列表 + * @param param + * @return + */ + @GetMapping("/list") + @PreAuthorize("hasRole('tbs:activityTemplate:query')") + public R> getList(TbsActivityTemplateSo param){ + TbsActivityTemplate entity = CopierUtil.copy(param,new TbsActivityTemplate()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + PageUtil.startPage(); + List list = tbsActivityTemplateService.list(lqw); + return R.ok(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + @PreAuthorize("hasRole('tbs:activityTemplate:query')") + public R> getPage(TbsActivityTemplateSo param){ + TbsActivityTemplate entity = CopierUtil.copy(param,new TbsActivityTemplate()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + PageUtil.startPage(); + List list = tbsActivityTemplateService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.Budget, title = "活动模板", biz = BizType.QUERY) + @PreAuthorize("hasRole('tbs:activityTemplate:query')") + public R getById(@PathVariable("id") String id){ + TbsActivityTemplate tbsActivityTemplate = tbsActivityTemplateService.getById(id); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsActivityTemplateRegion::getTemplateId,tbsActivityTemplate.getId()); + List templateRegionList = tbsActivityTemplateRegionService.list(lqw); + Map> templateRegionListMap = templateRegionList.stream().collect(Collectors.groupingBy(TbsActivityTemplateRegion::getType)); + tbsActivityTemplate.setSaleRegionList(templateRegionListMap.get("sale")); + tbsActivityTemplate.setBizRegionList(templateRegionListMap.get("biz")); + return R.ok(tbsActivityTemplate); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.Budget, title = "活动模板", biz = BizType.UPDATE) + @PreAuthorize("hasRole('tbs:activityTemplate:update')") + public R updateById(@RequestBody @Valid TbsActivityTemplateBo param){ + if(param.getId()==null){ + return R.error("id is null"); + } + tbsActivityTemplateService.modify(param); + return R.ok(); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.Budget, title = "活动模板", biz = BizType.INSERT) + @PreAuthorize("hasRole('tbs:activityTemplate:insert')") + public R save(@RequestBody @Valid TbsActivityTemplateBo param){ + if(param.getId()!=null){ + return R.error("id is not null"); + } + tbsActivityTemplateService.modify(param); + return R.ok(); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.Budget, title = "活动模板", biz = BizType.DELETE) + @PreAuthorize("hasRole('tbs:activityTemplate:delete')") + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = tbsActivityTemplateService.removeByIds(idsLong); + return R.isTrue(result); + } + + /** + * 通过供应商获取模板列表 + * @param id + * @return + */ + @GetMapping("/listBySupplier/{id}") + public R> listBySupplier(@PathVariable("id") String id){ + List templateRegions = tbsActivityTemplateRegionService.getTemplateIds(id); + List templateIds = templateRegions.stream().map(TbsActivityTemplateRegion::getTemplateId) + .distinct().collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(templateIds)){ + return R.ok(); + } + List templates = tbsActivityTemplateService.listByIds(templateIds); + return R.ok(templates); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java index 9c7f84de..e21a58cf 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java @@ -148,6 +148,9 @@ public class TbsActivity implements Serializable { @TableField(fill = FieldFill.UPDATE) private LocalDateTime releaseTime; + /** 模板值 */ + private String templateValue; + /** 产品类型 */ @TableField(exist = false) private String goodsType; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java new file mode 100644 index 00000000..42070aa7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java @@ -0,0 +1,104 @@ +package com.qs.serve.modules.tbs.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 活动模板 实体类 + * @author YenHex + * @since 2022-11-29 + */ +@Data +@TableName("tbs_activity_template") +public class TbsActivityTemplate implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 供应商id */ + @NotNull(message = "供应商id不能为空") + private Long supplierId; + + /** 模板名称 */ + @NotBlank(message = "模板名称不能为空") + @Length(max = 30,message = "模板名称长度不能超过30字") + private String templateName; + + /** 模板状态 */ + @NotNull(message = "模板状态不能为空") + private Integer templateState; + + /** 模板值 */ + @NotBlank(message = "模板值不能为空") + @Length(max = 6000,message = "模板值长度不能超过6000字") + private String templateValue; + + /** 销售区域标识:0-全部可见;1-部分可见;2-全部不可见 */ + @NotNull(message = "销售区域标识:0-全部可见;1-部分可见;2-全部不可见不能为空") + private Integer saleRegionFlag; + + /** 行政区域标识:0-全部可见;1-部分可见;2-全部不可 */ + @NotNull(message = "行政区域标识:0-全部可见;1-部分可见;2-全部不可不能为空") + private Integer bizRegionFlag; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + /** 销售区域 */ + @TableField(exist = false) + List saleRegionList; + + /** 行政区域 */ + @TableField(exist = false) + List bizRegionList; + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplateRegion.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplateRegion.java new file mode 100644 index 00000000..1fc8b182 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplateRegion.java @@ -0,0 +1,87 @@ +package com.qs.serve.modules.tbs.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 活动模板区域 实体类 + * @author YenHex + * @since 2022-11-29 + */ +@Data +@TableName("tbs_activity_template_region") +public class TbsActivityTemplateRegion implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 类型:sale、biz */ + @NotBlank(message = "类型:sale、biz不能为空") + private String type; + + /** 商品id */ + @NotNull(message = "商品id不能为空") + private Long templateId; + + /** 区域ID */ + @NotNull(message = "区域ID不能为空") + private String regionId; + + /** 区域名称 */ + @Length(max = 30,message = "区域名称长度不能超过30字") + private String regionName; + + /** 区域编码 */ + private String regionCode; + + /** 区域等级 */ + private Integer regionLevel; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityBo.java index fb7baf34..17a51091 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityBo.java @@ -78,5 +78,8 @@ public class TbsActivityBo implements Serializable { /** 客户详情可选:网点配比列表 */ List activityPointList; + /** 模板值 */ + private String templateValue; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java new file mode 100644 index 00000000..763466b5 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java @@ -0,0 +1,67 @@ +package com.qs.serve.modules.tbs.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 活动模板 Bo + * @author YenHex + * @since 2022-11-29 + */ +@Data +public class TbsActivityTemplateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 供应商id */ + @NotNull(message = "供应商id不能为空") + private Long supplierId; + + /** 模板名称 */ + @NotBlank(message = "模板名称不能为空") + @Length(max = 30,message = "模板名称长度不能超过30字") + private String templateName; + + /** 模板状态 */ + @NotNull(message = "模板状态不能为空") + private Integer templateState; + + /** 模板值 */ + @NotBlank(message = "模板值不能为空") + @Length(max = 6000,message = "模板值长度不能超过6000字") + private String templateValue; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 销售区域标识:0-全部可见;1-部分可见;2-全部不可见 */ + private Integer saleRegionFlag; + + /** 行政区域标识:0-全部可见;1-部分可见;2-全部不可 */ + private Integer bizRegionFlag; + + /** 销售区域id列表 */ + private List saleRegionIds; + + /** 销售区域id列表 */ + private List bizRegionIds; + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsActivityTemplateSo.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsActivityTemplateSo.java new file mode 100644 index 00000000..b33d0d09 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsActivityTemplateSo.java @@ -0,0 +1,40 @@ +package com.qs.serve.modules.tbs.entity.so; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; +import java.util.List; +/** + * 活动模板 查询参数 + * @author YenHex + * @since 2022-11-29 + */ +@Data +public class TbsActivityTemplateSo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 供应商id */ + private Long supplierId; + + /** 模板名称 */ + private String templateName; + + /** 模板状态 */ + private Integer templateState; + + /** 备注 */ + private String remark; +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateMapper.java new file mode 100644 index 00000000..a7bbf8d1 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.tbs.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; + +/** + * 活动模板 Mapper + * @author YenHex + * @date 2022-11-29 + */ +public interface TbsActivityTemplateMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateRegionMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateRegionMapper.java new file mode 100644 index 00000000..acc4d8ac --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityTemplateRegionMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.tbs.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplateRegion; + +/** + * 活动模板区域 Mapper + * @author YenHex + * @date 2022-11-29 + */ +public interface TbsActivityTemplateRegionMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java new file mode 100644 index 00000000..a91b7f83 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.tbs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplateRegion; + +import java.util.List; + +/** + * 活动模板区域 服务接口 + * @author YenHex + * @date 2022-11-29 + */ +public interface TbsActivityTemplateRegionService extends IService { + + List getTemplateIds(String supplierId); + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java new file mode 100644 index 00000000..db65d3ea --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java @@ -0,0 +1,17 @@ +package com.qs.serve.modules.tbs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityTemplateBo; + +/** + * 活动模板 服务接口 + * @author YenHex + * @date 2022-11-29 + */ +public interface TbsActivityTemplateService extends IService { + + void modify(TbsActivityTemplateBo templateBo); + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateRegionServiceImpl.java new file mode 100644 index 00000000..32b7376a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateRegionServiceImpl.java @@ -0,0 +1,67 @@ +package com.qs.serve.modules.tbs.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplateRegion; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateRegionService; +import com.qs.serve.modules.tbs.mapper.TbsActivityTemplateRegionMapper; + +import java.util.ArrayList; +import java.util.List; +/** + * 活动模板区域 服务实现类 + * @author YenHex + * @since 2022-11-29 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsActivityTemplateRegionServiceImpl extends ServiceImpl implements TbsActivityTemplateRegionService { + + private final BmsSupplierService supplierService; + + @Override + public List getTemplateIds(String supplierId){ + List saleRegionIds = new ArrayList<>(); + List bizRegionIds = new ArrayList<>(); + BmsSupplier supplier = supplierService.getById(supplierId); + if(supplier.getRegionFirst()!=null){ saleRegionIds.add(supplier.getRegionFirst()); } + if(supplier.getRegionSecond()!=null){ saleRegionIds.add(supplier.getRegionSecond()); } + if(supplier.getRegionThird()!=null){ saleRegionIds.add(supplier.getRegionThird()); } + if(supplier.getRegionFourthly()!=null){ saleRegionIds.add(supplier.getRegionFourthly()); } + + if(supplier.getRegion2First()!=null){ bizRegionIds.add(supplier.getRegion2First()); } + if(supplier.getRegion2Second()!=null){ bizRegionIds.add(supplier.getRegion2Second()); } + if(supplier.getRegion2Third()!=null){ bizRegionIds.add(supplier.getRegion2Third()); } + if(supplier.getRegion2Fourthly()!=null){ bizRegionIds.add(supplier.getRegion2Fourthly()); } + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if(CollectionUtil.isNotEmpty(saleRegionIds) && bizRegionIds.size()==0 ){ + lqw.eq(TbsActivityTemplateRegion::getType,"sale") + .in(TbsActivityTemplateRegion::getRegionId,saleRegionIds); + }else if(CollectionUtil.isNotEmpty(bizRegionIds) && saleRegionIds.size()==0 ){ + lqw.eq(TbsActivityTemplateRegion::getType,"biz") + .in(TbsActivityTemplateRegion::getRegionId,bizRegionIds); + }else if (CollectionUtil.isNotEmpty(saleRegionIds)&&CollectionUtil.isNotEmpty(bizRegionIds)){ + lqw.and( + a1->a1.eq(TbsActivityTemplateRegion::getType,"sale") + .in(TbsActivityTemplateRegion::getRegionId,saleRegionIds) + ).or().and( + a1->a1.eq(TbsActivityTemplateRegion::getType,"biz") + .in(TbsActivityTemplateRegion::getRegionId,bizRegionIds) + ); + }else { + return new ArrayList<>(); + } + return this.list(lqw); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateServiceImpl.java new file mode 100644 index 00000000..a3e18a5a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityTemplateServiceImpl.java @@ -0,0 +1,85 @@ +package com.qs.serve.modules.tbs.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.modules.bms.entity.BmsRegion; +import com.qs.serve.modules.bms.entity.BmsRegion2; +import com.qs.serve.modules.bms.service.BmsRegion2Service; +import com.qs.serve.modules.bms.service.BmsRegionService; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplateRegion; +import com.qs.serve.modules.tbs.entity.bo.TbsActivityTemplateBo; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateRegionService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateService; +import com.qs.serve.modules.tbs.mapper.TbsActivityTemplateMapper; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 活动模板 服务实现类 + * @author YenHex + * @since 2022-11-29 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsActivityTemplateServiceImpl extends ServiceImpl implements TbsActivityTemplateService { + + private final TbsActivityTemplateRegionService templateRegionService; + private final BmsRegionService saleRegionService; + private final BmsRegion2Service bizRegionService; + + @Override + public void modify(TbsActivityTemplateBo templateBo) { + TbsActivityTemplate template = CopierUtil.copy(templateBo,new TbsActivityTemplate()); + this.saveOrUpdate(template); + //移除历史 + LambdaQueryWrapper rmRegion = new LambdaQueryWrapper<>(); + rmRegion.eq(TbsActivityTemplateRegion::getTemplateId,template.getId()); + templateRegionService.remove(rmRegion); + //保存区域 + List templateRegionList = new ArrayList<>(); + if(templateBo.getSaleRegionFlag() != null && templateBo.getSaleRegionFlag().equals(1) + && CollectionUtil.isNotEmpty(templateBo.getSaleRegionIds())){ + List saleRegionList = saleRegionService.listByIds(templateBo.getSaleRegionIds()); + List templateRegions = saleRegionList.stream().map(reg->{ + TbsActivityTemplateRegion templateRegion = new TbsActivityTemplateRegion(); + templateRegion.setTemplateId(template.getId()); + templateRegion.setType("sale"); + templateRegion.setRegionId(reg.getId()); + templateRegion.setRegionId(reg.getName()); + templateRegion.setRegionCode(reg.getCode()); + templateRegion.setRegionLevel(reg.getLevel()); + return templateRegion; + }).collect(Collectors.toList()); + templateRegionList.addAll(templateRegions); + } + if(templateBo.getBizRegionFlag() != null && templateBo.getBizRegionFlag().equals(1) + && CollectionUtil.isNotEmpty(templateBo.getBizRegionIds())){ + List bizRegionList = bizRegionService.listByIds(templateBo.getBizRegionIds()); + List templateRegions = bizRegionList.stream().map(reg->{ + TbsActivityTemplateRegion templateRegion = new TbsActivityTemplateRegion(); + templateRegion.setTemplateId(template.getId()); + templateRegion.setType("biz"); + templateRegion.setRegionId(reg.getId()); + templateRegion.setRegionName(reg.getName()); + templateRegion.setRegionCode(reg.getCode()); + templateRegion.setRegionLevel(reg.getLevel()); + return templateRegion; + }).collect(Collectors.toList()); + templateRegionList.addAll(templateRegions); + } + if(CollectionUtil.isNotEmpty(templateRegionList)){ + templateRegionService.saveBatch(templateRegionList); + } + } + +} +