修复了小程序用户查看项目结算记录的接口

This commit is contained in:
chen-xin-zhi 2025-06-05 20:57:14 +08:00
parent 694911d797
commit 2fe2397bd8
7 changed files with 121 additions and 30 deletions

View File

@ -5,14 +5,12 @@ import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog; import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse; import com.greenorange.promotion.common.BaseResponse;
import com.greenorange.promotion.common.ErrorCode;
import com.greenorange.promotion.common.ResultUtils; import com.greenorange.promotion.common.ResultUtils;
import com.greenorange.promotion.constant.UserConstant; import com.greenorange.promotion.constant.UserConstant;
import com.greenorange.promotion.exception.ThrowUtils;
import com.greenorange.promotion.model.dto.CommonRequest; import com.greenorange.promotion.model.dto.CommonRequest;
import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementAddRequest; import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementAddRequest;
import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementUpdateRequest;
import com.greenorange.promotion.model.entity.*; import com.greenorange.promotion.model.entity.*;
import com.greenorange.promotion.model.vo.projectSettlement.MiniProjectSettlementVO;
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.ProjectDetailService;
@ -86,12 +84,23 @@ public class ProjectSettlementController {
@Operation(summary = "小程序端用户根据推广码申请记录id查询结算记录", description = "参数项目结算记录添加请求体权限管理员方法名queryProjectSettlementRecordByPid") @Operation(summary = "小程序端用户根据推广码申请记录id查询结算记录", description = "参数项目结算记录添加请求体权限管理员方法名queryProjectSettlementRecordByPid")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
// @SysLog(title = "项目结算记录管理", content = "小程序端用户根据推广码申请记录id查询结算记录") // @SysLog(title = "项目结算记录管理", content = "小程序端用户根据推广码申请记录id查询结算记录")
public BaseResponse<List<ProjectSettlementVO>> queryProjectSettlementRecordByPid(@Valid @RequestBody CommonRequest commonRequest) { public BaseResponse<List<MiniProjectSettlementVO>> queryProjectSettlementRecordByPid(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId(); Long id = commonRequest.getId();
Map<SFunction<ProjectSettlement, ?>, Object> fieldConditions = Map.of(ProjectSettlement::getPromoCodeApplyId, id, ProjectSettlement::getRevenueSource, 0); Map<SFunction<ProjectSettlement, ?>, Object> fieldConditions = Map.of(ProjectSettlement::getPromoCodeApplyId, id);
List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetFields(fieldConditions, projectSettlementService); List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetFields(fieldConditions, projectSettlementService);
List<ProjectSettlementVO> projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class); List<PromoCodeApply> promoCodeApplyList = commonService.findByFieldInTargetField(projectSettlementList, promoCodeApplyService, ProjectSettlement::getPromoCodeApplyId, PromoCodeApply::getId);
return ResultUtils.success(projectSettlementVOS); // 封装Map集合推广码申请记录id, 业务员姓名
Map<Long, String> salespersonNameMap = new HashMap<>();
for (PromoCodeApply promoCodeApply : promoCodeApplyList) {
salespersonNameMap.put(promoCodeApply.getId(), promoCodeApply.getSalespersonName());
}
List<MiniProjectSettlementVO> miniProjectSettlementVOList = commonService.convertList(projectSettlementList, MiniProjectSettlementVO.class);
for (MiniProjectSettlementVO miniProjectSettlementVO : miniProjectSettlementVOList) {
Long applyId = miniProjectSettlementVO.getPromoCodeApplyId();
String salespersonName = salespersonNameMap.get(applyId);
miniProjectSettlementVO.setSalespersonName(salespersonName);
}
return ResultUtils.success(miniProjectSettlementVOList);
} }
/** /**
@ -103,11 +112,24 @@ public class ProjectSettlementController {
@Operation(summary = "小程序端用户查询当前推广项目的所有结算明细", description = "参数项目结算记录添加请求体权限管理员方法名queryProjectSettlementRecordByProjectId") @Operation(summary = "小程序端用户查询当前推广项目的所有结算明细", description = "参数项目结算记录添加请求体权限管理员方法名queryProjectSettlementRecordByProjectId")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
// @SysLog(title = "项目结算记录管理", content = "小程序端用户查询当前推广项目的所有结算明细") // @SysLog(title = "项目结算记录管理", content = "小程序端用户查询当前推广项目的所有结算明细")
public BaseResponse<List<ProjectSettlementVO>> queryProjectSettlementRecordByProjectId(@Valid @RequestBody CommonRequest commonRequest) { public BaseResponse<List<MiniProjectSettlementVO>> queryProjectSettlementRecordByProjectId(@Valid @RequestBody CommonRequest commonRequest, HttpServletRequest request) {
Long id = commonRequest.getId(); Long projectId = commonRequest.getId();
List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetField(ProjectSettlement::getProjectId, id, projectSettlementService); Long userId = (Long) request.getAttribute("userId");
List<ProjectSettlementVO> projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class); Map<SFunction<ProjectSettlement, ?>, Object> fieldConditions = Map.of(ProjectSettlement::getUserId, userId, ProjectSettlement::getProjectId, projectId);
return ResultUtils.success(projectSettlementVOS); List<ProjectSettlement> projectSettlementList = commonService.findByFieldEqTargetFields(fieldConditions, projectSettlementService);
List<PromoCodeApply> promoCodeApplyList = commonService.findByFieldInTargetField(projectSettlementList, promoCodeApplyService, ProjectSettlement::getPromoCodeApplyId, PromoCodeApply::getId);
// 封装Map集合推广码申请记录id, 业务员姓名
Map<Long, String> salespersonNameMap = new HashMap<>();
for (PromoCodeApply promoCodeApply : promoCodeApplyList) {
salespersonNameMap.put(promoCodeApply.getId(), promoCodeApply.getSalespersonName());
}
List<MiniProjectSettlementVO> miniProjectSettlementVOList = commonService.convertList(projectSettlementList, MiniProjectSettlementVO.class);
for (MiniProjectSettlementVO miniProjectSettlementVO : miniProjectSettlementVOList) {
Long applyId = miniProjectSettlementVO.getPromoCodeApplyId();
String salespersonName = salespersonNameMap.get(applyId);
miniProjectSettlementVO.setSalespersonName(salespersonName);
}
return ResultUtils.success(miniProjectSettlementVOList);
} }
/** /**

View File

@ -5,6 +5,7 @@ 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;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -51,14 +52,14 @@ public class ProjectSettlementAddRequest implements Serializable {
/** /**
* 作业时间 * 作业时间
*/ */
@Schema(description = "作业时间", example = "2025-05-10 10:00:00") @Schema(description = "作业时间", example = "2025-05-10")
private Date workTime; private String workTime;
/** /**
* 结算时间 * 结算时间
*/ */
@Schema(description = "结算时间", example = "2025-05-12 10:00:00") @Schema(description = "结算时间", example = "2025-05-12")
private Date settlementTime; private String settlementTime;
/** /**
* 推广码申请记录id * 推广码申请记录id

View File

@ -48,14 +48,14 @@ public class ProjectSettlementQueryRequest extends PageRequest implements Serial
/** /**
* 作业时间 * 作业时间
*/ */
@Schema(description = "作业时间", example = "2025-05-10 10:00:00") @Schema(description = "作业时间", example = "2025-05-10")
private Date workTime; private String workTime;
/** /**
* 结算时间 * 结算时间
*/ */
@Schema(description = "结算时间", example = "2025-05-12 10:00:00") @Schema(description = "结算时间", example = "2025-05-12")
private Date settlementTime; private String settlementTime;
/** /**
* 推广码申请记录id * 推广码申请记录id

View File

@ -57,14 +57,14 @@ public class ProjectSettlementUpdateRequest implements Serializable {
/** /**
* 作业时间 * 作业时间
*/ */
@Schema(description = "作业时间", example = "2025-05-10 10:00:00") @Schema(description = "作业时间", example = "2025-05-10")
private Date workTime; private String workTime;
/** /**
* 结算时间 * 结算时间
*/ */
@Schema(description = "结算时间", example = "2025-05-12 10:00:00") @Schema(description = "结算时间", example = "2025-05-12")
private Date settlementTime; private String settlementTime;
/** /**
* 推广码申请记录id * 推广码申请记录id

View File

@ -47,12 +47,12 @@ public class ProjectSettlement implements Serializable {
/** /**
* 作业时间 * 作业时间
*/ */
private Date workTime; private String workTime;
/** /**
* 结算时间 * 结算时间
*/ */
private Date settlementTime; private String settlementTime;
/** /**
* 推广码申请记录id * 推广码申请记录id

View File

@ -0,0 +1,68 @@
package com.greenorange.promotion.model.vo.projectSettlement;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
@Schema(description = "项目结算记录 视图对象")
public class MiniProjectSettlementVO implements Serializable {
/**
* 推广码申请ID
*/
@Schema(description = "推广码申请ID", example = "1")
private Long promoCodeApplyId;
/**
* 业务员姓名
*/
@Schema(description = "业务员姓名", example = "chenxinzhi")
private String salespersonName;
/**
* 项目明细名称
*/
@Schema(description = "项目明细名称", example = "2.9元购买30元券包")
private String projectDetailName;
/**
* 结算数量
*/
@Schema(description = "结算数量", example = "2")
private Integer settlementQuantity;
/**
* 结算收益
*/
@Schema(description = "结算收益", example = "2.34")
private BigDecimal settlementRevenue;
/**
* 作业时间
*/
@Schema(description = "作业时间", example = "2025-05-10")
private String workTime;
/**
* 结算时间
*/
@Schema(description = "结算时间", example = "2025-05-12")
private String settlementTime;
/**
* 收益来源true:抽成false推广码
*/
@Schema(description = "收益来源true:抽成false推广码", example = "false")
private Boolean revenueSource;
@Serial
private static final long serialVersionUID = 1L;
}

View File

@ -44,14 +44,14 @@ public class ProjectSettlementVO implements Serializable {
/** /**
* 作业时间 * 作业时间
*/ */
@Schema(description = "作业时间", example = "2025-05-10 10:00:00") @Schema(description = "作业时间", example = "2025-05-10")
private Date workTime; private String workTime;
/** /**
* 结算时间 * 结算时间
*/ */
@Schema(description = "结算时间", example = "2025-05-12 10:00:00") @Schema(description = "结算时间", example = "2025-05-12")
private Date settlementTime; private String settlementTime;
/** /**