package logic import ( "context" "strconv" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" ad "lone-services/rpc/ad/pb" "lone-services/services/ad/internal/dao" "lone-services/services/ad/internal/model" "lone-services/services/ad/internal/svc" "lone-services/services/ad/validator" "github.com/zeromicro/go-zero/core/logx" ) type EditLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *EditLogic { return &EditLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *EditLogic) Edit(in *ad.EditReq) (*ad.Response, error) { var req validator.AdEditValidator if msg := validate.ValidateFromProto(in, &req); msg != utils.StringEmpty { return outResponse(utils.ErrorParams, msg), nil } adminInfo := utils.GetUserFromCtx(l.ctx) if adminInfo.ID < utils.NumberOne { return failResponse(utils.ErrorNoLoginInfo), nil } w := modelbase.Params{Eq: map[string]string{"id": strconv.FormatInt(req.Id, 10)}} var info dao.AdCreate m := model.AdModel{}.Init() if err := m.GetOne(w, &info); err != nil { l.Errorf("edit ad get: %v", err) return failResponse(utils.Fail), nil } if info.Id < utils.NumberOne { return failResponse(utils.ErrorNotFund), nil } info.Type = uint8(req.Type) info.Image = req.Image info.Content = req.Content info.Url = req.Url info.AdminId = int(adminInfo.ID) info.AdminName = adminInfo.Name if _, err := m.Edit(w, &info); err != nil { l.Errorf("edit ad: %v", err) return failResponse(utils.Fail), nil } return okResponse(utils.StringEmpty), nil }