From c4de412ba3387cb312260bef4adea8b08768e28e Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期四, 20 八月 2026 13:19:04 +0800
Subject: [PATCH] feat0806: 项目介绍密码接口密码没有清空

---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/mapper/ProjectIntroductionPasswordMapper.java         |    8 ++++++++
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/ProjectIntroductionPasswordController.java |    4 ++--
 tcm-training-admin/src/pages/live/project-introduction-password/index.tsx                                                  |   11 ++++-------
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionPasswordService.java       |   11 ++++-------
 4 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/ProjectIntroductionPasswordController.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/ProjectIntroductionPasswordController.java
index 821bedb..e0eceb1 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/ProjectIntroductionPasswordController.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/ProjectIntroductionPasswordController.java
@@ -35,8 +35,8 @@
      * 保存项目介绍密码配置
      */
     @PostMapping("/project-introduction-password")
-    public ApiResponse<Void> savePasswordConfig(@Valid @RequestBody ProjectIntroductionPasswordRequest req) {
+    public ApiResponse<Boolean> savePasswordConfig(@Valid @RequestBody ProjectIntroductionPasswordRequest req) {
         passwordService.savePasswordConfig(req);
-        return ApiResponse.ok(null);
+        return ApiResponse.ok(true);
     }
 }
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/mapper/ProjectIntroductionPasswordMapper.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/mapper/ProjectIntroductionPasswordMapper.java
index 202ba77..32bdaa0 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/mapper/ProjectIntroductionPasswordMapper.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/mapper/ProjectIntroductionPasswordMapper.java
@@ -3,7 +3,15 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.tcm.training.admin.live.entity.ProjectIntroductionPassword;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 
 @Mapper
 public interface ProjectIntroductionPasswordMapper extends BaseMapper<ProjectIntroductionPassword> {
+
+    /**
+     * 更新密码配置(支持将密码设置为null)
+     */
+    @Update("UPDATE tcm_project_introduction_password SET password_enabled = #{passwordEnabled}, password = #{password}, updated_at = NOW() WHERE id = #{id}")
+    int updatePasswordConfig(@Param("id") Long id, @Param("passwordEnabled") Integer passwordEnabled, @Param("password") String password);
 }
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionPasswordService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionPasswordService.java
index 14ac5e2..ba47239 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionPasswordService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionPasswordService.java
@@ -78,15 +78,12 @@
             }
             passwordMapper.insert(config);
         } else {
-            // 更新
-            config.setPasswordEnabled(req.getPasswordEnabled());
+            // 更新 - 使用自定义SQL支持设置为null
+            String encodedPassword = null;
             if (req.getPasswordEnabled() == 1 && StrUtil.isNotBlank(req.getPassword())) {
-                config.setPassword(passwordEncoder.encode(req.getPassword()));
-            } else {
-                // 不启用密码时,清空密码
-                config.setPassword(null);
+                encodedPassword = passwordEncoder.encode(req.getPassword());
             }
-            passwordMapper.updateById(config);
+            passwordMapper.updatePasswordConfig(config.getId(), req.getPasswordEnabled(), encodedPassword);
         }
     }
 
diff --git a/tcm-training-admin/src/pages/live/project-introduction-password/index.tsx b/tcm-training-admin/src/pages/live/project-introduction-password/index.tsx
index c8bee65..152b225 100644
--- a/tcm-training-admin/src/pages/live/project-introduction-password/index.tsx
+++ b/tcm-training-admin/src/pages/live/project-introduction-password/index.tsx
@@ -60,14 +60,11 @@
         password: values.passwordEnabled ? values.password : undefined,
       };
 
-      const res = await saveProjectIntroductionPassword(data);
-      if (res.code === 200) {
-        message.success('保存成功');
-        loadConfig();
-      } else {
-        message.error(res.message || '保存失败');
-      }
+      await saveProjectIntroductionPassword(data);
+      message.success('保存成功');
+      loadConfig();
     } catch (error) {
+      message.error('保存失败');
       console.error('保存失败:', error);
     } finally {
       setSubmitting(false);

--
Gitblit v1.7.1