| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- package fileManager
- import (
- "errors"
- "fmt"
- "github.com/bitly/go-simplejson"
- "go.uber.org/zap"
- "gorm.io/gorm"
- "log-server/global"
- "log-server/model/fileManager"
- "log-server/model/task"
- "log-server/service/system"
- "log-server/utils"
- "strconv"
- "strings"
- "time"
- )
- type ServiceDownLoadUrl struct {
- }
- var robotService = new(system.RobotService)
- // UpdateGameVersion 定时更新游戏版本号和链接
- func (s *ServiceDownLoadUrl) UpdateGameVersion() {
- nowTime := time.Now().Format("2006-01-02 15:04:05")
- taskList, err := s.GetAllTaskByRun()
- if err != nil {
- global.GVA_LOG.Error("定时更新游戏版本号和链接执行失败,查询所有在运行的任务失败:"+nowTime, zap.Error(err))
- return
- }
- content := ""
- var directorName string
- for _, v := range taskList {
- global.GVA_LOG.Info(v.GameIdXmy + v.TaskName)
- if v.GameIdXmy == "" {
- continue
- }
- result, err := s.GetGameDownLoadUrlAndVersion(v.GameIdXmy)
- if err != nil {
- return
- }
- dataJson, _ := simplejson.NewJson(result)
- code, err := dataJson.Get("code").Int()
- if err != nil {
- return
- }
- //global.GVA_LOG.Info(strconv.Itoa(code))
- //msg, _ := dataJson.Get("msg").String()
- //global.GVA_LOG.Info(msg)
- if code != 0 {
- continue
- }
- packageUrl, _ := dataJson.Get("data").Get("package").Get("download_url").String()
- //global.GVA_LOG.Info(packageUrl)
- packageVersionCode, _ := dataJson.Get("data").Get("package").Get("version_code").Int()
- //global.GVA_LOG.Info(strconv.Itoa(packageVersionCode))
- appUrl, _ := dataJson.Get("data").Get("app").Get("download_url").String()
- //global.GVA_LOG.Info(appUrl)
- appVersionName, _ := dataJson.Get("data").Get("app").Get("version_name").String()
- //global.GVA_LOG.Info(appVersionName)
- appFlag, _ := dataJson.Get("data").Get("app").Get("flag").Int()
- //global.GVA_LOG.Info(strconv.Itoa(appFlag))
- one := new(fileManager.DownLoadUrl)
- one.PackageUrl = packageUrl
- one.PackageVersionCode = packageVersionCode
- one.AppUrl = appUrl
- one.AppVersionName = appVersionName
- one.AppFlag = appFlag
- one.TaskId = v.TaskId
- one.CreateTime = time.Now().Format("2006-01-02 15:04:05")
- one.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
- //先查询是否存在,存在则对比版本号与链接;不存在则插入
- old := fileManager.DownLoadUrl{}
- var keyWord string
- if !errors.Is(global.GVA_DB.Model(&fileManager.DownLoadUrl{}).Where("task_id = ?", v.TaskId).First(&old).Error, gorm.ErrRecordNotFound) {
- flagPackage := false
- if one.PackageVersionCode > old.PackageVersionCode {
- flagPackage = true
- //global.GVA_LOG.Info("package有新版本")
- if one.PackageUrl != "" {
- keyWord += "在打包平台有新版本: " + one.PackageUrl + ";<font color=\"warning\">更新大概率为强制更新</font>;"
- //keyWord += "在打包平台有新版本: [点击下载](" + one.PackageUrl + ");"
- }
- }
- flagApp := false
- sv1 := s.StrsToSlice(one.AppVersionName)
- sv2 := s.StrsToSlice(old.AppVersionName)
- s1Appended, s2Appended := s.ApeendZreo(sv1, sv2)
- for i := 0; i < len(s1Appended); i++ {
- if s1Appended[i] > s2Appended[i] {
- flagApp = true
- //global.GVA_LOG.Info("app有新版本")
- if one.AppUrl != "" {
- keyWord += "在小绵羊APP有新版本: " + one.AppUrl + ";"
- if one.AppFlag == 1 {
- global.GVA_LOG.Info("游戏有强更")
- keyWord += "<font color=\"warning\">更新可能为强制更新</font>;"
- }
- }
- break
- }
- }
- if flagPackage == true || flagApp == true {
- err = global.GVA_DB.Model(&fileManager.DownLoadUrl{}).Where("task_id = ?", v.TaskId).Updates(one).Error
- }
- if err != nil {
- global.GVA_LOG.Error("定时更新游戏版本号和链接执行失败,执行数据库操作失败:"+nowTime, zap.Error(err))
- return
- }
- //播报内容
- if keyWord != "" {
- if directorName != v.User {
- content += ">#### **" + v.User + "**\n " + strconv.Itoa(v.TaskId) + " " + v.TaskName + keyWord + "\n"
- } else {
- content += strconv.Itoa(v.TaskId) + " " + v.TaskName + keyWord + "\n"
- }
- directorName = v.User
- }
- } else {
- err = global.GVA_DB.Create(&one).Error
- }
- if err != nil {
- global.GVA_LOG.Error("定时更新游戏版本号和链接执行失败,执行数据库操作失败:"+nowTime, zap.Error(err))
- return
- }
- }
- if content != "" {
- content = ">#### **【游戏更新】预警** (" + nowTime + "):\n" + content
- //global.GVA_LOG.Info(content)
- url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
- _, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url, content)
- url2 := global.GVA_CONFIG.SendUrl.KeyWordSendUrl
- _, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url2, content)
- }
- }
- // GetAllTaskByRun 查询所有在运行的任务
- func (s *ServiceDownLoadUrl) GetAllTaskByRun() (list []task.GameTask, err error) {
- var taskList []task.GameTask
- db := global.GVA_DB.Model(&task.GameTask{})
- db.Where("status = 1")
- err = db.Order("user").Find(&taskList).Error
- return taskList, err
- }
- // GetGameDownLoadUrlAndVersion 获取游戏版本和下载链接
- func (s *ServiceDownLoadUrl) GetGameDownLoadUrlAndVersion(xmyId string) (result []byte, err error) {
- url := "http://rtd.kfzs.com/get_version.php"
- params := map[string]string{
- "game_id": xmyId,
- }
- result, err = utils.HttpGet(url, params)
- return
- }
- // ApeendZreo 补全切片
- func (s *ServiceDownLoadUrl) ApeendZreo(s1, s2 []string) ([]string, []string) {
- var count int
- if len(s1) > len(s2) {
- count = len(s1) - len(s2)
- for i := 0; i < count; i++ {
- s2 = append(s2, "0")
- }
- }
- if len(s1) < len(s2) {
- count = len(s2) - len(s1)
- for i := 0; i < count; i++ {
- s1 = append(s1, "0")
- }
- }
- return s1, s2
- }
- func (s *ServiceDownLoadUrl) StrsToSlice(version string) []string {
- return strings.Split(version, ".")
- }
- func (s *ServiceDownLoadUrl) StrToInt64(str string) int64 {
- res, err := strconv.Atoi(str)
- if err != nil {
- fmt.Println("Invalid Number string")
- return -1
- }
- return int64(res)
- }
|