Merge pull request 'feat-IRONFANS-125-Robin' (#515) from feat-IRONFANS-125-Robin into main

Reviewed-on: http://121.41.31.146:3000/wishpal_ironfan/service/pulls/515
This commit is contained in:
chenhao 2024-05-28 13:11:39 +08:00
commit d5ae637214
5 changed files with 151 additions and 0 deletions

View File

@ -17,6 +17,7 @@ var ErrCodeMsgMap = map[ErrCode]string{
ErrCodeBadParam: "参数错误",
ErrCodeFunctionBlocked: "功能封禁中,截止时间:%s",
ErrCodeFunctionBlockedPermanently: "该功能已被永久封禁",
ErrCodeMediaUploadFailPleaseCheck: "媒体上传失败,请检查网络或文件大小后重试",
ErrCodeProductSrvFail: "商品服务错误",
ErrCodeProductNotExist: "商品不存在",
@ -229,6 +230,7 @@ const (
ErrCodeBadParam ErrCode = -30 // 参数错误
ErrCodeFunctionBlocked ErrCode = -40 // 功能封禁中
ErrCodeFunctionBlockedPermanently ErrCode = -41 // 功能永久封禁
ErrCodeMediaUploadFailPleaseCheck ErrCode = -50 // 媒体上传失败,请检查网络或文件大小后重试
// Product: 1xxx
ErrCodeProductSrvOk ErrCode = ErrCodeOk

View File

@ -1711,6 +1711,10 @@ func (s *Service) ApiCreateMoment(ctx *gin.Context, req *momentproto.ApiCreateRe
func (s *Service) ApiUpdateMoment(ctx *gin.Context, req *momentproto.ApiUpdateReq) (ec errcode.ErrCode) {
ec = errcode.ErrCodeMomentSrvOk
if ec = s.ApiUpdateMomentBusinessValidate(ctx, req); ec != errcode.ErrCodeMomentSrvOk {
return
}
req.Moment.Mid = goproto.Int64(req.BaseRequest.Mid)
err := _DefaultMoment.OpUpdate(ctx, &momentproto.OpUpdateReq{
@ -2489,6 +2493,10 @@ func (s *Service) ApiCreateZoneMoment(ctx *gin.Context, req *zonemomentproto.Api
func (s *Service) ApiUpdateZoneMoment(ctx *gin.Context, req *zonemomentproto.ApiUpdateReq) (ec errcode.ErrCode) {
ec = errcode.ErrCodeZoneMomentSrvOk
if ec = s.ApiUpdateZoneMomentBusinessValidate(ctx, req); ec != errcode.ErrCodeZoneMomentSrvOk {
return
}
zonemoment, err := _DefaultZoneMoment.GetById(ctx, req.ZoneMoment.GetId())
if err != nil {
logger.Error("_DefaultZoneMoment GetById fail, req: %v, err: %v", util.ToJson(req), err)

View File

@ -226,6 +226,7 @@ func (s *Service) ApiUpdateAccountBusinessValidate(ctx *gin.Context, req *accoun
// 1.业务校验
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Account.Avatar).
EnsureIsOperatingHisOwn(util.DerefInt64(req.Account.Mid)).
Validate().
Collect()
@ -421,6 +422,8 @@ func (s *Service) ApiCreateStreamerAuthApprovalBusinessValidate(ctx *gin.Context
ec = errcode.ErrCodeStreamerAuthApprovalSrvOk
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.StreamerAuthApproval.Album).
EnsureMediaIsSuccessfullyUploaded(req.StreamerAuthApproval.Shorts).
EnsureIsOperatingHisOwn(util.DerefInt64(req.StreamerAuthApproval.Mid)).
Validate().
Collect()
@ -479,6 +482,8 @@ func (s *Service) ApiUpdateStreamerBusinessValidate(ctx *gin.Context, req *strea
ec = errcode.ErrCodeStreamerSrvOk
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Streamer.Album).
EnsureMediaIsSuccessfullyUploaded(req.Streamer.Shorts).
EnsureIsOperatingHisOwn(util.DerefInt64(req.Streamer.Mid)).
Validate().
Collect()
@ -531,6 +536,7 @@ func (s *Service) ApiCreateMomentBusinessValidate(ctx *gin.Context, req *momentp
ec = errcode.ErrCodeMomentSrvOk
resultList := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Moment.MediaComp).
EnsureSuchAccountPunishmentNotExist(req.GetBaseRequest().Mid, consts.AccountPunishment_BlockFromCreatingMoment, _DefaultAccountPunishment.OpListByMidAndType).
QueryMomentCreateTimes(_DefaultMomentCreateTimes.OpGetAndUpdate, req.GetBaseRequest().Mid).
EnsureMomentCreateTimesNotReachedDailyUpperbound().
@ -546,6 +552,22 @@ func (s *Service) ApiCreateMomentBusinessValidate(ctx *gin.Context, req *momentp
return
}
func (s *Service) ApiUpdateMomentBusinessValidate(ctx *gin.Context, req *momentproto.ApiUpdateReq) (ec errcode.ErrCode) {
ec = errcode.ErrCodeMomentSrvOk
resultList := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Moment.MediaComp).
Validate().
Collect()
ec, _ = resultList[0].(errcode.ErrCode)
if ec != errcode.ErrCodeOk {
logger.Error("ApiUpdateMomentBusinessValidate business validation failed!")
return
}
return
}
func (s *Service) ApiCreateZoneMomentBusinessValidate(ctx *gin.Context, req *zonemomentproto.ApiCreateReq) (ec errcode.ErrCode, accountpunishment *dbstruct.AccountPunishment) {
ec = errcode.ErrCodeMomentSrvOk
@ -563,6 +585,7 @@ func (s *Service) ApiCreateZoneMomentBusinessValidate(ctx *gin.Context, req *zon
QueryAccount(_DefaultAccount.OpListByMid).
EnsureAccountExist().
EnsureIsThisRole(consts.Streamer).
EnsureMediaIsSuccessfullyUploaded(req.ZoneMoment.MediaComp).
EnsureSuchAccountPunishmentNotExist(req.GetBaseRequest().Mid, consts.AccountPunishment_BlockFromCreatingZoneMoment, _DefaultAccountPunishment.OpListByMidAndType).
EnsureSuchAccountPunishmentNotExist(req.GetBaseRequest().Mid, pType, _DefaultAccountPunishment.OpListByMidAndType).
EnsureZoneMomentImagesEnoughForEncryption(req.ZoneMoment.GetMType(), req.ZoneMoment.MediaComp, mediaVisibleRange).
@ -580,6 +603,32 @@ func (s *Service) ApiCreateZoneMomentBusinessValidate(ctx *gin.Context, req *zon
return
}
func (s *Service) ApiUpdateZoneMomentBusinessValidate(ctx *gin.Context, req *zonemomentproto.ApiUpdateReq) (ec errcode.ErrCode) {
ec = errcode.ErrCodeMomentSrvOk
mediaVisibleRange := int64(0)
switch req.ZoneMoment.GetCType() {
case consts.ZoneMomentCType_Paid:
mediaVisibleRange = req.ZoneMoment.GetMediaVisibleRange()
}
resultList := businessvalidator.NewAuthBusinessValidator(ctx, req).
QueryAccount(_DefaultAccount.OpListByMid).
EnsureAccountExist().
EnsureIsThisRole(consts.Streamer).
EnsureMediaIsSuccessfullyUploaded(req.ZoneMoment.MediaComp).
EnsureZoneMomentImagesEnoughForEncryption(req.ZoneMoment.GetMType(), req.ZoneMoment.MediaComp, mediaVisibleRange).
Validate().
Collect()
ec, _ = resultList[0].(errcode.ErrCode)
if ec != errcode.ErrCodeOk {
logger.Error("ApiUpdateZoneMomentBusinessValidate business validation failed!")
return
}
return
}
// 代运营创建验证码
func (s *Service) ApiCreateZoneThirdPartnerBusinessValidate(ctx *gin.Context, req *zone_third_partner_proto.ApiCreateReq) (vericode *dbstruct.VeriCode, ec errcode.ErrCode) {
ec = errcode.ErrCodeLoginSrvOk

View File

@ -685,6 +685,42 @@ func (l *AuthBusinessValidator) EnsureZoneThirdPartnerIsNotZoneCreater(fun func(
return l
}
func (l *AuthBusinessValidator) EnsureMediaIsSuccessfullyUploaded(media *dbstruct.MediaComponent) *AuthBusinessValidator {
l.oplist = append(l.oplist, func() {
if len(media.GetImageIds()) > 0 {
imageIdForUploadFail, err := apollo.GetIntValue(consts.ImageIdForUploadFail, apollo.ApolloOpts().SetNamespace("application"))
if err != nil {
logger.Error("Apollo read failed : %v", err)
l.ec = errcode.ErrCodeApolloReadFail
return
}
for _, imageId := range media.GetImageIds() {
if int64(imageIdForUploadFail) == imageId {
l.ec = errcode.ErrCodeMediaUploadFailPleaseCheck
return
}
}
}
if len(media.GetVideoIds()) > 0 {
videoIdForUploadFail, err := apollo.GetIntValue(consts.VideoIdForUploadFail, apollo.ApolloOpts().SetNamespace("application"))
if err != nil {
logger.Error("Apollo read failed : %v", err)
l.ec = errcode.ErrCodeApolloReadFail
return
}
for _, videoId := range media.GetVideoIds() {
if int64(videoIdForUploadFail) == videoId {
l.ec = errcode.ErrCodeMediaUploadFailPleaseCheck
return
}
}
}
})
return l
}
// 执行校验
func (a *AuthBusinessValidator) Validate() *AuthBusinessValidator {
a.BusinessValidateStream.Validate()

View File

@ -1,6 +1,7 @@
package service
import (
"service/api/consts"
"service/api/errcode"
accountproto "service/api/proto/account/proto"
accountpunishmentproto "service/api/proto/accountpunishment/proto"
@ -242,6 +243,7 @@ func (s *Service) OpUpdateAccountBusinessValidate(ctx *gin.Context, req *account
// 1.业务校验
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Account.Avatar).
QueryAccount(_DefaultAccount.OpListByMid).
EnsureAccountExist().
EnsureIsOpRole().
@ -518,6 +520,8 @@ func (s *Service) OpUpdateStreamerBusinessValidate(ctx *gin.Context, req *stream
// 1.业务校验
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Streamer.Album).
EnsureMediaIsSuccessfullyUploaded(req.Streamer.Shorts).
QueryAccount(_DefaultAccount.OpListByMid).
EnsureAccountExist().
EnsureIsOpRole().
@ -1146,6 +1150,7 @@ func (s *Service) OpCreateMomentBusinessValidate(ctx *gin.Context, req *momentpr
ec = errcode.ErrCodeMomentSrvOk
// 1.业务校验
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Moment.MediaComp).
QueryAccount(_DefaultAccount.OpListByMid).
EnsureAccountExist().
EnsureIsOpRole().
@ -1162,6 +1167,7 @@ func (s *Service) OpUpdateMomentBusinessValidate(ctx *gin.Context, req *momentpr
ec = errcode.ErrCodeMomentSrvOk
// 1.业务校验
result := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.Moment.MediaComp).
QueryAccount(_DefaultAccount.OpListByMid).
EnsureAccountExist().
EnsureIsOpRole().
@ -1463,3 +1469,53 @@ func (s *Service) OpCreateZoneThirdPartnerBusinessValidate(ctx *gin.Context, req
return
}
func (s *Service) OpCreateZoneMomentBusinessValidate(ctx *gin.Context, req *zonemomentproto.OpCreateReq) (ec errcode.ErrCode, accountpunishment *dbstruct.AccountPunishment) {
ec = errcode.ErrCodeMomentSrvOk
mediaVisibleRange := int64(0)
switch req.ZoneMoment.GetCType() {
case consts.ZoneMomentCType_Free:
case consts.ZoneMomentCType_Paid:
mediaVisibleRange = req.ZoneMoment.GetMediaVisibleRange()
}
resultList := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.ZoneMoment.MediaComp).
EnsureZoneMomentImagesEnoughForEncryption(req.ZoneMoment.GetMType(), req.ZoneMoment.MediaComp, mediaVisibleRange).
EnsureAmongZoneMomentsPaidItemsLessThanFreeItems(_DefaultZoneMoment.OpCountByMidAndCType, req.ZoneMoment.GetMid(), req.ZoneMoment.GetCType()).
EnsureZoneMomentCreateTimesNotReachedDailyUpperbound(_DefaultZoneMomentCreateTimes.OpGetAndUpdate, req.ZoneMoment.GetMid(), req.ZoneMoment.GetCType()).
Validate().
Collect()
ec, _ = resultList[0].(errcode.ErrCode)
accountpunishment, _ = resultList[3].(*dbstruct.AccountPunishment)
if ec != errcode.ErrCodeOk {
logger.Error("OpCreateZoneMomentBusinessValidate business validation failed!")
return
}
return
}
func (s *Service) OpUpdateZoneMomentBusinessValidate(ctx *gin.Context, req *zonemomentproto.OpUpdateReq) (ec errcode.ErrCode) {
ec = errcode.ErrCodeMomentSrvOk
mediaVisibleRange := int64(0)
switch req.ZoneMoment.GetCType() {
case consts.ZoneMomentCType_Paid:
mediaVisibleRange = req.ZoneMoment.GetMediaVisibleRange()
}
resultList := businessvalidator.NewAuthBusinessValidator(ctx, req).
EnsureMediaIsSuccessfullyUploaded(req.ZoneMoment.MediaComp).
EnsureZoneMomentImagesEnoughForEncryption(req.ZoneMoment.GetMType(), req.ZoneMoment.MediaComp, mediaVisibleRange).
Validate().
Collect()
ec, _ = resultList[0].(errcode.ErrCode)
if ec != errcode.ErrCodeOk {
logger.Error("OpUpdateZoneMomentBusinessValidate business validation failed!")
return
}
return
}