Merge pull request 'feat-IRONFANS-70' (#351) from feat-IRONFANS-70 into test

Reviewed-on: http://121.41.31.146:3000/wishpal_ironfan/service/pulls/351
This commit is contained in:
chenhao 2024-04-26 11:22:48 +08:00
commit 629555ad36
6 changed files with 61 additions and 11 deletions

View File

@ -50,6 +50,7 @@ const (
MaxDailyMomentCreateTimesKey = "max_daily_moment_create_times" MaxDailyMomentCreateTimesKey = "max_daily_moment_create_times"
DefaultMomentTextKey = "default_moment_text" DefaultMomentTextKey = "default_moment_text"
MaxDailyZoneMomentCreateTimesKey = "max_daily_zone_moment_create_times" MaxDailyZoneMomentCreateTimesKey = "max_daily_zone_moment_create_times"
ZoneKey = "zone"
) )
// del_flag // del_flag

View File

@ -0,0 +1,10 @@
package apollostruct
import "service/dbstruct"
type ReferentialZoneMoment struct {
Text *string `json:"text"` // 动态文字内容
MediaComp *dbstruct.MediaComponent `json:"media_component"` // 动态媒体内容
MType *int64 `json:"m_type"` // 媒体类型,见: MediaType*
Status *int64 `json:"status"` // 审批状态
}

View File

@ -4712,16 +4712,13 @@ func (m *Mongo) GetZoneMomentCreateTimes(ctx *gin.Context, mid int64) (momentCre
return momentCreateTimes, err return momentCreateTimes, err
} }
func (m *Mongo) GetAndUpdateZoneMomentCreateTimes(ctx *gin.Context, mid int64, cType int64) (momentCreateTimes *dbstruct.ZoneMomentCreateTimes, err error) { func (m *Mongo) GetAndUpdateZoneMomentCreateTimes(ctx *gin.Context, mid, totalIncr, freeIncr, paidIncr int64) (momentCreateTimes *dbstruct.ZoneMomentCreateTimes, err error) {
col := m.getColZoneMomentCreateTimes() col := m.getColZoneMomentCreateTimes()
incClause := qmgo.M{ incClause := qmgo.M{
"create_times": 1, "create_times": totalIncr,
} "free_create_times": freeIncr,
if cType == consts.ZoneMomentCType_Free { "paid_create_times": paidIncr,
incClause["free_create_times"] = 1
} else if cType == consts.ZoneMomentCType_Paid {
incClause["paid_create_times"] = 1
} }
change := qmgo.Change{ change := qmgo.Change{

View File

@ -2154,6 +2154,31 @@ func (s *Service) ApiCreateZone(ctx *gin.Context, req *zoneproto.ApiCreateReq) (
return return
} }
// 创建默认动态
cfg := apollostruct.ReferentialZoneMoment{}
err = apollo.GetJson(consts.ZoneKey, &cfg, apollo.ApolloOpts().SetNamespace("referential_zone_moment"))
if err != nil {
logger.Error("Apollo read failed : %v", err)
return errcode.ErrCodeApolloReadFail
}
_, err = _DefaultZoneMoment.OpCreate(ctx, &zonemomentproto.OpCreateReq{
ZoneMoment: &dbstruct.ZoneMoment{
Mid: req.Zone.Mid,
Zid: goproto.Int64(zid),
CType: goproto.Int64(consts.ZoneMomentCType_Free),
Text: cfg.Text,
MediaComp: cfg.MediaComp,
MType: cfg.MType,
Status: cfg.Status,
},
})
if err != nil {
logger.Error("_DefaultZoneMoment OpCreate fail, req: %v, err: %v", util.ToJson(req), err)
ec = errcode.ErrCodeZoneSrvFail
return
}
return return
} }
@ -2620,6 +2645,16 @@ func (s *Service) ApiDeleteZoneMoment(ctx *gin.Context, req *zonemomentproto.Api
} }
} }
// 回退每日发帖次数
totalIncr, freeIncr, paidIncr := int64(-1), int64(0), int64(0)
if zonemoment.GetCType() == consts.ZoneMomentCType_Free {
freeIncr = -1
} else if zonemoment.GetCType() == consts.ZoneMomentCType_Paid {
paidIncr = -1
}
_, err = _DefaultZoneMomentCreateTimes.OpGetAndUpdate(ctx, zone.GetMid(), totalIncr, freeIncr, paidIncr)
logger.Error("OpGetAndUpdate fail, err: %v", err)
ec = errcode.ErrCodeZoneMomentSrvFail
return return
} }

View File

@ -460,7 +460,7 @@ func (l *AuthBusinessValidator) EnsureSuchAccountPunishmentNotExist(uid int64, t
return l return l
} }
func (l *AuthBusinessValidator) EnsureZoneMomentCreateTimesNotReachedDailyUpperbound(fun func(*gin.Context, int64, int64) (*dbstruct.ZoneMomentCreateTimes, error), mid int64, cType int64) *AuthBusinessValidator { func (l *AuthBusinessValidator) EnsureZoneMomentCreateTimesNotReachedDailyUpperbound(fun func(*gin.Context, int64, int64, int64, int64) (*dbstruct.ZoneMomentCreateTimes, error), mid int64, cType int64) *AuthBusinessValidator {
l.oplist = append(l.oplist, func() { l.oplist = append(l.oplist, func() {
// 读取每日发送上限 // 读取每日发送上限
@ -471,7 +471,14 @@ func (l *AuthBusinessValidator) EnsureZoneMomentCreateTimesNotReachedDailyUpperb
return return
} }
zoneMomentCreateTimes, err := fun(l.ctx, mid, cType) totalIncr, freeIncr, paidIncr := int64(1), int64(0), int64(0)
if cType == consts.ZoneMomentCType_Free {
freeIncr = 1
} else if cType == consts.ZoneMomentCType_Paid {
paidIncr = 1
}
zoneMomentCreateTimes, err := fun(l.ctx, mid, totalIncr, freeIncr, paidIncr)
if err != nil { if err != nil {
l.ec = errcode.ErrCodeZoneMomentCreateTimesSrvFail l.ec = errcode.ErrCodeZoneMomentCreateTimesSrvFail
return return

View File

@ -30,9 +30,9 @@ func (p *ZoneMomentCreateTimes) OpGetOne(ctx *gin.Context, mid int64) (*dbstruct
return zoneMomentCreateTimes, nil return zoneMomentCreateTimes, nil
} }
func (p *ZoneMomentCreateTimes) OpGetAndUpdate(ctx *gin.Context, mid int64, cType int64) (*dbstruct.ZoneMomentCreateTimes, error) { func (p *ZoneMomentCreateTimes) OpGetAndUpdate(ctx *gin.Context, mid, totalIncr, freeIncr, paidIncr int64) (*dbstruct.ZoneMomentCreateTimes, error) {
zoneMomentCreateTimes, err := p.store.GetAndUpdateZoneMomentCreateTimes(ctx, mid, cType) zoneMomentCreateTimes, err := p.store.GetAndUpdateZoneMomentCreateTimes(ctx, mid, totalIncr, freeIncr, paidIncr)
if err != nil { if err != nil {
logger.Error("GetAndUpdateZoneMomentCreateTimes fail, err: %v", err) logger.Error("GetAndUpdateZoneMomentCreateTimes fail, err: %v", err)
return nil, err return nil, err