From 84f91e46377accae3fbb66954d40116c9ca8e72b Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期三, 19 八月 2026 14:18:20 +0800
Subject: [PATCH] feat0806: 养生直播密码非必填

---
 tcm-training-admin/src/pages/live/broadcast/index.tsx                                                     |    8 +++-----
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/LiveCourseController.java |    2 +-
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/dto/LiveCoursePasswordRequest.java   |    7 ++-----
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveCourseAppService.java    |   13 ++++++++++++-
 4 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/LiveCourseController.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/LiveCourseController.java
index ffebe48..8e4a81d 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/LiveCourseController.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/controller/LiveCourseController.java
@@ -66,7 +66,7 @@
     }
 
     @PutMapping("/live-courses/{id}/password")
-    public ApiResponse<Void> updatePassword(@PathVariable("id") Long id, @Valid @RequestBody LiveCoursePasswordRequest req) {
+    public ApiResponse<Void> updatePassword(@PathVariable("id") Long id, @RequestBody LiveCoursePasswordRequest req) {
         liveCourseAppService.updatePassword(id, req);
         return ApiResponse.ok(null);
     }
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/dto/LiveCoursePasswordRequest.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/dto/LiveCoursePasswordRequest.java
index 9cb6dcc..beb72c9 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/dto/LiveCoursePasswordRequest.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/dto/LiveCoursePasswordRequest.java
@@ -4,15 +4,12 @@
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-
 @Getter
 @Setter
 @NoArgsConstructor
 public class LiveCoursePasswordRequest {
 
-    @NotBlank(message = "请输入直播间密码")
-    @Size(max = 6, message = "直播间密码不能超过6个字符")
+    //    @NotBlank(message = "请输入直播间密码")
+//    @Size(max = 6, message = "直播间密码不能超过6个字符")
     private String password;
 }
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveCourseAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveCourseAppService.java
index 00cb162..6026d4d 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveCourseAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveCourseAppService.java
@@ -1,5 +1,6 @@
 package com.tcm.training.admin.live.service;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -166,11 +167,21 @@
 
     @Transactional
     public void updatePassword(Long id, LiveCoursePasswordRequest req) {
+        String password = req.getPassword();
+        if (StrUtil.isNotBlank(password)) {
+            if (password.length() != 6) {
+                throw new IllegalArgumentException("直播间密码必须是6个字符");
+            }
+        }
         LiveCourse course = liveCourseMapper.selectById(id);
         if (course == null) {
             throw new IllegalArgumentException("课程不存在");
         }
-        course.setPassword(passwordEncoder.encode(req.getPassword()));
+        if (StrUtil.isNotBlank(password)) {
+            course.setPassword(passwordEncoder.encode(req.getPassword()));
+        } else {
+            course.setPassword(null);
+        }
         liveCourseMapper.updateById(course);
     }
 
diff --git a/tcm-training-admin/src/pages/live/broadcast/index.tsx b/tcm-training-admin/src/pages/live/broadcast/index.tsx
index 0cd86d6..1cae71c 100644
--- a/tcm-training-admin/src/pages/live/broadcast/index.tsx
+++ b/tcm-training-admin/src/pages/live/broadcast/index.tsx
@@ -86,8 +86,8 @@
     }
     setPasswordSubmitting(true);
     try {
-      await updateLiveCoursePassword(passwordCourseId, { password: values.password });
-      message.success('直播间密码设置成功');
+      await updateLiveCoursePassword(passwordCourseId, { password: values.password || '' });
+      message.success(values.password ? '直播间密码设置成功' : '直播间密码已清除');
       setPasswordModalOpen(false);
       passwordForm.resetFields();
     } finally {
@@ -220,8 +220,7 @@
             label="直播间密码"
             name="password"
             rules={[
-              { required: true, whitespace: true, message: '请输入直播间密码' },
-              { max: 6, message: '直播间密码不能超过6个字符' },
+              { len: 6, message: '直播间密码必须为6个字符' },
             ]}
           >
             <Input.Password autoComplete="new-password" placeholder="请输入直播间密码" />
@@ -231,7 +230,6 @@
             name="confirmPassword"
             dependencies={['password']}
             rules={[
-              { required: true, message: '请再次输入直播间密码' },
               ({ getFieldValue }) => ({
                 validator(_, value) {
                   return !value || getFieldValue('password') === value

--
Gitblit v1.7.1