package logic import ( "context" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" sale "lone-services/rpc/sale/pb" "lone-services/services/sale/internal/dao" "lone-services/services/sale/internal/model" "lone-services/services/sale/internal/svc" "lone-services/services/sale/validator" "github.com/zeromicro/go-zero/core/logx" ) type GroupCreateLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewGroupCreateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GroupCreateLogic { return &GroupCreateLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *GroupCreateLogic) GroupCreate(in *sale.GroupCreateReq) (*sale.Response, error) { var req validator.GroupCreateValidator 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 } m := model.SaleGroupModel{}.Init() var existing dao.SaleGroup if err := m.GetOne(modelbase.Params{Eq: map[string]string{"name": req.Name}}, &existing); err != nil { l.Errorf("group create check: %v", err) return failResponse(utils.Fail), nil } if existing.Id > utils.NumberZero { return failResponse(utils.ErrorDataIsExist), nil } now := utils.Now() data := dao.SaleGroupCreate{ Name: req.Name, CreatedAt: now, UpdatedAt: now, } if err := m.Create(&data); err != nil { l.Errorf("group create: %v", err) return failResponse(utils.Fail), nil } return okResponse(nil), nil }