微服务项目:尚融宝(49)(核心业务流程:标的管理(1))
管理 核心 服务项目 业务流程 尚融宝 49 标的
2023-06-13 09:15:11 时间
一、借款人申请借款
1、需求描述
2、相关数据库表
lend:标的表
二、具体步骤
1、标的产生
管理员借款审核通过后,则产生新标的
2、查看标的列表
3、查看标的详情
生成新标的
一、后端实现
1、创建枚举
创建 LendStatusEnum
CHECK(0, "待发布"), INVEST_RUN(1, "募资中"), PAY_RUN(2, "还款中"), PAY_OK(3, "已结清"), FINISH(4, "结标"), CANCEL(-1, "已撤标"), ;
2、定义编号辅助类
service-core中添加辅助类:util.LendNoUtils
3、Service
BorrowInfoServiceImpl 实现:
@Resource
private LendService lendService;
@Transactional(rollbackFor = Exception.class)
@Override
public void approval(BorrowInfoApprovalVO borrowInfoApprovalVO) {
//修改借款信息状态
......
//审核通过则创建标的
if (borrowInfoApprovalVO.getStatus().intValue() == BorrowInfoStatusEnum.CHECK_OK.getStatus().intValue()) {
//创建标的
lendService.createLend(borrowInfoApprovalVO, borrowInfo);
}
}
LendService 接口:
void createLend(BorrowInfoApprovalVO borrowInfoApprovalVO, BorrowInfo borrowInfo);
LendServiceImpl 实现:生成标的
@Override
public void createLend(BorrowInfoApprovalVO borrowInfoApprovalVO, BorrowInfo borrowInfo) {
Lend lend = new Lend();
lend.setUserId(borrowInfo.getUserId());
lend.setBorrowInfoId(borrowInfo.getId());
lend.setLendNo(LendNoUtils.getLendNo());//生成编号
lend.setTitle(borrowInfoApprovalVO.getTitle());
lend.setAmount(borrowInfo.getAmount());
lend.setPeriod(borrowInfo.getPeriod());
lend.setLendYearRate(borrowInfoApprovalVO.getLendYearRate().divide(new BigDecimal(100)));//从审批对象中获取
lend.setServiceRate(borrowInfoApprovalVO.getServiceRate().divide(new BigDecimal(100)));//从审批对象中获取
lend.setReturnMethod(borrowInfo.getReturnMethod());
lend.setLowestAmount(new BigDecimal(100));
lend.setInvestAmount(new BigDecimal(0));
lend.setInvestNum(0);
lend.setPublishDate(LocalDateTime.now());
//起息日期
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate lendStartDate = LocalDate.parse(borrowInfoApprovalVO.getLendStartDate(), dtf);
lend.setLendStartDate(lendStartDate);
//结束日期
LocalDate lendEndDate = lendStartDate.plusMonths(borrowInfo.getPeriod());
lend.setLendEndDate(lendEndDate);
lend.setLendInfo(borrowInfoApprovalVO.getLendInfo());//描述
//平台预期收益
// 月年化 = 年化 / 12
BigDecimal monthRate = lend.getServiceRate().divide(new BigDecimal(12), 8, BigDecimal.ROUND_DOWN);
// 平台收益 = 标的金额 * 月年化 * 期数
BigDecimal expectAmount = lend.getAmount().multiply(monthRate).multiply(new BigDecimal(lend.getPeriod()));
lend.setExpectAmount(expectAmount);
//实际收益
lend.setRealAmount(new BigDecimal(0));
//状态
lend.setStatus(LendStatusEnum.INVEST_RUN.getStatus());
//审核时间
lend.setCheckTime(LocalDateTime.now());
//审核人
lend.setCheckAdminId(1L);
baseMapper.insert(lend);
}
由于这个项目没做管理员管理部分,用前端写死的管理员,即审核人的id是写死的
相关文章
- 06-React状态管理 Redux(工作流程, 核心概念, 求和案例, 异步Action, React-Redux, 多状态管理, 纯函数, 高阶函数, Redux开发者工具)
- 微服务项目:尚融宝(50)(核心业务流程:标的管理(2))
- Istio Ambient 模式流量管理实现机制详解(三)
- 【Linux 内核 内存管理】物理分配页 ① ( 分区伙伴分配器物理分配页核心函数 __alloc_pages_nodemask | __alloc_pages_nodemask 函数完整源码 )
- MongoDB数据库 索引 用法管理 详细介绍
- MySQL中表空间的管理技术(mysql有没有表空间)
- 查询深入MySQL:建立与管理树结构查询(Mysql树结构)
- 管理Mysql的流程管理:构建一个可持续的系统(mysql流程)
- 时间Java中实现Redis过期时间管理(redisjava过期)
- Oracle用户和角色管理:掌控用户权限管控系统安全(oracle用户和角色)
- 掌握oracle9i工具,轻松提升数据库管理技术(oracle9i工具)
- Oracle FNC: 实现数据库管理的创新解决方案(oraclefnc)
- Oracle中的段存储空间管理的重要核心(oracle中的段)
- MySQL数据库无需使用表空间,灵活管理存储空间(mysql不使用表空间)
- Oracle人事管理系统管理更高效率(oracle人员管理系统)
- MySQL如何管理根文件夹(mysql下根文件夹)
- 管理Redis项目,让结果更加辉煌(redis项目管理)
- Oracle DBM掌握数据库管理核心(oracle dbm)