修复了添加结算明细的接口
This commit is contained in:
parent
de79efda9a
commit
e4f8f6a26e
|
@ -28,6 +28,7 @@ import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
@ -38,6 +39,7 @@ import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -114,6 +116,7 @@ public class ProjectSettlementController {
|
||||||
* @return 是否添加成功
|
* @return 是否添加成功
|
||||||
*/
|
*/
|
||||||
@PostMapping("add")
|
@PostMapping("add")
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Operation(summary = "web端管理员添加项目结算记录", description = "参数:项目结算记录添加请求体,权限:管理员,方法名:addProjectSettlement")
|
@Operation(summary = "web端管理员添加项目结算记录", description = "参数:项目结算记录添加请求体,权限:管理员,方法名:addProjectSettlement")
|
||||||
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
||||||
@SysLog(title = "项目结算记录管理", content = "web端管理员添加项目结算记录")
|
@SysLog(title = "项目结算记录管理", content = "web端管理员添加项目结算记录")
|
||||||
|
@ -123,7 +126,9 @@ public class ProjectSettlementController {
|
||||||
projectSettlementService.save(projectSettlement);
|
projectSettlementService.save(projectSettlement);
|
||||||
|
|
||||||
Long userId = projectSettlement.getUserId();
|
Long userId = projectSettlement.getUserId();
|
||||||
UserMainInfo userMainInfo = userMainInfoService.getById(userId);
|
LambdaQueryWrapper<UserMainInfo> userMainInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
userMainInfoLambdaQueryWrapper.eq(UserMainInfo::getUserId, userId);
|
||||||
|
UserMainInfo userMainInfo = userMainInfoService.getOne(userMainInfoLambdaQueryWrapper);
|
||||||
BigDecimal currentBalance = userMainInfo.getCurrentBalance();
|
BigDecimal currentBalance = userMainInfo.getCurrentBalance();
|
||||||
// 获取项目结算记录的参数
|
// 获取项目结算记录的参数
|
||||||
BigDecimal settlementRevenue = projectSettlement.getSettlementRevenue();
|
BigDecimal settlementRevenue = projectSettlement.getSettlementRevenue();
|
||||||
|
@ -141,7 +146,7 @@ public class ProjectSettlementController {
|
||||||
Long subUid = subUserProjectCommission.getSubUserId();
|
Long subUid = subUserProjectCommission.getSubUserId();
|
||||||
BigDecimal myUnitPrice = subUserProjectCommission.getMyUnitPrice();
|
BigDecimal myUnitPrice = subUserProjectCommission.getMyUnitPrice();
|
||||||
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
||||||
BigDecimal agentUnitPrice = myUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate));
|
BigDecimal agentUnitPrice = myUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate.divide(BigDecimal.valueOf(100))));
|
||||||
if (agentUnitPrice.compareTo(projectMinSettlementPrice) <= 0) agentUnitPrice = projectMinSettlementPrice;
|
if (agentUnitPrice.compareTo(projectMinSettlementPrice) <= 0) agentUnitPrice = projectMinSettlementPrice;
|
||||||
subUserProjectCommissionMap.put(uid + "-" + subUid, myUnitPrice.subtract(agentUnitPrice));
|
subUserProjectCommissionMap.put(uid + "-" + subUid, myUnitPrice.subtract(agentUnitPrice));
|
||||||
}
|
}
|
||||||
|
@ -172,13 +177,25 @@ public class ProjectSettlementController {
|
||||||
.build();
|
.build();
|
||||||
fundsChangeService.save(fundsChange);
|
fundsChangeService.save(fundsChange);
|
||||||
|
|
||||||
|
// 获取用户主要信息
|
||||||
|
List<UserMainInfo> userMainInfoList = commonService.findByFieldInTargetField(pathToRoot, userMainInfoService, Function.identity(), UserMainInfo::getUserId);
|
||||||
|
// 封装Map集合(键:用户id,值:用户余额)
|
||||||
|
Map<Long, BigDecimal> userMainInfoMap = new HashMap<>();
|
||||||
|
for (UserMainInfo mainInfo : userMainInfoList) {
|
||||||
|
userMainInfoMap.put(mainInfo.getUserId(), mainInfo.getCurrentBalance());
|
||||||
|
}
|
||||||
|
|
||||||
// 批量添加上级用户的项目结算记录
|
// 批量添加上级用户的项目结算记录
|
||||||
List<FundsChange> fundsChangeList = new ArrayList<>();
|
List<FundsChange> fundsChangeList = new ArrayList<>();
|
||||||
for (ProjectSettlement projectSettle : projectSettlementList) {
|
for (ProjectSettlement projectSettle : projectSettlementList) {
|
||||||
|
// 取出当前用户的余额
|
||||||
|
Long uid = projectSettle.getUserId();
|
||||||
|
BigDecimal currentAmount = userMainInfoMap.get(uid);
|
||||||
FundsChange funds = FundsChange.builder()
|
FundsChange funds = FundsChange.builder()
|
||||||
.projectName(projectSettle.getProjectDetailName())
|
.projectName(projectSettle.getProjectDetailName())
|
||||||
.changeAmount(projectSettle.getSettlementRevenue())
|
.changeAmount(projectSettle.getSettlementRevenue())
|
||||||
.userId(projectSettle.getUserId())
|
.currentAmount(currentAmount.add(projectSettle.getSettlementRevenue()))
|
||||||
|
.userId(uid)
|
||||||
.projectSettlementId(projectSettle.getId())
|
.projectSettlementId(projectSettle.getId())
|
||||||
.build();
|
.build();
|
||||||
fundsChangeList.add(funds);
|
fundsChangeList.add(funds);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.greenorange.promotion.model.dto.projectSettlement;
|
package com.greenorange.promotion.model.dto.projectSettlement;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.Min;
|
import jakarta.validation.constraints.Min;
|
||||||
|
|
|
@ -21,6 +21,9 @@ spring:
|
||||||
multipart:
|
multipart:
|
||||||
max-file-size: 20MB
|
max-file-size: 20MB
|
||||||
max-request-size: 20MB
|
max-request-size: 20MB
|
||||||
|
jackson:
|
||||||
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
|
time-zone: GMT+8
|
||||||
|
|
||||||
|
|
||||||
#文件上传和下载地址
|
#文件上传和下载地址
|
||||||
|
@ -29,10 +32,6 @@ file:
|
||||||
upload-dir: D:/qingcheng/image/
|
upload-dir: D:/qingcheng/image/
|
||||||
|
|
||||||
|
|
||||||
jackson:
|
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
|
||||||
time-zone: GMT+8
|
|
||||||
|
|
||||||
|
|
||||||
springdoc:
|
springdoc:
|
||||||
default-flat-param-object: true
|
default-flat-param-object: true
|
||||||
|
|
|
@ -22,6 +22,9 @@ spring:
|
||||||
multipart:
|
multipart:
|
||||||
max-file-size: 20MB
|
max-file-size: 20MB
|
||||||
max-request-size: 20MB
|
max-request-size: 20MB
|
||||||
|
jackson:
|
||||||
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
|
time-zone: GMT+8
|
||||||
|
|
||||||
|
|
||||||
#文件上传和下载地址
|
#文件上传和下载地址
|
||||||
|
@ -30,10 +33,6 @@ file:
|
||||||
upload-dir: D:/qingcheng/image/
|
upload-dir: D:/qingcheng/image/
|
||||||
|
|
||||||
|
|
||||||
jackson:
|
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
|
||||||
time-zone: GMT+8
|
|
||||||
|
|
||||||
|
|
||||||
springdoc:
|
springdoc:
|
||||||
default-flat-param-object: true
|
default-flat-param-object: true
|
||||||
|
|
|
@ -22,6 +22,11 @@ spring:
|
||||||
multipart:
|
multipart:
|
||||||
max-file-size: 20MB
|
max-file-size: 20MB
|
||||||
max-request-size: 20MB
|
max-request-size: 20MB
|
||||||
|
jackson:
|
||||||
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
|
time-zone: GMT+8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#文件上传和下载地址
|
#文件上传和下载地址
|
||||||
file:
|
file:
|
||||||
|
@ -29,10 +34,6 @@ file:
|
||||||
upload-dir: D:/qingcheng/image/
|
upload-dir: D:/qingcheng/image/
|
||||||
|
|
||||||
|
|
||||||
jackson:
|
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
|
||||||
time-zone: GMT+8
|
|
||||||
|
|
||||||
|
|
||||||
springdoc:
|
springdoc:
|
||||||
default-flat-param-object: true
|
default-flat-param-object: true
|
||||||
|
|
|
@ -22,6 +22,9 @@ spring:
|
||||||
multipart:
|
multipart:
|
||||||
max-file-size: 20MB
|
max-file-size: 20MB
|
||||||
max-request-size: 20MB
|
max-request-size: 20MB
|
||||||
|
jackson:
|
||||||
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
|
time-zone: GMT+8
|
||||||
|
|
||||||
|
|
||||||
# 文件上传和下载地址
|
# 文件上传和下载地址
|
||||||
|
@ -30,9 +33,6 @@ file:
|
||||||
upload-dir: D:/qingcheng/image/
|
upload-dir: D:/qingcheng/image/
|
||||||
|
|
||||||
|
|
||||||
jackson:
|
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
|
||||||
time-zone: GMT+8
|
|
||||||
|
|
||||||
springdoc:
|
springdoc:
|
||||||
default-flat-param-object: true
|
default-flat-param-object: true
|
||||||
|
|
Loading…
Reference in New Issue
Block a user