83 lines
2.5 KiB
Go
83 lines
2.5 KiB
Go
// 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
|
||
|
||
}
|