【架构优化】list设置容量,避免动态扩容
This commit is contained in:
parent
e2200be3ff
commit
e6f7db6cca
@ -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) {
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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{
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -847,7 +847,6 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
|
||||
|
||||
// #region 充值
|
||||
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
|
||||
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
|
||||
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号
|
||||
RegisterMsgProcessFunc("ReqChargeReceive", ReqChargeReceive) // 礼包回复邮件
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 <- ©Log:
|
||||
L.Lock.Unlock()
|
||||
return
|
||||
default:
|
||||
// 丢弃最旧一条以腾出空间(若有)
|
||||
select {
|
||||
case <-L.L:
|
||||
default:
|
||||
}
|
||||
// 再尝试入队一次
|
||||
select {
|
||||
case L.L <- ©Log:
|
||||
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()
|
||||
})
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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]))
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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,
|
||||
})
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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]
|
||||
}
|
||||
@ -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 {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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=
|
||||
|
||||
@ -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
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user