From 2fe2397bd86370d1c523ba72e7066b5907f466df Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Thu, 5 Jun 2025 20:57:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=94=A8=E6=88=B7=E6=9F=A5=E7=9C=8B=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E8=AE=B0=E5=BD=95=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectSettlementController.java | 46 +++++++++---- .../ProjectSettlementAddRequest.java | 9 +-- .../ProjectSettlementQueryRequest.java | 8 +-- .../ProjectSettlementUpdateRequest.java | 8 +-- .../model/entity/ProjectSettlement.java | 4 +- .../MiniProjectSettlementVO.java | 68 +++++++++++++++++++ .../ProjectSettlementVO.java | 8 +-- 7 files changed, 121 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/greenorange/promotion/model/vo/projectSettlement/MiniProjectSettlementVO.java diff --git a/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java b/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java index 345fdaf..7ef45bc 100644 --- a/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java +++ b/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java @@ -5,14 +5,12 @@ 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; -import com.greenorange.promotion.common.ErrorCode; import com.greenorange.promotion.common.ResultUtils; 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.projectSettlement.ProjectSettlementAddRequest; -import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementUpdateRequest; 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.service.common.CommonService; import com.greenorange.promotion.service.project.ProjectDetailService; @@ -86,12 +84,23 @@ public class ProjectSettlementController { @Operation(summary = "小程序端用户根据推广码申请记录id查询结算记录", description = "参数:项目结算记录添加请求体,权限:管理员,方法名:queryProjectSettlementRecordByPid") @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) // @SysLog(title = "项目结算记录管理", content = "小程序端用户根据推广码申请记录id查询结算记录") - public BaseResponse> queryProjectSettlementRecordByPid(@Valid @RequestBody CommonRequest commonRequest) { + public BaseResponse> queryProjectSettlementRecordByPid(@Valid @RequestBody CommonRequest commonRequest) { Long id = commonRequest.getId(); - Map, Object> fieldConditions = Map.of(ProjectSettlement::getPromoCodeApplyId, id, ProjectSettlement::getRevenueSource, 0); + Map, Object> fieldConditions = Map.of(ProjectSettlement::getPromoCodeApplyId, id); List projectSettlementList = commonService.findByFieldEqTargetFields(fieldConditions, projectSettlementService); - List projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class); - return ResultUtils.success(projectSettlementVOS); + List promoCodeApplyList = commonService.findByFieldInTargetField(projectSettlementList, promoCodeApplyService, ProjectSettlement::getPromoCodeApplyId, PromoCodeApply::getId); + // 封装Map集合(键:推广码申请记录id, 值:业务员姓名) + Map salespersonNameMap = new HashMap<>(); + for (PromoCodeApply promoCodeApply : promoCodeApplyList) { + salespersonNameMap.put(promoCodeApply.getId(), promoCodeApply.getSalespersonName()); + } + List 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") @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) // @SysLog(title = "项目结算记录管理", content = "小程序端用户查询当前推广项目的所有结算明细") - public BaseResponse> queryProjectSettlementRecordByProjectId(@Valid @RequestBody CommonRequest commonRequest) { - Long id = commonRequest.getId(); - List projectSettlementList = commonService.findByFieldEqTargetField(ProjectSettlement::getProjectId, id, projectSettlementService); - List projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class); - return ResultUtils.success(projectSettlementVOS); + public BaseResponse> queryProjectSettlementRecordByProjectId(@Valid @RequestBody CommonRequest commonRequest, HttpServletRequest request) { + Long projectId = commonRequest.getId(); + Long userId = (Long) request.getAttribute("userId"); + Map, Object> fieldConditions = Map.of(ProjectSettlement::getUserId, userId, ProjectSettlement::getProjectId, projectId); + List projectSettlementList = commonService.findByFieldEqTargetFields(fieldConditions, projectSettlementService); + List promoCodeApplyList = commonService.findByFieldInTargetField(projectSettlementList, promoCodeApplyService, ProjectSettlement::getPromoCodeApplyId, PromoCodeApply::getId); + // 封装Map集合(键:推广码申请记录id, 值:业务员姓名) + Map salespersonNameMap = new HashMap<>(); + for (PromoCodeApply promoCodeApply : promoCodeApplyList) { + salespersonNameMap.put(promoCodeApply.getId(), promoCodeApply.getSalespersonName()); + } + List 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); } /** diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java index 1ac7255..8f9bc64 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java @@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Min; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; import java.io.Serializable; @@ -51,14 +52,14 @@ public class ProjectSettlementAddRequest implements Serializable { /** * 作业时间 */ - @Schema(description = "作业时间", example = "2025-05-10 10:00:00") - private Date workTime; + @Schema(description = "作业时间", example = "2025-05-10") + private String workTime; /** * 结算时间 */ - @Schema(description = "结算时间", example = "2025-05-12 10:00:00") - private Date settlementTime; + @Schema(description = "结算时间", example = "2025-05-12") + private String settlementTime; /** * 推广码申请记录id diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java index 1c0855b..4a6fc7c 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java @@ -48,14 +48,14 @@ public class ProjectSettlementQueryRequest extends PageRequest implements Serial /** * 作业时间 */ - @Schema(description = "作业时间", example = "2025-05-10 10:00:00") - private Date workTime; + @Schema(description = "作业时间", example = "2025-05-10") + private String workTime; /** * 结算时间 */ - @Schema(description = "结算时间", example = "2025-05-12 10:00:00") - private Date settlementTime; + @Schema(description = "结算时间", example = "2025-05-12") + private String settlementTime; /** * 推广码申请记录id diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java index 1a10f0f..73ced89 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java @@ -57,14 +57,14 @@ public class ProjectSettlementUpdateRequest implements Serializable { /** * 作业时间 */ - @Schema(description = "作业时间", example = "2025-05-10 10:00:00") - private Date workTime; + @Schema(description = "作业时间", example = "2025-05-10") + private String workTime; /** * 结算时间 */ - @Schema(description = "结算时间", example = "2025-05-12 10:00:00") - private Date settlementTime; + @Schema(description = "结算时间", example = "2025-05-12") + private String settlementTime; /** * 推广码申请记录id diff --git a/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java b/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java index 6e4f938..92de984 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java +++ b/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java @@ -47,12 +47,12 @@ public class ProjectSettlement implements Serializable { /** * 作业时间 */ - private Date workTime; + private String workTime; /** * 结算时间 */ - private Date settlementTime; + private String settlementTime; /** * 推广码申请记录id diff --git a/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/MiniProjectSettlementVO.java b/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/MiniProjectSettlementVO.java new file mode 100644 index 0000000..f4327da --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/MiniProjectSettlementVO.java @@ -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; +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java b/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java index 4eb559b..d6c2cdb 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java @@ -44,14 +44,14 @@ public class ProjectSettlementVO implements Serializable { /** * 作业时间 */ - @Schema(description = "作业时间", example = "2025-05-10 10:00:00") - private Date workTime; + @Schema(description = "作业时间", example = "2025-05-10") + private String workTime; /** * 结算时间 */ - @Schema(description = "结算时间", example = "2025-05-12 10:00:00") - private Date settlementTime; + @Schema(description = "结算时间", example = "2025-05-12") + private String settlementTime; /**