diff --git a/app/mix/service/business_validator/auth.go b/app/mix/service/business_validator/auth.go index bf5a43cc..ef0e44dc 100644 --- a/app/mix/service/business_validator/auth.go +++ b/app/mix/service/business_validator/auth.go @@ -667,6 +667,24 @@ func (l *AuthBusinessValidator) EnsureZtpSharingRatioIsEnoughAfterUpdatingAColla return l } +func (l *AuthBusinessValidator) EnsureZoneThirdPartnerIsNotZoneCreater(fun func(*gin.Context, int64) (*dbstruct.Zone, error), zid int64, ztpMid int64) *AuthBusinessValidator { + + l.oplist = append(l.oplist, func() { + // 查询空间 + zone, err := fun(l.ctx, zid) + if err != nil { + logger.Error("Zone GetById fail, err: %v", err) + l.ec = errcode.ErrCodeZoneSrvFail + return + } + if zone.GetMid() == ztpMid { + l.ec = errcode.ErrCodeZoneThirdPartnerWrongThirdPartner + return + } + }) + return l +} + // 执行校验 func (a *AuthBusinessValidator) Validate() *AuthBusinessValidator { a.BusinessValidateStream.Validate() diff --git a/app/mix/service/opservice_business_validation.go b/app/mix/service/opservice_business_validation.go index 3ea1a119..1ec1c6a6 100644 --- a/app/mix/service/opservice_business_validation.go +++ b/app/mix/service/opservice_business_validation.go @@ -1445,3 +1445,21 @@ func (s *Service) OpUpdateZoneThirdPartnerBusinessValidate(ctx *gin.Context, req } return } + +// 代运营 +func (s *Service) OpCreateZoneThirdPartnerBusinessValidate(ctx *gin.Context, req *zone_third_partner_proto.OpCreateReq) (ec errcode.ErrCode) { + ec = errcode.ErrCodeZoneThirdPartnerSrvOk + + // 1.鉴权校验 + result := businessvalidator.NewAuthBusinessValidator(ctx, req). + EnsureZoneThirdPartnerIsNotZoneCreater(_DefaultZone.GetById, req.ZoneThirdPartner.GetZid(), req.ZoneThirdPartner.GetThirdPartnerMid()). + Validate(). + Collect() + ec, _ = result[0].(errcode.ErrCode) + if ec != errcode.ErrCodeOk { + logger.Error("OpCreateZoneThirdPartner business validation failed!") + return + } + + return +} diff --git a/app/mix/service/service.go b/app/mix/service/service.go index 3b2733a8..1e8fd76c 100644 --- a/app/mix/service/service.go +++ b/app/mix/service/service.go @@ -3761,6 +3761,10 @@ func (s *Service) OpSetPrivateZoneMoment(ctx *gin.Context, req *zonemomentproto. func (s *Service) OpCreateZoneThirdPartner(ctx *gin.Context, req *zone_third_partner_proto.OpCreateReq) (ec errcode.ErrCode) { ec = errcode.ErrCodeZoneThirdPartnerSrvOk + if ec = s.OpCreateZoneThirdPartnerBusinessValidate(ctx, req); ec != errcode.ErrCodeZoneThirdPartnerSrvOk { + return + } + err := _DefaultZoneThirdPartner.OpCreate(ctx, req) if err != nil { logger.Error("OpCreate fail, req: %v, err: %v", util.ToJson(req), err)