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

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

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

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

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

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

@ -10,6 +10,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -57,5 +58,5 @@ public class PayFatherTemplate implements Serializable {
private Date createTime; private Date createTime;
@Transient @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 org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author Enzo * @author Enzo
@ -63,4 +64,18 @@ public interface CompanyRepository extends JpaRepository<Company, Long>, JpaSpec
*/ */
@Query(value = "from Company where userBalance < 0") @Query(value = "from Company where userBalance < 0")
List<Company> findCompanyAndUserBalanceLessThanZero(); 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; 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.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@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.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Set;
@Repository @Repository
public interface PayFatherTemplateRepository extends JpaRepository<PayFatherTemplate, Long>, JpaSpecificationExecutor<PayFatherTemplate> { 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; 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.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
@ -9,9 +9,9 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository @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 * @param userId
* @return * @return
*/ */
@Query("from PayTemplateUser where userId = ?1") @Query("from PayComboUser where userId = ?1")
PayTemplateUser findTemplateByUserId(Long userId); PayComboUser findTemplateByUserId(Long userId);
/** /**
* *
@ -29,5 +29,5 @@ public interface PayTemplateUserRepository extends JpaRepository<PayTemplateUser
* @return * @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) @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; package com.baiye.modules.system.rest;
import com.baiye.http.CommonResponse; import com.baiye.http.CommonResponse;
import com.baiye.modules.system.domain.PayTemplate; import com.baiye.modules.system.domain.PayCombo;
import com.baiye.modules.system.service.PayTemplateService; import com.baiye.modules.system.service.PayComboService;
import com.baiye.valid.AddGroup; import com.baiye.valid.AddGroup;
import com.baiye.valid.UpdateGroup; import com.baiye.valid.UpdateGroup;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -17,27 +17,27 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/api/payTemplate") @RequestMapping("/api/payTemplate")
@RequiredArgsConstructor @RequiredArgsConstructor
public class PayTemplateController { public class PayComboController {
private final PayTemplateService payTemplateService; private final PayComboService payComboService;
@ApiOperation("新增模板") @ApiOperation("新增模板")
@PostMapping("/add") @PostMapping("/add")
public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayTemplate payTemplate){ public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayCombo payCombo){
payTemplateService.addPayTemplate(payTemplate); payComboService.addPayTemplate(payCombo);
return CommonResponse.createBySuccess(); return CommonResponse.createBySuccess();
} }
@ApiOperation("更新模板") @ApiOperation("更新模板")
@PostMapping("/update") @PostMapping("/update")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayTemplate payTemplate){ public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayCombo payCombo){
payTemplateService.updatePayTemplate(payTemplate); payComboService.updatePayTemplate(payCombo);
return CommonResponse.createBySuccess(); return CommonResponse.createBySuccess();
} }
@ApiOperation("查询模板列表") @ApiOperation("查询模板列表")
@GetMapping("/list") @GetMapping("/list")
public ResponseEntity<Object> query(){ 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.http.CommonResponse;
import com.baiye.modules.system.domain.PayFatherTemplate; 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.PayFatherTemplateService;
import com.baiye.modules.system.service.dto.LabelOrganizeQueryCriteria;
import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria; import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria;
import com.baiye.valid.AddGroup; import com.baiye.valid.AddGroup;
import com.baiye.valid.UpdateGroup; import com.baiye.valid.UpdateGroup;
@ -53,4 +51,18 @@ public class PayFatherTemplateController {
public ResponseEntity<Object> queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable){ public ResponseEntity<Object> queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable){
return new ResponseEntity<>(payFatherTemplateService.queryAll(payFatherTemplateQueryCriteria, pageable), HttpStatus.OK); 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; 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 * @return
*/ */
Object queryAll(PayFatherTemplateQueryCriteria payFatherTemplateQueryCriteria, Pageable pageable); 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; package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.PayTemplateUser; import com.baiye.modules.system.domain.PayComboUser;
/** /**
* @author @Enzo * @author @Enzo
@ -10,15 +10,15 @@ public interface PayTemplateUserService {
/** /**
* *
* @param payTemplateUser * @param payComboUser
* @return * @return
*/ */
Boolean add(PayTemplateUser payTemplateUser); Boolean add(PayComboUser payComboUser);
/** /**
* id * id
* @param id * @param id
* @return * @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 cn.hutool.core.collection.CollUtil;
import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.DefaultNumberConstants;
import com.baiye.modules.system.domain.PayTemplate; import com.baiye.modules.system.domain.PayCombo;
import com.baiye.modules.system.repository.PayTemplateRepository; import com.baiye.modules.system.repository.PayComboRepository;
import com.baiye.modules.system.service.CompanyService; 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.modules.system.service.dto.CompanyDto;
import com.baiye.util.SecurityUtils; import com.baiye.util.SecurityUtils;
import com.baiye.util.StringUtils; import com.baiye.util.StringUtils;
@ -28,9 +28,9 @@ import java.util.Set;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class PayTemplateServiceImpl implements PayTemplateService { public class PayComboServiceImpl implements PayComboService {
private final PayTemplateRepository payTemplateRepository; private final PayComboRepository payComboRepository;
private final CompanyService companyService; private final CompanyService companyService;
@Value("${payTemplate.base_fee}") @Value("${payTemplate.base_fee}")
private Double baseFee; private Double baseFee;
@ -39,25 +39,25 @@ public class PayTemplateServiceImpl implements PayTemplateService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void addPayTemplate(PayTemplate payTemplate) { public void addPayTemplate(PayCombo payCombo) {
payTemplate.setStatus(DefaultNumberConstants.ZERO_NUMBER); payCombo.setStatus(DefaultNumberConstants.ZERO_NUMBER);
String format = new DecimalFormat("#.00").format(payTemplate.getAmount()); String format = new DecimalFormat("#.00").format(payCombo.getAmount());
Double amount = Double.parseDouble(format); Double amount = Double.parseDouble(format);
payTemplate.setAmount(amount); payCombo.setAmount(amount);
payTemplate.setBaseAmount(baseFee); payCombo.setBaseAmount(baseFee);
payTemplateRepository.save(payTemplate); payComboRepository.save(payCombo);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@CacheEvict(value = "templateCache", key = "'template:' + #p0.getId()") @CacheEvict(value = "templateCache", key = "'template:' + #p0.getId()")
public void updatePayTemplate(PayTemplate payTemplate) { public void updatePayTemplate(PayCombo payCombo) {
Integer status = payTemplate.getStatus(); Integer status = payCombo.getStatus();
String packageName = payTemplate.getPackageName(); String packageName = payCombo.getPackageName();
Double amount = payTemplate.getAmount(); Double amount = payCombo.getAmount();
Integer callDuration = payTemplate.getCallDuration(); Integer callDuration = payCombo.getCallDuration();
Integer packageDay = payTemplate.getPackageDay(); Integer packageDay = payCombo.getPackageDay();
PayTemplate updateTemplate = payTemplateRepository.findById(payTemplate.getId()).orElseGet(PayTemplate::new); PayCombo updateTemplate = payComboRepository.findById(payCombo.getId()).orElseGet(PayCombo::new);
if (status != null){ if (status != null){
updateTemplate.setStatus(status); updateTemplate.setStatus(status);
} }
@ -73,7 +73,7 @@ public class PayTemplateServiceImpl implements PayTemplateService {
if (packageDay != null){ if (packageDay != null){
updateTemplate.setPackageDay(packageDay); updateTemplate.setPackageDay(packageDay);
} }
payTemplateRepository.save(updateTemplate); payComboRepository.save(updateTemplate);
} }
@Override @Override
@ -82,10 +82,10 @@ public class PayTemplateServiceImpl implements PayTemplateService {
CompanyDto company = companyService.findCompanyById(SecurityUtils.getCurrentUserId()); CompanyDto company = companyService.findCompanyById(SecurityUtils.getCurrentUserId());
Long fatherTemplateId = company.getTemplateId(); Long fatherTemplateId = company.getTemplateId();
//2、查询 //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<>(); HashMap<Object, Object> map = new HashMap<>();
if (CollUtil.isNotEmpty(payTemplates)){ if (CollUtil.isNotEmpty(payCombos)){
map.put("list",payTemplates); map.put("list", payCombos);
map.put("baseFee",baseFee); map.put("baseFee",baseFee);
map.put("beyondFee",beyondFee); map.put("beyondFee",beyondFee);
} }
@ -94,7 +94,7 @@ public class PayTemplateServiceImpl implements PayTemplateService {
@Override @Override
@Cacheable(value = "templateCache", key = "'template:' + #p0") @Cacheable(value = "templateCache", key = "'template:' + #p0")
public PayTemplate findTemplateById(Long templateId) { public PayCombo findTemplateById(Long templateId) {
return payTemplateRepository.findById(templateId).orElseGet(PayTemplate::new); 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 cn.hutool.core.collection.CollUtil;
import com.baiye.constant.DefaultNumberConstants; 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.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.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.PayFatherTemplateService;
import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria; import com.baiye.modules.system.service.dto.PayFatherTemplateQueryCriteria;
import com.baiye.util.PageUtil; import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp; import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import com.baiye.util.StringUtils; import com.baiye.util.StringUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -23,7 +24,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -39,7 +39,8 @@ import java.util.stream.Collectors;
public class PayFatherTemplateServiceImpl implements PayFatherTemplateService { public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
private final PayFatherTemplateRepository payFatherTemplateRepository; private final PayFatherTemplateRepository payFatherTemplateRepository;
private final PayTemplateRepository payTemplateRepository; private final PayComboRepository payComboRepository;
private final CompanyRepository companyRepository;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -78,17 +79,11 @@ public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void del(Set<Long> ids) { public void del(Set<Long> ids) {
Set<PayTemplate> payTemplateSet = payTemplateRepository.findByFatherTemplateIdInAndStatus(ids, DefaultNumberConstants.ZERO_NUMBER); List<Company> companies = companyRepository.findByTemplateIdIn(ids);
if (CollUtil.isNotEmpty(payTemplateSet)){ if (CollUtil.isNotEmpty(companies)){
payTemplateSet.forEach(ps -> ps.setStatus(DefaultNumberConstants.ONE_NUMBER)); throw new BadRequestException("模板已绑定用户,请操作替换后然后删除");
payTemplateRepository.saveAll(payTemplateSet);
} }
List<PayFatherTemplate> payFatherTemplateList = payFatherTemplateRepository.findAllById(ids); payFatherTemplateRepository.deleteByIdIn(ids);
if (CollUtil.isNotEmpty(payFatherTemplateList)){
payFatherTemplateList.forEach(pt -> pt.setStatus(DefaultNumberConstants.ONE_NUMBER));
payFatherTemplateRepository.saveAll(payFatherTemplateList);
}
//删除逻辑下面套餐全部更新删除,TODO公司绑定ID重新修改强制一个新的
} }
@Override @Override
@ -98,15 +93,35 @@ public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
Page<PayFatherTemplate> all = payFatherTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, payFatherTemplateQueryCriteria, criteriaBuilder), pageRequest); Page<PayFatherTemplate> all = payFatherTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, payFatherTemplateQueryCriteria, criteriaBuilder), pageRequest);
if (CollUtil.isNotEmpty(all)){ if (CollUtil.isNotEmpty(all)){
Set<Long> templateIds = all.stream().map(PayFatherTemplate::getId).collect(Collectors.toSet()); Set<Long> templateIds = all.stream().map(PayFatherTemplate::getId).collect(Collectors.toSet());
Set<PayTemplate> payTemplates = payTemplateRepository.findByFatherTemplateIdInAndStatus(templateIds, DefaultNumberConstants.ZERO_NUMBER); Set<PayCombo> payCombos = payComboRepository.findByFatherTemplateIdInAndStatus(templateIds, DefaultNumberConstants.ZERO_NUMBER);
Map<Long, List<PayTemplate>> fatherGroupMap = payTemplates.stream().collect(Collectors.groupingBy(PayTemplate::getFatherTemplateId)); Map<Long, List<PayCombo>> fatherGroupMap = payCombos.stream().collect(Collectors.groupingBy(PayCombo::getFatherTemplateId));
for (PayFatherTemplate payFatherTemplate : all) { for (PayFatherTemplate payFatherTemplate : all) {
Long id = payFatherTemplate.getId(); Long id = payFatherTemplate.getId();
if (fatherGroupMap.containsKey(id)){ if (fatherGroupMap.containsKey(id)){
payFatherTemplate.setPayTemplateList(fatherGroupMap.get(id)); payFatherTemplate.setPayComboList(fatherGroupMap.get(id));
} }
} }
} }
return PageUtil.toPage(all); 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.collection.CollUtil;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baiye.modules.system.domain.PayTemplate; import com.baiye.modules.system.domain.PayCombo;
import com.baiye.modules.system.domain.PayTemplateUser; import com.baiye.modules.system.domain.PayComboUser;
import com.baiye.modules.system.repository.PayTemplateRepository; import com.baiye.modules.system.repository.PayComboRepository;
import com.baiye.modules.system.repository.PayTemplateUserRepository; import com.baiye.modules.system.repository.PayTemplateUserRepository;
import com.baiye.modules.system.repository.UserRepository; import com.baiye.modules.system.repository.UserRepository;
import com.baiye.modules.system.service.PayTemplateUserService; import com.baiye.modules.system.service.PayTemplateUserService;
import com.baiye.modules.system.service.UserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -29,52 +28,52 @@ public class PayTemplateUserServiceImpl implements PayTemplateUserService {
private final PayTemplateUserRepository payTemplateUserRepository; private final PayTemplateUserRepository payTemplateUserRepository;
private final PayTemplateRepository payTemplateRepository; private final PayComboRepository payComboRepository;
private final UserRepository userRepository; private final UserRepository userRepository;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean add(PayTemplateUser payTemplateUser) { public Boolean add(PayComboUser payComboUser) {
Long userId = payTemplateUser.getUserId(); Long userId = payComboUser.getUserId();
Long payTemplateId = payTemplateUser.getPayTemplateId(); Long payTemplateId = payComboUser.getPayComboId();
if (userId != null && payTemplateId != null) { if (userId != null && payTemplateId != null) {
List<PayTemplateUser> userList = payTemplateUserRepository.findByUserId(userId); List<PayComboUser> userList = payTemplateUserRepository.findByUserId(userId);
PayTemplate payTemplate = payTemplateRepository.findById(payTemplateId).orElseGet(PayTemplate::new); PayCombo payCombo = payComboRepository.findById(payTemplateId).orElseGet(PayCombo::new);
//当前时间 //当前时间
Date createTime = DateUtil.date(); Date createTime = DateUtil.date();
Integer packageDay = payTemplate.getPackageDay(); Integer packageDay = payCombo.getPackageDay();
Date newDate = DateUtil.offset(createTime, DateField.DAY_OF_MONTH, packageDay); Date newDate = DateUtil.offset(createTime, DateField.DAY_OF_MONTH, packageDay);
if (CollUtil.isNotEmpty(userList)) { if (CollUtil.isNotEmpty(userList)) {
PayTemplateUser payTemplateUserOne = userList.get(0); PayComboUser payComboUserOne = userList.get(0);
Date endTime = payTemplateUserOne.getEndTime(); Date endTime = payComboUserOne.getEndTime();
//当createTime小于endTime时返回true当大于等于时返回false //当createTime小于endTime时返回true当大于等于时返回false
if (createTime.before(endTime)) { if (createTime.before(endTime)) {
//修改结束日期 //修改结束日期
newDate = DateUtil.offset(payTemplateUserOne.getEndTime(), DateField.DAY_OF_MONTH, packageDay); newDate = DateUtil.offset(payComboUserOne.getEndTime(), DateField.DAY_OF_MONTH, packageDay);
payTemplateUserOne.setEndTime(newDate); payComboUserOne.setEndTime(newDate);
} else { } else {
//重置开始和结束日期 //重置开始和结束日期
payTemplateUserOne.setBeginTime(createTime); payComboUserOne.setBeginTime(createTime);
payTemplateUserOne.setEndTime(newDate); payComboUserOne.setEndTime(newDate);
} }
userRepository.updateExpirationTimeById(newDate,userId); userRepository.updateExpirationTimeById(newDate,userId);
return payTemplateUserRepository.save(payTemplateUserOne).getId() != null; return payTemplateUserRepository.save(payComboUserOne).getId() != null;
} else { } else {
PayTemplateUser addPayTemplateUser = new PayTemplateUser(); PayComboUser addPayComboUser = new PayComboUser();
addPayTemplateUser.setPayTemplateId(payTemplateId); addPayComboUser.setPayComboId(payTemplateId);
addPayTemplateUser.setUserId(userId); addPayComboUser.setUserId(userId);
addPayTemplateUser.setBeginTime(createTime); addPayComboUser.setBeginTime(createTime);
addPayTemplateUser.setEndTime(newDate); addPayComboUser.setEndTime(newDate);
userRepository.updateExpirationTimeById(newDate, userId); userRepository.updateExpirationTimeById(newDate, userId);
return payTemplateUserRepository.save(addPayTemplateUser).getId() != null; return payTemplateUserRepository.save(addPayComboUser).getId() != null;
} }
} }
return Boolean.FALSE; return Boolean.FALSE;
} }
@Override @Override
public PayTemplateUser queryUserByUserId(Long id) { public PayComboUser queryUserByUserId(Long id) {
return payTemplateUserRepository.findTemplateByUserId(id); return payTemplateUserRepository.findTemplateByUserId(id);
} }
} }

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

Loading…
Cancel
Save