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

master
yqy 2 years ago
parent fd0c8183c3
commit bb6cfae1ea

@ -11,9 +11,10 @@ import com.baiye.modules.settlement.dao.CallCostRepository;
import com.baiye.modules.settlement.entity.CallSettlement;
import com.baiye.modules.settlement.service.CallCostService;
import com.baiye.modules.system.domain.User;
import com.baiye.modules.system.repository.PayComboRepository;
import com.baiye.modules.system.domain.*;
import com.baiye.modules.system.repository.PayFatherTemplateRepository;
import com.baiye.modules.system.repository.PayTemplateRepository;
import com.baiye.modules.system.repository.PayTemplateUserRepository;
import com.baiye.modules.system.repository.UserRepository;
import com.baiye.modules.system.service.CompanyService;
@ -42,7 +43,7 @@ public class CallCostServiceImpl implements CallCostService {
private final PayTemplateUserRepository payTemplateUserRepository;
private final PayTemplateRepository payTemplateRepository;
private final PayComboRepository payComboRepository;
private final CallCostRepository callCostRepository;
private final CompanyService companyService;
private final UserRepository userRepository;
@ -66,16 +67,16 @@ public class CallCostServiceImpl implements CallCostService {
//查看这些人员 在套餐时间内 的总时长是否超出 注意套餐 是否已经刷新,重新计算
//1.查看当前日期是否在套餐时间范围,
//2.查看前一天扣减表。有数据说明已经超出,做扣减,入库--
List<PayTemplateUser> byDay = payTemplateUserRepository.findByDay(DateUtil.today());
List<PayComboUser> byDay = payTemplateUserRepository.findByDay(DateUtil.today());
if (byDay.size() <= 0) {
return;
}
for (PayTemplateUser info : byDay) {
for (PayComboUser info : byDay) {
long userId = info.getUserId();
Long companyId = userRepository.findUserById(userId).getCompanyId();
//查询套餐的时长
PayTemplate payTemplate = selectCombo(info.getPayTemplateId());
PayCombo payTemplate = selectCombo(info.getPayComboId());
//套餐时长
int callDuration = payTemplate.getCallDuration();
//查询套餐时间范围内 通话记录
@ -127,7 +128,7 @@ public class CallCostServiceImpl implements CallCostService {
* @return
*/
private CallSettlement deduction(PayTemplateUser info, Long durationToday, Double estimateAmountToDay, Long companyId, CompanyDto companyById, Double price) {
private CallSettlement deduction(PayComboUser info, Long durationToday, Double estimateAmountToDay, Long companyId, CompanyDto companyById, Double price) {
CallSettlement callSettlement = new CallSettlement();
long userId = info.getUserId();
Double userBalance = companyById.getUserBalance();
@ -184,8 +185,8 @@ public class CallCostServiceImpl implements CallCostService {
* @param payTemplateId
* @return
*/
private PayTemplate selectCombo(Long payTemplateId) {
return payTemplateRepository.findById(payTemplateId).orElseGet(PayTemplate::new);
private PayCombo selectCombo(Long payTemplateId) {
return payComboRepository.findById(payTemplateId).orElseGet(PayCombo::new);
}
/**

@ -89,8 +89,8 @@ public class Company extends BaseEntity implements Serializable {
@Column(name = "user_balance")
private Double userBalance;
@ApiModelProperty("模板id")
@Column(name = "template_id")
private Long templateId;

@ -19,14 +19,14 @@ import java.util.Date;
*/
@Data
@Entity
@Table(name = "tb_pay_template")
@Table(name = "tb_pay_combo")
@EntityListeners(AuditingEntityListener.class)
public class PayTemplate implements Serializable {
public class PayCombo implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@Column(name = "template_id")
@Column(name = "combo_id")
@ApiModelProperty(value = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NotNull(message = "ID不能为空", groups = {UpdateGroup.class})

@ -15,21 +15,21 @@ import java.util.Date;
*/
@Data
@Entity
@Table(name = "tb_pay_template_log")
@Table(name = "tb_pay_combo_log")
@EntityListeners(AuditingEntityListener.class)
public class PayTemplateLog implements Serializable {
public class PayComboLog implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@Column(name = "template_log_id")
@Column(name = "combo_log_id")
@ApiModelProperty(value = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "template_id")
@ApiModelProperty(value = "模板ID")
private Long templateId;
@Column(name = "combo_id")
@ApiModelProperty(value = "套餐ID")
private Long comboId;
@Column(name = "user_id")
@ApiModelProperty(value = "购买人用户ID")

@ -14,9 +14,9 @@ import java.util.Date;
*/
@Data
@Entity
@Table(name = "tb_pay_template_user")
@Table(name = "tb_pay_combo_user")
@EntityListeners(AuditingEntityListener.class)
public class PayTemplateUser implements Serializable {
public class PayComboUser implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@ -26,9 +26,9 @@ public class PayTemplateUser implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "pay_template_id")
@ApiModelProperty(value = "模板ID")
private Long payTemplateId;
@Column(name = "pay_combo_id")
@ApiModelProperty(value = "套餐ID")
private Long payComboId;
@Column(name = "user_id")
@ApiModelProperty(value = "用户ID")

@ -10,6 +10,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -57,5 +58,5 @@ public class PayFatherTemplate implements Serializable {
private Date createTime;
@Transient
private List<PayTemplate> payTemplateList;
private List<PayCombo> payComboList = new ArrayList<>();
}

@ -22,6 +22,7 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Set;
/**
* @author Enzo
@ -63,4 +64,18 @@ public interface CompanyRepository extends JpaRepository<Company, Long>, JpaSpec
*/
@Query(value = "from Company where userBalance < 0")
List<Company> findCompanyAndUserBalanceLessThanZero();
/**
* ID
* @param ids
* @return
*/
List<Company> findByTemplateIdIn(Set<Long> ids);
/**
* ID
* @param templateId
* @return
*/
List<Company> findByTemplateId(Long templateId);
}

@ -1,10 +1,10 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.PayTemplateLog;
import com.baiye.modules.system.domain.PayComboLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
@Repository
public interface PayTemplateLogRepository extends JpaRepository<PayTemplateLog, Long>, JpaSpecificationExecutor<PayTemplateLog> {
public interface PayComboLogRepository extends JpaRepository<PayComboLog, Long>, JpaSpecificationExecutor<PayComboLog> {
}

@ -0,0 +1,18 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.PayCombo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.Set;
@Repository
public interface PayComboRepository extends JpaRepository<PayCombo, Long>, JpaSpecificationExecutor<PayCombo> {
Set<PayCombo> findByFatherTemplateIdInAndStatus(Set<Long> templateIds, int status);
Set<PayCombo> findByFatherTemplateIdAndStatus(Long templateIds, int status);
Set<PayCombo> findByFatherTemplateId(Long templateId);
}

@ -5,6 +5,9 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.Set;
@Repository
public interface PayFatherTemplateRepository extends JpaRepository<PayFatherTemplate, Long>, JpaSpecificationExecutor<PayFatherTemplate> {
void deleteByIdIn(Set<Long> ids);
}

@ -1,21 +0,0 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.PayTemplate;
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);
}

@ -1,6 +1,6 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.PayTemplateUser;
import com.baiye.modules.system.domain.PayComboUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
@ -9,9 +9,9 @@ import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface PayTemplateUserRepository extends JpaRepository<PayTemplateUser, Long>, JpaSpecificationExecutor<PayTemplateUser> {
public interface PayTemplateUserRepository extends JpaRepository<PayComboUser, Long>, JpaSpecificationExecutor<PayComboUser> {
List<PayTemplateUser> findByUserId(Long userId);
List<PayComboUser> findByUserId(Long userId);
/**
@ -19,8 +19,8 @@ public interface PayTemplateUserRepository extends JpaRepository<PayTemplateUser
* @param userId
* @return
*/
@Query("from PayTemplateUser where userId = ?1")
PayTemplateUser findTemplateByUserId(Long userId);
@Query("from PayComboUser where userId = ?1")
PayComboUser findTemplateByUserId(Long userId);
/**
*
@ -29,5 +29,5 @@ public interface PayTemplateUserRepository extends JpaRepository<PayTemplateUser
* @return
*/
@Query(value = "select * from tb_pay_template_user where DATE_FORMAT( begin_time, '%Y-%m-%d') < ?1 AND DATE_FORMAT( end_time, '%Y-%m-%d') > ?1 ", nativeQuery = true)
List<PayTemplateUser> findByDay(String day);
List<PayComboUser> findByDay(String day);
}

@ -1,8 +1,8 @@
package com.baiye.modules.system.rest;
import com.baiye.http.CommonResponse;
import com.baiye.modules.system.domain.PayTemplate;
import com.baiye.modules.system.service.PayTemplateService;
import com.baiye.modules.system.domain.PayCombo;
import com.baiye.modules.system.service.PayComboService;
import com.baiye.valid.AddGroup;
import com.baiye.valid.UpdateGroup;
import io.swagger.annotations.Api;
@ -17,27 +17,27 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/payTemplate")
@RequiredArgsConstructor
public class PayTemplateController {
public class PayComboController {
private final PayTemplateService payTemplateService;
private final PayComboService payComboService;
@ApiOperation("新增模板")
@PostMapping("/add")
public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayTemplate payTemplate){
payTemplateService.addPayTemplate(payTemplate);
public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayCombo payCombo){
payComboService.addPayTemplate(payCombo);
return CommonResponse.createBySuccess();
}
@ApiOperation("更新模板")
@PostMapping("/update")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayTemplate payTemplate){
payTemplateService.updatePayTemplate(payTemplate);
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayCombo payCombo){
payComboService.updatePayTemplate(payCombo);
return CommonResponse.createBySuccess();
}
@ApiOperation("查询模板列表")
@GetMapping("/list")
public ResponseEntity<Object> query(){
return new ResponseEntity<>(payTemplateService.query(), HttpStatus.OK);
return new ResponseEntity<>(payComboService.query(), HttpStatus.OK);
}
}

@ -2,9 +2,7 @@ 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;
@ -53,4 +51,18 @@ public class PayFatherTemplateController {
public ResponseEntity<Object> queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable){
return new ResponseEntity<>(payFatherTemplateService.queryAll(payFatherTemplateQueryCriteria, pageable), HttpStatus.OK);
}
@ApiOperation("查询模板列表")
@GetMapping("/list")
public ResponseEntity<Object> list(){
return new ResponseEntity<>(payFatherTemplateService.list(), HttpStatus.OK);
}
@ApiOperation("替换模板列表")
@GetMapping("/replace")
public CommonResponse<Object> replace(@RequestParam("replaceId") Long replaceId,@RequestParam("templateId") Long templateId){
payFatherTemplateService.replace(replaceId, templateId);
return CommonResponse.createBySuccess();
}
}

@ -1,6 +1,6 @@
package com.baiye.modules.system.service;
public interface PayTemplateLogService {
public interface PayComboLogService {
/**
*

@ -0,0 +1,31 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.PayCombo;
public interface PayComboService {
/**
*
* @param payCombo
*/
void addPayTemplate(PayCombo payCombo);
/**
*
* @param payCombo
*/
void updatePayTemplate(PayCombo payCombo);
/**
*
* @return
*/
Object query();
/**
* id
* @param templateId
* @return
*/
PayCombo findTemplateById(Long templateId);
}

@ -33,4 +33,17 @@ public interface PayFatherTemplateService {
* @return
*/
Object queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable);
/**
*
* @return
*/
Object list();
/**
*
* @param replaceId
* @return
*/
void replace(Long replaceId, Long templateId);
}

@ -1,31 +0,0 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.PayTemplate;
public interface PayTemplateService {
/**
*
* @param payTemplate
*/
void addPayTemplate(PayTemplate payTemplate);
/**
*
* @param payTemplate
*/
void updatePayTemplate(PayTemplate payTemplate);
/**
*
* @return
*/
Object query();
/**
* id
* @param templateId
* @return
*/
PayTemplate findTemplateById(Long templateId);
}

@ -1,6 +1,6 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.PayTemplateUser;
import com.baiye.modules.system.domain.PayComboUser;
/**
* @author @Enzo
@ -10,15 +10,15 @@ public interface PayTemplateUserService {
/**
*
* @param payTemplateUser
* @param payComboUser
* @return
*/
Boolean add(PayTemplateUser payTemplateUser);
Boolean add(PayComboUser payComboUser);
/**
* id
* @param id
* @return
*/
PayTemplateUser queryUserByUserId(Long id);
PayComboUser queryUserByUserId(Long id);
}

@ -0,0 +1,33 @@
package com.baiye.modules.system.service.impl;
import com.baiye.modules.system.domain.PayComboLog;
import com.baiye.modules.system.repository.PayComboLogRepository;
import com.baiye.modules.system.service.PayComboLogService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author yqy
* @date
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class PayComboLogServiceImpl implements PayComboLogService {
private final PayComboLogRepository payComboLogRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void addPayTemplateLog(Long templateId, Long userId, Boolean result) {
PayComboLog payComboLog = new PayComboLog();
if (templateId != null && userId != null){
payComboLog.setComboId(templateId);
payComboLog.setIsBuySuccess(result);
payComboLog.setUserId(userId);
payComboLogRepository.save(payComboLog);
}
}
}

@ -2,10 +2,10 @@ package com.baiye.modules.system.service.impl;
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.domain.PayCombo;
import com.baiye.modules.system.repository.PayComboRepository;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.PayTemplateService;
import com.baiye.modules.system.service.PayComboService;
import com.baiye.modules.system.service.dto.CompanyDto;
import com.baiye.util.SecurityUtils;
import com.baiye.util.StringUtils;
@ -28,9 +28,9 @@ import java.util.Set;
@Service
@RequiredArgsConstructor
@Slf4j
public class PayTemplateServiceImpl implements PayTemplateService {
public class PayComboServiceImpl implements PayComboService {
private final PayTemplateRepository payTemplateRepository;
private final PayComboRepository payComboRepository;
private final CompanyService companyService;
@Value("${payTemplate.base_fee}")
private Double baseFee;
@ -39,25 +39,25 @@ public class PayTemplateServiceImpl implements PayTemplateService {
@Override
@Transactional(rollbackFor = Exception.class)
public void addPayTemplate(PayTemplate payTemplate) {
payTemplate.setStatus(DefaultNumberConstants.ZERO_NUMBER);
String format = new DecimalFormat("#.00").format(payTemplate.getAmount());
public void addPayTemplate(PayCombo payCombo) {
payCombo.setStatus(DefaultNumberConstants.ZERO_NUMBER);
String format = new DecimalFormat("#.00").format(payCombo.getAmount());
Double amount = Double.parseDouble(format);
payTemplate.setAmount(amount);
payTemplate.setBaseAmount(baseFee);
payTemplateRepository.save(payTemplate);
payCombo.setAmount(amount);
payCombo.setBaseAmount(baseFee);
payComboRepository.save(payCombo);
}
@Override
@Transactional(rollbackFor = Exception.class)
@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);
public void updatePayTemplate(PayCombo payCombo) {
Integer status = payCombo.getStatus();
String packageName = payCombo.getPackageName();
Double amount = payCombo.getAmount();
Integer callDuration = payCombo.getCallDuration();
Integer packageDay = payCombo.getPackageDay();
PayCombo updateTemplate = payComboRepository.findById(payCombo.getId()).orElseGet(PayCombo::new);
if (status != null){
updateTemplate.setStatus(status);
}
@ -73,7 +73,7 @@ public class PayTemplateServiceImpl implements PayTemplateService {
if (packageDay != null){
updateTemplate.setPackageDay(packageDay);
}
payTemplateRepository.save(updateTemplate);
payComboRepository.save(updateTemplate);
}
@Override
@ -82,10 +82,10 @@ public class PayTemplateServiceImpl implements PayTemplateService {
CompanyDto company = companyService.findCompanyById(SecurityUtils.getCurrentUserId());
Long fatherTemplateId = company.getTemplateId();
//2、查询
Set<PayTemplate> payTemplates = payTemplateRepository.findByFatherTemplateIdAndStatus(fatherTemplateId, DefaultNumberConstants.ZERO_NUMBER);
Set<PayCombo> payCombos = payComboRepository.findByFatherTemplateIdAndStatus(fatherTemplateId, DefaultNumberConstants.ZERO_NUMBER);
HashMap<Object, Object> map = new HashMap<>();
if (CollUtil.isNotEmpty(payTemplates)){
map.put("list",payTemplates);
if (CollUtil.isNotEmpty(payCombos)){
map.put("list", payCombos);
map.put("baseFee",baseFee);
map.put("beyondFee",beyondFee);
}
@ -94,7 +94,7 @@ public class PayTemplateServiceImpl implements PayTemplateService {
@Override
@Cacheable(value = "templateCache", key = "'template:' + #p0")
public PayTemplate findTemplateById(Long templateId) {
return payTemplateRepository.findById(templateId).orElseGet(PayTemplate::new);
public PayCombo findTemplateById(Long templateId) {
return payComboRepository.findById(templateId).orElseGet(PayCombo::new);
}
}

@ -2,16 +2,17 @@ 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.exception.BadRequestException;
import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.domain.PayFatherTemplate;
import com.baiye.modules.system.domain.PayTemplate;
import com.baiye.modules.system.domain.PayCombo;
import com.baiye.modules.system.repository.CompanyRepository;
import com.baiye.modules.system.repository.PayFatherTemplateRepository;
import com.baiye.modules.system.repository.PayTemplateRepository;
import com.baiye.modules.system.repository.PayComboRepository;
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;
@ -23,7 +24,6 @@ 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;
@ -39,7 +39,8 @@ import java.util.stream.Collectors;
public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
private final PayFatherTemplateRepository payFatherTemplateRepository;
private final PayTemplateRepository payTemplateRepository;
private final PayComboRepository payComboRepository;
private final CompanyRepository companyRepository;
@Override
@Transactional(rollbackFor = Exception.class)
@ -78,17 +79,11 @@ public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
@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<Company> companies = companyRepository.findByTemplateIdIn(ids);
if (CollUtil.isNotEmpty(companies)){
throw new BadRequestException("模板已绑定用户,请操作替换后然后删除");
}
List<PayFatherTemplate> payFatherTemplateList = payFatherTemplateRepository.findAllById(ids);
if (CollUtil.isNotEmpty(payFatherTemplateList)){
payFatherTemplateList.forEach(pt -> pt.setStatus(DefaultNumberConstants.ONE_NUMBER));
payFatherTemplateRepository.saveAll(payFatherTemplateList);
}
//删除逻辑下面套餐全部更新删除,TODO公司绑定ID重新修改强制一个新的
payFatherTemplateRepository.deleteByIdIn(ids);
}
@Override
@ -98,15 +93,35 @@ public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
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));
Set<PayCombo> payCombos = payComboRepository.findByFatherTemplateIdInAndStatus(templateIds, DefaultNumberConstants.ZERO_NUMBER);
Map<Long, List<PayCombo>> fatherGroupMap = payCombos.stream().collect(Collectors.groupingBy(PayCombo::getFatherTemplateId));
for (PayFatherTemplate payFatherTemplate : all) {
Long id = payFatherTemplate.getId();
if (fatherGroupMap.containsKey(id)){
payFatherTemplate.setPayTemplateList(fatherGroupMap.get(id));
payFatherTemplate.setPayComboList(fatherGroupMap.get(id));
}
}
}
return PageUtil.toPage(all);
}
@Override
public Object list() {
return payFatherTemplateRepository.findAll();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void replace(Long replaceId, Long templateId) {
Set<PayCombo> payComboSet = payComboRepository.findByFatherTemplateId(templateId);
if (CollUtil.isNotEmpty(payComboSet)){
payComboSet.forEach(ps -> ps.setFatherTemplateId(replaceId));
payComboRepository.saveAll(payComboSet);
}
List<Company> companyList = companyRepository.findByTemplateId(templateId);
if (CollUtil.isNotEmpty(companyList)){
companyList.forEach(ct -> ct.setTemplateId(replaceId));
companyRepository.saveAll(companyList);
}
}
}

@ -1,33 +0,0 @@
package com.baiye.modules.system.service.impl;
import com.baiye.modules.system.domain.PayTemplateLog;
import com.baiye.modules.system.repository.PayTemplateLogRepository;
import com.baiye.modules.system.service.PayTemplateLogService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author yqy
* @date
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class PayTemplateLogServiceImpl implements PayTemplateLogService {
private final PayTemplateLogRepository payTemplateLogRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void addPayTemplateLog(Long templateId, Long userId, Boolean result) {
PayTemplateLog payTemplateLog = new PayTemplateLog();
if (templateId != null && userId != null){
payTemplateLog.setTemplateId(templateId);
payTemplateLog.setIsBuySuccess(result);
payTemplateLog.setUserId(userId);
payTemplateLogRepository.save(payTemplateLog);
}
}
}

@ -3,13 +3,12 @@ package com.baiye.modules.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.baiye.modules.system.domain.PayTemplate;
import com.baiye.modules.system.domain.PayTemplateUser;
import com.baiye.modules.system.repository.PayTemplateRepository;
import com.baiye.modules.system.domain.PayCombo;
import com.baiye.modules.system.domain.PayComboUser;
import com.baiye.modules.system.repository.PayComboRepository;
import com.baiye.modules.system.repository.PayTemplateUserRepository;
import com.baiye.modules.system.repository.UserRepository;
import com.baiye.modules.system.service.PayTemplateUserService;
import com.baiye.modules.system.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -29,52 +28,52 @@ public class PayTemplateUserServiceImpl implements PayTemplateUserService {
private final PayTemplateUserRepository payTemplateUserRepository;
private final PayTemplateRepository payTemplateRepository;
private final PayComboRepository payComboRepository;
private final UserRepository userRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(PayTemplateUser payTemplateUser) {
Long userId = payTemplateUser.getUserId();
Long payTemplateId = payTemplateUser.getPayTemplateId();
public Boolean add(PayComboUser payComboUser) {
Long userId = payComboUser.getUserId();
Long payTemplateId = payComboUser.getPayComboId();
if (userId != null && payTemplateId != null) {
List<PayTemplateUser> userList = payTemplateUserRepository.findByUserId(userId);
PayTemplate payTemplate = payTemplateRepository.findById(payTemplateId).orElseGet(PayTemplate::new);
List<PayComboUser> userList = payTemplateUserRepository.findByUserId(userId);
PayCombo payCombo = payComboRepository.findById(payTemplateId).orElseGet(PayCombo::new);
//当前时间
Date createTime = DateUtil.date();
Integer packageDay = payTemplate.getPackageDay();
Integer packageDay = payCombo.getPackageDay();
Date newDate = DateUtil.offset(createTime, DateField.DAY_OF_MONTH, packageDay);
if (CollUtil.isNotEmpty(userList)) {
PayTemplateUser payTemplateUserOne = userList.get(0);
Date endTime = payTemplateUserOne.getEndTime();
PayComboUser payComboUserOne = userList.get(0);
Date endTime = payComboUserOne.getEndTime();
//当createTime小于endTime时返回true当大于等于时返回false
if (createTime.before(endTime)) {
//修改结束日期
newDate = DateUtil.offset(payTemplateUserOne.getEndTime(), DateField.DAY_OF_MONTH, packageDay);
payTemplateUserOne.setEndTime(newDate);
newDate = DateUtil.offset(payComboUserOne.getEndTime(), DateField.DAY_OF_MONTH, packageDay);
payComboUserOne.setEndTime(newDate);
} else {
//重置开始和结束日期
payTemplateUserOne.setBeginTime(createTime);
payTemplateUserOne.setEndTime(newDate);
payComboUserOne.setBeginTime(createTime);
payComboUserOne.setEndTime(newDate);
}
userRepository.updateExpirationTimeById(newDate,userId);
return payTemplateUserRepository.save(payTemplateUserOne).getId() != null;
return payTemplateUserRepository.save(payComboUserOne).getId() != null;
} else {
PayTemplateUser addPayTemplateUser = new PayTemplateUser();
addPayTemplateUser.setPayTemplateId(payTemplateId);
addPayTemplateUser.setUserId(userId);
addPayTemplateUser.setBeginTime(createTime);
addPayTemplateUser.setEndTime(newDate);
PayComboUser addPayComboUser = new PayComboUser();
addPayComboUser.setPayComboId(payTemplateId);
addPayComboUser.setUserId(userId);
addPayComboUser.setBeginTime(createTime);
addPayComboUser.setEndTime(newDate);
userRepository.updateExpirationTimeById(newDate, userId);
return payTemplateUserRepository.save(addPayTemplateUser).getId() != null;
return payTemplateUserRepository.save(addPayComboUser).getId() != null;
}
}
return Boolean.FALSE;
}
@Override
public PayTemplateUser queryUserByUserId(Long id) {
public PayComboUser queryUserByUserId(Long id) {
return payTemplateUserRepository.findTemplateByUserId(id);
}
}

@ -80,8 +80,8 @@ public class UserServiceImpl implements UserService {
private final PasswordEncoder passwordEncoder;
private final OnlineUserService onlineUserService;
private final OrganizeRepository organizeRepository;
private final PayTemplateService payTemplateService;
private final PayTemplateLogService payTemplateLogService;
private final PayComboService payComboService;
private final PayComboLogService payComboLogService;
private final PayTemplateUserService payTemplateUserService;
private final OrganizeUserRepository organizeUserRepository;
@ -545,10 +545,10 @@ public class UserServiceImpl implements UserService {
if (CollUtil.isNotEmpty(userIds)
&& ObjectUtil.isNotNull(templateId)) {
Long companyId = SecurityUtils.getCompanyId();
PayTemplate payTemplate =
payTemplateService.findTemplateById(templateId);
if (ObjectUtil.isNull(payTemplate)
|| payTemplate.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
PayCombo payCombo =
payComboService.findTemplateById(templateId);
if (ObjectUtil.isNull(payCombo)
|| payCombo.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
throw new BadRequestException(ResponseCode.PACKAGE_ERROR.getDesc());
}
@ -562,7 +562,7 @@ public class UserServiceImpl implements UserService {
companyById.getUserBalance() != null ?
companyById.getUserBalance() : DefaultNumberConstants.ZERO_NUMBER;
// 计算金额
Double totalAmount = NumberUtil.add(payTemplate.getAmount(), payTemplate.getBaseAmount());
Double totalAmount = NumberUtil.add(payCombo.getAmount(), payCombo.getBaseAmount());
totalAmount = NumberUtil.mul(totalAmount, Double.valueOf(String.valueOf(userIds.size())));
double deductionBalance = NumberUtil.sub(balance, totalAmount);
// 判断余额
@ -571,14 +571,14 @@ public class UserServiceImpl implements UserService {
}
// 扣减余额
companyService.updateUserBalanceByCompanyId(deductionBalance, companyId);
PayTemplateUser templateUser;
PayComboUser templateUser;
for (Long userId : userIds) {
templateUser = new PayTemplateUser();
templateUser = new PayComboUser();
templateUser.setUserId(userId);
templateUser.setPayTemplateId(templateId);
templateUser.setPayComboId(templateId);
// 插入信息
Boolean result = payTemplateUserService.add(templateUser);
payTemplateLogService.addPayTemplateLog(templateId, userId, result);
payComboLogService.addPayTemplateLog(templateId, userId, result);
}
}
}

Loading…
Cancel
Save