支付模板逻辑修改(暂未测试)

master
yqy 2 years ago
parent 1c171357ac
commit 621960175e

@ -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<PayTemplate> payTemplateList;
}

@ -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})

@ -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<PayFatherTemplate, Long>, JpaSpecificationExecutor<PayFatherTemplate> {
}

@ -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<PayTemplate, Long>, JpaSpecificationExecutor<PayTemplate> {
Set<PayTemplate> findByStatus(int zeroNumber);
Set<PayTemplate> findByFatherTemplateIdIn(Set<Long> templateIds);
Set<PayTemplate> findByFatherTemplateIdInAndStatus(Set<Long> templateIds, int status);
Set<PayTemplate> findByFatherTemplateIdAndStatus(Long templateIds, int status);
}

@ -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<Object> add(@Validated({AddGroup.class}) @RequestBody PayFatherTemplate payFatherTemplate){
payFatherTemplateService.add(payFatherTemplate);
return CommonResponse.createBySuccess();
}
@ApiOperation("更新模板状态")
@PostMapping("/update")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayFatherTemplate payFatherTemplate){
payFatherTemplateService.update(payFatherTemplate);
return CommonResponse.createBySuccess();
}
@ApiOperation("删除模板")
@DeleteMapping("/del")
public CommonResponse<Object> del(@RequestBody Set<Long> ids) {
payFatherTemplateService.del(ids);
return CommonResponse.createBySuccess();
}
@ApiOperation("查询模板列表(分页,返回数据中插入了套餐信息)")
@GetMapping("/queryAll")
public ResponseEntity<Object> queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable){
return new ResponseEntity<>(payFatherTemplateService.queryAll(payFatherTemplateQueryCriteria, pageable), HttpStatus.OK);
}
}

@ -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

@ -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<Long> ids);
/**
* (,)
* @param payFatherTemplateQueryCriteria
* @param pageable
* @return
*/
Object queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable);
}

@ -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;
}

@ -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<Long> ids) {
Set<PayTemplate> payTemplateSet = payTemplateRepository.findByFatherTemplateIdInAndStatus(ids, DefaultNumberConstants.ZERO_NUMBER);
if (CollUtil.isNotEmpty(payTemplateSet)){
payTemplateSet.forEach(ps -> ps.setStatus(DefaultNumberConstants.ONE_NUMBER));
payTemplateRepository.saveAll(payTemplateSet);
}
List<PayFatherTemplate> 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<PayFatherTemplate> all = payFatherTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, payFatherTemplateQueryCriteria, criteriaBuilder), pageRequest);
if (CollUtil.isNotEmpty(all)){
Set<Long> templateIds = all.stream().map(PayFatherTemplate::getId).collect(Collectors.toSet());
Set<PayTemplate> payTemplates = payTemplateRepository.findByFatherTemplateIdInAndStatus(templateIds, DefaultNumberConstants.ZERO_NUMBER);
Map<Long, List<PayTemplate>> 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);
}
}

@ -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<PayTemplate> payTemplates = payTemplateRepository.findByFatherTemplateIdAndStatus(fatherTemplateId, DefaultNumberConstants.ZERO_NUMBER);
HashMap<Object, Object> map = new HashMap<>();
Set<PayTemplate> 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;
}

Loading…
Cancel
Save