From a7479a0802d2dddf1b280c3cff25de07ee80ec33 Mon Sep 17 00:00:00 2001
From: chen-xin-zhi <3588068430@qq.com>
Date: Mon, 12 May 2025 21:36:27 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90=E5=B0=8F?=
 =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=A8=A1=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/project/ProjectController.java | 25 ++++++++++---------
 .../project/ProjectDetailController.java      | 17 +++++++++++++
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java
index 63a8187..82fefd1 100644
--- a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java
+++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java
@@ -238,24 +238,25 @@ public class ProjectController {
     public BaseResponse<Boolean> delProject(@Valid @RequestBody CommonRequest commonRequest) {
         Long id = commonRequest.getId();
         projectService.removeById(id);
-        LambdaQueryWrapper<ProjectDetail> projectDetailLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        projectDetailLambdaQueryWrapper.eq(ProjectDetail::getProjectId, id);
+        // 删除项目明细
+        LambdaQueryWrapper<ProjectDetail> projectDetailLambdaQueryWrapper = commonService.buildQueryWrapperByField(ProjectDetail::getProjectId, id, projectDetailService);
         projectDetailService.remove(projectDetailLambdaQueryWrapper);
-        LambdaQueryWrapper<ProjectNotification> projectNotificationLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        projectNotificationLambdaQueryWrapper.eq(ProjectNotification::getProjectId, id);
+        // 删除项目通知
+        LambdaQueryWrapper<ProjectNotification> projectNotificationLambdaQueryWrapper = commonService.buildQueryWrapperByField(ProjectNotification::getProjectId, id, projectNotificationService);
         projectNotificationService.remove(projectNotificationLambdaQueryWrapper);
-        LambdaQueryWrapper<PromoCode> promoCodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        promoCodeLambdaQueryWrapper.eq(PromoCode::getProjectId, id);
+        // 删除项目推广码
+        LambdaQueryWrapper<PromoCode> promoCodeLambdaQueryWrapper = commonService.buildQueryWrapperByField(PromoCode::getProjectId, id, promoCodeService);
         promoCodeService.remove(promoCodeLambdaQueryWrapper);
-        LambdaQueryWrapper<ProjectCommission> projectCommissionLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        projectCommissionLambdaQueryWrapper.eq(ProjectCommission::getProjectId, id);
+        // 删除项目明细抽佣记录
+        LambdaQueryWrapper<ProjectCommission> projectCommissionLambdaQueryWrapper = commonService.buildQueryWrapperByField(ProjectCommission::getProjectId, id, projectCommissionService);
         projectCommissionService.remove(projectCommissionLambdaQueryWrapper);
-        LambdaQueryWrapper<SubUserProjectCommission> subUserProjectCommissionLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        subUserProjectCommissionLambdaQueryWrapper.eq(SubUserProjectCommission::getProjectId, id);
+        // 删除下级用户项目明细抽佣记录
+        LambdaQueryWrapper<SubUserProjectCommission> subUserProjectCommissionLambdaQueryWrapper = commonService.buildQueryWrapperByField(SubUserProjectCommission::getProjectId, id, subUserProjectCommissionService);
         subUserProjectCommissionService.remove(subUserProjectCommissionLambdaQueryWrapper);
-        LambdaQueryWrapper<UserProject> userProjectLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        userProjectLambdaQueryWrapper.eq(UserProject::getProjectId, id);
+        // 删除用户项目记录
+        LambdaQueryWrapper<UserProject> userProjectLambdaQueryWrapper = commonService.buildQueryWrapperByField(UserProject::getUserId, id, userProjectService);
         userProjectService.remove(userProjectLambdaQueryWrapper);
+
         return ResultUtils.success(true);
     }
 
diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java
index ff3bff0..5f88101 100644
--- a/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java
+++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java
@@ -136,7 +136,16 @@ public class ProjectDetailController {
     @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
     @SysLog(title = "项目明细管理", content = "web端管理员根据id修改项目明细信息")
     public BaseResponse<Boolean> updateProjectDetail(@Valid @RequestBody ProjectDetailUpdateRequest projectDetailUpdateRequest) {
+
+        // 更新项目明细的结算价格
+        Long projectDetailId = projectDetailUpdateRequest.getId();
+        ProjectDetail sourceProjectDetail = projectDetailService.getById(projectDetailId);
         ProjectDetail projectDetail = commonService.copyProperties(projectDetailUpdateRequest, ProjectDetail.class);
+        // 更新项目的价格
+        Long projectId = projectDetail.getProjectId();
+        Project project = projectService.getById(projectId);
+        project.setProjectPrice(project.getProjectPrice().subtract(sourceProjectDetail.getProjectSettlementPrice()).add(projectDetail.getProjectSettlementPrice()));
+        projectService.updateById(project);
         // 1.更新项目明细的结算价格
         projectDetailService.updateById(projectDetail);
         // 2.更新抽佣比例(如果抽佣比例比原来小)
@@ -200,6 +209,14 @@ public class ProjectDetailController {
     @SysLog(title = "项目明细管理", content = "web端管理员根据id删除项目明细")
     public BaseResponse<Boolean> delProjectDetail(@Valid @RequestBody CommonRequest commonRequest) {
         Long id = commonRequest.getId();
+        // 更新项目价格
+        ProjectDetail projectDetail = projectDetailService.getById(id);
+        Long projectId = projectDetail.getProjectId();
+        Project project = projectService.getById(projectId);
+        project.setProjectPrice(project.getProjectPrice().subtract(projectDetail.getProjectSettlementPrice()));
+        projectService.updateById(project);
+
+        // 删除对应的项目明细
         projectDetailService.removeById(id);
         // 删除对应的项目明细抽佣记录
         LambdaQueryWrapper<ProjectCommission> lambdaQueryWrapper = new LambdaQueryWrapper<>();