262 lines
7.2 KiB
Go
262 lines
7.2 KiB
Go
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
|
|
}
|