Files
hldrCenter/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go
2025-10-26 21:34:32 +08:00

83 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package baseOverview
import (
"context"
"database/sql"
"github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type UpdateBaseOverviewPartialLogic struct {
logx.Logger
ctx context.Context
cfg *config.Config
model model.BaseoverviewModel
}
func NewUpdateBaseOverviewPartialLogic(ctx context.Context, cfg *config.Config, model model.BaseoverviewModel) *UpdateBaseOverviewPartialLogic {
return &UpdateBaseOverviewPartialLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
cfg: cfg,
model: model,
}
}
func (l *UpdateBaseOverviewPartialLogic) UpdateBaseOverviewPartial(req *types.UpdateBaseOverviewPartialReq) (resp *types.UpdateBaseOverviewPartialResp, err error) {
// 1. 先查询当前基地信息根据ID
current, err := l.model.FindOne(l.ctx, req.Id)
if err != nil {
return nil, err // 查询失败如ID不存在返回错误
}
// 2. 用请求中的非空字段更新当前数据(只更新传入了有效值的字段)
// 注意:请求字段是 string 类型,非空字符串表示需要更新
if req.Introduction != "" {
current.Introduction = sql.NullString{String: req.Introduction, Valid: true}
}
if req.Regulations != "" {
current.Regulations = sql.NullString{String: req.Regulations, Valid: true}
}
if req.Address != "" {
current.Address = sql.NullString{String: req.Address, Valid: true}
}
if req.Phone != "" {
current.Phone = sql.NullString{String: req.Phone, Valid: true}
}
if req.Email != "" {
current.Email = sql.NullString{String: req.Email, Valid: true}
}
if req.Website != "" {
current.Website = sql.NullString{String: req.Website, Valid: true}
}
if req.Director != "" {
current.Director = sql.NullString{String: req.Director, Valid: true}
}
if req.DeputyDirector != "" {
current.DeputyDirector = sql.NullString{String: req.DeputyDirector, Valid: true}
}
if req.Researchers != "" {
current.Researchers = sql.NullString{String: req.Researchers, Valid: true}
}
// 3. 调用模型的 Update 方法保存更新
err = l.model.Update(l.ctx, current)
if err != nil {
return nil, err // 更新失败返回错误
}
// 4. 构造响应
return &types.UpdateBaseOverviewPartialResp{
Success: true,
Msg: "基地信息更新成功", // 可选:成功时也可省略 Msg会被 omitempty 忽略)
}, nil
}