forked from all_user/stat_center
Initial commit
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
package advertiseSer
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sort"
|
||||
"stat/common/enum/consts"
|
||||
"stat/common/utils"
|
||||
"stat/models/advertiseLocMod"
|
||||
"stat/models/advertiseMod"
|
||||
"stat/models/appInfoMod"
|
||||
"stat/statg"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
func CheckChange(ctx context.Context, oldDoc, newDoc *advertiseMod.Advertise, account string) {
|
||||
msg := ""
|
||||
changed := false
|
||||
apps, _ := appInfoMod.GetAllAppIdNameMap(ctx)
|
||||
appId := int32(0)
|
||||
// 检测更新
|
||||
if oldDoc != nil && newDoc != nil {
|
||||
warnChar := "☢️"
|
||||
appId = oldDoc.AppId
|
||||
msg += fmt.Sprintf("检测到广告内容变更:\n广告ID:【%d】\n名称:【%s】\n", oldDoc.Id, oldDoc.Title)
|
||||
locs, _ := advertiseLocMod.GetAllAdvertiseLocationMap(ctx, bson.M{})
|
||||
locName := ""
|
||||
if nm := locs[oldDoc.AppId]; nm != nil {
|
||||
if loc := nm[oldDoc.LocId]; loc != nil {
|
||||
locName = loc.Name
|
||||
}
|
||||
}
|
||||
msg += fmt.Sprintf("位置ID:【%d】\n位置名称:【%s】\n", oldDoc.LocId, locName)
|
||||
if oldDoc.AppId != newDoc.AppId {
|
||||
changed = true
|
||||
warnChar = "🔯"
|
||||
msg += fmt.Sprintf("应用变更:\n┏旧值【%s】(%d)\n┗新值【%s】(%d)\n", apps[oldDoc.AppId], oldDoc.AppId, apps[newDoc.AppId], newDoc.AppId)
|
||||
}
|
||||
if oldDoc.IsActive != newDoc.IsActive {
|
||||
changed = true
|
||||
msg += fmt.Sprintf("激活变更:\n┏旧值【%v】【%v】\n┗新值【%v】【%v】\n", oldDoc.IsActive, consts.StatusDesc[oldDoc.IsActive],
|
||||
newDoc.IsActive, consts.StatusDesc[newDoc.IsActive])
|
||||
}
|
||||
if oldDoc.Title != newDoc.Title {
|
||||
changed = true
|
||||
msg += fmt.Sprintf("标题变更:\n┏旧值【%s】\n┗新值【%s】\n", oldDoc.Title, newDoc.Title)
|
||||
}
|
||||
if oldDoc.Sort != newDoc.Sort {
|
||||
changed = true
|
||||
msg += fmt.Sprintf("排序变更:\n┏旧值【%d】\n┗新值【%d】\n", oldDoc.Sort, newDoc.Sort)
|
||||
}
|
||||
if oldDoc.StartTime != newDoc.StartTime {
|
||||
changed = true
|
||||
msg += fmt.Sprintf("开始时间变更:\n┏旧值【%s】\n┗新值【%s】\n", oldDoc.StartTime.Format("2006-01-02T15:04:05"), newDoc.StartTime.Format("2006-01-02T15:04:05"))
|
||||
}
|
||||
if oldDoc.EndTime != newDoc.EndTime {
|
||||
changed = true
|
||||
msg += fmt.Sprintf("结束时间变更:\n┏旧值【%s】\n┗新值【%s】\n", oldDoc.EndTime.Format("2006-01-02T15:04:05"), newDoc.EndTime.Format("2006-01-02T15:04:05"))
|
||||
}
|
||||
if oldDoc.LocId != newDoc.LocId {
|
||||
changed = true
|
||||
oName := ""
|
||||
if om := locs[oldDoc.AppId]; om != nil {
|
||||
if loc := om[oldDoc.LocId]; loc != nil {
|
||||
oName = loc.Name
|
||||
}
|
||||
}
|
||||
nName := ""
|
||||
if nm := locs[newDoc.AppId]; nm != nil {
|
||||
if loc := nm[newDoc.LocId]; loc != nil {
|
||||
nName = loc.Name
|
||||
}
|
||||
}
|
||||
msg += fmt.Sprintf("位置变更:\n┏旧值【%s】(%d)\n┗新值【%s】(%d)\n", oName, oldDoc.LocId, nName, newDoc.LocId)
|
||||
}
|
||||
oLinks := utils.StrSliceConstruct(len(oldDoc.Links), func(index int) (string, bool) {
|
||||
link := oldDoc.Links[index]
|
||||
return link.Link, true
|
||||
})
|
||||
nLinks := utils.StrSliceConstruct(len(newDoc.Links), func(index int) (string, bool) {
|
||||
link := newDoc.Links[index]
|
||||
return link.Link, true
|
||||
})
|
||||
sort.Sort(sort.StringSlice(oLinks))
|
||||
sort.Sort(sort.StringSlice(nLinks))
|
||||
if strings.Join(oLinks, "") != strings.Join(nLinks, "") {
|
||||
warnChar = "🛑"
|
||||
changed = true
|
||||
msg += fmt.Sprintf("链接变更:\n")
|
||||
for index, link := range oLinks {
|
||||
msg += fmt.Sprintf("┣%d.旧值: %s\n", index+1, link)
|
||||
}
|
||||
for index, link := range nLinks {
|
||||
msg += fmt.Sprintf("┣%d.新值: %s\n", index+1, link)
|
||||
}
|
||||
} else {
|
||||
msg += fmt.Sprintf("链接不变:【%d个】\n", len(nLinks))
|
||||
for index, link := range nLinks {
|
||||
msg += fmt.Sprintf("┣%d.链接: %s\n", index+1, link)
|
||||
}
|
||||
}
|
||||
msg = warnChar + msg
|
||||
} else if oldDoc == nil && newDoc != nil {
|
||||
changed = true
|
||||
appId = newDoc.AppId
|
||||
msg += fmt.Sprintf("🟢检测到新增广告:\n广告ID:【%d】\n广告标题:【%s】\n", newDoc.Id, newDoc.Title)
|
||||
locs, _ := advertiseLocMod.GetAllAdvertiseLocationMap(ctx, bson.M{})
|
||||
locName := ""
|
||||
if nm := locs[newDoc.AppId]; nm != nil {
|
||||
if loc := nm[newDoc.LocId]; loc != nil {
|
||||
locName = loc.Name
|
||||
}
|
||||
}
|
||||
msg += fmt.Sprintf("位置ID:【%d】\n位置名称:【%s】\n", newDoc.LocId, locName)
|
||||
nLinks := utils.StrSliceConstruct(len(newDoc.Links), func(index int) (string, bool) {
|
||||
link := newDoc.Links[index]
|
||||
return link.Link, true
|
||||
})
|
||||
msg += fmt.Sprintf("链接:【%d个】\n", len(nLinks))
|
||||
for index, link := range nLinks {
|
||||
msg += fmt.Sprintf("┣%d.链接: %s\n", index+1, link)
|
||||
}
|
||||
} else if oldDoc != nil && newDoc == nil {
|
||||
changed = true
|
||||
appId = oldDoc.AppId
|
||||
msg += fmt.Sprintf("⛔️检测到删除广告:\n广告ID:【%d】\n广告标题:【%s】\n", oldDoc.Id, oldDoc.Title)
|
||||
locs, _ := advertiseLocMod.GetAllAdvertiseLocationMap(ctx, bson.M{})
|
||||
locName := ""
|
||||
if nm := locs[oldDoc.AppId]; nm != nil {
|
||||
if loc := nm[oldDoc.LocId]; loc != nil {
|
||||
locName = loc.Name
|
||||
}
|
||||
}
|
||||
msg += fmt.Sprintf("位置ID:【%d】\n位置名称:【%s】\n", oldDoc.LocId, locName)
|
||||
nLinks := utils.StrSliceConstruct(len(oldDoc.Links), func(index int) (string, bool) {
|
||||
link := oldDoc.Links[index]
|
||||
return link.Link, true
|
||||
})
|
||||
msg += fmt.Sprintf("链接:【%d个】\n", len(nLinks))
|
||||
for index, link := range nLinks {
|
||||
msg += fmt.Sprintf("┣%d.链接: %s\n", index+1, link)
|
||||
}
|
||||
}
|
||||
|
||||
if changed {
|
||||
msg += fmt.Sprintf("广告所属应用:【%s】(%d)\n", apps[appId], appId)
|
||||
msg += fmt.Sprintf("操作人员账号:【%s】\n", account)
|
||||
msg += fmt.Sprintf("操作发生时间:【%s】\n", time.Now().Format("2006-01-02T15:04:05"))
|
||||
msg += fmt.Sprintf("请确认是否异常: %s \n", statg.Tgbotsend)
|
||||
statg.Bot.SendAdvertiseMessage(msg)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user