完成了第一版

This commit is contained in:
chen-xin-zhi 2025-05-15 08:34:50 +08:00
parent e774b8edc8
commit 1a14df8296
3 changed files with 45 additions and 5 deletions

View File

@ -15,7 +15,9 @@ import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementUp
import com.greenorange.promotion.model.entity.*; import com.greenorange.promotion.model.entity.*;
import com.greenorange.promotion.model.vo.projectSettlement.ProjectSettlementVO; import com.greenorange.promotion.model.vo.projectSettlement.ProjectSettlementVO;
import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.project.ProjectDetailService;
import com.greenorange.promotion.service.project.PromoCodeApplyService; import com.greenorange.promotion.service.project.PromoCodeApplyService;
import com.greenorange.promotion.service.project.SubUserProjectCommissionService;
import com.greenorange.promotion.service.settle.FundsChangeService; import com.greenorange.promotion.service.settle.FundsChangeService;
import com.greenorange.promotion.service.settle.ProjectSettlementService; import com.greenorange.promotion.service.settle.ProjectSettlementService;
import com.greenorange.promotion.service.userInfo.UserInfoService; import com.greenorange.promotion.service.userInfo.UserInfoService;
@ -32,6 +34,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -63,6 +67,13 @@ public class ProjectSettlementController {
@Resource @Resource
private UserInfoService userInfoService; private UserInfoService userInfoService;
@Resource
private ProjectDetailService projectDetailService;
@Resource
private SubUserProjectCommissionService subUserProjectCommissionService;
/** /**
* 小程序端用户根据推广码申请记录id查询结算记录 * 小程序端用户根据推广码申请记录id查询结算记录
@ -111,9 +122,8 @@ public class ProjectSettlementController {
projectSettlementService.save(projectSettlement); projectSettlementService.save(projectSettlement);
// 查询对应的推广码申请记录 // 查询对应的推广码申请记录
Long pid = projectSettlement.getPromoCodeApplyId(); Long applyId = projectSettlement.getPromoCodeApplyId();
LambdaQueryWrapper<PromoCodeApply> lambdaQueryWrapper = commonService.buildQueryWrapperByField(PromoCodeApply::getId, pid, promoCodeApplyService); PromoCodeApply promoCodeApply = promoCodeApplyService.getById(applyId);
PromoCodeApply promoCodeApply = promoCodeApplyService.getOne(lambdaQueryWrapper);
// 获取推广码申请记录的参数 // 获取推广码申请记录的参数
String projectName = promoCodeApply.getProjectName(); String projectName = promoCodeApply.getProjectName();
Long userId = promoCodeApply.getUserId(); Long userId = promoCodeApply.getUserId();
@ -122,8 +132,36 @@ public class ProjectSettlementController {
// 获取项目结算记录的参数 // 获取项目结算记录的参数
BigDecimal settlementRevenue = projectSettlement.getSettlementRevenue(); BigDecimal settlementRevenue = projectSettlement.getSettlementRevenue();
Long projectSettlementId = projectSettlement.getId(); Long projectSettlementId = projectSettlement.getId();
// 获取项目明细的结算价格
Long projectDetailId = projectSettlement.getProjectDetailId();
ProjectDetail projectDetail = projectDetailService.getById(projectDetailId);
BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
BigDecimal projectMinSettlementPrice = projectDetail.getProjectMinSettlementPrice();
// 批量添加上级用户的项目结算记录 // 批量添加上级用户的项目结算记录
List<SubUserProjectCommission> subUserProjectCommissionList = commonService.findByFieldEqTargetField(SubUserProjectCommission::getProjectDetailId, projectDetailId, subUserProjectCommissionService);
// 封装Map集合用户id-下级用户id抽佣价格
Map<String, BigDecimal> subUserProjectCommissionMap = new HashMap<>();
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
Long uid = subUserProjectCommission.getUserId();
Long subUid = subUserProjectCommission.getSubUserId();
BigDecimal myUnitPrice = subUserProjectCommission.getMyUnitPrice();
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
subUserProjectCommissionMap.put(uid + "-" + subUid, myUnitPrice.multiply(currentCommissionRate));
}
List<ProjectSettlement> projectSettlementList = new ArrayList<>();
// 获取当前用户到根用户的路径
List<Long> pathToRoot = userInfoService.findPathToRoot(userId);
for (int i = 0; i < pathToRoot.size() - 1; i ++ ) {
Long uid = pathToRoot.get(i);
Long subUid = pathToRoot.get(i + 1);
BigDecimal commissionRatePrice = subUserProjectCommissionMap.get(uid + "-" + subUid);
ProjectSettlement projectSettle = commonService.copyProperties(projectSettlementAddRequest, ProjectSettlement.class);
projectSettle.setSettlementRevenue(commissionRatePrice);
projectSettle.setRevenueSource(true);
projectSettle.setSuperId(projectSettlementId);
projectSettlementList.add(projectSettle);
}
projectSettlementService.saveBatch(projectSettlementList);
// 添加资金变动记录 // 添加资金变动记录
FundsChange fundsChange = FundsChange.builder() FundsChange fundsChange = FundsChange.builder()

View File

@ -288,6 +288,7 @@ public class UserInfoController {
@SysLog(title = "用户管理", content = "web端管理员添加用户") @SysLog(title = "用户管理", content = "web端管理员添加用户")
public BaseResponse<Boolean> addUserInfo(@Valid @RequestBody UserInfoAddRequest userInfoAddRequest) { public BaseResponse<Boolean> addUserInfo(@Valid @RequestBody UserInfoAddRequest userInfoAddRequest) {
UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class); UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class);
userInfo.setParentUserId(-1L);
userInfoService.save(userInfo); userInfoService.save(userInfo);
return ResultUtils.success(true); return ResultUtils.success(true);
} }

View File

@ -4,6 +4,7 @@ import com.greenorange.promotion.annotation.UserEnumValue;
import com.greenorange.promotion.model.enums.UserRoleEnum; import com.greenorange.promotion.model.enums.UserRoleEnum;
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.Pattern;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
import lombok.Data; import lombok.Data;
@ -58,7 +59,7 @@ public class UserInfoAddRequest implements Serializable {
/** /**
* 用户角色 * 用户角色
*/ */
@UserEnumValue(enumClass = UserRoleEnum.class) @Pattern(regexp = "admin", message = "用户角色只能为 admin")
@Schema(description = "用户角色", example = "user") @Schema(description = "用户角色", example = "user")
private String userRole; private String userRole;