package handler import ( "reflect" "server/call" "server/common" "server/modules/backend/app" "server/modules/backend/values" "server/natsClient" "server/pb" "sort" "strings" "github.com/gin-gonic/gin" ) // ConfigControlCommon 所有调控配置通用逻辑 func ConfigControlCommon(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() path := c.Request.URL.Path path = strings.ReplaceAll(path, "/gm/control/", "") all := strings.Split(path, "/") if len(all) > 2 { a.Code = values.CodeRetry return } t := all[0] opt := all[1] reloadType := values.GetControlType(t) element, list := common.GetConfigStructByType(reloadType) var resp interface{} if opt == "list" { if !a.MGetAll(element, list) { return } resp = CheckSpecial(reloadType, list) if resp == nil { resp = values.GMConfigCommonListResp{Config: list} } } else if opt == "edit" { req := new(values.GMConfigCommonEditReq) if !a.S(req) { return } if !a.MUpdateAll(req.Config, element) { return } call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(reloadType)}) } else if opt == "del" { req := new(values.GMConfigCommonDelReq) if !a.S(req) { return } if !a.MDel(req.ID, element) { return } call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(reloadType)}) } a.Data = resp } func CheckSpecial(t int, list interface{}) interface{} { switch t { } return nil } // ConfigPayWeight 支付渠道权重配置 func ConfigPayWeight(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() path := c.Request.URL.Path index := strings.LastIndex(path, "/") if index < 0 { a.Code = values.CodeParam return } opt := path[index+1:] reloadType := common.ReloadConfigPayWeight element, list := common.GetConfigStructByType(reloadType) resp := values.GMConfigPayWeightResp{} if opt == "list" { if !a.MGetAll(element, list) { return } list = reflect.ValueOf(list).Elem().Interface() retList := []common.ConfigPayChannels{} for _, v := range list.([]common.ConfigPayChannels) { if v.CurrencyType == common.CurrencyBrazil { retList = append(retList, v) } } sort.Slice(retList, func(i, j int) bool { return retList[i].PayPer > retList[j].PayPer }) resp.Config = retList // resp.Status, _ = db.Redis().GetInt(common.RedisKeyPayStatus) } else if opt == "edit" { req := new(values.GMConfigCommonEditReq) if !a.S(req) { return } if !a.MUpdateAll(req.Config, element) { return } call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(reloadType)}) } else if opt == "del" { req := new(values.GMConfigCommonDelReq) if !a.S(req) { return } if !a.MDel(req.ID, element) { return } call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(reloadType)}) } a.Data = resp } // ConfigWithdrawWeight 退出渠道配置 func ConfigWithdrawWeight(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() path := c.Request.URL.Path index := strings.LastIndex(path, "/") if index < 0 { a.Code = values.CodeParam return } opt := path[index+1:] reloadType := common.ReloadConfigWithdrawWeight element, list := common.GetConfigStructByType(reloadType) var resp interface{} if opt == "list" { if !a.MGetAll(element, list) { return } list = reflect.ValueOf(list).Elem().Interface() retList := []common.ConfigWithdrawChannels{} for _, v := range list.([]common.ConfigWithdrawChannels) { if v.CurrencyType == common.CurrencyBrazil { retList = append(retList, v) } } sort.Slice(retList, func(i, j int) bool { return retList[i].WithdrawPer > retList[j].WithdrawPer }) resp = values.GMConfigCommonListResp{Config: retList} } else if opt == "edit" { req := new(values.GMConfigCommonEditReq) if !a.S(req) { return } if !a.MUpdateAll(req.Config, element) { return } call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(reloadType)}) } else if opt == "del" { req := new(values.GMConfigCommonDelReq) if !a.S(req) { return } if !a.MDel(req.ID, element) { return } call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(reloadType)}) } a.Data = resp }