package logic import ( "context" quitl "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jybase/encrypt" "app.yhyue.com/moapp/jybase/fsw" "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/api/messagecenter/internal/svc" "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/api/messagecenter/internal/types" "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/messagecenter" "github.com/microcosm-cc/bluemonday" "github.com/zeromicro/go-zero/core/logx" ) type MessageAddLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewMessageAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MessageAddLogic { return &MessageAddLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } var ( htmlFilter = bluemonday.NewPolicy() ) func init() { htmlFilter.AllowStandardURLs() htmlFilter.AllowAttrs("href").OnElements("a") htmlFilter.AllowAttrs("class").OnElements("li") htmlFilter.AllowAttrs("src").OnElements("img") } func (l *MessageAddLogic) MessageAdd(req *types.MessageEntity) (*types.CommonRes, error) { resp, err := l.svcCtx.Message.SaveMessage(l.ctx, &messagecenter.MessageEntity{ OwnType: req.OwnType, Title: req.Title, SendId: quitl.Int64All(encrypt.SE.Decode4Hex(req.SendId)), Content: quitl.ObjToString(quitl.If(req.Type == 3 || req.Type == 4, fsw.Repl(req.Content), htmlFilter.Sanitize(fsw.Repl(req.Content)))), Item: req.Item, Type: req.Type, Link: req.Link, Appid: req.Appid, ItemType: req.ItemType, ReceiveId: quitl.Int64All(encrypt.SE.Decode4Hex(req.ReceiveId)), NewUserId: req.NewUserId, EntUserId: req.EntUserId, ReceiverIds: req.ReceiverIds, GroupIds: req.GroupIds, }) if err != nil { return nil, err } return &types.CommonRes{ Error_msg: resp.ErrorMsg, Error_code: int(resp.ErrorCode), Data: resp.Data, }, nil }