From dfd143898179f5f84b06eccffc273c8a3205373d Mon Sep 17 00:00:00 2001 From: mayiming <1627832236@qq.com> Date: Mon, 3 Nov 2025 11:31:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=BE=E7=A8=8B=E6=95=99?= =?UTF-8?q?=E5=B8=88=E9=80=BB=E8=BE=91=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../updatecourseteacherlogic.go | 53 ++++++------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/server/internal/course_teacher/internal/logic/course_teacher/updatecourseteacherlogic.go b/server/internal/course_teacher/internal/logic/course_teacher/updatecourseteacherlogic.go index 2d096fe2..3ce2660b 100644 --- a/server/internal/course_teacher/internal/logic/course_teacher/updatecourseteacherlogic.go +++ b/server/internal/course_teacher/internal/logic/course_teacher/updatecourseteacherlogic.go @@ -6,7 +6,6 @@ package course_teacher import ( "context" "database/sql" - "errors" "fmt" "github.com/JACKYMYPERSON/hldrCenter/config" @@ -33,83 +32,63 @@ func NewUpdateCourseTeacherLogic(ctx context.Context, cfg *config.Config, model } func (l *UpdateCourseTeacherLogic) UpdateCourseTeacher(req *types.UpdateCourseTeacherReq) (resp *types.UpdateCourseTeacherResp, err error) { - // 1. 基础参数校验(确保ID有效) + // 1. 仅校验关联ID有效性(唯一必填参数) if req.Id <= 0 { return nil, fmt.Errorf("参数错误:关联ID必须为正整数") } - // 2. 查询原记录(确保记录存在) - // 注意:此处假设Model层有FindOne方法(根据ID查询单条记录) - original, err := l.model.FindOne(l.ctx, int64(req.Id)) - if err != nil { - if errors.Is(err, model.ErrNotFound) { // 假设Model层定义了ErrNotFound表示记录不存在 - return nil, fmt.Errorf("课程教师关联记录不存在(ID: %d)", req.Id) - } - return nil, fmt.Errorf("查询原记录失败:%w", err) - } - - // 3. 构建更新数据(仅更新请求中提供的非空/有效字段) + // 2. 直接构建更新数据(不查询原记录,不检查记录是否存在) updateData := &model.CourseTeacher{ - Id: int64(req.Id), // 必须携带ID用于WHERE条件 - // 基础字段默认沿用原记录,后续按需覆盖 - CourseId: original.CourseId, - TeacherId: original.TeacherId, - Name: original.Name, - Title: original.Title, - Avatar: original.Avatar, - Intro: original.Intro, - Sort: original.Sort, + Id: int64(req.Id), // 关联ID,用于WHERE条件定位要更新的记录 } - // 3.1 可选更新:课程ID(若请求中提供了有效值) + // 3. 仅更新请求中提供的非空/有效字段(无字段则不更新对应项) + // 3.1 课程ID(传入有效值则更新) if req.CourseId > 0 { updateData.CourseId = int64(req.CourseId) } - // 3.2 可选更新:教师ID(若请求中提供了有效值) + // 3.2 教师ID(传入即更新,不校验是否存在) if req.TeacherId > 0 { updateData.TeacherId = int64(req.TeacherId) } - // 3.3 可选更新:教师姓名(若请求中提供了非空值) + // 3.3 教师姓名(传入非空值则更新) if req.Name != "" { updateData.Name = req.Name } - // 3.4 可选更新:教师头衔(若请求中提供了非空值) + // 3.4 教师头衔(传入非空值则更新) if req.Title != "" { updateData.Title = req.Title } - // 3.5 可选更新:头像URL(若请求中提供了非空值) + // 3.5 头像URL(传入非空值则更新) if req.Avatar != "" { updateData.Avatar = req.Avatar } - // 3.6 可选更新:教师简介(若请求中提供了非空值,允许清空) - if req.Intro != "" { // 注意:若需允许清空简介,此处直接赋值(空字符串也会更新) - updateData.Intro = StringToNullString(req.Intro) - } + // 3.6 教师简介(支持清空,传入空字符串也会更新) + updateData.Intro = StringToNullString(req.Intro) - // 3.7 可选更新:排序值(若请求中提供了有效值) - if req.Sort >= 0 { // 符合validate规则:min=0 + // 3.7 排序值(传入有效值则更新) + if req.Sort >= 0 { updateData.Sort = int64(req.Sort) } - // 4. 调用Model层执行更新 + // 4. 直接执行更新操作(不管记录是否存在,数据库会自动忽略不存在的记录) err = l.model.Update(l.ctx, updateData) if err != nil { return nil, fmt.Errorf("更新课程教师关联记录失败:%w", err) } - // 5. 构建成功响应 + // 5. 构建响应(不判断更新行数,仅返回操作结果) resp = &types.UpdateCourseTeacherResp{ - Message: fmt.Sprintf("课程教师关联记录(ID: %d)更新成功", req.Id), + Message: fmt.Sprintf("课程教师关联记录(ID: %d)更新操作执行成功", req.Id), } return resp, nil } - func StringToNullString(s string) sql.NullString { if s != "" { return sql.NullString{String: s, Valid: true}