package cn.edu.mju.manager.service.serviceImpl;
import cn.edu.mju.dto.PageDTO;
import cn.edu.mju.entity.Product;
import cn.edu.mju.enums.ProductStatusEnum;
import cn.edu.mju.manager.enums.ErrorEnum;
import cn.edu.mju.manager.mapper.ProductMapper;
import cn.edu.mju.manager.service.ProductService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author <a href="https://github.com/haidilaohotpot">cheng</a>
* @since 1.0.0 2019/10/8
*/
@Service
@Slf4j
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
@Override
public Product add(Product product) {
//数据校验
checkProduct(product);
//设置默认值
setDefault(product);
//储存
this.save(product);
log.debug("创建产品,结果:{}",product);
return product;
}
/**
*
* 分页查询
* @param idList
* @param minRewardRate
* @param maxRewardRate
* @param statusList
* @param pageDTO
* @return
*/
@Override
public PageDTO query(List<String> idList, BigDecimal minRewardRate, BigDecimal maxRewardRate, List<String> statusList, PageDTO pageDTO) {
QueryWrapper<Product> wrapper = buildWrapper(idList,minRewardRate,maxRewardRate,statusList);
IPage<Product> page = buildPage(pageDTO);
page = this.page(page, wrapper);
pageDTO = build(page);
return pageDTO;
}
/**
* 构建分页数据
* @param page
* @return
*/
private PageDTO build(IPage<Product> page) {
Integer pages = Math.toIntExact(page.getPages());
List<Product> data = page.getRecords();
Integer current = Math.toIntExact(page.getCurrent());
Integer size = Math.toIntExact(page.getSize());
Integer total = Math.toIntExact(page.getTotal());
return new PageDTO(pages, size, current, total, data);
}
/**
* 构建分页对象
* @param pageDTO
* @return
*/
private IPage<Product> buildPage(PageDTO pageDTO) {
IPage<Product> page = new Page<>();
page.setSize(pageDTO.getPageSize());
page.setCurrent(pageDTO.getCurrent());
return page;
}
/**
* 封装mybatis分页查询所需的对象
* @param idList
* @param minRewardRate
* @param maxRewardRate
* @param statusList
* @return
*/
private QueryWrapper<Product> buildWrapper(List<String> idList, BigDecimal minRewardRate, BigDecimal maxRewardRate, List<String> statusList) {
QueryWrapper<Product> wrapper = new QueryWrapper<>();
if (idList != null) {
wrapper.in("id", idList);
}
if (minRewardRate != null && maxRewardRate != null) {
wrapper.between("reward_rate", minRewardRate, maxRewardRate);
// wrapper.or().between("reward_rate", minRewardRate, maxRewardRate);
}
if (statusList != null) {
wrapper.in("status",statusList);
// wrapper.or().in("status",statusList);
}
return wrapper;
}
/**
* 设置默认值
*
* 创建时间、更新时间
* 投资步长、锁定期
*
* @param product
*/
private void setDefault(Product product) {
if (product.getCreateAt() == null) {
product.setCreateAt(new Date());
}
if (product.getUpdateAt() == null) {
product.setUpdateAt(new Date());
}
if (product.getStepAmount() == null) {
product.setStepAmount(BigDecimal.ZERO);
}
if (product.getLockTerm() == null) {
product.setLockTerm(0);
}
if (product.getStatus() == null) {
product.setStatus(ProductStatusEnum.AUDITING.name());
}
}
/**
* 产品数据校验
* 1.非空数据
* 2.收益率0-30以内
* 3.投资步长需为整数
* @param product
*/
private void checkProduct(Product product) {
Assert.notNull(product.getId(),ErrorEnum.ID_NOT_NULL.getCode());
//其他非空校验
Assert.isTrue(BigDecimal.ZERO.compareTo(product.getRewardRate()) < 0 && BigDecimal.valueOf(30).compareTo(product.getRewardRate()) >= 0,"收益率错误");
Assert.isTrue(BigDecimal.valueOf(product.getStepAmount().longValue()).compareTo(product.getStepAmount()) == 0, "投资步长要为整数");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip基于SpringBoot 开发理财产品系统.zip 【备注】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载,欢迎沟通,互相学习,共同进步!提供答疑!
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot 开发理财产品系统.zip (316个子文件)
Product.class 7KB
Product.class 6KB
Product.class 6KB
ProductServiceImpl.class 6KB
Order.class 6KB
Order.class 6KB
Order.class 6KB
ProductController.class 4KB
SwaggerInfo.class 4KB
RequestUtils.class 4KB
PageDTO.class 3KB
PageDTO.class 3KB
PageDTO.class 3KB
BaseErrorController.class 3KB
ErrorConfig.class 2KB
SwaggerConfig.class 2KB
ProductController.class 2KB
ProductController.class 2KB
ErrorEnum.class 2KB
ErrorControllerAdvice.class 2KB
ProductStatusEnum.class 2KB
OrderStatusEnum.class 2KB
OrderTypeEnum.class 1KB
ApiBootstrap.class 888B
ManagerBootstrap.class 885B
ProductService.class 873B
ProductClient.class 863B
SellerBootstrap.class 861B
BaseEnum.class 850B
ZuulApplication.class 832B
MybatisPlusConfig.class 788B
EurekaApplication.class 786B
ProductService.class 713B
EurekaApplicationTests.class 630B
ZuulApplicationTests.class 620B
ProductMapper.class 388B
500.html 204B
500.html 204B
manager.iml 17KB
seller.iml 17KB
eureka.iml 17KB
zuul.iml 16KB
api.iml 16KB
swagger.iml 10KB
util.iml 9KB
quartz.iml 9KB
entity.iml 9KB
config.iml 9KB
financial.iml 9KB
seller-2.1.8.RELEASE.jar 50.71MB
ProductServiceImpl.java 5KB
ProductController.java 3KB
RSAUtil.java 2KB
RequestUtils.java 2KB
OrderServiceImpl.java 2KB
BaseErrorController.java 2KB
ErrorControllerAdvice.java 1KB
SwaggerConfig.java 1KB
ErrorConfig.java 1KB
Product.java 947B
ErrorEnum.java 942B
ProductController.java 940B
ProductController.java 921B
OrderController.java 893B
Order.java 858B
ProductClient.java 803B
ProductService.java 789B
Product.java 744B
Product.java 741B
ProductService.java 674B
ProductStatusEnum.java 656B
ApiBootstrap.java 608B
OrderStatusEnum.java 606B
Order.java 596B
Order.java 593B
SellerBootstrap.java 585B
BaseEnum.java 584B
ManagerBootstrap.java 573B
MybatisPlusConfig.java 563B
OrderTypeEnum.java 546B
SwaggerInfo.java 510B
ZuulApplication.java 484B
PageDTO.java 435B
PageDTO.java 432B
PageDTO.java 428B
EurekaApplication.java 417B
SignText.java 383B
ProductMapper.java 351B
OrderMapper.java 351B
EurekaApplicationTests.java 343B
ZuulApplicationTests.java 339B
OrderService.java 333B
inputFiles.lst 522B
createdFiles.lst 252B
READ1ME.md 50B
seller-2.1.8.RELEASE.jar.original 53KB
pom.properties 73B
workspace.xml 53KB
uiDesigner.xml 9KB
pom.xml 3KB
共 316 条
- 1
- 2
- 3
- 4
资源评论
z同学的编程之路
- 粉丝: 1808
- 资源: 2129
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功