Files
stat_center/service/applicationser/helper.go
T
2026-05-20 16:13:58 +08:00

122 lines
5.3 KiB
Go

package applicationser
import (
"context"
"fmt"
"stat/common/enum/consts"
"stat/common/utils"
"stat/models/applicationLocMod"
"stat/models/applicationmod"
"stat/statg"
"time"
)
func CheckChange(ctx context.Context, oldDoc, newDoc *applicationmod.Application, account string) {
msg := ""
changed := false
// 检测更新
if oldDoc != nil && newDoc != nil {
warnChar := "🔴"
msg += fmt.Sprintf("检测到应用变更:\n应用ID:【%s】\n应用名称:【%s】\n", oldDoc.Id.Hex(), oldDoc.Name)
if oldDoc.DownloadUrl != newDoc.DownloadUrl {
changed = true
msg += fmt.Sprintf("下载链接变更:\n┏旧值【%v】\n┗新值【%v】\n", oldDoc.DownloadUrl, newDoc.DownloadUrl)
}
if oldDoc.AndroidUrl != newDoc.AndroidUrl {
changed = true
msg += fmt.Sprintf("安卓链接变更:\n┏旧值【%v】\n┗新值【%v】\n", oldDoc.AndroidUrl, newDoc.AndroidUrl)
}
if oldDoc.IosUrl != newDoc.IosUrl {
changed = true
msg += fmt.Sprintf("IOS链接变更:\n┏旧值【%v】\n┗新值【%v】\n", oldDoc.IosUrl, newDoc.IosUrl)
}
if oldDoc.ParentAppId != newDoc.ParentAppId {
changed = true
msg += fmt.Sprintf("所属appId变更:\n┏旧值【%v】\n┗新值【%v】\n", oldDoc.ParentAppId, newDoc.ParentAppId)
} else {
oSet := utils.NewSet(oldDoc.LocIds)
nSet := utils.NewSet(newDoc.LocIds)
if !oSet.Equal(nSet) { // 两个集合不相等
changed = true
dict := applicationLocMod.FindApplicationLocationDict(ctx, oldDoc.ParentAppId)
oldLocations := ""
for _, id := range oldDoc.LocIds {
oldLocations += fmt.Sprintf("%s,", dict[id].Name)
}
nowLocations := ""
for _, id := range newDoc.LocIds {
nowLocations += fmt.Sprintf("%s,", dict[id].Name)
}
msg += fmt.Sprintf("应用中心位置变更:\n┏旧值【%s】\n┗新值【%s】\n", oldLocations, nowLocations)
}
}
if oldDoc.Status != newDoc.Status {
changed = true
msg += fmt.Sprintf("激活变更:\n┏旧值【%v】【%v】\n┗新值【%v】【%v】\n", oldDoc.Status, consts.StatusDesc[oldDoc.Status],
newDoc.Status, consts.StatusDesc[newDoc.Status])
}
if oldDoc.Internal != newDoc.Internal {
changed = true
msg += fmt.Sprintf("是否内部应用展示,状态变更:\n┏旧值【%v】【%v】\n┗新值【%v】【%v】\n", oldDoc.Internal, consts.IsShowDesc[oldDoc.Internal],
newDoc.Internal, consts.IsShowDesc[newDoc.Internal])
}
if oldDoc.NineShow != newDoc.NineShow {
changed = true
msg += fmt.Sprintf("是否九宫格展示,状态变更:\n┏旧值【%v】【%v】\n┗新值【%v】【%v】\n", oldDoc.NineShow, consts.IsShowDesc[oldDoc.NineShow],
newDoc.NineShow, consts.IsShowDesc[newDoc.NineShow])
}
if oldDoc.RecreationShow != newDoc.RecreationShow {
changed = true
msg += fmt.Sprintf("是否娱乐中心展示,状态变更:\n┏旧值【%v】【%v】\n┗新值【%v】【%v】\n", oldDoc.RecreationShow, consts.IsShowDesc[oldDoc.RecreationShow],
newDoc.RecreationShow, consts.IsShowDesc[newDoc.RecreationShow])
}
if oldDoc.HomeShow != newDoc.HomeShow {
changed = true
msg += fmt.Sprintf("是否首页展示,状态变更:\n┏旧值【%v】【%v】\n┗新值【%v】【%v】\n", oldDoc.HomeShow, consts.IsShowDesc[oldDoc.HomeShow],
newDoc.HomeShow, consts.IsShowDesc[newDoc.HomeShow])
}
if !oldDoc.StartTime.Equal(newDoc.StartTime) {
changed = true
msg += fmt.Sprintf("开始时间变更:\n┏旧值【%v】\n┗新值【%v】\n", oldDoc.StartTime, newDoc.StartTime)
}
if !oldDoc.EndTime.Equal(newDoc.EndTime) {
changed = true
msg += fmt.Sprintf("结束时间变更:\n┏旧值【%v】\n┗新值【%v】\n", oldDoc.EndTime, newDoc.EndTime)
}
msg = warnChar + msg
} else if oldDoc == nil && newDoc != nil {
changed = true
warnChar := "🟣"
msg += fmt.Sprintf("检测到应用新增:\n应用ID:【%s】\n名称:【%s】\n", newDoc.Id.Hex(), newDoc.Name)
msg += fmt.Sprintf("下载链接:【%v】\n", newDoc.DownloadUrl)
msg += fmt.Sprintf("安卓链接:【%v】\n", newDoc.AndroidUrl)
msg += fmt.Sprintf("IOS链接:【%v】\n", newDoc.IosUrl)
msg += fmt.Sprintf("激活状态:\n┏【%v】【%s】\n", newDoc.Status, consts.StatusDesc[newDoc.Status])
msg = warnChar + msg
} else if oldDoc != nil && newDoc == nil {
changed = true
warnChar := "🟠"
msg += fmt.Sprintf("检测到应用删除:\n应用ID:【%s】\n名称:【%s】\n", oldDoc.Id.Hex(), oldDoc.Name)
msg += fmt.Sprintf("下载链接:【%v】\n", oldDoc.DownloadUrl)
msg += fmt.Sprintf("安卓链接:【%v】\n", oldDoc.AndroidUrl)
msg += fmt.Sprintf("IOS链接:【%v】\n", oldDoc.IosUrl)
msg = warnChar + msg
}
if changed {
if newDoc != nil {
dict := applicationLocMod.FindApplicationLocationDict(ctx, newDoc.ParentAppId)
msg += fmt.Sprintf("所属APP:【%s】\n", statg.GlobalEndpoints.GetAppShortNameById(int32(newDoc.ParentAppId)))
nowLocations := ""
for _, id := range newDoc.LocIds {
nowLocations += fmt.Sprintf("%s,", dict[id].Name)
}
msg += fmt.Sprintf("应用位置:【%s】\n", nowLocations)
msg += fmt.Sprintf("激活状态:【%s】\n", consts.StatusDesc[newDoc.Status])
}
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)
}
}