desc
This commit is contained in:
parent
eb35e81936
commit
df108f1cd8
@ -67,14 +67,21 @@ func (svc *AccountService) GetWhiteListAll(projectId int) ([]*dto.WhiteListInfo,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
banList, err := svc.accountRepo.GetBanListAll(projectEt)
|
||||
for _, ban := range banList {
|
||||
if ban.BanType == consts.BanType_AccountTrade || ban.BanType == consts.BanType_RoleTrade {
|
||||
list = append(list, &dto.WhiteListInfo{
|
||||
WType: ban.BanType,
|
||||
Value: ban.Value,
|
||||
})
|
||||
if projectEt.GetProjectPo().ProjectType == consts.RegisteredProjectId_shenmodalu {
|
||||
// 神魔大陆实现封禁交易复用的白名单做存储。。。
|
||||
banList, err := svc.accountRepo.GetBanListAll(projectEt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, ban := range banList {
|
||||
if ban.BanType == consts.BanType_AccountTrade {
|
||||
list = append(list, &dto.WhiteListInfo{
|
||||
WType: ban.BanType,
|
||||
Value: ban.Value,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return list, nil
|
||||
}
|
||||
|
@ -8,11 +8,15 @@ import (
|
||||
"admin/internal/model/dto"
|
||||
"admin/lib/httpclient"
|
||||
"admin/lib/xlog"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
const crossMaxIncNo = 5
|
||||
const crossIdPrefix = "208"
|
||||
|
||||
type BanHook struct {
|
||||
}
|
||||
|
||||
@ -32,40 +36,10 @@ func (hook *BanHook) Create(projectInfo *entity.Project, resource string, dtoObj
|
||||
case consts.BanType_RoleChat:
|
||||
banApi = "banroletalk"
|
||||
default:
|
||||
if banInfo.BanType == consts.BanType_AccountTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", "add")
|
||||
|
||||
// 所有区服
|
||||
serverList, err := getAllRunningServers(projectInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range serverList {
|
||||
params.Set("server", v.ServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止账号交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
} else if banInfo.BanType == consts.BanType_RoleTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", "add")
|
||||
params.Set("server", banInfo.ServerConfID)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止角色交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
return nil
|
||||
if banInfo.BanType == consts.BanType_AccountTrade ||
|
||||
banInfo.BanType == consts.BanType_RoleTrade {
|
||||
err := hook.triggerBanTradeInfoChange(projectInfo, "add", banInfo)
|
||||
return err
|
||||
}
|
||||
|
||||
xlog.Warnf("神魔大陆不支持此类型的封禁:%v", banInfo.BanType)
|
||||
@ -122,40 +96,10 @@ func (hook *BanHook) Edit(projectInfo *entity.Project, resource string, dtoObj d
|
||||
case consts.BanType_RoleChat:
|
||||
banApi = "banroletalk"
|
||||
default:
|
||||
if banInfo.BanType == consts.BanType_AccountTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", "add")
|
||||
|
||||
// 所有区服
|
||||
serverList, err := getAllRunningServers(projectInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range serverList {
|
||||
params.Set("server", v.ServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止账号交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
} else if banInfo.BanType == consts.BanType_RoleTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", "add")
|
||||
params.Set("server", banInfo.ServerConfID)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止角色交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
return nil
|
||||
if banInfo.BanType == consts.BanType_AccountTrade ||
|
||||
banInfo.BanType == consts.BanType_RoleTrade {
|
||||
err := hook.triggerBanTradeInfoChange(projectInfo, "add", banInfo)
|
||||
return err
|
||||
}
|
||||
|
||||
xlog.Warnf("神魔大陆不支持此类型的封禁:%v", banInfo.BanType)
|
||||
@ -213,41 +157,12 @@ func (hook *BanHook) Delete(projectInfo *entity.Project, resource string, dtoObj
|
||||
case consts.BanType_RoleChat:
|
||||
banApi = "banroletalkdel"
|
||||
default:
|
||||
if banInfo.BanType == consts.BanType_AccountTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", "remove")
|
||||
|
||||
// 所有区服
|
||||
serverList, err := getAllRunningServers(projectInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range serverList {
|
||||
params.Set("server", v.ServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止账号交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
} else if banInfo.BanType == consts.BanType_RoleTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", "remove")
|
||||
params.Set("server", banInfo.ServerConfID)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止角色交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
return nil
|
||||
if banInfo.BanType == consts.BanType_AccountTrade ||
|
||||
banInfo.BanType == consts.BanType_RoleTrade {
|
||||
err := hook.triggerBanTradeInfoChange(projectInfo, "remove", banInfo)
|
||||
return err
|
||||
}
|
||||
|
||||
xlog.Warnf("神魔大陆不支持此类型的封禁:%v", banInfo.BanType)
|
||||
return nil
|
||||
}
|
||||
@ -270,3 +185,96 @@ func (hook *BanHook) Delete(projectInfo *entity.Project, resource string, dtoObj
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (hook *BanHook) triggerBanTradeInfoChange(projectInfo *entity.Project, op string, banInfo *model.Ban) error {
|
||||
if banInfo.BanType == consts.BanType_AccountTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", op)
|
||||
|
||||
// 所有区服
|
||||
serverList, err := getAllRunningServers(projectInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range serverList {
|
||||
params.Set("server", v.ServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(projectInfo.GetApiAddr()+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
err = errcode.New(errcode.ServerError, "发送新增禁止账号交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
xlog.Warnf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// 无论是封禁账号是还是角色,都要通知跨服,否则角色可以在跨服交易
|
||||
for i := 0; i < crossMaxIncNo; i++ {
|
||||
// 再通知下跨服,跨服因为没管理在服务器列表,先这样顶一下
|
||||
crossServerId := fmt.Sprintf(crossIdPrefix+"%.2d", i)
|
||||
params.Set("server", crossServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(projectInfo.GetApiAddr()+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
err = errcode.New(errcode.ServerError, "发送%v新增禁止账号交易白名单请求:%+v错误:%v", crossServerId, banInfo, err)
|
||||
xlog.Warnf("%v", err)
|
||||
}
|
||||
}
|
||||
for i := 0; i < crossMaxIncNo; i++ {
|
||||
// 再通知下跨服,跨服因为没管理在服务器列表,先这样顶一下
|
||||
bigCrossServerId := fmt.Sprintf("298%.2d", i)
|
||||
params.Set("server", bigCrossServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(projectInfo.GetApiAddr()+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
err = errcode.New(errcode.ServerError, "发送%v新增禁止账号交易白名单请求:%+v错误:%v",
|
||||
bigCrossServerId, banInfo, err)
|
||||
xlog.Warnf("%v", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
} else if banInfo.BanType == consts.BanType_RoleTrade {
|
||||
params := &url.Values{}
|
||||
params.Add("cmd_data", "OpWhitelist")
|
||||
params.Add("type", banInfo.BanType)
|
||||
params.Add("value", banInfo.Value)
|
||||
params.Add("op", op)
|
||||
params.Set("server", banInfo.ServerConfID)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(projectInfo.GetApiAddr()+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
return errcode.New(errcode.ServerError, "发送新增禁止角色交易白名单请求:%+v错误:%v", banInfo, err)
|
||||
}
|
||||
|
||||
// 无论是封禁账号是还是角色,都要通知跨服,否则角色可以在跨服交易,通知错了跨服也不管,因为角色id前缀就是服务器id,
|
||||
// 不会影响别的服逻辑判断
|
||||
for i := 0; i < crossMaxIncNo; i++ {
|
||||
// 再通知下跨服,跨服因为没管理在服务器列表,先这样顶一下
|
||||
crossServerId := fmt.Sprintf(crossIdPrefix+"%.2d", i)
|
||||
params.Set("server", crossServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(projectInfo.GetApiAddr()+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
err = errcode.New(errcode.ServerError, "发送%v新增禁止账号交易白名单请求:%+v错误:%v", crossServerId, banInfo, err)
|
||||
xlog.Warnf("%v", err)
|
||||
}
|
||||
}
|
||||
for i := 0; i < crossMaxIncNo; i++ {
|
||||
// 再通知下跨服,跨服因为没管理在服务器列表,先这样顶一下
|
||||
bigCrossServerId := fmt.Sprintf("298%.2d", i)
|
||||
params.Set("server", bigCrossServerId)
|
||||
rsp := make(map[string]any)
|
||||
err := httpclient.Request(projectInfo.GetApiAddr()+"/gm", "get", params, &rsp)
|
||||
if err != nil {
|
||||
err = errcode.New(errcode.ServerError, "发送%v新增禁止账号交易白名单请求:%+v错误:%v",
|
||||
bigCrossServerId, banInfo, err)
|
||||
xlog.Warnf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -38,6 +38,16 @@ var base64decodeFields = map[string]struct{}{
|
||||
"chatlog_msg": {},
|
||||
}
|
||||
|
||||
var reasonValueAlias = map[string]struct{}{
|
||||
"gainitem_itempath": {},
|
||||
"loseitem_itempath": {},
|
||||
}
|
||||
|
||||
var reasonEnumValueAlias = map[string]struct{}{
|
||||
"addcoin_coinpath": {},
|
||||
"costcoin_coinpath": {},
|
||||
}
|
||||
|
||||
func init() {
|
||||
for i := 0; i < 15; i++ {
|
||||
removeFields["chatlog_score"] = struct{}{}
|
||||
@ -112,6 +122,11 @@ func (hook *GameLogHook) Trim(projectInfo *entity.Project, eventName []string, t
|
||||
rows[j][i] = eventDate.Format(time.DateTime)
|
||||
}
|
||||
}
|
||||
_, findReplaceValue := reasonValueAlias[f.Name]
|
||||
if findReplaceValue {
|
||||
// 需要替换值内容
|
||||
|
||||
}
|
||||
// 修改每一行公共属性别名
|
||||
alias, find := fieldsAlias[f.Name]
|
||||
if find && f.Name == f.Alias {
|
||||
|
File diff suppressed because one or more lines are too long
@ -15,6 +15,12 @@ type ServerInfo struct {
|
||||
TotalAccountCount int `json:"total_account_count"`
|
||||
Addr string `json:"addr"`
|
||||
IsServerDown bool `json:"open_whitelist_login"`
|
||||
CrossUid bool `json:"cross_uid"`
|
||||
CrossOutIp bool `json:"cross_out_ip"`
|
||||
CrossInIp bool `json:"cross_in_ip"`
|
||||
BigCrossUid bool `json:"big_cross_uid"`
|
||||
BigCrossOutIp bool `json:"big_cross_out_ip"`
|
||||
BigCrossInIp bool `json:"big_cross_in_ip"`
|
||||
}
|
||||
|
||||
func (server *ServerInfo) Down(api string) error {
|
||||
|
@ -1,20 +0,0 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
type Attribute struct {
|
||||
ID int `gorm:"primarykey" readonly:"true"`
|
||||
AppId int
|
||||
Status int // 是否显示 0为不显示 1为显示 默认不显示
|
||||
AttributeName string
|
||||
ShowName string
|
||||
DataType string
|
||||
AttributeType int
|
||||
AttributeSource int
|
||||
CreateTime time.Time
|
||||
UpdateTime time.Time
|
||||
}
|
||||
|
||||
func (m *Attribute) TableName() string {
|
||||
return "attribute"
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
type Event struct {
|
||||
ID int `gorm:"primarykey" readonly:"true"`
|
||||
Appid int
|
||||
EventName string
|
||||
ShowName string
|
||||
YesterdayCount int
|
||||
CreateTime time.Time
|
||||
UpdateTime time.Time
|
||||
}
|
||||
|
||||
func (m *Event) TableName() string {
|
||||
return "mata_event"
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package model
|
||||
|
||||
type EventAttribute struct {
|
||||
ID int `gorm:"primarykey" readonly:"true"`
|
||||
AppId int
|
||||
EventName string
|
||||
EventAttr string
|
||||
}
|
||||
|
||||
func (m *EventAttribute) TableName() string {
|
||||
return "meta_attr_relation"
|
||||
}
|
@ -137,21 +137,26 @@ func parseStr2FieldValue(field reflect.StructField, rawValue any) (realSetValue
|
||||
typeName := field.Type.String()
|
||||
if typeName == "[]string" {
|
||||
list := make([]string, 0)
|
||||
if rawValueStr, ok := rawValue.(string); ok {
|
||||
elems := strings.Split(rawValueStr, ",")
|
||||
list = append(list, elems...)
|
||||
// 空的字符串
|
||||
if rawValue == nil {
|
||||
|
||||
} else {
|
||||
if rawValueList, ok := rawValue.([]string); ok {
|
||||
for _, v := range rawValueList {
|
||||
list = append(list, v)
|
||||
}
|
||||
if rawValueStr, ok := rawValue.(string); ok {
|
||||
elems := strings.Split(rawValueStr, ",")
|
||||
list = append(list, elems...)
|
||||
// 空的字符串
|
||||
} else {
|
||||
for _, v := range rawValue.([]interface{}) {
|
||||
list = append(list, v.(string))
|
||||
if rawValueList, ok := rawValue.([]string); ok {
|
||||
for _, v := range rawValueList {
|
||||
list = append(list, v)
|
||||
}
|
||||
} else {
|
||||
for _, v := range rawValue.([]interface{}) {
|
||||
list = append(list, v.(string))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parsedValue = list
|
||||
}
|
||||
//else if typeName == "[]*model.MailAttachItem" {
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user