From 4b4d225c0f8456b8918dc79eec2e093485746d0f Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期二, 01 九月 2026 15:02:52 +0800
Subject: [PATCH] fix0901: 修复问题2

---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionAppService.java                    |    6 +-
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/ProvincialAgent.java                                  |    5 ++
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveRoomSettingService.java                           |    2 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionPasswordService.java               |    2 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java                       |    9 ++--
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveCourseAppService.java                             |   13 +++---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/service/AppHealthPopularizationService.java     |    2 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterService.java                       |   14 ++++---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/HealthPopularizationAppService.java                   |    6 +-
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/bootstrap/DataInitializer.java                                     |    7 ++-
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/AgentRegion.java                                      |    7 +++
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java                       |    7 ++-
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroductionPassword.java                       |    1 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/projectintroduction/service/AppProjectIntroductionService.java |    2 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/Clinic.java                                            |   24 ++++++++++++
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/LiveCourse.java                                        |    1 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroduction.java                               |    1 
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/HealthPopularization.java                              |    1 
 18 files changed, 78 insertions(+), 32 deletions(-)

diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/AgentRegion.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/AgentRegion.java
index 01d3975..0a2f7cf 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/AgentRegion.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/AgentRegion.java
@@ -11,12 +11,14 @@
 
 import java.time.LocalDateTime;
 
+/** 省级代理负责的行政区域。 */
 @TableName("tcm_agent_region")
 @Getter
 @Setter
 @NoArgsConstructor
 public class AgentRegion {
 
+    /** 主键。 */
     @TableId(type = IdType.AUTO)
     private Long id;
 
@@ -35,3 +37,8 @@
     @TableField("created_at")
     private LocalDateTime createdAt;
 }
+    /** 代理ID。 */
+    /** 行政区域编码。 */
+    /** 行政区域名称。 */
+    /** 行政区域层级。 */
+    /** 创建时间。 */
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/ProvincialAgent.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/ProvincialAgent.java
index 4711ecf..9dfe7ab 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/ProvincialAgent.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/entity/ProvincialAgent.java
@@ -7,15 +7,18 @@
 
 import java.time.LocalDateTime;
 
+/** 省级代理及其结算、联系信息。 */
 @TableName("tcm_provincial_agent")
 @Getter
 @Setter
 @NoArgsConstructor
 public class ProvincialAgent {
 
+    /** 主键。 */
     @TableId(type = IdType.AUTO)
     private Long id;
 
+    /** 代理名称。 */
     @TableField("agent_name")
     private String agentName;
 
@@ -37,8 +40,10 @@
     @TableField("contact_info")
     private String contactInfo;
 
+    /** 状态:0禁用,1启用。 */
     private Integer status;
 
+    /** 联系地址。 */
     @TableField("address")
     private String address;
 
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java
index 19f30a5..4fb9150 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java
@@ -24,6 +24,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import com.tcm.training.admin.common.enums.EnabledStatus;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -94,7 +95,7 @@
         return toDetail(require(id));
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public ProvincialAgentDetailVO create(ProvincialAgentSaveRequest request) {
         boolean firstAgent = agentMapper.selectCount(new LambdaQueryWrapper<ProvincialAgent>()
                 .eq(ProvincialAgent::getDeleted, 0)) == 0;
@@ -121,7 +122,7 @@
         return detail(agent.getId());
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public ProvincialAgentDetailVO update(Long id, ProvincialAgentSaveRequest request) {
         ProvincialAgent agent = require(id);
         fill(agent, request);
@@ -131,7 +132,7 @@
         return detail(id);
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void delete(Long id) {
         require(id);
         agentMapper.deleteById(id);
@@ -145,7 +146,7 @@
         agent.setAccountHolder(trim(request.getAccountHolder()));
         agent.setBranchName(trim(request.getBranchName()));
         agent.setContactInfo(trim(request.getContactInfo()));
-        agent.setStatus(request.getStatus() == null ? 1 : request.getStatus());
+        agent.setStatus(request.getStatus() == null ? EnabledStatus.ENABLED.getValue() : request.getStatus());
         agent.setAddress(trim(request.getAddress()));
     }
 
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java
index 1e4272f..bfc7041 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java
@@ -1,6 +1,7 @@
 package com.tcm.training.admin.app.bankcard.service;
 
 import com.tcm.training.admin.app.auth.service.AppAuthSessionService;
+import com.tcm.training.admin.member.enums.UserType;
 import com.tcm.training.admin.app.bankcard.dto.AppBankCardUpdateRequest;
 import com.tcm.training.admin.app.bankcard.vo.AppBankCardVO;
 import com.tcm.training.admin.live.entity.Clinic;
@@ -22,7 +23,7 @@
 
     public AppBankCardVO detail() { return toVO(requireClinic()); }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public AppBankCardVO update(AppBankCardUpdateRequest request) {
         Clinic clinic = requireClinic();
         clinic.setBankName(trim(request.getBankName()));
@@ -36,11 +37,11 @@
     private Clinic requireClinic() {
         AppUser user = userMapper.selectById(sessionService.requireLoginUserId());
         if (user == null || user.getDeleted() == null || user.getDeleted() != 0) throw new IllegalArgumentException("用户不存在");
-        if (user.getType() == null || user.getType() != 1 || user.getClinicId() == null) throw new IllegalArgumentException("当前账号未绑定诊所");
+        if (user.getType() == null || user.getType() != UserType.CLINIC.getValue() || user.getClinicId() == null) throw new IllegalArgumentException("当前账号未绑定诊所");
         Clinic clinic = clinicMapper.selectById(user.getClinicId());
         if (clinic == null || clinic.getDeleted() == null || clinic.getDeleted() != 0) throw new IllegalArgumentException("诊所不存在");
         return clinic;
     }
     private AppBankCardVO toVO(Clinic c) { AppBankCardVO v=new AppBankCardVO(); v.setBankName(c.getBankName()); v.setAccountName(c.getAccountHolder()); v.setAccountNumber(c.getAccountNumber()); v.setBranchName(c.getBranchName()); return v; }
     private String trim(String value) { return value == null ? null : value.trim(); }
-}
\ No newline at end of file
+}
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/service/AppHealthPopularizationService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/service/AppHealthPopularizationService.java
index ec784cd..e1e2a4d 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/service/AppHealthPopularizationService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/service/AppHealthPopularizationService.java
@@ -61,7 +61,7 @@
     /**
      * 获取 APP 健康科普详情页数据,并在每次访问时累加点击量。
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public AppHealthPopularizationDetailVO detail(Long popularizationId) {
         HealthPopularization item = requireEnabledItem(popularizationId);
         // 参考项目介绍,APP 进入详情后累加点击量并回写。
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/projectintroduction/service/AppProjectIntroductionService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/projectintroduction/service/AppProjectIntroductionService.java
index 937bbb4..547c8b9 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/projectintroduction/service/AppProjectIntroductionService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/projectintroduction/service/AppProjectIntroductionService.java
@@ -54,7 +54,7 @@
     /**
      * 获取APP项目介绍详情,并增加点击量
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public AppProjectIntroductionDetailVO getDetail(Long id) {
         ProjectIntroduction entity = projectIntroductionMapper.selectOne(
                 new LambdaQueryWrapper<ProjectIntroduction>()
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterService.java
index edec2fc..cc4a501 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/register/service/AppRegisterService.java
@@ -31,6 +31,8 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import com.tcm.training.admin.member.enums.UserStatus;
+import com.tcm.training.admin.member.enums.UserType;
 
 import java.util.List;
 import java.util.UUID;
@@ -127,8 +129,8 @@
 
         AppUser user = new AppUser();
         user.setPhone(phone);
-        user.setType(0);
-        user.setStatus(1);
+        user.setType(UserType.DOCTOR.getValue());
+        user.setStatus(UserStatus.ENABLED.getValue());
 
         // 优先同步海诊通同手机号用户资料,未命中时使用手机号兜底昵称。
         HztAppUser hztAppUser = findHztAppUserByPhone(phone);
@@ -165,7 +167,7 @@
     /**
      * 完成经营者第二步,创建本地诊所与诊所用户。
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public AppLoginResponse completeOperatorRegister(AppRegisterOperatorCompleteRequest request) {
         OperatorRegisterDraft draft = loadDraft(normalizeRegisterTicket(request.getRegisterTicket()));
         ensurePhoneAvailable(draft.getPhone());
@@ -183,7 +185,7 @@
         clinic.setAddress(trimRequired(request.getDetailAddress(), "请输入详细地址"));
         clinic.setBusinessLicenseUrl(trimToNull(request.getBusinessLicenseUrl()));
         clinic.setInviteCode(generateInviteCode());
-        clinic.setStatus(1);
+        clinic.setStatus(UserStatus.ENABLED.getValue());
 
         clinic.setAgentId(4L); // 绑定到默认的省代上面
 
@@ -192,8 +194,8 @@
         AppUser user = new AppUser();
         user.setNickname(clinic.getName());
         user.setPhone(draft.getPhone());
-        user.setType(1);
-        user.setStatus(1);
+        user.setType(UserType.CLINIC.getValue());
+        user.setStatus(UserStatus.ENABLED.getValue());
         user.setClinicId(clinic.getId());
         userMapper.insert(user);
 
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/bootstrap/DataInitializer.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/bootstrap/DataInitializer.java
index 2313f84..4c24eb2 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/bootstrap/DataInitializer.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/bootstrap/DataInitializer.java
@@ -15,6 +15,7 @@
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Component;
+import com.tcm.training.admin.common.enums.EnabledStatus;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -56,7 +57,7 @@
             user.setUsername("admin");
             user.setNickname("管理员");
             user.setRealName("系统管理员");
-            user.setStatus(1);
+            user.setStatus(EnabledStatus.ENABLED.getValue());
             user.setDeleted(0);
             user.setPassword(passwordEncoder.encode("Admin@123456"));
             user.setCreatedAt(LocalDateTime.now());
@@ -82,7 +83,7 @@
         role = new SysRole();
         role.setRoleName("超级管理员");
         role.setRoleCode("SUPER_ADMIN");
-        role.setStatus(1);
+            role.setStatus(EnabledStatus.ENABLED.getValue());
         role.setDeleted(0);
         role.setRemark("默认拥有全部后台权限");
         role.setCreatedAt(LocalDateTime.now());
@@ -428,7 +429,7 @@
         menu.setComponent(component);
         menu.setIcon(icon);
         menu.setSort(sort);
-        menu.setStatus(1);
+                menu.setStatus(EnabledStatus.ENABLED.getValue());
         menu.setVisible(1);
         menu.setPermissionKey(permissionKey);
         menu.setRemark(remark);
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/Clinic.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/Clinic.java
index de57403..f395e2f 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/Clinic.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/Clinic.java
@@ -12,17 +12,21 @@
 
 import java.time.LocalDateTime;
 
+/** 诊所及其归属代理、联系和结算信息。 */
 @TableName("tcm_clinic")
 @Getter
 @Setter
 @NoArgsConstructor
 public class Clinic {
 
+    /** 主键。 */
     @TableId(type = IdType.AUTO)
     private Long id;
 
+    /** 诊所名称。 */
     private String name;
 
+    /** 归属代理ID。 */
     @TableField("agent_id")
     private Long agentId;
 
@@ -50,8 +54,10 @@
     @TableField("district_name")
     private String districtName;
 
+    /** 详细地址。 */
     private String address;
 
+    /** 营业执照文件地址。 */
     @TableField("business_license_url")
     private String businessLicenseUrl;
 
@@ -88,3 +94,21 @@
     @TableField("updated_at")
     private LocalDateTime updatedAt;
 }
+    /** 联系人姓名。 */
+    /** 联系电话。 */
+    /** 省级行政区编码。 */
+    /** 省级行政区名称。 */
+    /** 市级行政区编码。 */
+    /** 市级行政区名称。 */
+    /** 区县行政区编码。 */
+    /** 区县行政区名称。 */
+    /** 邀请码。 */
+    /** 开户银行。 */
+    /** 银行账号。 */
+    /** 银行账户户名。 */
+    /** 开户支行。 */
+    /** 逻辑删除标识:0未删除,1已删除。 */
+    /** 创建人。 */
+    /** 最后更新人。 */
+    /** 创建时间。 */
+    /** 最后更新时间。 */
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/HealthPopularization.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/HealthPopularization.java
index 6e8559c..34270bf 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/HealthPopularization.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/HealthPopularization.java
@@ -13,6 +13,7 @@
 import java.time.LocalDateTime;
 
 @TableName("tcm_health_popularization")
+/** 养生科普内容实体。 */
 @Getter
 @Setter
 @NoArgsConstructor
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/LiveCourse.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/LiveCourse.java
index 497ff68..72c3249 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/LiveCourse.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/LiveCourse.java
@@ -15,6 +15,7 @@
 import java.util.List;
 
 @TableName(value = "tcm_live_course", autoResultMap = true)
+/** 养生直播课程实体。 */
 @Getter
 @Setter
 @NoArgsConstructor
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroduction.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroduction.java
index abcca83..862c30e 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroduction.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroduction.java
@@ -13,6 +13,7 @@
 import java.time.LocalDateTime;
 
 @TableName("tcm_project_introduction")
+/** 项目介绍内容实体。 */
 @Getter
 @Setter
 @NoArgsConstructor
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroductionPassword.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroductionPassword.java
index 7e9e7f9..120e964 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroductionPassword.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/entity/ProjectIntroductionPassword.java
@@ -11,6 +11,7 @@
 @Getter
 @Setter
 @TableName("tcm_project_introduction_password")
+/** 项目介绍访问密码配置。 */
 public class ProjectIntroductionPassword {
 
     @TableId(type = IdType.AUTO)
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/HealthPopularizationAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/HealthPopularizationAppService.java
index 3ea3a5f..9d287aa 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/HealthPopularizationAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/HealthPopularizationAppService.java
@@ -56,7 +56,7 @@
         return toDetailVO(requireItem(id));
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public HealthPopularizationDetailVO create(HealthPopularizationSaveRequest req) {
         HealthPopularization item = new HealthPopularization();
         fillEntity(item, req);
@@ -66,7 +66,7 @@
         return detail(item.getId());
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public HealthPopularizationDetailVO update(Long id, HealthPopularizationSaveRequest req) {
         HealthPopularization item = requireItem(id);
         fillEntity(item, req);
@@ -74,7 +74,7 @@
         return detail(id);
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void delete(Long id) {
         requireItem(id);
         healthPopularizationMapper.deleteById(id);
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 c06dee9..75ecddf 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
@@ -27,6 +27,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.transaction.annotation.Transactional;
+import com.tcm.training.admin.common.enums.EnabledStatus;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -83,7 +84,7 @@
         return PageResponse.of(list, p.getTotal(), p.getCurrent(), p.getSize());
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public LiveCourseDetailVO create(LiveCourseUpsertRequest req) {
         throw new IllegalArgumentException("直播课程为初始化数据,禁止新增");
         /*
@@ -134,7 +135,7 @@
         return vo;
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public LiveCourseDetailVO update(Long id, LiveCourseUpsertRequest req) {
         validateExpert(req.getExpertId());
 
@@ -158,7 +159,7 @@
         return detail(id);
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public LiveCourseStatusVO patchStatus(Long id, LiveCourseStatusRequest req) {
         LiveCourse course = liveCourseMapper.selectById(id);
         if (course == null) {
@@ -169,7 +170,7 @@
         return new LiveCourseStatusVO(id, req.getStatus());
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void updatePassword(Long id, LiveCoursePasswordRequest req) {
         String password = req.getPassword();
         if (StrUtil.isNotBlank(password)) {
@@ -208,7 +209,7 @@
         }
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void delete(Long id) {
         throw new IllegalArgumentException("直播课程为初始化数据,禁止删除");
     }
@@ -218,7 +219,7 @@
         if (expert == null) {
             throw new IllegalArgumentException("授课专家不存在");
         }
-        if (expert.getStatus() != null && expert.getStatus() != 1) {
+        if (expert.getStatus() != null && expert.getStatus() != EnabledStatus.ENABLED.getValue()) {
             throw new IllegalArgumentException("授课专家已禁用");
         }
     }
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveRoomSettingService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveRoomSettingService.java
index 7626ffc..1c0f3d9 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveRoomSettingService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveRoomSettingService.java
@@ -19,7 +19,7 @@
         return toVO(mapper.selectCurrent());
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public LiveRoomSettingVO save(LiveRoomSettingSaveRequest request) {
         LiveRoomSetting setting = mapper.selectCurrent();
         if (setting == null) {
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionAppService.java
index c3f3543..cc2fd93 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/ProjectIntroductionAppService.java
@@ -60,7 +60,7 @@
         return toDetailVO(requireItem(id));
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public ProjectIntroductionDetailVO create(ProjectIntroductionSaveRequest req) {
         ProjectIntroduction item = new ProjectIntroduction();
         fillEntity(item, req);
@@ -70,7 +70,7 @@
         return detail(item.getId());
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public ProjectIntroductionDetailVO update(Long id, ProjectIntroductionSaveRequest req) {
         ProjectIntroduction item = requireItem(id);
         fillEntity(item, req);
@@ -78,7 +78,7 @@
         return detail(id);
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void delete(Long id) {
         requireItem(id);
         projectIntroductionMapper.deleteById(id);
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 017b702..5b08437 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
@@ -48,7 +48,7 @@
     /**
      * 保存项目介绍密码配置
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void savePasswordConfig(ProjectIntroductionPasswordRequest req) {
         // 验证密码格式
         if (req.getPasswordEnabled() == 1) {

--
Gitblit v1.7.1