完成了第一版

This commit is contained in:
chen-xin-zhi 2025-05-14 21:04:14 +08:00
parent 3c48d562a8
commit e774b8edc8
10 changed files with 39 additions and 38 deletions

View File

@ -160,6 +160,7 @@ public class ProjectDetailController {
subUserProjectCommissionList.sort(Comparator.comparing(SubUserProjectCommission::getUserId));
// 更新下级用户项目明细抽佣表记录
BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
BigDecimal projectMinSettlementPrice = projectDetail.getProjectMinSettlementPrice();
// 封装Map集合下级用户id下级用户单价
Map<Long, BigDecimal> subUserUnitPriceMap = new HashMap<>();
// 存储根用户的单价
@ -174,6 +175,8 @@ public class ProjectDetailController {
subUserProjectCommission.setMyUnitPrice(userUnitPrice);
// 计算下级用户的单价
BigDecimal subUserUnitPrice = userUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate));
// 如果下级用户的单价小于项目明细最小结算价格则设置下级用户的单价为项目明细最小结算价格
if (subUserUnitPrice.compareTo(projectMinSettlementPrice) < 0) subUserUnitPrice = projectMinSettlementPrice;
// 存储下级用户的单价
subUserUnitPriceMap.put(subUserId, subUserUnitPrice);
}

View File

@ -1,6 +1,7 @@
package com.greenorange.promotion.controller.projectSettlement;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse;
@ -17,6 +18,7 @@ import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.project.PromoCodeApplyService;
import com.greenorange.promotion.service.settle.FundsChangeService;
import com.greenorange.promotion.service.settle.ProjectSettlementService;
import com.greenorange.promotion.service.userInfo.UserInfoService;
import com.greenorange.promotion.service.userInfo.UserMainInfoService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -31,6 +33,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
@ -57,6 +60,9 @@ public class ProjectSettlementController {
@Resource
private UserMainInfoService userMainInfoService;
@Resource
private UserInfoService userInfoService;
/**
* 小程序端用户根据推广码申请记录id查询结算记录
@ -69,10 +75,8 @@ public class ProjectSettlementController {
// @SysLog(title = "项目结算记录管理", content = "小程序端用户根据推广码申请记录id查询结算记录")
public BaseResponse<List<ProjectSettlementVO>> queryProjectSettlementRecordByPid(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
LambdaQueryWrapper<ProjectSettlement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProjectSettlement::getPromoCodeRequestRecordId, id);
lambdaQueryWrapper.eq(ProjectSettlement::getRevenueSource, 0);
List<ProjectSettlement> projectSettlementList = projectSettlementService.list(lambdaQueryWrapper);
Map<SFunction<ProjectSettlement, ?>, Object> fieldConditions = Map.of(ProjectSettlement::getPromoCodeApplyId, id, ProjectSettlement::getRevenueSource, 0);
List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetFields(fieldConditions, projectSettlementService);
List<ProjectSettlementVO> projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class);
return ResultUtils.success(projectSettlementVOS);
}
@ -88,9 +92,7 @@ public class ProjectSettlementController {
// @SysLog(title = "项目结算记录管理", content = "小程序端用户查询当前推广项目的所有结算明细")
public BaseResponse<List<ProjectSettlementVO>> queryProjectSettlementRecordByProjectId(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
LambdaQueryWrapper<ProjectSettlement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProjectSettlement::getProjectId, id);
List<ProjectSettlement> projectSettlementList = projectSettlementService.list(lambdaQueryWrapper);
List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetField(ProjectSettlement::getProjectId, id, projectSettlementService);
List<ProjectSettlementVO> projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class);
return ResultUtils.success(projectSettlementVOS);
}
@ -109,9 +111,8 @@ public class ProjectSettlementController {
projectSettlementService.save(projectSettlement);
// 查询对应的推广码申请记录
Long pid = projectSettlement.getPromoCodeRequestRecordId();
LambdaQueryWrapper<PromoCodeApply> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(PromoCodeApply::getId, pid);
Long pid = projectSettlement.getPromoCodeApplyId();
LambdaQueryWrapper<PromoCodeApply> lambdaQueryWrapper = commonService.buildQueryWrapperByField(PromoCodeApply::getId, pid, promoCodeApplyService);
PromoCodeApply promoCodeApply = promoCodeApplyService.getOne(lambdaQueryWrapper);
// 获取推广码申请记录的参数
String projectName = promoCodeApply.getProjectName();
@ -121,6 +122,9 @@ public class ProjectSettlementController {
// 获取项目结算记录的参数
BigDecimal settlementRevenue = projectSettlement.getSettlementRevenue();
Long projectSettlementId = projectSettlement.getId();
// 批量添加上级用户的项目结算记录
// 添加资金变动记录
FundsChange fundsChange = FundsChange.builder()
.projectName(projectName)
@ -131,7 +135,9 @@ public class ProjectSettlementController {
.build();
fundsChangeService.save(fundsChange);
return ResultUtils.success(true);
// 批量添加下级用户的项目结算记录
return ResultUtils.success(true);
}
// /**
@ -173,8 +179,7 @@ public class ProjectSettlementController {
Long id = commonRequest.getId();
projectSettlementService.removeById(id);
// 删除资金变动记录
LambdaQueryWrapper<FundsChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(FundsChange::getProjectSettlementId, id);
LambdaQueryWrapper<FundsChange> lambdaQueryWrapper = commonService.buildQueryWrapperByField(FundsChange::getProjectSettlementId, id, fundsChangeService);
fundsChangeService.remove(lambdaQueryWrapper);
return ResultUtils.success(true);
}
@ -223,9 +228,7 @@ public class ProjectSettlementController {
@SysLog(title = "项目结算记录管理", content = "Web端管理员根据推广码申请记录id查询项目结算记录列表")
public BaseResponse<List<ProjectSettlementVO>> queryProjectSettlementByPid(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
LambdaQueryWrapper<ProjectSettlement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProjectSettlement::getPromoCodeRequestRecordId, id);
List<ProjectSettlement> projectSettlementList = projectSettlementService.list(lambdaQueryWrapper);
List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetField(ProjectSettlement::getPromoCodeApplyId, id, projectSettlementService);
List<ProjectSettlementVO> projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class);
return ResultUtils.success(projectSettlementVOS);
}

View File

@ -82,9 +82,7 @@ public class WithdrawalApplyController {
// @SysLog(title = "提现申请记录管理", content = "小程序端用户查询提现申请记录")
public BaseResponse<List<WithdrawalApplyVO>> queryWithdrawalApplyByUserId(HttpServletRequest request) {
Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<WithdrawalApply> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(WithdrawalApply::getUserId, userId);
List<WithdrawalApply> withdrawalApplyList = withdrawalApplyService.list(lambdaQueryWrapper);
List<WithdrawalApply> withdrawalApplyList = commonService.findByFieldEqTargetField(WithdrawalApply::getUserId, userId, withdrawalApplyService);
List<WithdrawalApplyVO> withdrawalApplyVOS = commonService.convertList(withdrawalApplyList, WithdrawalApplyVO.class);
return ResultUtils.success(withdrawalApplyVOS);
}
@ -100,9 +98,7 @@ public class WithdrawalApplyController {
// @SysLog(title = "提现申请记录管理", content = "小程序端用户查询资金变动记录")
public BaseResponse<List<FundsChangeVO>> queryFundsChangeByUserId(HttpServletRequest request) {
Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<FundsChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(FundsChange::getUserId, userId);
List<FundsChange> fundsChangeList = fundsChangeService.list(lambdaQueryWrapper);
List<FundsChange> fundsChangeList = commonService.findByFieldEqTargetField(FundsChange::getUserId, userId, fundsChangeService);
List<FundsChangeVO> fundsChangeVOS = commonService.convertList(fundsChangeList, FundsChangeVO.class);
return ResultUtils.success(fundsChangeVOS);
}

View File

@ -94,8 +94,7 @@ public class UserAccountController {
// @SysLog(title = "用户账户管理", content = "web端管理员根据id查询用户账户")
public BaseResponse<UserAccountVO> queryUserAccountByUserId(HttpServletRequest request) {
Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<UserAccount> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserAccount::getUserId, userId);
LambdaQueryWrapper<UserAccount> lambdaQueryWrapper = commonService.buildQueryWrapperByField(UserAccount::getUserId, userId, userAccountService);
UserAccount userAccount = userAccountService.getOne(lambdaQueryWrapper);
UserAccountVO userAccountVO = commonService.copyProperties(userAccount, UserAccountVO.class);
return ResultUtils.success(userAccountVO);

View File

@ -211,8 +211,7 @@ public class UserInfoController {
// @SysLog(title = "用户管理", content = "小程序端用户根据jwt获取用户主要信息")
public BaseResponse<UserMainInfoVO> getMiniUserMainInfoByJWT(HttpServletRequest request) {
Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<UserMainInfo> userMainInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
userMainInfoLambdaQueryWrapper.eq(UserMainInfo::getUserId, userId);
LambdaQueryWrapper<UserMainInfo> userMainInfoLambdaQueryWrapper = commonService.buildQueryWrapperByField(UserMainInfo::getUserId, userId, userMainInfoService);
UserMainInfo userMainInfo = userMainInfoService.getOne(userMainInfoLambdaQueryWrapper);
UserMainInfoVO userMainInfoVO = commonService.copyProperties(userMainInfo, UserMainInfoVO.class);
return ResultUtils.success(userMainInfoVO);

View File

@ -20,7 +20,7 @@ import java.time.LocalDateTime;
"settlementRevenue",
"workTime",
"settlementTime",
"promoCodeRequestRecordId",
"promoCodeApplyId",
"projectId",
"projectDetailId"
})
@ -62,7 +62,7 @@ public class ProjectSettlementAddRequest implements Serializable {
*/
@Min(value = 1L, message = "推广码申请记录id ID不能小于1")
@Schema(description = "推广码申请记录id", example = "1")
private Long promoCodeRequestRecordId;
private Long promoCodeApplyId;
/**
* 项目id

View File

@ -61,7 +61,7 @@ public class ProjectSettlementQueryRequest extends PageRequest implements Serial
*/
@Min(value = 1L, message = "推广码申请记录id ID不能小于1")
@Schema(description = "推广码申请记录id", example = "1")
private Long promoCodeRequestRecordId;
private Long promoCodeApplyId;
/**
* 项目id

View File

@ -21,7 +21,7 @@ import java.time.LocalDateTime;
"settlementRevenue",
"workTime",
"settlementTime",
"promoCodeRequestRecordId",
"promoCodeApplyId",
"projectId",
"projectDetailId"
})
@ -70,7 +70,7 @@ public class ProjectSettlementUpdateRequest implements Serializable {
*/
@Min(value = 1L, message = "推广码申请记录id ID不能小于1")
@Schema(description = "推广码申请记录id", example = "1")
private Long promoCodeRequestRecordId;
private Long promoCodeApplyId;
/**
* 项目id

View File

@ -49,12 +49,6 @@ public class PromoCodeUpdateRequest implements Serializable {
@Schema(description = "项目ID", example = "1")
private Long projectId;
/**
* 推广码状态(true:占用false:空闲)
*/
@NotBlank(message = "推广码状态不能为空")
@Schema(description = "推广码状态(true:占用false:空闲)", example = "false")
private Boolean promoCodeStatus;
@Serial

View File

@ -7,7 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 项目结算记录表
@ -15,6 +19,9 @@ import lombok.Data;
*/
@TableName(value ="project_settlement")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ProjectSettlement implements Serializable {
/**
* 结算记录ID
@ -50,7 +57,7 @@ public class ProjectSettlement implements Serializable {
/**
* 推广码申请记录id
*/
private Long promoCodeRequestRecordId;
private Long promoCodeApplyId;
/**
* 收益来源true:抽成false推广码