diff --git a/app/controller/dyPushController.go b/app/controller/dyPushController.go index 55e4d3e3cfee6028768728499d9b1cb17d84a4c7..b77ef08071ad998e9b9aa401d1ebd036bfee6439 100644 --- a/app/controller/dyPushController.go +++ b/app/controller/dyPushController.go @@ -10,6 +10,7 @@ import ( "fmt" "github.com/gin-gonic/gin" "net/http" + "regexp" "strconv" ) @@ -130,7 +131,7 @@ func (h *dyPushController) dyPushPingLun(c *gin.Context) { var req []models.CommentOneRequest if err := c.ShouldBindJSON(&req); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request format"}) + c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request format " + err.Error()}) return } @@ -256,6 +257,67 @@ func (h *dyPushController) dyPushPingLun(c *gin.Context) { } + // 处理除加入外的互动 + actRegexArray := []*regexp.Regexp{ + regexp.MustCompile(`^6+$`), // 匹配任意长度的全6字符串(如"6", "666"),代表加油 + } + + // finalComments = finalComments[:0] 后,切片可继续存储的元素数量​​上限为原容量值​​,超出时会按 Go 的规则自动扩容(无固定限制,但受内存约束)。复用切片时,此操作是​​高性能最佳实践 + finalComments = finalComments[:0] + + var actMsgList []struct { + MsgID string `json:"msg_id"` + SecOpenID string `json:"sec_openid"` + Content string `json:"content"` + AvatarURL string `json:"avatar_url"` + Nickname string `json:"nickname"` + Timestamp int64 `json:"timestamp"` + } + + // 遍历 req.Arr,筛选符合条件的评论 + for _, item := range req { + // 检查 Content 是否在 matchStrArray 中 + for _, reg := range actRegexArray { + if reg.MatchString(item.Content) { + // 检查是否已经存在该 SecOpenID 的评论 + actMsgList = append(actMsgList, struct { + MsgID string `json:"msg_id"` + SecOpenID string `json:"sec_openid"` + Content string `json:"content"` + AvatarURL string `json:"avatar_url"` + Nickname string `json:"nickname"` + Timestamp int64 `json:"timestamp"` + }{ + MsgID: item.MsgID, + SecOpenID: item.SecOpenID, + Content: item.Content, + AvatarURL: item.AvatarURL, + Nickname: item.Nickname, + Timestamp: item.Timestamp, + }) + break + } + } + } + + // 处理非加入轨道类互动评论 + for _, item := range actMsgList { + if actRegexArray[0].MatchString(item.Content) { + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } + // 匹配并赠送666字符串的加速 + err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, "4", 1) + if err != nil { + } + } + } + fmt.Println("dyPushPingLun 处理一批评论成功") // 返回处理结果(根据业务需求调整返回结构) @@ -310,6 +372,14 @@ func (h *dyPushController) dyPushGift(c *gin.Context) { } for _, item := range req { + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, item.SecGiftId, item.GiftNum) if err != nil { @@ -366,6 +436,14 @@ func (h *dyPushController) dyPushZan(c *gin.Context) { } for _, item := range req { + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, "1", item.LikeNum) if err != nil { @@ -432,6 +510,14 @@ func (h *dyPushController) dyPushFans(c *gin.Context) { // 代表加入粉丝团 + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, giftId, 1) if err != nil { diff --git a/app/controller/httpController.go b/app/controller/httpController.go index a17d1ed320af886897174556a061975d4027e6ed..8083de9051676d61102700ef36214732b1e06efb 100644 --- a/app/controller/httpController.go +++ b/app/controller/httpController.go @@ -10,6 +10,7 @@ import ( "fmt" "github.com/gin-gonic/gin" "net/http" + "regexp" "strconv" "sync" "time" @@ -708,7 +709,7 @@ func (h *HttpController) GetPingLun(c *gin.Context) { /* 处理评论数据 */ // 筛选出加入赛道的数据 - matchStrArray := []string{"1", "2", "3"} + joinMatchStrArray := []string{"1", "2", "3"} // 用于存储最终筛选结果(保留最早时间的评论) // 定义一个新的切片,保持和原始结构相同的结构 @@ -734,7 +735,7 @@ func (h *HttpController) GetPingLun(c *gin.Context) { // 遍历 req.Arr,筛选符合条件的评论 for _, item := range req.Arr { // 检查 Content 是否在 matchStrArray 中 - for _, matchStr := range matchStrArray { + for _, matchStr := range joinMatchStrArray { if item.Content == matchStr { // 检查是否已经存在该 SecOpenID 的评论 if existingItem, exists := secOpenIDMap[item.SecOpenID]; !exists || item.Timestamp < existingItem.Timestamp { @@ -778,6 +779,67 @@ func (h *HttpController) GetPingLun(c *gin.Context) { } + // 处理除加入外的互动 + actRegexArray := []*regexp.Regexp{ + regexp.MustCompile(`^6+$`), // 匹配任意长度的全6字符串(如"6", "666"),代表加油 + } + + // finalComments = finalComments[:0] 后,切片可继续存储的元素数量​​上限为原容量值​​,超出时会按 Go 的规则自动扩容(无固定限制,但受内存约束)。复用切片时,此操作是​​高性能最佳实践 + finalComments = finalComments[:0] + + var actMsgList []struct { + MsgID string `json:"msg_id"` + SecOpenID string `json:"sec_openid"` + Content string `json:"content"` + AvatarURL string `json:"avatar_url"` + Nickname string `json:"nickname"` + Timestamp int64 `json:"timestamp"` + } + + // 遍历 req.Arr,筛选符合条件的评论 + for _, item := range req.Arr { + // 检查 Content 是否在 matchStrArray 中 + for _, reg := range actRegexArray { + if reg.MatchString(item.Content) { + // 检查是否已经存在该 SecOpenID 的评论 + actMsgList = append(actMsgList, struct { + MsgID string `json:"msg_id"` + SecOpenID string `json:"sec_openid"` + Content string `json:"content"` + AvatarURL string `json:"avatar_url"` + Nickname string `json:"nickname"` + Timestamp int64 `json:"timestamp"` + }{ + MsgID: item.MsgID, + SecOpenID: item.SecOpenID, + Content: item.Content, + AvatarURL: item.AvatarURL, + Nickname: item.Nickname, + Timestamp: item.Timestamp, + }) + break + } + } + } + + // 处理非加入轨道类互动评论 + for _, item := range actMsgList { + if actRegexArray[0].MatchString(item.Content) { + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } + // 匹配并赠送666字符串的加速 + err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, "4", 1) + if err != nil { + } + } + } + // 返回处理结果(根据业务需求调整返回结构) c.JSON(http.StatusOK, gin.H{ "code": 0, @@ -936,6 +998,14 @@ func (h *HttpController) GetLikeRequest(c *gin.Context) { } for _, item := range req.Arr { + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, "1", item.LikeNum) if err != nil { @@ -967,6 +1037,14 @@ func (h *HttpController) GetGiftRequest(c *gin.Context) { } for _, item := range req.Arr { + if err := manager.Get().UserManager().InitializeUser( + item.SecOpenID, + item.Nickname, + item.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } err := service.LiveRoomService{}.OneUserSendGift(item.MsgID, roomId, item.SecOpenID, item.SecGiftId, item.GiftNum) if err != nil { diff --git a/app/manager/gift_manager.go b/app/manager/gift_manager.go index a22109ef5a9592ef75dd2bf616dfe652872c4778..f711de6fbefa2781b2f9912ee7bd6b4dcb29bb55 100644 --- a/app/manager/gift_manager.go +++ b/app/manager/gift_manager.go @@ -21,6 +21,7 @@ var giftList = []Gift{ {ID: "1", Name: "点赞", Value: 0, Score: 1, UpgradeLimit: 999999}, {ID: "2", Name: "加入粉丝团", Value: 10, Score: 75, UpgradeLimit: 999999}, {ID: "3", Name: "粉丝团升级", Value: 100, Score: 750, UpgradeLimit: 999999}, + {ID: "4", Name: "666", Value: 0, Score: 2, UpgradeLimit: 999999}, {ID: "n1/Dg1905sj1FyoBlQBvmbaDZFBNaKuKZH6zxHkv8Lg5x2cRfrKUTb8gzMs=", Name: "仙女棒", Value: 10, Score: 75, UpgradeLimit: 66}, {ID: "eplFUy7i0B0fiv0Iym1MpOZa5XmUE8g/WUAyJ6Tc+UJJDpcs7pzclNOz/WM=", Name: "黄色仙女棒", Value: 10, Score: 75, UpgradeLimit: 66}, {ID: "4I66OIE1HKWfM7PNvAHtAgYUSNlggSEgcpo3ai8GYQXAWqjrDuH8NtjsWEQ=", Name: "蓝色仙女棒", Value: 10, Score: 75, UpgradeLimit: 66}, diff --git a/app/manager/live_room_mamanger.go b/app/manager/live_room_mamanger.go index eac9293c2154dadacd0d5fdb96549da3bcd73863..168b9d48fa98497aa8a9c2751c8f39ddd634cde7 100644 --- a/app/manager/live_room_mamanger.go +++ b/app/manager/live_room_mamanger.go @@ -310,6 +310,8 @@ func (lrm *LiveRoomManager) BatchInsertLiveRoomResults(results []models.LiveRoom Mileage: result.Mileage, JumpHeight: result.JumpHeight, FinishTime: result.FinishTime, + FinishTime1: result.FinishTime1, + FinishTime2: result.FinishTime2, FastestSpeed: result.FastestSpeed, AttackPower: result.AttackPower, ExpireAt: result.ExpireAt, diff --git a/app/manager/live_room_mysql_storage.go b/app/manager/live_room_mysql_storage.go index 6258c849c2e3407dae37742db47edb5f93442517..2221b1e7a2edc06ab5283650c612e15ddf7257cd 100644 --- a/app/manager/live_room_mysql_storage.go +++ b/app/manager/live_room_mysql_storage.go @@ -73,6 +73,8 @@ type LiveRoomResultMysqlInfo struct { Mileage int `db:"mileage"` JumpHeight float32 `db:"jump_height"` FinishTime int `db:"jump_height"` + FinishTime1 int `db:"jump_height1"` + FinishTime2 int `db:"jump_height2"` FastestSpeed int `db:"jump_height"` AttackPower int `db:"attack_power"` ExpireAt sql.NullTime `db:"expire_at"` @@ -402,9 +404,9 @@ func (lrm *LiveRoomMysqlStorage) BatchInsertLiveRoomResults(results []LiveRoomRe stmt, err := db.GetDB().Prepare(`INSERT INTO live_room_result ( live_room_id, times, user_id, game_score, track, job, is_champion, is_finish, is_biggest, gift_value, gift_score, get_score, has_done, user_name, head_img, user_level, user_score, target_level, target_score, - mileage, jump_height, finish_time, fastest_speed, attack_power, + mileage, jump_height, finish_time, finish_time1, finish_time2, fastest_speed, attack_power, expire_at, create_at, update_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`) if err != nil { return fmt.Errorf("prepare statement error: %v", err) } @@ -416,7 +418,7 @@ func (lrm *LiveRoomMysqlStorage) BatchInsertLiveRoomResults(results []LiveRoomRe result.IsChampion, result.IsFinish, result.IsBiggest, result.GiftValue, result.GiftScore, result.GetScore, result.HasDone, result.UserName, result.HeadImg, result.UserLevel, result.UserScore, result.TargetLevel, result.TargetScore, result.Mileage, result.JumpHeight, - result.FinishTime, result.FastestSpeed, result.AttackPower, + result.FinishTime, result.FinishTime1, result.FinishTime2, result.FastestSpeed, result.AttackPower, result.ExpireAt, ) if err != nil { diff --git a/app/manager/user_mysql_storage.go b/app/manager/user_mysql_storage.go index 05a90b69face9211158dea2538a45c6e86689bc0..8472b501dadcf9550f6727b9b3a09917c4f9e8ec 100644 --- a/app/manager/user_mysql_storage.go +++ b/app/manager/user_mysql_storage.go @@ -333,7 +333,7 @@ func (um *userMySQLStorage) GetRanks() (*models.RankInfos, error) { // 获取用户信息 func (um *userMySQLStorage) GetWorldRecords() (*models.WorldRecods, error) { - var fastestSpeed, finishTime, jumpHeight, attackPower = 0, 0, float32(0.0), 0 + var fastestSpeed, finishTime, finishTime1, finishTime2, jumpHeight, attackPower = 0, 0, 0, 0, float32(0.0), 0 // 获取最快速度 err := db.GetDB().QueryRow(` select MAX(fastest_speed) from live_room_result @@ -345,11 +345,12 @@ func (um *userMySQLStorage) GetWorldRecords() (*models.WorldRecods, error) { if err == sql.ErrNoRows { } else { // 记录日志 - return nil, err + fmt.Println("GetWorldRecords fastestSpeed sql error : ", err) + //return nil, err } } - // 获取最短完成时间 + // 获取最短完成时间 模式1 err = db.GetDB().QueryRow(` select Min(finish_time) from live_room_result where finish_time > 0 @@ -361,7 +362,42 @@ func (um *userMySQLStorage) GetWorldRecords() (*models.WorldRecods, error) { if err == sql.ErrNoRows { } else { // 记录日志 - return nil, err + fmt.Println("GetWorldRecords finishTime sql error : ", err) + //return nil, err + } + } + + // 获取最短完成时间 模式2 + err = db.GetDB().QueryRow(` + select Min(finish_time1) from live_room_result + where finish_time1 > 0 + `).Scan( + &finishTime1, + ) + + if err != nil { + if err == sql.ErrNoRows { + } else { + // 记录日志 + fmt.Println("GetWorldRecords finishTime1 sql error : ", err) + //return nil, err + } + } + + // 获取最短完成时间 模式3 + err = db.GetDB().QueryRow(` + select Min(finish_time2) from live_room_result + where finish_time2 > 0 + `).Scan( + &finishTime2, + ) + + if err != nil { + if err == sql.ErrNoRows { + } else { + // 记录日志 + fmt.Println("GetWorldRecords finish_time2 sql error : ", err) + //return nil, err } } @@ -377,7 +413,8 @@ func (um *userMySQLStorage) GetWorldRecords() (*models.WorldRecods, error) { return nil, err } // 记录日志 - return nil, err + fmt.Println("GetWorldRecords jumpHeight sql error : ", err) + //return nil, err } // 最强攻击 @@ -392,12 +429,15 @@ func (um *userMySQLStorage) GetWorldRecords() (*models.WorldRecods, error) { return nil, err } // 记录日志 - return nil, err + fmt.Println("GetWorldRecords attackPower sql error : ", err) + //return nil, err } worldRecods := models.WorldRecods{ FastestSpeed: fastestSpeed, FinishTime: finishTime, + FinishTime1: finishTime1, + FinishTime2: finishTime2, JumpHeight: jumpHeight, AttackPower: attackPower, } diff --git a/app/models/models.go b/app/models/models.go index 91c88333d7fb61cd58232092d3ebb7391a4e01bf..2062a1a2e608641812c97b57e2bf76c95ca52153 100644 --- a/app/models/models.go +++ b/app/models/models.go @@ -49,7 +49,7 @@ type FinishTrackInfo struct { FinishTime int `json:"finish_time"` //完成时间(s) FastestSpeed int `json:"fastest_speed"` //最快速度 AttackPower int `json:"attack_power"` //当局的导弹次数 - + GameMode int `json:"game_mode"` //当局的游戏类型,从1开始 } // LiveRoomResult 表示 live_room_result 表的结构 @@ -76,6 +76,8 @@ type LiveRoomResult struct { Mileage int `json:"mileage"` JumpHeight float32 `json:"jump_height"` FinishTime int `json:"finish_time"` + FinishTime1 int `json:"finish_time1"` + FinishTime2 int `json:"finish_time2"` FastestSpeed int `json:"fastest_speed"` AttackPower int `json:"attack_power"` ExpireAt sql.NullTime `json:"expire_at"` @@ -101,6 +103,8 @@ type RankInfos struct { type WorldRecods struct { FastestSpeed int `json:"fastest_speed"` FinishTime int `json:"finish_time"` + FinishTime1 int `json:"finish_time1"` + FinishTime2 int `json:"finish_time2"` JumpHeight float32 `json:"jump_height"` AttackPower int `json:"attack_power"` } diff --git a/app/service/douyin_service.go b/app/service/douyin_service.go index 3938e2bc2b57dd1e8f00f160bda929e1fd433eca..82dfefe4f262253db5856a5f58fbacdb9cbcfc24 100644 --- a/app/service/douyin_service.go +++ b/app/service/douyin_service.go @@ -373,6 +373,14 @@ func (ls DouYinService) DealDouYinAllGiftFailedData() error { // 处理新数据 for _, giftRecord := range newFailGiftRecodArr { + if err := manager.Get().UserManager().InitializeUser( + giftRecord.SecOpenID, + giftRecord.Nickname, + giftRecord.AvatarURL, + 1, // 初始等级 + ); err != nil { + + } err = LiveRoomService{}.OneUserSendGift(giftRecord.MsgID, info.LiveRoomId, giftRecord.SecOpenID, giftRecord.SecGiftId, giftRecord.GiftNum) // TODO 标记已经处理的数据 setStatus := "success" diff --git a/app/service/live_room_service.go b/app/service/live_room_service.go index b9bdfc0c4637c243164832364b3a3456ab0823a3..f77704cf223ea1e617e28b40265b3c3448e1b5ec 100644 --- a/app/service/live_room_service.go +++ b/app/service/live_room_service.go @@ -177,7 +177,18 @@ func (ls LiveRoomService) OneUserSendGift(msgID string, liveRoomID string, userI userLiveTrack, err := manager.Get().LiveRoomManager().GetLiveTrackByUserId(liveRoomID, userId) if err != nil { - return fmt.Errorf("error: user does not join live room game, %v", err) + userInfo, err := manager.Get().UserManager().GetUser(userId) + if err != nil { + } + + track, _ := utils.GetRandomTeamId() + job, _ := utils.GetRandomJobId() + + ls.OneUserJoinTrack(liveRoomID, userId, userInfo.UserName, userInfo.HeadImg, track, job) + fmt.Printf("用户id : %s, 暂未加入直播间: %s, 阵营却送了礼物,自动加入阵营: %d, 职业: %d", + userId, liveRoomID, track, job) + + userLiveTrack, err = manager.Get().LiveRoomManager().GetLiveTrackByUserId(liveRoomID, userId) } track := userLiveTrack.Track @@ -580,12 +591,21 @@ func (ls LiveRoomService) FinishGame(msgID string, liveRoomId string, finishTrac mileage := 0 jumpHeight := float32(0) finishTime := 0 + finishTime1 := 0 + finishTime2 := 0 fastestSpeed := 0 attackPower := 0 for _, info := range finishTrackInfos { if scoreRecord.Track == info.Track { mileage = info.Mileage - finishTime = info.FinishTime + if info.GameMode == 1 || info.GameMode == 0 { + finishTime = info.FinishTime + } else if info.GameMode == 2 { + finishTime1 = info.FinishTime + } else if info.GameMode == 3 { + finishTime2 = info.FinishTime + } + fastestSpeed = info.FastestSpeed attackPower = info.AttackPower } @@ -617,6 +637,8 @@ func (ls LiveRoomService) FinishGame(msgID string, liveRoomId string, finishTrac Mileage: mileage, JumpHeight: jumpHeight, FinishTime: finishTime, + FinishTime1: finishTime1, + FinishTime2: finishTime2, FastestSpeed: fastestSpeed, AttackPower: attackPower, ExpireAt: sql.NullTime{ diff --git a/app/utils/game.go b/app/utils/game.go new file mode 100644 index 0000000000000000000000000000000000000000..9a13b4a65cf6f03938956f1cfb6fe4e33d6885ca --- /dev/null +++ b/app/utils/game.go @@ -0,0 +1,85 @@ +// app/utils/utils.go +package utils + +import ( + "BlazeRider-backend/config" + "fmt" + "math/rand" + "strconv" + "strings" + "time" +) + +// GetTeamArr 获取config配置中的team对应的数字 +func GetTeamArr() ([]int, error) { + teamSetString := config.Get().Game.Team + // 将字符串分割 + strArr := strings.Split(teamSetString, ",") // ["1", "2", "3"] + + // 将team字符串 转换为整型数组 + var intArr []int + + for _, s := range strArr { + num, err := strconv.Atoi(strings.TrimSpace(s)) // 去除空格并转换 + if err != nil { + fmt.Printf("转换失败: %s\n", s) + continue // 跳过无效值 + } + intArr = append(intArr, num) // 添加到整型数组 + } + return intArr, nil +} + +// GetRandomTeamId 获取config配置中的team中的随机一个id +func GetRandomTeamId() (int, error) { + teamArr, err := GetTeamArr() + if err != nil { + return 0, err + } + // 3. 随机选择一个数字 + if len(teamArr) == 0 { + fmt.Println("配置中的数组为空,无法选择队伍id") + } + + rand.Seed(time.Now().UnixNano()) // 初始化随机种子 + randomIndex := rand.Intn(len(teamArr)) // 生成随机索引 + track := teamArr[randomIndex] // 获取随机值 + return track, nil +} + +// GetJobArr 获取config配置中的GetJobArr对应的数字 +func GetJobArr() ([]int, error) { + teamSetString := config.Get().Game.Job + // 将字符串分割 + strArr := strings.Split(teamSetString, ",") // ["1", "2", "3"] + + // 将team字符串 转换为整型数组 + var intArr []int + + for _, s := range strArr { + num, err := strconv.Atoi(strings.TrimSpace(s)) // 去除空格并转换 + if err != nil { + fmt.Printf("转换失败: %s\n", s) + continue // 跳过无效值 + } + intArr = append(intArr, num) // 添加到整型数组 + } + return intArr, nil +} + +// GetRandomJobId 获取config配置中的job中的随机id +func GetRandomJobId() (int, error) { + jobArr, err := GetJobArr() + if err != nil { + return 0, err + } + // 3. 随机选择一个数字 + if len(jobArr) == 0 { + return 0, nil + } + + rand.Seed(time.Now().UnixNano()) // 初始化随机种子 + randomIndex := rand.Intn(len(jobArr)) // 生成随机索引 + track := jobArr[randomIndex] // 获取随机值 + return track, nil +} diff --git a/config/config.go b/config/config.go index 61033b034d994aec67710ed8581d2eb9abc34f40..46d73c376f5a7658fe28f3769df256d7beca43ca 100644 --- a/config/config.go +++ b/config/config.go @@ -33,10 +33,16 @@ type DouyinConfig struct { APIWebcastBaseURL string `yaml:"api_webcast_base_url"` } +type GameConfig struct { + Team string `yaml:"team"` + Job string `yaml:"job"` +} + type Config struct { App AppConfig `yaml:"app"` Database DatabaseConfig `yaml:"database"` Douyin DouyinConfig `yaml:"douyin"` + Game GameConfig `yaml:"game"` } var globalConfig *Config @@ -124,6 +130,7 @@ func mergeConfigs(base, override *Config) *Config { App: mergeAppConfig(base.App, override.App), Database: mergeDBConfig(base.Database, override.Database), Douyin: mergeDouyinConfig(base.Douyin, override.Douyin), + Game: mergeGameConfig(base.Game, override.Game), } } @@ -237,3 +244,13 @@ func mergeDouyinConfig(base, override DouyinConfig) DouyinConfig { } return base } + +func mergeGameConfig(base, override GameConfig) GameConfig { + if override.Team != "" { + base.Team = override.Team + } + if override.Job != "" { + base.Job = override.Job + } + return base +} diff --git a/configs/config.dev.yaml b/configs/config.dev.yaml index e4fee0afb9e712541db51e4493d87906a83ca73d..c1c6f92fa68f2d70419109ed5ae9d7620dd919d5 100644 --- a/configs/config.dev.yaml +++ b/configs/config.dev.yaml @@ -8,4 +8,6 @@ database: max_open_conns: 100 max_idle_conns: 20 -douyin: +game: + team: "1,2,3" + job: "" diff --git a/configs/config.prod.yaml b/configs/config.prod.yaml index 80e6e3ee843cb76797ffa0b1229452c737294a43..4a9b1d278c68db70efcc6bfa5f85c6d8e553ad5d 100644 --- a/configs/config.prod.yaml +++ b/configs/config.prod.yaml @@ -12,4 +12,6 @@ database: max_open_conns: 100 max_idle_conns: 20 -douyin: +game: + team: "1,2,3" + job: "" \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 39c0cd64bcb76e83d5aab08989685058ae57a9e9..e6eb3551cf1f4c49d4aafee64d36b3c76ebc7258 100644 --- a/templates/index.html +++ b/templates/index.html @@ -50,9 +50,11 @@
+ + - + @@ -98,6 +100,11 @@

+ +
+
+
+
@@ -238,7 +245,7 @@ value: 100, }, { - id: 11, + id: 13, giftId : "fJs8HKQ0xlPRixn8JAUiL2gFRiLD9S6IFCFdvZODSnhyo9YN8q7xUuVVyZI=", name: "魔法镜", value: 190, @@ -1162,9 +1169,10 @@ "is_finish": 1, "mileage": 100, "jump_height": 8.5, - "finish_time": 52, //完成时间 + "finish_time": 105, //完成时间 "fastest_speed": 20, // 当局最快速度 "attack_power": 3, // 当局的导弹次数 + "game_mode": 3, // 当局的游戏类型,从1开始 }, { "track": 2, @@ -1172,9 +1180,10 @@ "is_finish": 1, "mileage": 100, "jump_height": 3.65, - "finish_time": 68, //完成时间 + "finish_time": 0, //完成时间 "fastest_speed": 22, // 当局最快速度 "attack_power": 1, // 当局的导弹次数 + "game_mode": 3, // 当局的游戏类型,从1开始 }, { "track": 3, @@ -1182,9 +1191,10 @@ "is_finish": 0, "mileage": 70, "jump_height": 5, - "finish_time": 0, //完成时间 + "finish_time": 180, //完成时间 "fastest_speed": 15, // 当局最快速度 "attack_power": 10, // 当局的导弹次数 + "game_mode": 3, // 当局的游戏类型,从1开始 }, ], // 阵营完成信息 "timestamp":1649068664, // 评论毫秒级时间戳 @@ -1266,10 +1276,12 @@ console.log("sendGetRanksRequest function res 222 : ", resdata.data, typeof resdata.data) let fastest_speed = resdata.data.records.fastest_speed let finish_time = resdata.data.records.finish_time + let finish_time1 = resdata.data.records.finish_time1 + let finish_time2 = resdata.data.records.finish_time2 let jump_height = resdata.data.records.jump_height let attack_power = resdata.data.records.attack_power - console.log("sendGetWorldRecordsRequest 4 num : ", fastest_speed - , finish_time, jump_height, attack_power + console.log("sendGetWorldRecordsRequest 6 num : ", fastest_speed + , finish_time, finish_time1, finish_time2, jump_height, attack_power ) }); }