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) } }