This commit is contained in:
goder-zhang 2026-03-09 15:39:11 +00:00
parent f8f7fd76e4
commit 27e1cc91fd
4 changed files with 129 additions and 1 deletions

View File

@ -19,6 +19,7 @@ import (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs"
"go.uber.org/zap"
"gorm.io/datatypes"
)
func ProcessSqsMessage() {
@ -252,6 +253,56 @@ func processMessage(svc *sqs.SQS, queueURL string, msg *sqs.Message) {
global.GVA_LOG.Info("Processing SqsActionSaveBonus", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionGenDepositDailyClaim {
global.GVA_LOG.Info("Processing SqsActionGenDepositDailyClaim", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionUserBehaviorRegister ||
sqsMessage.Action == awssqs.SqsActionUserBehaviorLogin ||
sqsMessage.Action == awssqs.SqsActionUserBehaviorEditPassword ||
sqsMessage.Action == awssqs.SqsActionUserBehaviorEditPayPassword ||
sqsMessage.Action == awssqs.SqsActionUserBehaviorUpdateWallet {
global.GVA_LOG.Info("Processing SqsActionUserBehavior", zap.String("msgId", msgId), zap.String("action", sqsMessage.Action.GetName()))
var req awssqs.SqsActionUserBehaviorContent
err = json.Unmarshal([]byte(sqsMessage.Content), &req)
if err != nil {
processErr = err
} else {
log := awssqs.SqsUserBehaviorLog{
ActionId: int32(sqsMessage.Action),
Userno: req.Userno,
Ip: req.Ip,
Phone: req.Phone,
}
if req.Header != "" {
log.Header = datatypes.JSON([]byte(req.Header))
}
err = global.GVA_DB.Create(&log).Error
if err != nil {
processErr = err
global.GVA_LOG.Error("Save SqsUserBehaviorLog error", zap.Error(err))
}
}
} else if sqsMessage.Action == awssqs.SqsActionWalletBalanceChange {
global.GVA_LOG.Info("Processing SqsActionWalletBalanceChange", zap.String("msgId", msgId))
var req awssqs.SqsActionWalletBalanceChangeContent
err = json.Unmarshal([]byte(sqsMessage.Content), &req)
if err != nil {
processErr = err
} else {
log := awssqs.SqsWalletBalanceChangeLog{
Userno: req.Userno,
Amount: req.Amount,
SourceType: req.SourceType,
SourceId: req.SourceId,
GameId: req.GameId,
BeforeBalance: req.BeforeBalance,
AfterBalance: req.AfterBalance,
RecordNo: req.RecordNo,
}
err = global.GVA_DB.Create(&log).Error
if err != nil {
processErr = err
global.GVA_LOG.Error("Save SqsWalletBalanceChangeLog error", zap.Error(err))
}
}
} else {
global.GVA_LOG.Warn("Unknown action",
zap.String("action", string(sqsMessage.Action)),

View File

@ -2,13 +2,18 @@ package initialize
import (
"bygdata/global"
"bygdata/model/awssqs"
)
func bizModel() error {
db := global.GVA_DB
err := db.AutoMigrate()
err := db.AutoMigrate(
&awssqs.SqsUserBehaviorLog{},
&awssqs.SqsWalletBalanceChangeLog{},
)
if err != nil {
return err
}
return nil
}

View File

@ -36,6 +36,14 @@ const (
SqsActionInviteBonusCheck = SqsAction(110)
SqsActionGenDepositDailyClaim = SqsAction(120)
SqsActionDeductWithdrawLimitAfterTransfer = SqsAction(130) // 回收后才结算,扣除稽核流水
// 用户行为日志
SqsActionUserBehaviorRegister = SqsAction(200) // 注册
SqsActionUserBehaviorLogin = SqsAction(201) // 登录
SqsActionUserBehaviorEditPassword = SqsAction(202) // 修改登录密码
SqsActionUserBehaviorEditPayPassword = SqsAction(203) // 修改支付密码
SqsActionUserBehaviorUpdateWallet = SqsAction(204) // 更新钱包地址(绑定钱包/银行卡)
SqsActionWalletBalanceChange = SqsAction(205) // 用户账户余额变更(充值、提现、游戏交易)
)
var SqsActionMap = map[SqsAction]struct {
@ -56,6 +64,13 @@ var SqsActionMap = map[SqsAction]struct {
SqsActionInviteBonusCheck: {Id: 110, Name: "SqsActionInviteBonus"},
SqsActionGenDepositDailyClaim: {Id: 120, Name: "SqsActionGenDepositDailyClaim"},
SqsActionDeductWithdrawLimitAfterTransfer: {Id: 130, Name: "SqsActionDeductWithdrawLimitAfterTransfer"},
SqsActionUserBehaviorRegister: {Id: 200, Name: "SqsActionUserBehaviorRegister"},
SqsActionUserBehaviorLogin: {Id: 201, Name: "SqsActionUserBehaviorLogin"},
SqsActionUserBehaviorEditPassword: {Id: 202, Name: "SqsActionUserBehaviorEditPassword"},
SqsActionUserBehaviorEditPayPassword: {Id: 203, Name: "SqsActionUserBehaviorEditPayPassword"},
SqsActionUserBehaviorUpdateWallet: {Id: 204, Name: "SqsActionUserBehaviorUpdateWallet"},
SqsActionWalletBalanceChange: {Id: 205, Name: "SqsActionWalletBalanceChange"},
}
type SqsActionRegisterContent struct {
@ -115,6 +130,26 @@ type SqsActionDeductWithdrawLimitAfterTransferContent struct {
SourceType int32 `json:"sourceType"` // WalletRecordSourceType
}
// SqsActionUserBehaviorContent 用户行为日志:注册、登录、修改密码、修改支付密码、更新钱包地址
type SqsActionUserBehaviorContent struct {
Userno string `json:"userno"`
Ip string `json:"ip"`
Header string `json:"header"`
Phone string `json:"phone,omitempty"` // 手机号(注册时有值)
}
// 用户账户余额变更:充值、提现、游戏交易
type SqsActionWalletBalanceChangeContent struct {
Userno string `json:"userno"`
Amount string `json:"amount"` // 变更金额(正=加,负=减)
SourceType int32 `json:"sourceType"` // WalletRecordSourceType
SourceId string `json:"sourceId"` // 订单号/actionId等
GameId string `json:"gameId"` // 游戏ID游戏交易时有值
BeforeBalance string `json:"beforeBalance"` // 变更前余额
AfterBalance string `json:"afterBalance"` // 变更后余额
RecordNo string `json:"recordNo"` // 账变流水号
}
func (m SqsMessage) Json() (string, error) {
marshal, err := json.Marshal(m)
if err != nil {

37
model/awssqs/sqs_log.go Normal file
View File

@ -0,0 +1,37 @@
package awssqs
import (
"bygdata/global"
"gorm.io/datatypes"
)
type SqsUserBehaviorLog struct {
global.GVA_MODEL2
ActionId int32 `json:"actionId" gorm:"column:action_id;comment:行为ID;index"`
Userno string `json:"userno" gorm:"column:userno;comment:用户号;index"`
Ip string `json:"ip" gorm:"column:ip;comment:IP地址"`
Header datatypes.JSON `json:"header" gorm:"column:header;comment:请求头(key-value)"`
Phone string `json:"phone" gorm:"column:phone;comment:手机号"`
}
func (SqsUserBehaviorLog) TableName() string {
return "byl_data.sqs_user_behavior_log"
}
type SqsWalletBalanceChangeLog struct {
global.GVA_MODEL2
Userno string `json:"userno" gorm:"column:userno;comment:用户号;index"`
Amount string `json:"amount" gorm:"column:amount;comment:变更金额"`
SourceType int32 `json:"sourceType" gorm:"column:source_type;comment:来源类型"`
SourceId string `json:"sourceId" gorm:"column:source_id;comment:来源ID;index"`
GameId string `json:"gameId" gorm:"column:game_id;comment:游戏ID"`
BeforeBalance string `json:"beforeBalance" gorm:"column:before_balance;comment:变更前余额"`
AfterBalance string `json:"afterBalance" gorm:"column:after_balance;comment:变更后余额"`
RecordNo string `json:"recordNo" gorm:"column:record_no;comment:账变流水号"`
}
func (SqsWalletBalanceChangeLog) TableName() string {
return "byl_data.sqs_wallet_balance_change_log"
}