【架构优化】list设置容量,避免动态扩容

This commit is contained in:
hahwu 2026-02-05 19:00:32 +08:00
parent e2200be3ff
commit e6f7db6cca
28 changed files with 373 additions and 622 deletions

View File

@ -23,7 +23,8 @@ func init() {
func GetActivityGiftId(chargeId int) int {
data, err := gamedata.GetData(CFG_ACTIVITY_GIFT)
if err != nil {
log.Debug("GetActivityGift err:%v", err)
log.Debug("GetActivityGiftId err:%v", err)
return 0
}
for _, v := range data {
ChargeId := gamedata.GetIntValue(v, "ChargeId")
@ -34,10 +35,11 @@ func GetActivityGiftId(chargeId int) int {
return 0
}
func GetAcitivityGiftItems(chargeId int) []*item.Item {
func GetActivityGiftItems(chargeId int) []*item.Item {
data, err := gamedata.GetData(CFG_ACTIVITY_GIFT)
if err != nil {
log.Debug("GetAcitivityGiftItems err:%v", err)
log.Debug("GetActivityGiftItems err:%v", err)
return nil
}
for _, v := range data {
ChargeId := gamedata.GetIntValue(v, "ChargeId")
@ -53,9 +55,10 @@ func GetActivityList() []*gamedata.ActivityData {
data, err := gamedata.GetData(CFG_ACTIVITY)
if err != nil {
log.Debug("GetActivityList err:%v", err)
return nil
}
Now := GoUtil.Now()
var List []*gamedata.ActivityData
List := make([]*gamedata.ActivityData, 0, len(data))
for k, v := range data {
StartTimeStr := gamedata.GetStringValue(v, "StartTime")
@ -63,7 +66,11 @@ func GetActivityList() []*gamedata.ActivityData {
StartTime := GoUtil.ParseTime(StartTimeStr)
EndTime := GoUtil.ParseTime(EndTimeStr)
if Now >= StartTime && Now <= EndTime {
Id, _ := strconv.Atoi(k)
Id, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetActivityList parse id err:%v, key:%s", err, k)
continue
}
Type := gamedata.GetIntValue(v, "Type")
Name := gamedata.GetStringValue(v, "Name")
Title := gamedata.GetStringValue(v, "Title")
@ -84,10 +91,11 @@ func GetActivityList() []*gamedata.ActivityData {
return List
}
func GetAcitivityRewardItems(ActId int) []*item.Item {
func GetActivityRewardItems(ActId int) []*item.Item {
data, err := gamedata.GetData(CFG_ACTIVITY_GIFT)
if err != nil {
log.Debug("GetAcitivityGiftItems err:%v", err)
log.Debug("GetActivityRewardItems err:%v", err)
return nil
}
for _, v := range data {
ChargeId := gamedata.GetIntValue(v, "ChargeId")
@ -104,8 +112,10 @@ func GetActivityTitle(ActId int) (string, string) {
data, err := gamedata.GetDataByIntKey(CFG_ACTIVITY, ActId)
if err != nil {
log.Debug("GetActivityTitle err:%v", err)
return "", ""
}
return languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Title")), languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Title"))
title := gamedata.GetStringValue(data, "Title")
return languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, title), languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, title)
}
func GetActivityRecycleMail(ActId int) (string, string, string) {

View File

@ -12,8 +12,9 @@ const (
)
const (
ENERGY_SHOP_MUL = "energy_shop_mul"
ENERGY_CFG = "BaseEnergy"
ENERGY_SHOP_MUL = "energy_shop_mul"
ENERGY_CFG = "BaseEnergy"
MAX_ENERGY_LEVEL = 999 // 最大能量等级上限
)
func init() {
@ -27,17 +28,28 @@ func GetEnergyByMul(T int) float64 {
log.Debug("GetEnergyByMul err:%v", err)
return 0
}
d := data["Value"].(map[string]interface{})
if len(d) == 0 {
valueData, ok := data["Value"]
if !ok {
log.Debug("GetEnergyByMul: Value field not found")
return 0
}
d, ok := valueData.(map[string]interface{})
if !ok || len(d) == 0 {
log.Debug("GetEnergyByMul: Value is not a valid map")
return 0
}
T = min(T, len(d))
T1 := strconv.Itoa(T)
if v, ok := d[T1]; ok {
return v.(float64)
} else {
return 0
if floatVal, ok := v.(float64); ok {
return floatVal
}
log.Debug("GetEnergyByMul: value is not float64, key=%s", T1)
}
return 0
}
func GetFriendReplyReward() []*item.Item {
@ -51,13 +63,14 @@ func GetFriendReplyReward() []*item.Item {
func GetMaxEnergyMul(Lv int, Energy int) int {
Mul := 0
for i := 1; i < 999; i++ {
for i := 1; i <= MAX_ENERGY_LEVEL; i++ {
data, err := gamedata.GetDataByIntKey(ENERGY_CFG, i)
if err != nil {
break
}
UnlockLv := gamedata.GetIntValue(data, "UnlockLv")
if Lv < UnlockLv || Energy < gamedata.GetIntValue(data, "NeedEnergy") {
needEnergy := gamedata.GetIntValue(data, "NeedEnergy")
if Lv < UnlockLv || Energy < needEnergy {
break
}
Mul = i - 1
@ -68,6 +81,7 @@ func GetMaxEnergyMul(Lv int, Energy int) int {
func GetLimitEnergyMul(Lv int) int {
data, err := gamedata.GetDataByIntKey(ENERGY_CFG, Lv+1)
if err != nil {
log.Debug("GetLimitEnergyMul err:%v, Lv=%d", err, Lv)
return 0
}
return gamedata.GetIntValue(data, "Limit")

View File

@ -28,14 +28,19 @@ func init() {
func GetAllCollectReward() []*item.Item {
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "all_collect_reward")
if err != nil {
log.Debug("GetAllCollectReward data not found")
log.Debug("GetAllCollectReward err:%v", err)
return nil
}
return item.ParseItem(data["Value"])
if value, ok := data["Value"]; ok {
return item.ParseItem(value)
}
return nil
}
func GetStarById(Id int) int {
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id)
if err != nil {
log.Debug("GetStarById data not found")
log.Debug("GetStarById err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "Star")
}
@ -43,7 +48,8 @@ func GetStarById(Id int) int {
func GetRoundById(Id int) int {
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id)
if err != nil {
log.Debug("GetRoundById data not found")
log.Debug("GetRoundById err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "Round")
}
@ -51,31 +57,31 @@ func GetRoundById(Id int) int {
// 获取开启卡包获得的卡牌数量
func GetPackRewardCnt(Star int) int {
data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star)
if err != nil {
log.Debug("GetPackRewardCnt data not found")
log.Debug("GetPackRewardCnt err:%v, Star=%d", err, Star)
return 0
}
return gamedata.GetIntValue(data, "RewardCnt")
}
// 获取开启开包得x星卡
// 获取开启开包得x星卡
func GetPackMustHave(Star int) int {
data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star)
if err != nil {
log.Debug("GetPackMustHave data not found")
log.Debug("GetPackMustHave err:%v, Star=%d", err, Star)
return 0
}
return gamedata.GetIntValue(data, "MustHave")
}
// 根据星级获取卡牌列表
func GetCardListByStar(Round, Star, IsGold int) []int {
var CardList []int
data, err := gamedata.GetData(CARD_DETAIL_CFG_NAME)
if err != nil {
log.Debug("GetCardListByStar data not found")
log.Debug("GetCardListByStar err:%v", err)
return nil
}
CardList := make([]int, 0, len(data)/10)
for k, v := range data {
Extra := gamedata.GetIntValue(v, "Round")
if Round < Extra {
@ -84,7 +90,11 @@ func GetCardListByStar(Round, Star, IsGold int) []int {
vStar := gamedata.GetIntValue(v, "Star")
isGold := gamedata.GetIntValue(v, "IsGold")
if vStar == Star && IsGold == isGold {
id, _ := strconv.Atoi(k)
id, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetCardListByStar parse id err:%v, key=%s", err, k)
continue
}
CardList = append(CardList, id)
}
}
@ -93,15 +103,15 @@ func GetCardListByStar(Round, Star, IsGold int) []int {
// 获取随机卡牌
func GetRandListByStar(Star int) map[int]int {
var randList []int
data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star)
if err != nil {
log.Debug("GetRandListByStar data not found")
log.Debug("GetRandListByStar err:%v, Star=%d", err, Star)
return nil
}
r1 := gamedata.GetStringValue(data, "RandRate")
r2 := strings.Split(r1, ",")
randList = GoUtil.SliceStringToInt(r2)
r := make(map[int]int)
randList := GoUtil.SliceStringToInt(r2)
r := make(map[int]int, len(randList))
for k, v := range randList {
r[k+1] = v
}
@ -125,7 +135,8 @@ func GetCollectReward(Color int) ([]*item.Item, int) {
func GetExchangeCfg(Id int) (int, []*item.Item) {
data, err := gamedata.GetDataByIntKey(CARD_EXCHANGE_CFG, Id)
if err != nil {
log.Debug("GetExchangeCfg data not found")
log.Debug("GetExchangeCfg err:%v, Id=%d", err, Id)
return 0, nil
}
CostStar := gamedata.GetIntValue(data, "CostStar")
itemList := gamedata.GetItemList(data, "Item")
@ -136,14 +147,18 @@ func GetExchangeCfg(Id int) (int, []*item.Item) {
func GetCardListByColor(Id int) []int {
data, err := gamedata.GetData(CARD_DETAIL_CFG_NAME)
if err != nil {
log.Debug("GetCardListByColor data not found")
return []int{}
log.Debug("GetCardListByColor err:%v, Id=%d", err, Id)
return nil
}
var r []int
r := make([]int, 0, len(data)/5)
for k, v := range data {
color := gamedata.GetIntValue(v, "PictureAlbum")
if color == Id {
k1, _ := strconv.Atoi(k)
k1, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetCardListByColor parse id err:%v, key=%s", err, k)
continue
}
r = append(r, k1)
}
}
@ -154,16 +169,20 @@ func GetCardListByColor(Id int) []int {
func GetAllCardId(Round int) []int {
data, err := gamedata.GetData(CARD_DETAIL_CFG_NAME)
if err != nil {
log.Debug("GetCardListByColor data not found")
return []int{}
log.Debug("GetAllCardId err:%v, Round=%d", err, Round)
return nil
}
var r []int
r := make([]int, 0, len(data))
for k, v := range data {
Extra := gamedata.GetIntValue(v, "Round")
if Round < Extra {
continue
}
k1, _ := strconv.Atoi(k)
k1, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetAllCardId parse id err:%v, key=%s", err, k)
continue
}
r = append(r, k1)
}
return r
@ -172,7 +191,8 @@ func GetAllCardId(Round int) []int {
func CheckCardIsGold(Id int) bool {
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id)
if err != nil {
log.Debug("CheckCardIsGold data not found")
log.Debug("CheckCardIsGold err:%v, Id=%d", err, Id)
return false
}
return gamedata.GetIntValue(data, "IsGold") == 1
}
@ -180,7 +200,8 @@ func CheckCardIsGold(Id int) bool {
func GetCardDuration() int64 {
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "duration")
if err != nil {
log.Debug("GetCardDuration data not found")
log.Debug("GetCardDuration err:%v", err)
return 0
}
return int64(gamedata.GetIntValue(data, "Value"))
}
@ -188,7 +209,8 @@ func GetCardDuration() int64 {
func GetExTimes() int {
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "exchange_times")
if err != nil {
log.Debug("GetExTimes data not found")
log.Debug("GetExTimes err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
}
@ -196,7 +218,8 @@ func GetExTimes() int {
func GetReqTimes() int {
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "request_times")
if err != nil {
log.Debug("GetReqTimes data not found")
log.Debug("GetReqTimes err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
}
@ -204,7 +227,8 @@ func GetReqTimes() int {
func GetItemIdByCardId(CardId int) int {
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, CardId)
if err != nil {
log.Debug("GetItemIdByCardId data not found")
log.Debug("GetItemIdByCardId err:%v, CardId=%d", err, CardId)
return 0
}
return gamedata.GetIntValue(data, "ItemId")
}
@ -212,7 +236,11 @@ func GetItemIdByCardId(CardId int) int {
func GetSeasonFirstReward() []*item.Item {
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "season_first")
if err != nil {
log.Debug("GetSeasonFirstReward data not found")
log.Debug("GetSeasonFirstReward err:%v", err)
return nil
}
return item.ParseItem(data["Value"])
if value, ok := data["Value"]; ok {
return item.ParseItem(value)
}
return nil
}

View File

@ -4,6 +4,7 @@ import (
"server/game/mod/item"
GoUtil "server/game_util"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
)
const (
@ -29,6 +30,7 @@ func init() {
func GetGameNum(Id int) int {
data, err := gamedata.GetDataByIntKey(CATNIP_TEMPLATE_CFG_NAME, Id)
if err != nil {
log.Debug("GetGameNum err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "PassNum")
@ -38,6 +40,7 @@ func GetGameMaxProgress(Id int) int {
TemplateId := GetTemplateId(Id)
data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME)
if err != nil {
log.Debug("GetGameMaxProgress err:%v, Id=%d", err, Id)
return 0
}
MaxProgress := 0
@ -53,10 +56,11 @@ func GetGameMaxProgress(Id int) int {
func GetJackpotItem(Mul int) (int, []*item.Item, int, int) {
data, err := gamedata.GetData(CATNIP_JACKPOT_CFG_NAME)
if err != nil {
log.Debug("GetJackpotItem err:%v, Mul=%d", err, Mul)
return 0, nil, 0, 0
}
JackpotType := GetJackpotType(Mul)
r := make(map[int]int)
r := make(map[int]int, len(data))
for k, v := range data {
if gamedata.GetIntValue(v, "Type") == JackpotType {
r[GoUtil.Int(k)] = 1
@ -68,6 +72,7 @@ func GetJackpotItem(Mul int) (int, []*item.Item, int, int) {
}
itemData, err := gamedata.GetDataByIntKey(CATNIP_JACKPOT_CFG_NAME, Id)
if err != nil {
log.Debug("GetJackpotItem get itemData err:%v, Id=%d", err, Id)
return 0, nil, 0, 0
}
return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth"), gamedata.GetIntValue(itemData, "FriendItems")
@ -76,6 +81,7 @@ func GetJackpotItem(Mul int) (int, []*item.Item, int, int) {
func GetJackpotType(Mul int) int {
data, err := gamedata.GetDataByIntKey(CATNIP_MULTIPLIER_CFG_NAME, Mul)
if err != nil {
log.Debug("GetJackpotType err:%v, Mul=%d", err, Mul)
return 0
}
R := map[int]int{
@ -89,6 +95,7 @@ func GetJackpotType(Mul int) int {
func GetTemplateId(Id int) int {
data, err := gamedata.GetDataByIntKey(CATNIP_TEMPLATE_CFG_NAME, Id)
if err != nil {
log.Debug("GetTemplateId err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "Template")
@ -98,15 +105,16 @@ func GetProgressReward(Id int, Rewards []int, Progress int) ([]*item.Item, []int
TemplateId := GetTemplateId(Id)
data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME)
if err != nil {
log.Debug("GetProgressReward err:%v, Id=%d", err, Id)
return nil, nil
}
Items := []*item.Item{}
Ids := []int{}
Items := make([]*item.Item, 0, len(data))
Ids := make([]int, 0, len(data))
for k, v := range data {
Id := GoUtil.Int(k)
if !GoUtil.InArray(Id, Rewards) && gamedata.GetIntValue(v, "Need") < Progress && gamedata.GetIntValue(v, "Template") == TemplateId {
rewardId := GoUtil.Int(k)
if !GoUtil.InArray(rewardId, Rewards) && gamedata.GetIntValue(v, "Need") < Progress && gamedata.GetIntValue(v, "Template") == TemplateId {
Items = append(Items, gamedata.GetItemList(v, "Items")...)
Ids = append(Ids, GoUtil.Int(k))
Ids = append(Ids, rewardId)
}
}
return Items, Ids
@ -116,6 +124,7 @@ func GetProgressNum(Id int) int {
TemplateId := GetTemplateId(Id)
data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME)
if err != nil {
log.Debug("GetProgressNum err:%v, Id=%d", err, Id)
return 0
}
Num := 0
@ -130,6 +139,7 @@ func GetProgressNum(Id int) int {
func GetItemCost(Id, Mul int) []*item.Item {
data, err := gamedata.GetDataByIntKey(CATNIP_TEMPLATE_CFG_NAME, Id)
if err != nil {
log.Debug("GetItemCost err:%v, Id=%d", err, Id)
return nil
}
return item.MutilItem(gamedata.GetItemList(data, "ItemCost"), Mul)
@ -138,6 +148,7 @@ func GetItemCost(Id, Mul int) []*item.Item {
func GetGrandReward(Id int) []*item.Item {
data, err := gamedata.GetDataByIntKey(CATNIP_TEMPLATE_CFG_NAME, Id)
if err != nil {
log.Debug("GetGrandReward err:%v, Id=%d", err, Id)
return nil
}
return gamedata.GetItemList(data, "Reward")

View File

@ -4,6 +4,7 @@ import (
"server/game/mod/item"
GoUtil "server/game_util"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
)
const (
@ -23,6 +24,7 @@ func init() {
func GetGroupId(N int) int {
data, err := gamedata.GetData(CFG_CHAMPSHIP_GROUP)
if err != nil {
log.Debug("GetGroupId err:%v, N=%d", err, N)
return 0
}
for k, v := range data {
@ -36,6 +38,7 @@ func GetGroupId(N int) int {
func GetChessScore(ChessLv int) int {
data, err := gamedata.GetDataByIntKey(CFG_CHAMPSHIP_SCORE, ChessLv)
if err != nil {
log.Debug("GetChessScore err:%v, ChessLv=%d", err, ChessLv)
return 0
}
return gamedata.GetIntValue(data, "Score")
@ -44,9 +47,10 @@ func GetChessScore(ChessLv int) int {
func GetReward(Reward, Score int) (int, []*item.Item) {
data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT)
if err != nil {
log.Debug("GetReward err:%v, Reward=%d, Score=%d", err, Reward, Score)
return Reward, nil
}
r := make([]*item.Item, 0)
r := make([]*item.Item, 0, len(data))
NewReward := Reward
for k, v := range data {
Id := GoUtil.Int(k)
@ -65,6 +69,7 @@ func GetReward(Reward, Score int) (int, []*item.Item) {
func GetRewardItems(Reward int) ([]*item.Item, int) {
data, err := gamedata.GetDataByIntKey(CFG_CHAMPSHIP_JACKPOT, Reward)
if err != nil {
log.Debug("GetRewardItems err:%v, Reward=%d", err, Reward)
return nil, 0
}
return gamedata.GetItemList(data, "Items"), gamedata.GetIntValue(data, "Score")
@ -73,6 +78,7 @@ func GetRewardItems(Reward int) ([]*item.Item, int) {
func GetRewardTotalScore(Reward int) int {
data, err := gamedata.GetDataByIntKey(CFG_CHAMPSHIP_JACKPOT, Reward)
if err != nil {
log.Debug("GetRewardTotalScore err:%v, Reward=%d", err, Reward)
return 0
}
return gamedata.GetIntValue(data, "Total")
@ -81,6 +87,7 @@ func GetRewardTotalScore(Reward int) int {
func GetRankReward(Rank int) []*item.Item {
data, err := gamedata.GetData(CFG_CHAMPSHIP_RANK)
if err != nil {
log.Debug("GetRankReward err:%v, Rank=%d", err, Rank)
return nil
}
for _, v := range data {
@ -94,6 +101,7 @@ func GetRankReward(Rank int) []*item.Item {
func GetMaxRewardId() int {
data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT)
if err != nil {
log.Debug("GetMaxRewardId err:%v", err)
return 0
}
MaxId := 0

View File

@ -4,6 +4,7 @@ import (
"server/game/mod/item"
GoUtil "server/game_util"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
"sort"
"strings"
)
@ -37,6 +38,7 @@ func init() {
func GetADReward(ChargeId int) ([]*item.Item, int) {
data, err := gamedata.GetData(CFG_CHARGE_AD)
if err != nil {
log.Debug("GetADReward err:%v, ChargeId=%d", err, ChargeId)
return nil, 0
}
for _, v := range data {
@ -50,6 +52,7 @@ func GetADReward(ChargeId int) ([]*item.Item, int) {
func GetWeeklyDiscountDay() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_discount_day")
if err != nil {
log.Debug("GetWeeklyDiscountDay err:%v", err)
return -1
}
return gamedata.GetIntValue(data, "Value")
@ -58,6 +61,7 @@ func GetWeeklyDiscountDay() int {
func GetMoneyCharge(ChargeId int) float64 {
data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId)
if err != nil {
log.Debug("GetMoneyCharge err:%v, ChargeId=%d", err, ChargeId)
return 0
}
return gamedata.GetFloatValue(data, "Money")
@ -66,6 +70,7 @@ func GetMoneyCharge(ChargeId int) float64 {
func GetDiamondShopReward(ChargeId int) []*item.Item {
data, err := gamedata.GetData(CFG_DIAMOND_SHOP)
if err != nil {
log.Debug("GetDiamondShopReward err:%v, ChargeId=%d", err, ChargeId)
return nil
}
for _, v := range data {
@ -79,6 +84,7 @@ func GetDiamondShopReward(ChargeId int) []*item.Item {
func GetEnergyShopId(ChargeId int) int {
data, err := gamedata.GetData(CFG_ENERGY_SHOP)
if err != nil {
log.Debug("GetEnergyShopId err:%v, ChargeId=%d", err, ChargeId)
return 0
}
for k, v := range data {
@ -92,11 +98,24 @@ func GetEnergyShopId(ChargeId int) int {
func GetWeeklyInfo(Pos int) (int, int) {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_chess_shop")
if err != nil {
log.Debug("GetWeeklyInfo err:%v, Pos=%d", err, Pos)
return 0, 0
}
valueData, ok := data["Value"]
if !ok {
log.Debug("GetWeeklyInfo: Value field not found")
return 0, 0
}
r, ok := valueData.([]interface{})
if !ok {
log.Debug("GetWeeklyInfo: Value is not []interface{}")
return 0, 0
}
r := data["Value"].([]interface{})
for _, v := range r {
v1 := v.(map[string]interface{})
v1, ok := v.(map[string]interface{})
if !ok {
continue
}
Id := GoUtil.Int(v1["Id"])
if Id == Pos {
return GoUtil.Int(v1["Discount"]), GoUtil.Int(v1["Limit"])
@ -108,12 +127,25 @@ func GetWeeklyInfo(Pos int) (int, int) {
func GetWeeklyInfoAll() map[int]gamedata.WeeklyDiscountInfo {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_chess_shop")
if err != nil {
log.Debug("GetWeeklyInfoAll err:%v", err)
return nil
}
r := data["Value"].([]interface{})
res := make(map[int]gamedata.WeeklyDiscountInfo)
valueData, ok := data["Value"]
if !ok {
log.Debug("GetWeeklyInfoAll: Value field not found")
return nil
}
r, ok := valueData.([]interface{})
if !ok {
log.Debug("GetWeeklyInfoAll: Value is not []interface{}")
return nil
}
res := make(map[int]gamedata.WeeklyDiscountInfo, len(r))
for _, v := range r {
v1 := v.(map[string]interface{})
v1, ok := v.(map[string]interface{})
if !ok {
continue
}
Id := GoUtil.Int(v1["Id"])
res[Id] = gamedata.WeeklyDiscountInfo{
Id: GoUtil.Int(v1["Id"]),
@ -127,6 +159,7 @@ func GetWeeklyInfoAll() map[int]gamedata.WeeklyDiscountInfo {
func GetEnergyShopReward(ChargeId int, First bool) []*item.Item {
data, err := gamedata.GetData(CFG_ENERGY_SHOP)
if err != nil {
log.Debug("GetEnergyShopReward err:%v, ChargeId=%d", err, ChargeId)
return nil
}
for _, v := range data {
@ -144,6 +177,7 @@ func GetEnergyShopReward(ChargeId int, First bool) []*item.Item {
func GetSpecialShopReward(ChargeId int) []*item.Item {
data, err := gamedata.GetData(CFG_SEPCIAL_SHOP)
if err != nil {
log.Debug("GetSpecialShopReward err:%v, ChargeId=%d", err, ChargeId)
return nil
}
for _, v := range data {
@ -157,6 +191,7 @@ func GetSpecialShopReward(ChargeId int) []*item.Item {
func GetSpecialShopType(ChargeId int) int {
data, err := gamedata.GetData(CFG_SEPCIAL_SHOP)
if err != nil {
log.Debug("GetSpecialShopType err:%v, ChargeId=%d", err, ChargeId)
return 0
}
for _, v := range data {
@ -170,6 +205,7 @@ func GetSpecialShopType(ChargeId int) int {
func GetFreeShopReward(ChargeId int) []*item.Item {
data, err := gamedata.GetDataByIntKey(CFG_FREE_SHOP, ChargeId)
if err != nil {
log.Debug("GetFreeShopReward err:%v, ChargeId=%d", err, ChargeId)
return nil
}
Item := gamedata.GetValue(data, "Items")
@ -183,6 +219,7 @@ func GetSpecialShopGrade(Money float64, Type int) int {
}
data, err := gamedata.GetData(CFG_SEPCIAL_SHOP)
if err != nil {
log.Debug("GetSpecialShopGrade err:%v, Money=%.2f, Type=%d", err, Money, Type)
return 0
}
l := make([]grade, 0, len(data))
@ -199,6 +236,10 @@ func GetSpecialShopGrade(Money float64, Type int) int {
return l[i].money > l[j].money
})
if len(l) == 0 {
return 0
}
for _, v := range l {
if Money <= v.money {
return v.id
@ -210,6 +251,7 @@ func GetSpecialShopGrade(Money float64, Type int) int {
func GetUnlockShopLv() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "shop_unlock_lv")
if err != nil {
log.Debug("GetUnlockShopLv err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
@ -218,6 +260,7 @@ func GetUnlockShopLv() int {
func GetSpecialShopCount() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "special_shop_count")
if err != nil {
log.Debug("GetSpecialShopCount err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
@ -226,6 +269,7 @@ func GetSpecialShopCount() int {
func GetAdChargeId() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "ad_charge_id")
if err != nil {
log.Debug("GetAdChargeId err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
@ -234,6 +278,7 @@ func GetAdChargeId() int {
func GetPiggyDuration() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "pig_duration")
if err != nil {
log.Debug("GetPiggyDuration err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
@ -242,6 +287,7 @@ func GetPiggyDuration() int {
func GetPiggyMaxDia() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "pig_max_diamond")
if err != nil {
log.Debug("GetPiggyMaxDia err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
@ -250,6 +296,7 @@ func GetPiggyMaxDia() int {
func GetPiggyRandDia() (int, int) {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "pig_diamond_rand")
if err != nil {
log.Debug("GetPiggyRandDia err:%v", err)
return 0, 0
}
str := gamedata.GetStringValue(data, "Value")
@ -263,6 +310,7 @@ func GetPiggyRandDia() (int, int) {
func GetPiggyBankChargeId() int {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "pig_charge_id")
if err != nil {
log.Debug("GetPiggyBankChargeId err:%v", err)
return 0
}
return gamedata.GetIntValue(data, "Value")
@ -271,6 +319,7 @@ func GetPiggyBankChargeId() int {
func GetGiftReward(ChargeId int) []*item.Item {
data, err := gamedata.GetData(CFG_CHARGE_GIFT)
if err != nil {
log.Debug("GetGiftReward err:%v, ChargeId=%d", err, ChargeId)
return nil
}
for _, v := range data {
@ -284,6 +333,7 @@ func GetGiftReward(ChargeId int) []*item.Item {
func GetGiftLimit(ChargeId int) int {
data, err := gamedata.GetData(CFG_CHARGE_GIFT)
if err != nil {
log.Debug("GetGiftLimit err:%v, ChargeId=%d", err, ChargeId)
return 0
}
for _, v := range data {
@ -296,6 +346,7 @@ func GetGiftLimit(ChargeId int) int {
func GetGiftId(ChargeId int) int {
data, err := gamedata.GetData(CFG_CHARGE_GIFT)
if err != nil {
log.Debug("GetGiftId err:%v, ChargeId=%d", err, ChargeId)
return 0
}
for k, v := range data {
@ -309,6 +360,7 @@ func GetGiftId(ChargeId int) int {
func GetChargeInfo(ChargeId int) (float64, string) {
data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId)
if err != nil {
log.Debug("GetChargeInfo err:%v, ChargeId=%d", err, ChargeId)
return 0, ""
}
return gamedata.GetFloatValue(data, "Money"), gamedata.GetStringValue(data, "Unit")
@ -317,6 +369,7 @@ func GetChargeInfo(ChargeId int) (float64, string) {
func GetProduceName(ChargeId int) string {
data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId)
if err != nil {
log.Debug("GetProduceName err:%v, ChargeId=%d", err, ChargeId)
return ""
}
return gamedata.GetStringValue(data, "Remark")
@ -325,6 +378,7 @@ func GetProduceName(ChargeId int) string {
func GetWishCount(ItemId int) int {
data, err := gamedata.GetDataByIntKey(CFG_CHARGE_WISH, ItemId)
if err != nil {
log.Debug("GetWishCount err:%v, ItemId=%d", err, ItemId)
return 0
}
return gamedata.GetIntValue(data, "Wish")
@ -333,6 +387,7 @@ func GetWishCount(ItemId int) int {
func GetPetCoinShopReward(ChargeId int) []*item.Item {
data, err := gamedata.GetData(CFG_CHARGE_PETCOIN)
if err != nil {
log.Debug("GetPetCoinShopReward err:%v, ChargeId=%d", err, ChargeId)
return nil
}
for _, v := range data {
@ -346,6 +401,7 @@ func GetPetCoinShopReward(ChargeId int) []*item.Item {
func GetWeeklyDiscountStartEnd() (int64, int64) {
data, err := gamedata.GetDataByKey(CFG_CHARGE_CONST, "weekly_discount_time")
if err != nil {
log.Debug("GetWeeklyDiscountStartEnd err:%v", err)
return 0, 0
}
str := gamedata.GetStringValue(data, "Value")

View File

@ -4,6 +4,7 @@ import (
"server/game/mod/item"
GoUtil "server/game_util"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
)
const (
@ -19,6 +20,7 @@ func init() {
func GetJackpotId() []int {
data, err := gamedata.GetData(CFG_COLLECT_JACKPOT)
if err != nil {
log.Debug("GetJackpotId err:%v", err)
return nil
}
ret := make([]int, 0, len(data))
@ -31,6 +33,7 @@ func GetJackpotId() []int {
func GetJackpotItems(Id int) []*item.Item {
data, err := gamedata.GetDataByIntKey(CFG_COLLECT_JACKPOT, Id)
if err != nil {
log.Debug("GetJackpotItems err:%v, Id=%d", err, Id)
return nil
}
return gamedata.GetItemList(data, "Items")
@ -39,6 +42,7 @@ func GetJackpotItems(Id int) []*item.Item {
func GetRewardNeed(Id int) int {
data, err := gamedata.GetDataByIntKey(CFG_COLLECT, Id)
if err != nil {
log.Debug("GetRewardNeed err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "Need")
@ -47,6 +51,7 @@ func GetRewardNeed(Id int) int {
func GetRewardType(Id int) int {
data, err := gamedata.GetDataByIntKey(CFG_COLLECT, Id)
if err != nil {
log.Debug("GetRewardType err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "Type")

View File

@ -23,16 +23,20 @@ func init() {
// 获取任务列表
func GetTaskList(Lv int) map[int]string {
r := make(map[int]string)
data, err := gamedata.GetData(DAILY_TASK)
if err != nil {
log.Debug("GetTaskList get data nil")
return r
log.Debug("GetTaskList err:%v, Lv=%d", err, Lv)
return nil
}
r := make(map[int]string, len(data))
for k, v := range data {
lv := gamedata.GetIntValue(v, "Lv")
if Lv >= lv {
k1, _ := strconv.Atoi(k)
k1, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetTaskList parse id err:%v, key=%s", err, k)
continue
}
r[k1] = gamedata.GetStringValue(v, "Task")
}
}
@ -42,12 +46,16 @@ func GetTaskList(Lv int) map[int]string {
func GetTaskActiveId() []int {
data, err := gamedata.GetData(DAILY_TASK_ACTIVE)
if err != nil {
log.Debug("GetTaskActiveId get data nil")
return []int{}
log.Debug("GetTaskActiveId err:%v", err)
return nil
}
r := make([]int, 0, len(data))
for k := range data {
Id, _ := strconv.Atoi(k)
Id, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetTaskActiveId parse id err:%v, key=%s", err, k)
continue
}
r = append(r, Id)
}
return r
@ -56,7 +64,7 @@ func GetTaskActiveId() []int {
func GetTaskActiveById(Id int) int {
data, err := gamedata.GetDataByIntKey(DAILY_TASK_ACTIVE, Id)
if err != nil {
log.Debug("GetTaskActiveById get data nil")
log.Debug("GetTaskActiveById err:%v, Id=%d", err, Id)
return 0
}
return gamedata.GetIntValue(data, "Num")
@ -68,16 +76,19 @@ type Jackpot struct {
}
func GetTaskWeekJackpot() map[int]Jackpot {
r := make(map[int]Jackpot)
data, err := gamedata.GetData(DAILY_TASK_JACKPOT)
if err != nil {
log.Debug("GetTaskWeekJackpot get data nil")
return r
log.Debug("GetTaskWeekJackpot err:%v", err)
return nil
}
r := make(map[int]Jackpot, len(data))
for k, v := range data {
Id, _ := strconv.Atoi(k)
Id, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetTaskWeekJackpot parse id err:%v, key=%s", err, k)
continue
}
isCard := gamedata.GetIntValue(v, "CardPack")
Item := item.ParseItem(gamedata.GetValue(v, "Items"))
r[Id] = Jackpot{

View File

@ -42,7 +42,7 @@ func GetAreaId(id int) int {
log.Debug("DecorateCost GetAreaId id:%v not found", id)
return 0
}
return gamedata.ParseInt(value["AreaId"])
return gamedata.GetIntValue(value, "AreaId")
}
func GetNextAreaId(AreaId, SortId int) int {

View File

@ -21,7 +21,7 @@ func GetItemType(Id int) int {
log.Debug("ItemCfg GetItemType Id:%v not found", Id)
return 0
}
return gamedata.ParseInt(data["IType"])
return gamedata.GetIntValue(data, "IType")
}
func GetItemEffect(Id int) int {
@ -30,7 +30,7 @@ func GetItemEffect(Id int) int {
log.Debug("ItemCfg GetItemEffect Id:%v not found", Id)
return 0
}
return gamedata.ParseInt(data["Effect"])
return gamedata.GetIntValue(data, "Effect")
}
func GetItemEffectList(Id int) []int {

View File

@ -67,18 +67,18 @@ func GetOne(Id int) (*gamedata.MergeDataRecord, error) {
return &gamedata.MergeDataRecord{}, errors.New("not found")
}
return &gamedata.MergeDataRecord{
Id: gamedata.ParseInt(data["Id"]),
Lv: gamedata.ParseInt(data["Lv"]),
MaxLv: gamedata.ParseInt(data["MaxLv"]),
SellType: gamedata.ParseString(data["SellType"]),
SellNum: gamedata.ParseInt(data["SellNum"]),
SellDiamond: gamedata.ParseInt(data["SellDiamond"]),
Color: gamedata.ParseString(data["Color"]),
Star: gamedata.ParseInt(data["Star"]),
Type: gamedata.ParseString(data["Type"]),
Emit_Product: gamedata.ParseString(data["Emit_Product"]),
CoolTime: gamedata.ParseInt(data["CoolTime"]),
Emit_Type: gamedata.ParseString(data["Emit_Type"]),
Id: gamedata.GetIntValue(data, "Id"),
Lv: gamedata.GetIntValue(data, "Lv"),
MaxLv: gamedata.GetIntValue(data, "MaxLv"),
SellType: gamedata.GetStringValue(data, "SellType"),
SellNum: gamedata.GetIntValue(data, "SellNum"),
SellDiamond: gamedata.GetIntValue(data, "SellDiamond"),
Color: gamedata.GetStringValue(data, "Color"),
Star: gamedata.GetIntValue(data, "Star"),
Type: gamedata.GetStringValue(data, "Type"),
Emit_Product: gamedata.GetStringValue(data, "Emit_Product"),
CoolTime: gamedata.GetIntValue(data, "CoolTime"),
Emit_Type: gamedata.GetStringValue(data, "Emit_Type"),
}, nil
}
@ -89,7 +89,7 @@ func GetStarById(Id int) int {
log.Debug("MergeDataCfg GetOne Id:%v not found", Id)
return 0
}
return gamedata.ParseInt(data["Star"])
return gamedata.GetIntValue(data, "Star")
}
func GetNameById(Id int) string {
@ -130,7 +130,7 @@ func GetLvById(Id int) int {
//log.Debug("GetLvById GetOne Id:%v not found", Id)
return 0
}
return gamedata.ParseInt(data["Lv"])
return gamedata.GetIntValue(data, "Lv")
}
// 根据Id获取棋子最大等级
@ -140,7 +140,7 @@ func GetMaxLvById(Id int) int {
// log.Debug("GetMaxLvById GetOne Id:%v not found", Id)
return 0
}
return gamedata.ParseInt(data["MaxLv"])
return gamedata.GetIntValue(data, "MaxLv")
}
// 根据Id获取棋子最大等级
@ -150,7 +150,7 @@ func GetMaxLvByColor(Color string) int {
if err != nil {
return 0
}
return gamedata.ParseInt(data["MaxLv"])
return gamedata.GetIntValue(data, "MaxLv")
}
// 根据Id获取发射器最小等级
@ -204,7 +204,7 @@ func GetTypeById(Id int) string {
log.Debug("GetTypeById GetOne Id:%v not found", Id)
return ""
}
return gamedata.ParseString(data["Type"])
return gamedata.GetStringValue(data, "Type")
}
// 根据Id获取棋子类型
@ -214,7 +214,7 @@ func GetColorById(Id int) string {
log.Debug("GetColorById GetOne Id:%v not found", Id)
return ""
}
return gamedata.ParseString(data["Color"])
return gamedata.GetStringValue(data, "Color")
}
// 根据Id获取棋子类型
@ -234,7 +234,8 @@ func GetEmitProduceType(Id int) []string {
log.Debug("GetEmitProduceType GetOne Id:%v not found", Id)
return []string{}
}
return strings.Split(gamedata.ParseString(data["Emit_Product"]), ",")
return strings.Split(gamedata.GetStringValue(data, "Emit_Product"), ",")
}
// 根据Id获取发射器产出类型
@ -244,7 +245,8 @@ func GetEmitProduceChessType(Id int) []string {
//log.Debug("GetEmitProduceChessType GetOne Id:%v not found", Id)
return []string{}
}
value := gamedata.ParseString(data["Product_Type"])
value := gamedata.GetStringValue(data, "Product_Type")
if value == "" {
return []string{}
}
@ -258,7 +260,8 @@ func GetEmitId(Id int) string {
// log.Debug("GetEmitId GetOne Id:%v not found", Id)
return ""
}
return gamedata.ParseString(data["Emit_ID"])
return gamedata.GetStringValue(data, "Emit_ID")
}
func GetAllId() []int {
@ -279,7 +282,8 @@ func GetEmitType(Id int) string {
log.Debug("GetEmitType GetOne Id:%v not found", Id)
return ""
}
return gamedata.ParseString(data["Emit_Type"])
return gamedata.GetStringValue(data, "Emit_Type")
}
func GetEmitN(EmitSeries string) int {
@ -298,7 +302,8 @@ func GetConst(Key string) string {
log.Debug("GetConst GetOne Id:%s not found", Key)
return ""
}
return gamedata.ParseString(data["Value"])
return gamedata.GetStringValue(data, "Value")
}
// 获取常量
@ -308,7 +313,7 @@ func GetConstInt(Key string) int {
log.Debug("GetConst GetOne Id:%s not found", Key)
return 0
}
return gamedata.ParseInt(data["Value"])
return gamedata.GetIntValue(data, "Value")
}
func GetExtraEmitId() map[string]struct{} {
@ -339,7 +344,8 @@ func GetSourceChestItem() []*item.Item {
log.Debug("GetSourceChestItem GetOne not found")
return nil
}
Str := gamedata.ParseString(data["Value"])
Str := gamedata.GetStringValue(data, "Value")
A1 := strings.Split(Str, "|")
var r []*item.Item
if len(A1) < 2 {
@ -363,7 +369,7 @@ func GetHighSourceChestItem() []*item.Item {
log.Debug("GetHighSourceChestItem GetOne not found")
return nil
}
Str := gamedata.ParseString(data["Value"])
Str := gamedata.GetStringValue(data, "Value")
A1 := strings.Split(Str, "|")
var r []*item.Item
if len(A1) < 2 {

View File

@ -18,7 +18,7 @@ func GetStartChessList() []int {
var ChessList []int
for _, v := range data {
v1 := v.(map[string]interface{})
ChessList = append(ChessList, gamedata.ParseInt(v1["MergeId"]))
ChessList = append(ChessList, gamedata.GetIntValue(v1, "MergeId"))
}
return ChessList
}

View File

@ -847,7 +847,6 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
// #region 充值
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号
RegisterMsgProcessFunc("ReqChargeReceive", ReqChargeReceive) // 礼包回复邮件

View File

@ -134,7 +134,7 @@ func ReqGmCommand_(player *Player, Command string) error {
player.PlayMod.getSevenLoginMod().Active = num
case "pay":
ChargeId, _ := strconv.Atoi(arg[1])
player.Kafka("pay", map[string]interface{}{
player.TeLog("pay", map[string]interface{}{
"ProductId": ChargeId,
"AppId": conf.Server.AppID,
"Uid": player.M_DwUin,

View File

@ -1,260 +0,0 @@
package game
import (
"encoding/json"
"runtime"
kafkaMiddleware "server/middleware/kafka"
"server/pkg/github.com/name5566/leaf/log"
"sync"
"sync/atomic"
"time"
)
const (
Login_log = 1
LoginOut_log = 2
Event_log = 3
)
const (
PLAYROOM_LOST = "playroom_lost"
// 增大缓冲:针对 ~1000 条/s保留足够秒数的缓冲可按需调整
LOG_LENGTH = 100000
WORKER_COUNT = 500
)
type LogMgr struct {
// 将切片改为带缓冲通道
L chan *Log
Lock sync.Mutex
wg sync.WaitGroup
stopOnce sync.Once
closing bool
}
type Log struct {
Uid int64
AppId int
ServerId int
EventName string
Param map[string]interface{}
TimeStamp int64
}
func (L *LogMgr) InitManager() {
// 初始化通道
L.L = make(chan *Log, LOG_LENGTH)
// 动态协程池参数
maxWorkers := WORKER_COUNT
if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > maxWorkers {
maxWorkers = cpuWorkers
}
minWorkers := 100
idleTimeout := 500 * time.Millisecond
var activeWorkers int32
// worker 启动函数
spawnWorker := func() {
L.wg.Add(1)
atomic.AddInt32(&activeWorkers, 1)
go func() {
defer L.wg.Done()
defer atomic.AddInt32(&activeWorkers, -1)
for {
// 首先阻塞等待一个任务(若 channel 关闭则退出)
v, ok := <-L.L
if !ok {
return
}
// 处理消息(与原来逻辑一致)
value, _ := json.Marshal(v)
if kafkaMiddleware.KafkaMod == nil {
// 尝试非阻塞重入,否则丢弃最旧再试一次
select {
case L.L <- v:
default:
select {
case <-L.L:
default:
}
select {
case L.L <- v:
default:
}
}
time.Sleep(10 * time.Millisecond)
} else {
if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil {
log.Debug("kafka log send err:%s", err.Error())
select {
case L.L <- v:
default:
select {
case <-L.L:
default:
}
select {
case L.L <- v:
default:
}
}
time.Sleep(10 * time.Millisecond)
}
}
// 快速循环处理后续可用任务,若超时则退出该 worker回收
timer := time.NewTimer(idleTimeout)
for {
select {
case v, ok := <-L.L:
if !ok {
if !timer.Stop() {
<-timer.C
}
return
}
// 处理消息
value, _ := json.Marshal(v)
if kafkaMiddleware.KafkaMod == nil {
select {
case L.L <- v:
default:
select {
case <-L.L:
default:
}
select {
case L.L <- v:
default:
}
}
time.Sleep(10 * time.Millisecond)
} else {
if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil {
log.Debug("kafka log send err:%s", err.Error())
select {
case L.L <- v:
default:
select {
case <-L.L:
default:
}
select {
case L.L <- v:
default:
}
}
time.Sleep(10 * time.Millisecond)
}
}
// 重置定时器以继续快速处理
if !timer.Stop() {
<-timer.C
}
timer.Reset(idleTimeout)
case <-timer.C:
timer.Stop()
// 空闲超时,退出该 worker
return
}
}
}
}()
}
// 启动初始最小 worker 数量
for i := 0; i < minWorkers; i++ {
spawnWorker()
}
// 监督器:动态根据队列长度扩展 worker但不超过 maxWorkers
go func() {
ticker := time.NewTicker(200 * time.Millisecond)
defer ticker.Stop()
for range ticker.C {
L.Lock.Lock()
closing := L.closing
L.Lock.Unlock()
if closing {
return
}
backlog := len(L.L)
active := int(atomic.LoadInt32(&activeWorkers))
if backlog > active && active < maxWorkers {
toSpawn := backlog - active
remain := maxWorkers - active
if toSpawn > remain {
toSpawn = remain
}
for i := 0; i < toSpawn; i++ {
spawnWorker()
}
}
}
}()
}
func (L *LogMgr) AddLog(logs *Log) {
return
// 复制结构体和 Param map避免并发修改导致 json.Marshal 时 panic
copyLog := *logs
// 安全地复制 map使用 defer recover 防止并发迭代时的 panic
if logs.Param != nil {
func() {
defer func() {
if r := recover(); r != nil {
// 发生 panic 时使用空 map
log.Debug("AddLog: concurrent map read/write detected, using empty map")
copyLog.Param = make(map[string]interface{})
}
}()
newParam := make(map[string]interface{}, len(logs.Param))
for k, v := range logs.Param {
newParam[k] = v
}
copyLog.Param = newParam
}()
}
// 如果已经开始关闭,直接丢弃
L.Lock.Lock()
if L.closing {
L.Lock.Unlock()
return
}
// 非阻塞入队:若通道满则先丢弃最旧一条再入队,避免阻塞调用者
select {
case L.L <- &copyLog:
L.Lock.Unlock()
return
default:
// 丢弃最旧一条以腾出空间(若有)
select {
case <-L.L:
default:
}
// 再尝试入队一次
select {
case L.L <- &copyLog:
default:
// 放不下就直接丢弃
}
L.Lock.Unlock()
}
}
func (L *LogMgr) Close() {
L.stopOnce.Do(func() {
L.Lock.Lock()
// 标记为正在关闭,阻止后续入队
L.closing = true
// 关闭通道,通知所有 worker 退出workers 会消费完所有已入队的消息)
close(L.L)
L.Lock.Unlock()
// 等待所有 worker 处理完
L.wg.Wait()
})
}

View File

@ -70,10 +70,6 @@ func (a *Activity) getGIftVar(key int) *Gift {
return Var.(*Gift)
}
func (a *Activity) setGiftVar(key int, Var *Gift) {
a.SetVar(key, Var)
}
func (a *Activity) GetActivityStatus(data *gamedata.ActivityData) int {
switch data.AType {
case ACT_ATYPE_NORMAL:
@ -117,5 +113,5 @@ func (a *Activity) GetReward(ActId int) ([]*item.Item, error) {
}
Var.Reward = true
Var.RewardTime = GoUtil.Now()
return activityCfg.GetAcitivityRewardItems(ActId), nil
return activityCfg.GetActivityRewardItems(ActId), nil
}

View File

@ -15,5 +15,5 @@ func (a *Activity) Fire(Id int) ([]*item.Item, error) {
}
Var.Buy = true
Var.Time = GoUtil.Now()
return activityCfg.GetAcitivityGiftItems(Id), nil
return activityCfg.GetActivityGiftItems(Id), nil
}

View File

@ -108,7 +108,7 @@ func (r *RaceMod) GetReward() ([]*item.Item, error) {
}
func randOpponents(OpponentNum int) []*Opponent {
Opponent := make([]*Opponent, 0)
Opponent := make([]*Opponent, 0, OpponentNum-1)
names := randnameCfg.GetRandNames(OpponentNum)
for i := 1; i < OpponentNum; i++ {
Opponent = append(Opponent, randOpponent(i, names[i]))

View File

@ -50,7 +50,7 @@ func randReward(RewardData *gamedata.SevenLoginRewardData, LastType int, jackpot
Item1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Num))}
// 奖励2
NewJackpot := make([]*gamedata.SevenLoginJackpotData, 0)
NewJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot))
for _, v := range jackpot {
if v.Diamond <= RemainDiamond && v.Type != LastType && v.Type != JACKPOT_CARD_TYPE {
NewJackpot = append(NewJackpot, v)
@ -65,7 +65,7 @@ func randReward(RewardData *gamedata.SevenLoginRewardData, LastType int, jackpot
RemainDiamond -= 5
}
if GoUtil.InArray(RewardData.Id, CardPackIds) {
CardJackpot := make([]*gamedata.SevenLoginJackpotData, 0)
CardJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot))
for _, v := range jackpot {
if v.Diamond <= RemainDiamond && v.Type == JACKPOT_CARD_TYPE {
CardJackpot = append(CardJackpot, v)
@ -88,7 +88,7 @@ func randReward(RewardData *gamedata.SevenLoginRewardData, LastType int, jackpot
Item3 := make([]*item.Item, 0)
if RewardData.RewardNum == 3 {
RemainDiamond += 5
NewJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0)
NewJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot))
for _, v := range jackpot {
if v.Diamond <= RemainDiamond && v.Type != LastType && v.Type != Item2Type {
NewJackpot3 = append(NewJackpot3, v)

View File

@ -1081,10 +1081,6 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) {
go ga.GAlogEvent(Type, BaseMod.Account, "", Param)
}
func (p *Player) Kafka(Type string, Param map[string]interface{}) {
}
// 初始化活动
func (p *Player) initAcitivity() {
p.activity = make(map[int]*ActivityInfo)
@ -1198,6 +1194,7 @@ func (p *Player) GetIp() string {
return p.GetAgent().RemoteAddr().String()
}
// TODO func_exec_add 需要优化成令牌桶算法,目前的实现可能存在性能问题
func (p *Player) func_exec_add() error {
now := time.Now().Unix()

View File

@ -2959,17 +2959,6 @@ func ReqCreateOrderSn(player *Player, buf []byte) error {
// 订单发货
func ReqShippingOrder(player *Player, buf []byte) error {
return nil
req := &msg.ReqShippingOrder{}
err := proto.Unmarshal(buf, req)
if err != nil {
return err
}
go player.TriggerShippingOrder(req)
player.PushClientRes(&msg.ResShippingOrder{
Code: msg.RES_CODE_SUCCESS,
})
return nil
}
// 锦标赛
@ -4122,7 +4111,7 @@ func ReqPlayroomFlip(player *Player, buf []byte) error {
})
return err
}
player.Kafka("playroom_flip", map[string]interface{}{
player.TeLog("playroom_flip", map[string]interface{}{
"CardID": CardId,
"Id": req.Id,
})
@ -4676,7 +4665,7 @@ func ReqKafkaLog(player *Player, buf []byte) error {
if err != nil {
return err
}
player.Kafka(req.Event, map[string]interface{}{
player.TeLog(req.Event, map[string]interface{}{
"From": "Client",
"data": req.Data,
})

View File

@ -1,7 +1,6 @@
package game
import (
"bytes"
"context"
"database/sql"
"fmt"
@ -14,12 +13,6 @@ import (
"time"
)
var serverBufferPool = sync.Pool{
New: func() interface{} {
return bytes.NewBuffer(make([]byte, 0, 24*1024*1024))
},
}
const (
FRIEND_MGR_KEY = "FRIEND_MGR"
RANK_MGR_KEY = "RANK_MGR"

View File

@ -1,45 +0,0 @@
package gamedata
import (
// "io/ioutil"
"server/pkg/github.com/name5566/leaf/recordfile"
)
var G_AllConfigs = map[string]interface{}{}
type ConfigData struct {
data map[string]interface{}
}
func (cd *ConfigData) GetData() map[string]interface{} {
return cd.data
}
func (cd *ConfigData) SetData(data map[string]interface{}) {
cd.data = data
}
var G_AllConfigsData = map[string]*recordfile.RecordFile{}
var G_AllConfigsJsonData = map[string]*ConfigData{}
func InitReadAllCfg() {
// 遍历 Map
for k, v := range G_AllConfigs {
rd := readRfNew(v, k)
G_AllConfigsData[k] = rd
}
}
func GetConfigByName(name string) *recordfile.RecordFile {
_, ok := G_AllConfigsData[name]
if ok {
return G_AllConfigsData[name]
} else {
rd := readRfNew(G_AllConfigs[name], name)
G_AllConfigsData[name] = rd
}
return G_AllConfigsData[name]
}

View File

@ -3,75 +3,61 @@ package gamedata
import (
"encoding/json"
"errors"
"fmt"
"io"
"os"
"path/filepath"
"strconv"
"sync"
"server/conf"
"server/game/mod/item"
"server/pkg/github.com/name5566/leaf/log"
"server/pkg/github.com/name5566/leaf/recordfile"
"github.com/fsnotify/fsnotify"
)
var watcher *fsnotify.Watcher
var ConfPath = "./gamedata/config/"
var (
ConfPath = "./gamedata/config/"
G_AllConfigs = map[string]interface{}{}
G_AllConfigsJsonData = map[string]*ConfigData{}
configMutex sync.RWMutex // 全局配置锁
)
type ConfigData struct {
data map[string]interface{}
mu sync.RWMutex
}
func (cd *ConfigData) GetData() map[string]interface{} {
cd.mu.RLock()
defer cd.mu.RUnlock()
return cd.data
}
func (cd *ConfigData) SetData(data map[string]interface{}) {
cd.mu.Lock()
defer cd.mu.Unlock()
cd.data = data
}
func init() {
if conf.Server.GameConfPath != "" {
ConfPath = conf.Server.GameConfPath
}
watcher, _ = fsnotify.NewWatcher()
watcher.Add(ConfPath + "reload")
go func() {
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
if event.Op&fsnotify.Write == fsnotify.Write || event.Op&fsnotify.Create == fsnotify.Create || event.Op&fsnotify.Rename == fsnotify.Rename {
for k := range G_AllConfigsJsonData {
InitCfg(k)
log.Debug("配置已重新加载:%s", k)
}
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
fmt.Println("错误:", err)
}
}
}()
}
func Reload() {
configMutex.RLock()
keys := make([]string, 0, len(G_AllConfigsJsonData))
for k := range G_AllConfigsJsonData {
keys = append(keys, k)
}
configMutex.RUnlock()
for _, k := range keys {
InitCfg(k)
log.Debug("配置已重新加载:%s", k)
}
}
func readRfNew(st interface{}, ralativePath string) *recordfile.RecordFile {
rf, err := recordfile.New(st)
if err != nil {
log.Fatal("%v", err)
}
fn := ralativePath + ".txt"
err = rf.Read(ConfPath + fn)
if err != nil {
log.Fatal("%v: %v", fn, err)
}
return rf
}
func InitCfg(cfgname string) {
// 读取文件内容
filePath := ConfPath + cfgname + ".json"
@ -101,49 +87,54 @@ func InitCfg(cfgname string) {
log.Debug("config name:%s,反序列化失败:%v", cfgname, err)
return
}
// 直接使用data无需多余拷贝
rf := new(ConfigData)
convertedData := make(map[string]interface{})
for k, v := range data {
convertedData[k] = v
}
rf.SetData(convertedData)
rf.SetData(data)
// 使用锁保护全局map
configMutex.Lock()
G_AllConfigsJsonData[cfgname] = rf
configMutex.Unlock()
}
// 提取公共的 map 检查逻辑
func getMapValue(a interface{}, key string) (interface{}, bool) {
if a == nil {
return nil, false
}
if m, ok := a.(map[string]interface{}); ok {
if v, ok := m[key]; ok {
return v, true
}
}
return nil, false
}
func GetValue(a interface{}, key string) interface{} {
if a == nil {
return nil
}
if v, ok := a.(map[string]interface{})[key]; ok {
return v
}
return nil
v, _ := getMapValue(a, key)
return v
}
func GetIntValue(a interface{}, key string) int {
if a == nil {
v, ok := getMapValue(a, key)
if !ok || v == nil {
return 0
}
if v, ok := a.(map[string]interface{})[key]; ok {
if v == nil {
return 0
}
return Int(v)
}
return 0
return Int(v)
}
func GetIntSliceValue(a interface{}, key string) []int {
if a == nil {
v, ok := getMapValue(a, key)
if !ok || v == nil {
return nil
}
if v, ok := a.(map[string]interface{})[key]; ok {
if v == nil {
return nil
}
var r []int
for _, v := range v.([]interface{}) {
r = append(r, int(v.(float64)))
// 安全的类型断言避免panic
if slice, ok := v.([]interface{}); ok {
r := make([]int, 0, len(slice)) // 预分配容量
for _, item := range slice {
if num, ok := item.(float64); ok {
r = append(r, int(num))
}
}
return r
}
@ -151,68 +142,79 @@ func GetIntSliceValue(a interface{}, key string) []int {
}
func GetFloatValue(a interface{}, key string) float64 {
if a == nil {
v, ok := getMapValue(a, key)
if !ok || v == nil {
return 0
}
if v, ok := a.(map[string]interface{})[key]; ok {
if v == nil {
return 0
}
return v.(float64)
// 安全的类型断言
if f, ok := v.(float64); ok {
return f
}
return 0
}
func GetItemList(a interface{}, key string) []*item.Item {
if a == nil {
v, ok := getMapValue(a, key)
if !ok || v == nil {
return nil
}
if v, ok := a.(map[string]interface{})[key]; ok {
if v == nil {
return nil
}
return item.ParseItem(v)
}
return nil
return item.ParseItem(v)
}
func GetStringValue(a interface{}, key string) string {
if a == nil {
v, ok := getMapValue(a, key)
if !ok || v == nil {
return ""
}
if v, ok := a.(map[string]interface{})[key]; ok {
if v == nil {
return ""
}
return String(v)
}
return ""
return String(v)
}
func GetData(cfgname string) (map[string]interface{}, error) {
if v, ok := G_AllConfigsJsonData[cfgname]; ok {
configMutex.RLock()
v, ok := G_AllConfigsJsonData[cfgname]
configMutex.RUnlock()
if ok {
return v.GetData(), nil
}
return make(map[string]interface{}), errors.New("not found")
return nil, errors.New("config not found: " + cfgname)
}
func GetDataByKey(cfgname, key string) (map[string]interface{}, error) {
if v, ok := G_AllConfigsJsonData[cfgname]; ok {
if v, ok := v.GetData()[key]; ok {
return v.(map[string]interface{}), nil
configMutex.RLock()
v, ok := G_AllConfigsJsonData[cfgname]
configMutex.RUnlock()
if ok {
data := v.GetData()
if val, ok := data[key]; ok {
// 安全的类型断言
if result, ok := val.(map[string]interface{}); ok {
return result, nil
}
return nil, errors.New("invalid data type for key: " + key)
}
}
return make(map[string]interface{}), errors.New("not found")
return nil, errors.New("config or key not found")
}
func GetDataByIntKey(cfgname string, key int) (map[string]interface{}, error) {
keyStr := strconv.Itoa(key)
if v, ok := G_AllConfigsJsonData[cfgname]; ok {
if v, ok := v.GetData()[keyStr]; ok {
return v.(map[string]interface{}), nil
configMutex.RLock()
v, ok := G_AllConfigsJsonData[cfgname]
configMutex.RUnlock()
if ok {
data := v.GetData()
if val, ok := data[keyStr]; ok {
// 安全的类型断言
if result, ok := val.(map[string]interface{}); ok {
return result, nil
}
return nil, errors.New("invalid data type for key: " + keyStr)
}
}
return make(map[string]interface{}), errors.New("not found")
return nil, errors.New("config or key not found")
}
func Int(a interface{}) int {

View File

@ -1,15 +0,0 @@
package gamedata
func ParseInt(value interface{}) int {
if value == nil {
return 0
}
return int(value.(float64))
}
func ParseString(value interface{}) string {
if value == nil {
return ""
}
return value.(string)
}

View File

@ -15,7 +15,6 @@ require (
github.com/jmoiron/sqlx v1.4.0
github.com/redis/go-redis/v9 v9.6.1
github.com/robfig/cron/v3 v3.0.1
github.com/segmentio/kafka-go v0.4.47
github.com/shirou/gopsutil v3.21.11+incompatible
google.golang.org/protobuf v1.36.2
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22
@ -35,10 +34,8 @@ require (
github.com/clbanning/mxj/v2 v2.7.0 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.15.9 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pierrec/lz4/v4 v4.1.15 // indirect
github.com/stretchr/testify v1.9.0 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/tklauser/go-sysconf v0.3.14 // indirect
@ -49,17 +46,13 @@ require (
gopkg.in/ini.v1 v1.67.0 // indirect
)
require (
github.com/fsnotify/fsnotify v1.8.0 // direct
golang.org/x/sys v0.29.0 // indirect
)
require golang.org/x/sys v0.29.0 // indirect
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3 //
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/google/uuid v1.6.0
github.com/tuyou/galog v0.0.0
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect

View File

@ -2,8 +2,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3 h1:+2h2cOKzZgP8DmtuvkmUhOs5WfyseFTc0KLNR3EU2eA=
github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3/go.mod h1:uhiHUKG8fMwf4Ou3186EBBagFrBdAsAA5GHiLMWQN2A=
github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6 h1:eIf+iGJxdU4U9ypaUfbtOWCsZSbTb8AUHvyPrxu6mAA=
github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6/go.mod h1:4EUIoxs/do24zMOGGqYVWgw0s9NtiylnJglOeEB5UJo=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
@ -95,8 +93,6 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
@ -119,7 +115,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@ -132,8 +127,6 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@ -151,8 +144,6 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@ -160,8 +151,6 @@ github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0
github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/segmentio/kafka-go v0.4.47 h1:IqziR4pA3vrZq7YdRxaT3w1/5fvIH5qpCwstUanQQB0=
github.com/segmentio/kafka-go v0.4.47/go.mod h1:HjF6XbOKh0Pjlkr5GVZxt6CsjjwnmhVOfURM5KMd8qg=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
@ -169,11 +158,8 @@ github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYl
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
@ -183,12 +169,6 @@ github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZ
github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@ -290,15 +270,12 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI=
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@ -345,7 +322,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@ -1,23 +0,0 @@
package kafkaMiddleware
import (
"context"
"github.com/segmentio/kafka-go"
)
var KafkaMod *kafka.Writer
func SendMsg(key, value []byte) error {
if KafkaMod == nil {
return nil
}
err := KafkaMod.WriteMessages(context.Background(), kafka.Message{
Key: key,
Value: value,
})
if err != nil {
//log.Debug("WriteMessages err: %v", err)
}
return err
}