From 621960175e9c147d9a0c64348fd39afc8f1ad941 Mon Sep 17 00:00:00 2001 From: yqy Date: Wed, 15 Jun 2022 09:40:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=A8=A1=E6=9D=BF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9(=E6=9A=82=E6=9C=AA=E6=B5=8B?= =?UTF-8?q?=E8=AF=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/domain/PayFatherTemplate.java | 61 ++++++++++ .../modules/system/domain/PayTemplate.java | 5 + .../PayFatherTemplateRepository.java | 10 ++ .../repository/PayTemplateRepository.java | 7 ++ .../rest/PayFatherTemplateController.java | 56 +++++++++ .../system/rest/PayTemplateController.java | 2 +- .../service/PayFatherTemplateService.java | 36 ++++++ .../dto/PayFatherTemplateQueryCriteria.java | 20 ++++ .../impl/PayFatherTemplateServiceImpl.java | 112 ++++++++++++++++++ .../service/impl/PayTemplateServiceImpl.java | 36 +++++- 10 files changed, 339 insertions(+), 6 deletions(-) create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayFatherTemplate.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayFatherTemplateRepository.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayFatherTemplateController.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayFatherTemplateService.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/PayFatherTemplateQueryCriteria.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayFatherTemplateServiceImpl.java diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayFatherTemplate.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayFatherTemplate.java new file mode 100644 index 00000000..a7cb98ca --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayFatherTemplate.java @@ -0,0 +1,61 @@ +package com.baiye.modules.system.domain; + +import com.baiye.valid.AddGroup; +import com.baiye.valid.UpdateGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.annotations.CreationTimestamp; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author YQY + * @date : 2022/06/06 + */ +@Data +@Entity +@Table(name = "tb_pay_father_template") +@EntityListeners(AuditingEntityListener.class) +public class PayFatherTemplate implements Serializable { + + private static final long serialVersionUID = 8623354712013889005L; + + @Id + @Column(name = "id") + @ApiModelProperty(value = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + @NotNull(message = "ID不能为空", groups = {UpdateGroup.class}) + private Long id; + + @Column(name = "name") + @ApiModelProperty(value = "名称") + @NotNull(message = "模板名称不能为空", groups = {AddGroup.class}) + private String name; + + @Column(name = "double_call_fee") + @NotNull(message = "双呼费用不能为空", groups = {AddGroup.class}) + @ApiModelProperty(value = "双呼费用") + private Double doubleCallFee; + + @Column(name = "roll_call_fee") + @NotNull(message = "点呼费用不能为空", groups = {AddGroup.class}) + @ApiModelProperty(value = "点呼费用") + private Double rollCallFee; + + @Column(name = "status") + @ApiModelProperty(value = "状态: 0:可用 1:禁用") + private Integer status; + + @CreationTimestamp + @Column(name = "create_time") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @Transient + private List payTemplateList; +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayTemplate.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayTemplate.java index f777ab2a..61200b92 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayTemplate.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayTemplate.java @@ -41,6 +41,11 @@ public class PayTemplate implements Serializable { @ApiModelProperty(value = "套餐等级") private Integer levelNumber; + @Column(name = "father_template_id") + @ApiModelProperty(value = "父ID") + @NotNull(message = "父ID不能为空", groups = {AddGroup.class}) + private Long fatherTemplateId; + @Column(name = "amount") @ApiModelProperty(value = "金额") @NotNull(message = "金额不能为空", groups = {AddGroup.class}) diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayFatherTemplateRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayFatherTemplateRepository.java new file mode 100644 index 00000000..fe6035cc --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayFatherTemplateRepository.java @@ -0,0 +1,10 @@ +package com.baiye.modules.system.repository; + +import com.baiye.modules.system.domain.PayFatherTemplate; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +@Repository +public interface PayFatherTemplateRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayTemplateRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayTemplateRepository.java index 0fe90ff4..f8464700 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayTemplateRepository.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayTemplateRepository.java @@ -5,10 +5,17 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Set; @Repository public interface PayTemplateRepository extends JpaRepository, JpaSpecificationExecutor { Set findByStatus(int zeroNumber); + + Set findByFatherTemplateIdIn(Set templateIds); + + Set findByFatherTemplateIdInAndStatus(Set templateIds, int status); + + Set findByFatherTemplateIdAndStatus(Long templateIds, int status); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayFatherTemplateController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayFatherTemplateController.java new file mode 100644 index 00000000..35b9a80e --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayFatherTemplateController.java @@ -0,0 +1,56 @@ +package com.baiye.modules.system.rest; + +import com.baiye.http.CommonResponse; +import com.baiye.modules.system.domain.PayFatherTemplate; +import com.baiye.modules.system.domain.PayTemplate; +import com.baiye.modules.system.service.PayFatherTemplateService; +import com.baiye.modules.system.service.dto.LabelOrganizeQueryCriteria; +import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria; +import com.baiye.valid.AddGroup; +import com.baiye.valid.UpdateGroup; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + +@Api(tags = "支付模板管理") +@RestController +@RequestMapping("/api/payFatherTemplate") +@RequiredArgsConstructor +public class PayFatherTemplateController { + + private final PayFatherTemplateService payFatherTemplateService; + + @ApiOperation("新增模板") + @PostMapping("/add") + public CommonResponse add(@Validated({AddGroup.class}) @RequestBody PayFatherTemplate payFatherTemplate){ + payFatherTemplateService.add(payFatherTemplate); + return CommonResponse.createBySuccess(); + } + + @ApiOperation("更新模板状态") + @PostMapping("/update") + public CommonResponse update(@Validated({UpdateGroup.class}) @RequestBody PayFatherTemplate payFatherTemplate){ + payFatherTemplateService.update(payFatherTemplate); + return CommonResponse.createBySuccess(); + } + + @ApiOperation("删除模板") + @DeleteMapping("/del") + public CommonResponse del(@RequestBody Set ids) { + payFatherTemplateService.del(ids); + return CommonResponse.createBySuccess(); + } + + @ApiOperation("查询模板列表(分页,返回数据中插入了套餐信息)") + @GetMapping("/queryAll") + public ResponseEntity queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable){ + return new ResponseEntity<>(payFatherTemplateService.queryAll(payFatherTemplateQueryCriteria, pageable), HttpStatus.OK); + } +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayTemplateController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayTemplateController.java index e2a503df..40e59291 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayTemplateController.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/PayTemplateController.java @@ -13,7 +13,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -@Api(tags = "支付模板管理") +@Api(tags = "支付套餐管理") @RestController @RequestMapping("/api/payTemplate") @RequiredArgsConstructor diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayFatherTemplateService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayFatherTemplateService.java new file mode 100644 index 00000000..036dd493 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayFatherTemplateService.java @@ -0,0 +1,36 @@ +package com.baiye.modules.system.service; + +import com.baiye.modules.system.domain.PayFatherTemplate; +import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria; +import org.springframework.data.domain.Pageable; + +import java.util.Set; + +public interface PayFatherTemplateService { + + /** + * 新增 + * @param payFatherTemplate + */ + void add(PayFatherTemplate payFatherTemplate); + + /** + * 修改状态 + * @param payFatherTemplate + */ + void update(PayFatherTemplate payFatherTemplate); + + /** + * 批量删除 + * @param ids + */ + void del(Set ids); + + /** + * 查询模板列表(分页,返回数据中插入了套餐信息) + * @param payFatherTemplateQueryCriteria + * @param pageable + * @return + */ + Object queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable); +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/PayFatherTemplateQueryCriteria.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/PayFatherTemplateQueryCriteria.java new file mode 100644 index 00000000..caafb286 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/PayFatherTemplateQueryCriteria.java @@ -0,0 +1,20 @@ +package com.baiye.modules.system.service.dto; + +import com.baiye.annotation.Query; +import lombok.Data; + +/** + * 支付模板公共查询类 + */ +@Data +public class PayFatherTemplateQueryCriteria { + + @Query + private Long id; + + @Query + private Integer status; + + @Query(blurry = "name") + private String name; +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayFatherTemplateServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayFatherTemplateServiceImpl.java new file mode 100644 index 00000000..f4652312 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayFatherTemplateServiceImpl.java @@ -0,0 +1,112 @@ +package com.baiye.modules.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.modules.system.domain.LabelOrganize; +import com.baiye.modules.system.domain.PayFatherTemplate; +import com.baiye.modules.system.domain.PayTemplate; +import com.baiye.modules.system.repository.PayFatherTemplateRepository; +import com.baiye.modules.system.repository.PayTemplateRepository; +import com.baiye.modules.system.service.PayFatherTemplateService; +import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria; +import com.baiye.util.PageUtil; +import com.baiye.util.QueryHelp; +import com.baiye.util.SecurityUtils; +import com.baiye.util.StringUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.DecimalFormat; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @author yqy + * @date + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class PayFatherTemplateServiceImpl implements PayFatherTemplateService { + + private final PayFatherTemplateRepository payFatherTemplateRepository; + private final PayTemplateRepository payTemplateRepository; + + @Override + @Transactional(rollbackFor = Exception.class) + public void add(PayFatherTemplate payFatherTemplate) { + payFatherTemplate.setStatus(DefaultNumberConstants.ZERO_NUMBER); + String doubleCall = new DecimalFormat("#.00").format(payFatherTemplate.getDoubleCallFee()); + String rollCall = new DecimalFormat("#.00").format(payFatherTemplate.getRollCallFee()); + payFatherTemplate.setDoubleCallFee(Double.parseDouble(doubleCall)); + payFatherTemplate.setRollCallFee(Double.parseDouble(rollCall)); + payFatherTemplateRepository.save(payFatherTemplate); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(PayFatherTemplate payFatherTemplate) { + Integer status = payFatherTemplate.getStatus(); + String name = payFatherTemplate.getName(); + Double doubleCallFee = payFatherTemplate.getDoubleCallFee(); + Double rollCallFee = payFatherTemplate.getRollCallFee(); + PayFatherTemplate updateTemplate = payFatherTemplateRepository.findById(payFatherTemplate.getId()).orElseGet(PayFatherTemplate::new); + if (status != null){ + updateTemplate.setStatus(status); + } + if (StringUtils.isNotBlank(name)){ + updateTemplate.setName(name); + } + if (doubleCallFee != null){ + updateTemplate.setDoubleCallFee(doubleCallFee); + } + if (rollCallFee != null){ + updateTemplate.setRollCallFee(rollCallFee); + } + payFatherTemplateRepository.save(updateTemplate); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void del(Set ids) { + Set payTemplateSet = payTemplateRepository.findByFatherTemplateIdInAndStatus(ids, DefaultNumberConstants.ZERO_NUMBER); + if (CollUtil.isNotEmpty(payTemplateSet)){ + payTemplateSet.forEach(ps -> ps.setStatus(DefaultNumberConstants.ONE_NUMBER)); + payTemplateRepository.saveAll(payTemplateSet); + } + List payFatherTemplateList = payFatherTemplateRepository.findAllById(ids); + if (CollUtil.isNotEmpty(payFatherTemplateList)){ + payFatherTemplateList.forEach(pt -> pt.setStatus(DefaultNumberConstants.ONE_NUMBER)); + payFatherTemplateRepository.saveAll(payFatherTemplateList); + } + //删除逻辑下面套餐全部更新删除,TODO:公司绑定ID重新修改?强制一个新的??? + } + + @Override + public Object queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable) { + PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "createTime")); + payFatherTemplateQueryCriteria.setStatus(DefaultNumberConstants.ZERO_NUMBER); + Page all = payFatherTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, payFatherTemplateQueryCriteria, criteriaBuilder), pageRequest); + if (CollUtil.isNotEmpty(all)){ + Set templateIds = all.stream().map(PayFatherTemplate::getId).collect(Collectors.toSet()); + Set payTemplates = payTemplateRepository.findByFatherTemplateIdInAndStatus(templateIds, DefaultNumberConstants.ZERO_NUMBER); + Map> fatherGroupMap = payTemplates.stream().collect(Collectors.groupingBy(PayTemplate::getFatherTemplateId)); + for (PayFatherTemplate payFatherTemplate : all) { + Long id = payFatherTemplate.getId(); + if (fatherGroupMap.containsKey(id)){ + payFatherTemplate.setPayTemplateList(fatherGroupMap.get(id)); + } + } + } + return PageUtil.toPage(all); + } +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateServiceImpl.java index af8124d6..1e384aa3 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateServiceImpl.java @@ -4,10 +4,13 @@ import cn.hutool.core.collection.CollUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.modules.system.domain.PayTemplate; import com.baiye.modules.system.repository.PayTemplateRepository; +import com.baiye.modules.system.service.CompanyService; import com.baiye.modules.system.service.PayTemplateService; +import com.baiye.modules.system.service.dto.CompanyDto; +import com.baiye.util.SecurityUtils; +import com.baiye.util.StringUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.hibernate.annotations.Cache; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -28,6 +31,7 @@ import java.util.Set; public class PayTemplateServiceImpl implements PayTemplateService { private final PayTemplateRepository payTemplateRepository; + private final CompanyService companyService; @Value("${payTemplate.base_fee}") private Double baseFee; @Value("${payTemplate.beyond_fee}") @@ -49,20 +53,42 @@ public class PayTemplateServiceImpl implements PayTemplateService { @CacheEvict(value = "templateCache", key = "'template:' + #p0.getId()") public void updatePayTemplate(PayTemplate payTemplate) { Integer status = payTemplate.getStatus(); + String packageName = payTemplate.getPackageName(); + Double amount = payTemplate.getAmount(); + Integer callDuration = payTemplate.getCallDuration(); + Integer packageDay = payTemplate.getPackageDay(); PayTemplate updateTemplate = payTemplateRepository.findById(payTemplate.getId()).orElseGet(PayTemplate::new); if (status != null){ updateTemplate.setStatus(status); } + if (StringUtils.isNotBlank(packageName)){ + updateTemplate.setPackageName(packageName); + } + if (amount != null){ + updateTemplate.setAmount(amount); + } + if (callDuration != null){ + updateTemplate.setCallDuration(callDuration); + } + if (packageDay != null){ + updateTemplate.setPackageDay(packageDay); + } payTemplateRepository.save(updateTemplate); } @Override public Object query() { + //1、查询公司的模板 + CompanyDto company = companyService.findCompanyById(SecurityUtils.getCurrentUserId()); + Long fatherTemplateId = company.getTemplateId(); + //2、查询 + Set payTemplates = payTemplateRepository.findByFatherTemplateIdAndStatus(fatherTemplateId, DefaultNumberConstants.ZERO_NUMBER); HashMap map = new HashMap<>(); - Set payTemplates = payTemplateRepository.findByStatus(DefaultNumberConstants.ZERO_NUMBER); - map.put("list",payTemplates); - map.put("baseFee",baseFee); - map.put("beyondFee",beyondFee); + if (CollUtil.isNotEmpty(payTemplates)){ + map.put("list",payTemplates); + map.put("baseFee",baseFee); + map.put("beyondFee",beyondFee); + } return map; }