From 31d9260a5adfc0dcb7ca82bc76fa308e51c28a7b Mon Sep 17 00:00:00 2001 From: Leufolium Date: Wed, 6 Nov 2024 15:58:37 +0800 Subject: [PATCH] by Robin at 20241106 --- app/mix/cmd/main.go | 1 + app/mix/cmd_offline/main.go | 1 + app/mix/service/apiservice.go | 58 ++++++++-------- app/mix/service/notif_builder_handler.go | 85 +++++++++++++++++++++++ app/mix/service/service.go | 10 ++- bizcommon/util/util.go | 8 +++ codecreate/codecreate.go | 8 +-- codecreate/resource/EntityDefine.xlsx | Bin 49548 -> 50495 bytes 8 files changed, 133 insertions(+), 38 deletions(-) create mode 100644 app/mix/service/notif_builder_handler.go diff --git a/app/mix/cmd/main.go b/app/mix/cmd/main.go index 8e75e502..d6202ae2 100644 --- a/app/mix/cmd/main.go +++ b/app/mix/cmd/main.go @@ -89,6 +89,7 @@ func main() { service.DefaultImageAuditTaskResultHandler = service.NewImageAuditTaskResultHandler() service.DefaultTextAuditTaskResultHandler = service.NewTextAuditTaskResultHandler() service.DefaultVideoModerationTaskResultHandler = service.NewVideoModerationTaskResultHandler() + service.DefaultNotifBuilderHandler = service.NewNotifBuilderHandler() service.DefaultEsbService = service.NewEsbService() service.DefaultHvyogoService = service.NewHvyogoService(cfg.Hvyogo) err = service.DefaultService.Init(cfg) diff --git a/app/mix/cmd_offline/main.go b/app/mix/cmd_offline/main.go index 9fd50691..8e6c9ff4 100644 --- a/app/mix/cmd_offline/main.go +++ b/app/mix/cmd_offline/main.go @@ -78,6 +78,7 @@ func main() { service.DefaultImageAuditTaskResultHandler = service.NewImageAuditTaskResultHandler() service.DefaultTextAuditTaskResultHandler = service.NewTextAuditTaskResultHandler() service.DefaultVideoModerationTaskResultHandler = service.NewVideoModerationTaskResultHandler() + service.DefaultNotifBuilderHandler = service.NewNotifBuilderHandler() service.DefaultStreamerRecommService = service.NewStreamerRecommService() service.DefaultNotifBcstCenter = service.NewNotifBcstCenter() err = service.DefaultService.Init(cfg) diff --git a/app/mix/service/apiservice.go b/app/mix/service/apiservice.go index bb6e3d83..f260ce6f 100644 --- a/app/mix/service/apiservice.go +++ b/app/mix/service/apiservice.go @@ -164,7 +164,7 @@ func (s *Service) ApiLoginByVeriCode(ctx *gin.Context, req *loginproto.ApiLoginB return } // 写入自动发送消息的标签 - s.utilWriteNotifInfo(ctx, consts.SysNotifTemp_FirstLogin, account.GetMid()) + DefaultNotifBuilderHandler.Handle(ctx, consts.SysNotifTemp_FirstLogin, account) } else if ec != errcode.ErrCodeLoginSrvOk { return } @@ -328,7 +328,7 @@ func (s *Service) ApiUpdatePassword(ctx *gin.Context, req *loginproto.ApiUpdateP } // 4.发送通知 - s.utilWriteNotifInfo(ctx, consts.SysNotifTemp_PswdChanged, login.GetMid()) + DefaultNotifBuilderHandler.Handle(ctx, consts.SysNotifTemp_PswdChanged, login) return } @@ -649,7 +649,7 @@ func (s *Service) ApiCancelAccount(ctx *gin.Context, req *accountproto.ApiCancel } // 发送通知 - s.utilWriteNotifInfo(ctx, consts.SysNotifTemp_AcctCancellationApplied, account.GetMid()) + DefaultNotifBuilderHandler.Handle(ctx, consts.SysNotifTemp_AcctCancellationApplied, account) return @@ -2728,32 +2728,34 @@ func (s *Service) ApiCreateZone(ctx *gin.Context, req *zoneproto.ApiCreateReq) ( req.Zone.Profile = goproto.String(profile) s.CreateZoneTextAudit(ctx, nil, req.Zone) - // 创建默认动态 - cfg := apollostruct.ReferentialZoneMoment{} - err = apollo.GetJson(consts.ReferentialZoneMomentKey, &cfg, apollo.ApolloOpts().SetNamespace("zone")) - if err != nil { - logger.Error("Apollo read failed : %v", err) - return errcode.ErrCodeApolloReadFail - } + go func() { + // 创建默认动态 + cfg := apollostruct.ReferentialZoneMoment{} + err = apollo.GetJson(consts.ReferentialZoneMomentKey, &cfg, apollo.ApolloOpts().SetNamespace("zone")) + if err != nil { + logger.Error("Apollo read failed : %v", err) + } - _, 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, - MediaAmount: cfg.MediaAmount, - MediaVisibleRange: cfg.MediaVisibleRange, - }, - }) - if err != nil { - logger.Error("_DefaultZoneMoment OpCreate fail, req: %v, err: %v", util.ToJson(req), err) - ec = errcode.ErrCodeZoneSrvFail - return - } + _, 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, + MediaAmount: cfg.MediaAmount, + MediaVisibleRange: cfg.MediaVisibleRange, + }, + }) + if err != nil { + logger.Error("_DefaultZoneMoment OpCreate fail, req: %v, err: %v", util.ToJson(req), err) + return + } + }() + + DefaultNotifBuilderHandler.Handle(ctx, consts.SysNotifTemp_ZoneCreated, req.Zone) return } diff --git a/app/mix/service/notif_builder_handler.go b/app/mix/service/notif_builder_handler.go new file mode 100644 index 00000000..91419815 --- /dev/null +++ b/app/mix/service/notif_builder_handler.go @@ -0,0 +1,85 @@ +package service + +import ( + "service/api/consts" + "service/bizcommon/util" + "service/dbstruct" + + "github.com/gin-gonic/gin" +) + +var DefaultNotifBuilderHandler *NotifBuilderHandler + +type NotifBuilderHandler struct { + // 处理器map + handlerMap map[int64]func(ctx *gin.Context, args ...any) +} + +func (handler *NotifBuilderHandler) Handle(ctx *gin.Context, scene int64, args ...any) { + handler.handlerMap[scene](ctx, args...) +} + +func NewNotifBuilderHandler() *NotifBuilderHandler { + handler := &NotifBuilderHandler{} + handler.init() + return handler +} + +func (handler *NotifBuilderHandler) init() { + handler.handleSysFirstLogin() + handler.handleSysStreamerPunished() + handler.handleSysPswdChanged() + handler.handleSysAcctCancellationApplied() + handler.handleSysStreamerAuthApprovalPassed() + handler.handleSysZoneCreated() +} + +func (handler *NotifBuilderHandler) handleSysFirstLogin() { + handler.handlerMap[consts.SysNotifTemp_FirstLogin] = func(ctx *gin.Context, args ...any) { + account := args[0].(*dbstruct.Account) + DefaultService.utilWriteNotifInfo(ctx, consts.SysNotifTemp_FirstLogin, account.GetMid()) + } +} + +func (handler *NotifBuilderHandler) handleSysStreamerPunished() { + handler.handlerMap[consts.SysNotifTemp_StreamerPunished] = func(ctx *gin.Context, args ...any) { + acctpunishment := args[0].(*dbstruct.AccountPunishment) + // 封禁通知 + DefaultService.utilWriteNotifInfo(ctx, consts.SysNotifTemp_StreamerPunished, acctpunishment.GetMid(), + consts.AccountPunishmentMap[acctpunishment.GetType()], util.FormatTsAsNotifT(acctpunishment.GetEndTime())) + // 解禁通知 + if !acctpunishment.IsPermanent() { + DefaultService.utilWriteCrontabNotifInfo(ctx, consts.SysNotifTemp_StreamerPunishmentEnds, acctpunishment.GetMid(), acctpunishment.GetEndTime()) + } + } +} + +func (handler *NotifBuilderHandler) handleSysPswdChanged() { + handler.handlerMap[consts.SysNotifTemp_PswdChanged] = func(ctx *gin.Context, args ...any) { + login := args[0].(*dbstruct.Login) + DefaultService.utilWriteNotifInfo(ctx, consts.SysNotifTemp_PswdChanged, login.GetMid()) + } +} + +func (handler *NotifBuilderHandler) handleSysAcctCancellationApplied() { + handler.handlerMap[consts.SysNotifTemp_AcctCancellationApplied] = func(ctx *gin.Context, args ...any) { + account := args[0].(*dbstruct.Account) + DefaultService.utilWriteNotifInfo(ctx, consts.SysNotifTemp_AcctCancellationApplied, account.GetMid()) + } +} + +func (handler *NotifBuilderHandler) handleSysStreamerAuthApprovalPassed() { + handler.handlerMap[consts.SysNotifTemp_AcctCancellationApplied] = func(ctx *gin.Context, args ...any) { + mids := args[0].([]int64) + for _, mid := range mids { + DefaultService.utilWriteNotifInfo(ctx, consts.SysNotifTemp_StreamerAuthApprovalPassed, mid) + } + } +} + +func (handler *NotifBuilderHandler) handleSysZoneCreated() { + handler.handlerMap[consts.SysNotifTemp_ZoneCreated] = func(ctx *gin.Context, args ...any) { + zone := args[0].(*dbstruct.Zone) + DefaultService.utilWriteNotifInfo(ctx, consts.SysNotifTemp_ZoneCreated, zone.GetMid()) + } +} diff --git a/app/mix/service/service.go b/app/mix/service/service.go index 14eed503..fc1a691e 100644 --- a/app/mix/service/service.go +++ b/app/mix/service/service.go @@ -2313,6 +2313,9 @@ func (s *Service) OpApproveStreamerAuthApprovalDetails(ctx *gin.Context, req *st ec = errcode.ErrCodeAccountSrvFail return } + + // 发送通知 + DefaultNotifBuilderHandler.Handle(ctx, consts.SysNotifTemp_StreamerAuthApprovalPassed, mids) } return @@ -3755,12 +3758,7 @@ func (s *Service) OpCreateAccountPunishment(ctx *gin.Context, req *accountpunish } // 封禁通知 - s.utilWriteNotifInfo(ctx, consts.SysNotifTemp_StreamerPunished, req.AccountPunishment.GetMid(), - consts.AccountPunishmentMap[req.AccountPunishment.GetType()], req.AccountPunishment.GetEndTimeFormatAsChinese()) - // 解禁通知 - if !req.AccountPunishment.IsPermanent() { - s.utilWriteCrontabNotifInfo(ctx, consts.SysNotifTemp_StreamerPunishmentEnds, req.AccountPunishment.GetMid(), req.AccountPunishment.GetEndTime()) - } + DefaultNotifBuilderHandler.Handle(ctx, consts.SysNotifTemp_StreamerPunished, req.AccountPunishment) return } diff --git a/bizcommon/util/util.go b/bizcommon/util/util.go index d8899cbb..bf065cd6 100644 --- a/bizcommon/util/util.go +++ b/bizcommon/util/util.go @@ -373,3 +373,11 @@ func GetLastLessOrEqualForFloat64(arr []float64, target float64) int { return result } + +func FormatTs(timestamp int64, format string) string { + return time.Unix(timestamp, 0).Local().Format(format) +} + +func FormatTsAsNotifT(timestamp int64) string { + return FormatTs(timestamp, "2006年1月2日 15时04分") +} diff --git a/codecreate/codecreate.go b/codecreate/codecreate.go index 42eeaab5..9a7afdc8 100644 --- a/codecreate/codecreate.go +++ b/codecreate/codecreate.go @@ -9,10 +9,10 @@ import ( func main() { genSource := &generator.GenSource{ - EntityName: "Notification", - ModuleName: "notification", - EntityCNName: "系统通知表", - ErrCodeSeq: "46", + EntityName: "FrontendRoute", + ModuleName: "frontend_route", + EntityCNName: "前端页面路由表", + ErrCodeSeq: "47", } generator.CreateFileDirectory(genSource) diff --git a/codecreate/resource/EntityDefine.xlsx b/codecreate/resource/EntityDefine.xlsx index 93b325b2a0177324b0d668e347af4df72825d51b..2f271532f90e2be93d9dc4cf5cfc1c2957825ec1 100644 GIT binary patch delta 20959 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 a3QoXjAt*gsy2B{s$iE75R324_qyGT&&t*9P delta 20138 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
*mH*ec+*8b_j4dxx8*Ryek~+jaAo~f zOTs2HMkg+>(vidvxhi4IZQN z;*$s$PYP7{<(g$RV&OzEAQh}(tKWJ=bG)-{xPJ+ z!SC6!b;`3b-6Lvnp3MH-M_vC*tChgB=l!3d`0QuC=G8X)>RH#!-+SizDIT|P8dJJR@NrK^ zqxX5#BXYKwy4CY;GEz%!c96|hN@~qw^2glNRYmQK38m{kG7-qKGLc_6WFxo+e~uDO5VEqD0w%`-p-zDEbp!=ISGjFvgFfuHi&wo2+ob+ z;P~X>qJ37-k8g(h(PuPHEXmWV>6z6GL z_28i2bwtH4XU&2V>OlZMyA9NpTY)hg&-+O|tVcvqP;j>f-O&Q08GrDzzLNt!^ziwM z(|RfE@+!!&UcmpRz;9@PLd1)jWh+3#UaWYjyTtvRpl{eibSMusL=s*2xy--VwHR?lB17%gFe8h9zTeIgJaC$yHS4lc*dQ>n-3?V5*||GD1cwDOlgLS1l8G4;*2Hzc+PetRd8Td9!VY-g+IDSCQzWOJX>hc6tyq z-Sx6}P5$CoO>!>I9{>iJ6=6UV|In

tOn2_PgJKqFB=y!{J-8V{?QZDmN@FxQW)$ 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