支付模板代码提交

master
yqy 2 years ago
parent 570e19d0ce
commit cbc1efa1c5

@ -0,0 +1,68 @@
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.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author YQY
* @date : 2022/06/06
*/
@Data
@Entity
@Table(name = "tb_pay_template")
@EntityListeners(AuditingEntityListener.class)
public class PayTemplate implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@Column(name = "template_id")
@ApiModelProperty(value = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NotNull(message = "ID不能为空", groups = {UpdateGroup.class})
private Long id;
@Column(name = "package_name")
@ApiModelProperty(value = "套餐名称")
@NotNull(message = "套餐名称不能为空", groups = {AddGroup.class})
private String packageName;
@Column(name = "level_number")
@ApiModelProperty(value = "套餐等级")
private Integer levelNumber;
@Column(name = "amount")
@ApiModelProperty(value = "金额")
@NotNull(message = "金额不能为空", groups = {AddGroup.class})
private Double amount;
@Column(name = "packageDay")
@ApiModelProperty(value = "套餐天数")
@NotNull(message = "套餐天数不能为空", groups = {AddGroup.class})
private Integer packageDay;
@Column(name = "status")
@ApiModelProperty(value = "状态: 0可用 1禁用")
private Integer status;
@CreationTimestamp
@Column(name = "create_time")
@ApiModelProperty(value = "创建时间")
private Date createTime;
@Column(name = "update_time")
@ApiModelProperty(value = "修改时间")
@LastModifiedDate
private Date updateTime;
}

@ -0,0 +1,42 @@
package com.baiye.modules.system.domain;
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 java.io.Serializable;
import java.util.Date;
/**
* @author YQY
* @date : 2022/06/06
*/
@Data
@Entity
@Table(name = "tb_pay_template_log")
@EntityListeners(AuditingEntityListener.class)
public class PayTemplateLog implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@Column(name = "template_log_id")
@ApiModelProperty(value = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "template_id")
@ApiModelProperty(value = "模板ID")
private Long templateId;
@Column(name = "user_id")
@ApiModelProperty(value = "购买人用户ID")
private Long userId;
@CreationTimestamp
@Column(name = "create_time")
@ApiModelProperty(value = "创建时间")
private Date createTime;
}

@ -0,0 +1,44 @@
package com.baiye.modules.system.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author YQY
* @date : 2022/06/06
*/
@Data
@Entity
@Table(name = "tb_pay_template_user")
@EntityListeners(AuditingEntityListener.class)
public class PayTemplateUser implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@Column(name = "id")
@ApiModelProperty(value = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "pay_template_id")
@ApiModelProperty(value = "模板ID")
private Long payTemplateId;
@Column(name = "user_id")
@ApiModelProperty(value = "用户ID")
private Long userId;
@Column(name = "begin_time")
@ApiModelProperty(value = "开始时间")
private Date beginTime;
@Column(name = "end_time")
@ApiModelProperty(value = "结束时间")
private Date endTime;
}

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

@ -0,0 +1,14 @@
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.Set;
@Repository
public interface PayTemplateRepository extends JpaRepository<PayTemplate, Long>, JpaSpecificationExecutor<PayTemplate> {
Set<PayTemplate> findByStatus(int zeroNumber);
}

@ -0,0 +1,14 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.PayTemplateUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface PayTemplateUserRepository extends JpaRepository<PayTemplateUser, Long>, JpaSpecificationExecutor<PayTemplateUser> {
List<PayTemplateUser> findByUserId(Long userId);
}

@ -0,0 +1,43 @@
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.valid.AddGroup;
import com.baiye.valid.UpdateGroup;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Api(tags = "支付模板管理")
@RestController
@RequestMapping("/api/payTemplate")
@RequiredArgsConstructor
public class PayTemplateController {
private final PayTemplateService payTemplateService;
@ApiOperation("新增模板")
@PostMapping("/add")
public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayTemplate payTemplate){
payTemplateService.addPayTemplate(payTemplate);
return CommonResponse.createBySuccess();
}
@ApiOperation("更新模板")
@PostMapping("/update")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayTemplate payTemplate){
payTemplateService.updatePayTemplate(payTemplate);
return CommonResponse.createBySuccess();
}
@ApiOperation("查询模板列表")
@GetMapping("/list")
public ResponseEntity<Object> query(){
return new ResponseEntity<>(payTemplateService.query(), HttpStatus.OK);
}
}

@ -0,0 +1,11 @@
package com.baiye.modules.system.service;
public interface PayTemplateLogService {
/**
*
* @param templateId
* @param userId
*/
void addPayTemplateLog(Long templateId, Long userId);
}

@ -0,0 +1,24 @@
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();
}

@ -0,0 +1,12 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.PayTemplateUser;
public interface PayTemplateUserService {
/**
*
* @param payTemplateUser
*/
void add(PayTemplateUser payTemplateUser);
}

@ -0,0 +1,28 @@
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;
@Service
@RequiredArgsConstructor
@Slf4j
public class PayTemplateLogServiceImpl implements PayTemplateLogService {
private final PayTemplateLogRepository payTemplateLogRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void addPayTemplateLog(Long templateId, Long userId) {
PayTemplateLog payTemplateLog = new PayTemplateLog();
if (templateId != null && userId != null){
payTemplateLog.setTemplateId(templateId);
payTemplateLog.setUserId(userId);
payTemplateLogRepository.save(payTemplateLog);
}
}
}

@ -0,0 +1,46 @@
package com.baiye.modules.system.service.impl;
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.PayTemplateService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
@Service
@RequiredArgsConstructor
@Slf4j
public class PayTemplateServiceImpl implements PayTemplateService {
private final PayTemplateRepository payTemplateRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void addPayTemplate(PayTemplate payTemplate) {
payTemplate.setStatus(DefaultNumberConstants.ZERO_NUMBER);
String format = new DecimalFormat("#.00").format(payTemplate.getAmount());
Double amount = Double.parseDouble(format);
payTemplate.setAmount(amount);
payTemplateRepository.save(payTemplate);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updatePayTemplate(PayTemplate payTemplate) {
Integer status = payTemplate.getStatus();
PayTemplate updateTemplate = payTemplateRepository.findById(payTemplate.getId()).orElseGet(PayTemplate::new);
if (status != null){
updateTemplate.setStatus(status);
}
payTemplateRepository.save(updateTemplate);
}
@Override
public Object query() {
return payTemplateRepository.findByStatus(DefaultNumberConstants.ZERO_NUMBER);
}
}

@ -0,0 +1,64 @@
package com.baiye.modules.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
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.repository.PayTemplateUserRepository;
import com.baiye.modules.system.service.PayTemplateUserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
@RequiredArgsConstructor
@Slf4j
public class PayTemplateUserServiceImpl implements PayTemplateUserService {
private final PayTemplateUserRepository payTemplateUserRepository;
private final PayTemplateRepository payTemplateRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void add(PayTemplateUser payTemplateUser) {
Long userId = payTemplateUser.getUserId();
Long payTemplateId = payTemplateUser.getPayTemplateId();
if (userId != null && payTemplateId != null){
List<PayTemplateUser> userList = payTemplateUserRepository.findByUserId(userId);
PayTemplate payTemplate = payTemplateRepository.findById(payTemplateId).orElseGet(PayTemplate::new);
//当前时间
Date createTime = DateUtil.date();
Integer packageDay = payTemplate.getPackageDay();
Date newDate = DateUtil.offset(createTime, DateField.DAY_OF_MONTH, packageDay);
if (CollUtil.isNotEmpty(userList)){
PayTemplateUser payTemplateUserOne = userList.get(0);
Date endTime = payTemplateUserOne.getEndTime();
//当createTime小于endTime时返回true当大于等于时返回false
if (createTime.before(endTime)) {
//修改结束日期
Date newDate2 = DateUtil.offset(payTemplateUserOne.getEndTime(), DateField.DAY_OF_MONTH, packageDay);
payTemplateUserOne.setEndTime(newDate2);
}else {
//重置开始和结束日期
payTemplateUserOne.setBeginTime(createTime);
payTemplateUserOne.setEndTime(newDate);
}
payTemplateUserRepository.save(payTemplateUserOne);
}else {
PayTemplateUser addPayTemplateUser = new PayTemplateUser();
addPayTemplateUser.setPayTemplateId(payTemplateId);
addPayTemplateUser.setUserId(userId);
addPayTemplateUser.setBeginTime(createTime);
addPayTemplateUser.setEndTime(newDate);
payTemplateUserRepository.save(addPayTemplateUser);
}
}
}
}
Loading…
Cancel
Save