修复了添加结算明细的接口

This commit is contained in:
chen-xin-zhi 2025-06-05 08:48:16 +08:00
parent de79efda9a
commit e4f8f6a26e
6 changed files with 35 additions and 18 deletions

View File

@ -28,6 +28,7 @@ import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -38,6 +39,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
/**
@ -114,6 +116,7 @@ public class ProjectSettlementController {
* @return 是否添加成功
*/
@PostMapping("add")
@Transactional(rollbackFor = Exception.class)
@Operation(summary = "web端管理员添加项目结算记录", description = "参数项目结算记录添加请求体权限管理员方法名addProjectSettlement")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "项目结算记录管理", content = "web端管理员添加项目结算记录")
@ -123,7 +126,9 @@ public class ProjectSettlementController {
projectSettlementService.save(projectSettlement);
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 settlementRevenue = projectSettlement.getSettlementRevenue();
@ -141,7 +146,7 @@ public class ProjectSettlementController {
Long subUid = subUserProjectCommission.getSubUserId();
BigDecimal myUnitPrice = subUserProjectCommission.getMyUnitPrice();
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;
subUserProjectCommissionMap.put(uid + "-" + subUid, myUnitPrice.subtract(agentUnitPrice));
}
@ -172,13 +177,25 @@ public class ProjectSettlementController {
.build();
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<>();
for (ProjectSettlement projectSettle : projectSettlementList) {
// 取出当前用户的余额
Long uid = projectSettle.getUserId();
BigDecimal currentAmount = userMainInfoMap.get(uid);
FundsChange funds = FundsChange.builder()
.projectName(projectSettle.getProjectDetailName())
.changeAmount(projectSettle.getSettlementRevenue())
.userId(projectSettle.getUserId())
.currentAmount(currentAmount.add(projectSettle.getSettlementRevenue()))
.userId(uid)
.projectSettlementId(projectSettle.getId())
.build();
fundsChangeList.add(funds);

View File

@ -1,5 +1,6 @@
package com.greenorange.promotion.model.dto.projectSettlement;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;

View File

@ -21,6 +21,9 @@ spring:
multipart:
max-file-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/
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
springdoc:
default-flat-param-object: true

View File

@ -22,6 +22,9 @@ spring:
multipart:
max-file-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/
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
springdoc:
default-flat-param-object: true

View File

@ -22,6 +22,11 @@ spring:
multipart:
max-file-size: 20MB
max-request-size: 20MB
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
#文件上传和下载地址
file:
@ -29,10 +34,6 @@ file:
upload-dir: D:/qingcheng/image/
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
springdoc:
default-flat-param-object: true

View File

@ -22,6 +22,9 @@ spring:
multipart:
max-file-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/
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
springdoc:
default-flat-param-object: true