package reportser import ( "91jd-server/common/dataReport" "91jd-server/common/db" "91jd-server/middleware/ua" "91jd-server/models/v/eventmod" "91jd-server/models/v/mediamod" "91jd-server/models/v/moduleconfmod" "91jd-server/models/v/usermod" "encoding/json" "time" ) // // 漫画事件 // // ReportComicPurchaseEvent 购买事件 func ReportComicPurchaseEvent(t *db.MongoTool, user *usermod.User, ua ua.UA, ip string, media *mediamod.Media, orderId string) (err error) { mediaTypeId, mediaTypeName := extractMediaModule(media) event := dataReport.NewCommonField(dataReport.GenerateGlobalEventID(), dataReport.EventTypeComicPurchase, user.UID, user.DistrictCode, ua, ip) event.Payload = jsonRawMessage(&dataReport.ComicPurchaseEvent{ ComicEventPub: dataReport.ComicEventPub{ MediaId: media.LsjId, ComicId: media.ID.Hex(), ComicTitle: media.Title, ComicTypeId: mediaTypeId, ComicTypeName: mediaTypeName, RecommendTraceId: "", }, CoinQuantity: jsonNumber(media.Price), OrderId: orderId, PageNo: jsonNumber(0), }) b, _ := json.Marshal(event) // 写入数据库 return eventmod.Insert(t, &eventmod.Event{ EventId: event.EventID, EventType: event.Event, Data: string(b), Status: eventmod.Default, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) } // ReportComicCollectOrLikeEvent 收藏或者点赞事件上报 func ReportComicCollectOrLikeEvent(t *db.MongoTool, user *usermod.User, ua ua.UA, ip string, media *mediamod.Media, isCollect bool, cancel bool) (err error) { mediaTypeId, mediaTypeName := extractMediaModule(media) var flag int64 = 1 // 点赞/收藏 if cancel { flag = 2 // 取消点赞/取消收藏 } eventKey := dataReport.EventTypeComicLike if isCollect { eventKey = dataReport.EventTypeComicCollect } event := dataReport.NewCommonField(dataReport.GenerateGlobalEventID(), eventKey, user.UID, user.DistrictCode, ua, ip) event.Payload = jsonRawMessage(&dataReport.ComicCollectOrLikeEvent{ ComicEventPub: dataReport.ComicEventPub{ MediaId: media.LsjId, ComicId: media.ID.Hex(), ComicTitle: media.Title, ComicTypeId: mediaTypeId, ComicTypeName: mediaTypeName, RecommendTraceId: "", }, Flag: jsonNumber(flag), PageNo: jsonNumber(0), }) b, _ := json.Marshal(event) // 写入数据库 return eventmod.Insert(t, &eventmod.Event{ EventId: event.EventID, EventType: event.Event, Data: string(b), Status: eventmod.Default, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) } // ReportComicCommentEvent 评论事件 func ReportComicCommentEvent(t *db.MongoTool, user *usermod.User, ua ua.UA, ip string, media *mediamod.Media, content string) (err error) { mediaTypeId, mediaTypeName := extractMediaModule(media) event := dataReport.NewCommonField(dataReport.GenerateGlobalEventID(), dataReport.EventTypeComicComment, user.UID, user.DistrictCode, ua, ip) event.Payload = jsonRawMessage(&dataReport.ComicCommentEvent{ ComicEventPub: dataReport.ComicEventPub{ MediaId: media.LsjId, ComicId: media.ID.Hex(), ComicTitle: media.Title, ComicTypeId: mediaTypeId, ComicTypeName: mediaTypeName, RecommendTraceId: "", }, CommentContent: content, PageNo: jsonNumber(0), }) b, _ := json.Marshal(event) // 写入数据库 return eventmod.Insert(t, &eventmod.Event{ EventId: event.EventID, EventType: event.Event, Data: string(b), Status: eventmod.Default, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) } // // 小说事件 // // ReportNovelPurchaseEvent 购买事件 func ReportNovelPurchaseEvent(t *db.MongoTool, user *usermod.User, ua ua.UA, ip string, media *mediamod.Media, orderId string) (err error) { mediaTypeId, mediaTypeName := extractMediaModule(media) event := dataReport.NewCommonField(dataReport.GenerateGlobalEventID(), dataReport.EventTypeNovelPurchase, user.UID, user.DistrictCode, ua, ip) event.Payload = jsonRawMessage(&dataReport.NovelPurchaseEvent{ NovelEventPub: dataReport.NovelEventPub{ MediaId: media.LsjId, NovelId: media.ID.Hex(), NovelTitle: media.Title, NovelTypeId: mediaTypeId, NovelTypeName: mediaTypeName, RecommendTraceId: "", }, CoinQuantity: jsonNumber(media.Price), OrderId: orderId, PageNo: jsonNumber(0), }) b, _ := json.Marshal(event) // 写入数据库 return eventmod.Insert(t, &eventmod.Event{ EventId: event.EventID, EventType: event.Event, Data: string(b), Status: eventmod.Default, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) } // ReportNovelCollectOrLikeEvent 收藏或者点赞事件上报 func ReportNovelCollectOrLikeEvent(t *db.MongoTool, user *usermod.User, ua ua.UA, ip string, media *mediamod.Media, isCollect bool, cancel bool) (err error) { mediaTypeId, mediaTypeName := extractMediaModule(media) var flag int64 = 1 // 点赞/收藏 if cancel { flag = 2 // 取消点赞/取消收藏 } eventKey := dataReport.EventTypeNovelLike //点赞 if isCollect { eventKey = dataReport.EventTypeNovelCollect // 收藏 } event := dataReport.NewCommonField(dataReport.GenerateGlobalEventID(), eventKey, user.UID, user.DistrictCode, ua, ip) event.Payload = jsonRawMessage(&dataReport.NovelCollectOrLikeEvent{ NovelEventPub: dataReport.NovelEventPub{ MediaId: media.LsjId, NovelId: media.ID.Hex(), NovelTitle: media.Title, NovelTypeId: mediaTypeId, NovelTypeName: mediaTypeName, RecommendTraceId: "", }, Flag: jsonNumber(flag), PageNo: jsonNumber(0), }) b, _ := json.Marshal(event) // 写入数据库 return eventmod.Insert(t, &eventmod.Event{ EventId: event.EventID, EventType: event.Event, Data: string(b), Status: eventmod.Default, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) } // ReportNovelCommentEvent 评论事件 func ReportNovelCommentEvent(t *db.MongoTool, user *usermod.User, ua ua.UA, ip string, media *mediamod.Media, content string) (err error) { mediaTypeId, mediaTypeName := extractMediaModule(media) event := dataReport.NewCommonField(dataReport.GenerateGlobalEventID(), dataReport.EventTypeNovelComment, user.UID, user.DistrictCode, ua, ip) event.Payload = jsonRawMessage(&dataReport.NovelCommentEvent{ NovelEventPub: dataReport.NovelEventPub{ MediaId: media.LsjId, NovelId: media.ID.Hex(), NovelTitle: media.Title, NovelTypeId: mediaTypeId, NovelTypeName: mediaTypeName, RecommendTraceId: "", }, CommentContent: content, PageNo: jsonNumber(0), }) b, _ := json.Marshal(event) // 写入数据库 return eventmod.Insert(t, &eventmod.Event{ EventId: event.EventID, EventType: event.Event, Data: string(b), Status: eventmod.Default, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) } // extractMediaModule 通过media的MID获取模块ID和名称 func extractMediaModule(media *mediamod.Media) (typeID, typeName string) { if media == nil { return } if !media.MID.IsZero() { module, _ := moduleconfmod.GetByID(media.MID) if !module.ID.IsZero() { typeID = module.ID.Hex() typeName = module.ModuleName return } } typeID = "default" typeName = "默认分类" return }