156 lines
5.5 KiB
Go
156 lines
5.5 KiB
Go
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)
|
|
}
|
|
}
|