change add user

This commit is contained in:
goder-zhang 2026-03-03 01:54:22 +00:00
parent 3691cfe8b2
commit eeb46924fb
8 changed files with 235 additions and 33 deletions

View File

@ -3,20 +3,22 @@ package sqs
import ( import (
"bygdata/global" "bygdata/global"
"bygdata/model/awssqs" "bygdata/model/awssqs"
"bygdata/service/account"
"context" "context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs"
"go.uber.org/zap"
"os" "os"
"os/signal" "os/signal"
"strings" "strings"
"sync" "sync"
"syscall" "syscall"
"time" "time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs"
"go.uber.org/zap"
) )
func ProcessSqsMessage() { func ProcessSqsMessage() {
@ -189,7 +191,7 @@ func processMessage(svc *sqs.SQS, queueURL string, msg *sqs.Message) {
// 如果处理时间可能较长,延长可见性超时 // 如果处理时间可能较长,延长可见性超时
// 这里可以根据实际处理逻辑动态调整 // 这里可以根据实际处理逻辑动态调整
extendVisibilityTimeout(svc, queueURL, msg, 600) // 延长到 10 分钟 //extendVisibilityTimeout(svc, queueURL, msg, 600) // 延长到 10 分钟
// 在这里处理接收到的消息 // 在这里处理接收到的消息
var sqsMessage awssqs.SqsMessage var sqsMessage awssqs.SqsMessage
@ -212,12 +214,44 @@ func processMessage(svc *sqs.SQS, queueURL string, msg *sqs.Message) {
global.GVA_LOG.Info("Processing create user action", zap.String("msgId", msgId), global.GVA_LOG.Info("Processing create user action", zap.String("msgId", msgId),
zap.Int32("msg_action", int32(sqsMessage.Action)), zap.String("msg_content", sqsMessage.Content)) zap.Int32("msg_action", int32(sqsMessage.Action)), zap.String("msg_content", sqsMessage.Content))
if sqsMessage.Action == awssqs.SqsActionCreateUser { if sqsMessage.Action == awssqs.SqsActionCreateUser {
// TODO: 实现创建用户的逻辑 global.GVA_LOG.Info("Processing SqsActionCreateUser", zap.String("msgId", msgId))
global.GVA_LOG.Info("Processing create user action", zap.String("msgId", msgId)) account.CreateUser(sqsMessage.Content)
// 这里应该调用实际的处理逻辑 } else if sqsMessage.Action == awssqs.SqsActionIncreaseBetTotal {
// processErr = handleCreateUser(sqsMessage) global.GVA_LOG.Info("Processing SqsActionIncreaseBetTotal", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionDecreaseBetTotal {
global.GVA_LOG.Info("Processing SqsActionDecreaseBetTotal", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionDeductWithdrawLimitAfterTransfer {
// 处理"回收后才结算"的情况:创建账变记录扣除稽核流水(余额不变)
global.GVA_LOG.Info("Processing SqsActionDeductWithdrawLimitAfterTransfer", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionInviteCratesCheck {
global.GVA_LOG.Info("Processing SqsActionInviteCratesCheck", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionInviteBonusCheck {
global.GVA_LOG.Info("Processing SqsActionInviteBonusCheck", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionLoginIpCheck {
global.GVA_LOG.Info("Processing SqsActionLoginIpCheck", zap.String("msgId", msgId))
account.CreateUserCheck(sqsMessage.Content)
} else if sqsMessage.Action == awssqs.SqsActionExportData {
global.GVA_LOG.Info("Processing SqsActionExportData", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionSendEmailVerifyCode {
global.GVA_LOG.Info("Processing SqsActionSendEmailVerifyCode", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionDailyQuestProcess {
global.GVA_LOG.Info("Processing SqsActionDailyQuestProcess", zap.String("msgId", msgId))
} else if sqsMessage.Action == awssqs.SqsActionDepositSuccess {
var req awssqs.SqsActionDepositSuccessContent
err = json.Unmarshal([]byte(sqsMessage.Content), &req)
if err != nil {
return
}
fmt.Fprintf(os.Stderr, "[SQS处理] 解析充值成功消息成功: userno=%s, orderno=%s, depositTimes=%d, depositAmount=%s\n",
req.Userno, req.Orderno, req.DepositTimes, req.DepositAmount.String())
} else if sqsMessage.Action == awssqs.SqsActionVisit {
global.GVA_LOG.Info("Processing SqsActionVisit", zap.String("msgId", msgId))
account.UpdateUser(sqsMessage.Content)
} else if sqsMessage.Action == awssqs.SqsActionSaveBonus {
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 { } else {
global.GVA_LOG.Warn("Unknown action", global.GVA_LOG.Warn("Unknown action",
zap.String("action", string(sqsMessage.Action)), zap.String("action", string(sqsMessage.Action)),

View File

@ -74,16 +74,16 @@ captcha:
# mysql connect configuration # mysql connect configuration
# 未初始化之前请勿手动修改数据库信息如果一定要手动初始化请看https://gin-vue-admin.com/docs/first_master # 未初始化之前请勿手动修改数据库信息如果一定要手动初始化请看https://gin-vue-admin.com/docs/first_master
mysql: mysql:
path: "goder2.cpccmm68qb1d.ap-southeast-1.rds.amazonaws.com" path: "xpink-prod-mysql.cjkmm024cf76.ap-east-1.rds.amazonaws.com"
port: "3306" port: "3306"
config: "charset=utf8mb4&parseTime=True&loc=Local" config: "charset=utf8mb4&parseTime=True&loc=Local"
db-name: "byg_data" db-name: "byg_data"
username: "admin" username: "admin"
password: "vH2GkUxz2398GmDTy" password: "keN2<n!Cj<GC|#T_wwwscqNz(o?U"
max-idle-conns: 10 max-idle-conns: 10
max-open-conns: 100 max-open-conns: 100
log-mode: "" log-mode: "info"
log-zap: false log-zap: true
# pgsql connect configuration # pgsql connect configuration
# 未初始化之前请勿手动修改数据库信息如果一定要手动初始化请看https://gin-vue-admin.com/docs/first_master # 未初始化之前请勿手动修改数据库信息如果一定要手动初始化请看https://gin-vue-admin.com/docs/first_master
@ -102,16 +102,16 @@ db-list:
- disable: false # 是否禁用 - disable: false # 是否禁用
type: "mysql" # 数据库的类型,目前支持mysql、pgsql、mssql、oracle type: "mysql" # 数据库的类型,目前支持mysql、pgsql、mssql、oracle
alias-name: "byg_data" # 数据库的名称,注意: alias-name 需要在db-list中唯一 alias-name: "byg_data" # 数据库的名称,注意: alias-name 需要在db-list中唯一
path: "goder2.cpccmm68qb1d.ap-southeast-1.rds.amazonaws.com" path: "xpink-prod-mysql.cjkmm024cf76.ap-east-1.rds.amazonaws.com"
port: "3306" port: "3306"
config: "charset=utf8mb4&parseTime=True&loc=Local" config: "charset=utf8mb4&parseTime=True&loc=Local"
db-name: "byg_data" db-name: "byg_data"
username: "admin" username: "admin"
password: "vH2GkUxz2398GmDTy" password: "keN2<n!Cj<GC|#T_wwwscqNz(o?U"
max-idle-conns: 10 max-idle-conns: 10
max-open-conns: 100 max-open-conns: 100
log-mode: "debug" log-mode: "info"
log-zap: false log-zap: true
# local configuration # local configuration
local: local:

View File

@ -12,3 +12,9 @@ type GVA_MODEL struct {
UpdatedAt time.Time // 更新时间 UpdatedAt time.Time // 更新时间
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 删除时间 DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 删除时间
} }
type GVA_MODEL2 struct {
ID uint `gorm:"primarykey" json:"ID"` // 主键ID
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}

8
go.mod
View File

@ -31,6 +31,7 @@ require (
github.com/redis/go-redis/v9 v9.7.0 github.com/redis/go-redis/v9 v9.7.0
github.com/robfig/cron/v3 v3.0.1 github.com/robfig/cron/v3 v3.0.1
github.com/shirou/gopsutil/v3 v3.24.5 github.com/shirou/gopsutil/v3 v3.24.5
github.com/shopspring/decimal v1.4.0
github.com/songzhibin97/gkit v1.2.13 github.com/songzhibin97/gkit v1.2.13
github.com/spf13/viper v1.19.0 github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.10.0 github.com/stretchr/testify v1.10.0
@ -68,12 +69,13 @@ require (
github.com/bodgit/sevenzip v1.6.0 // indirect github.com/bodgit/sevenzip v1.6.0 // indirect
github.com/bodgit/windows v1.0.1 // indirect github.com/bodgit/windows v1.0.1 // indirect
github.com/buger/jsonparser v1.1.1 // indirect github.com/buger/jsonparser v1.1.1 // indirect
github.com/bytedance/sonic v1.12.7 // indirect github.com/bytedance/gopkg v0.1.3 // indirect
github.com/bytedance/sonic/loader v0.2.3 // indirect github.com/bytedance/sonic v1.15.0 // indirect
github.com/bytedance/sonic/loader v0.5.0 // indirect
github.com/casbin/govaluate v1.3.0 // indirect github.com/casbin/govaluate v1.3.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/clbanning/mxj v1.8.4 // indirect github.com/clbanning/mxj v1.8.4 // indirect
github.com/cloudwego/base64x v0.1.5 // indirect github.com/cloudwego/base64x v0.1.6 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect

21
go.sum
View File

@ -73,11 +73,12 @@ github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
github.com/bytedance/sonic v1.12.7 h1:CQU8pxOy9HToxhndH0Kx/S1qU/CuS9GnKYrGioDcU1Q= github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
github.com/bytedance/sonic v1.12.7/go.mod h1:tnbal4mxOMju17EGfknm2XyYcpyCnIROYOEYuemj13I= github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
github.com/bytedance/sonic/loader v0.2.3 h1:yctD0Q3v2NOGfSWPLPvG2ggA2kV6TS6s4wioyEqssH0= github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
github.com/bytedance/sonic/loader v0.2.3/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
github.com/casbin/casbin/v2 v2.103.0 h1:dHElatNXNrr8XcseUov0ZSiWjauwmZZE6YMV3eU1yic= github.com/casbin/casbin/v2 v2.103.0 h1:dHElatNXNrr8XcseUov0ZSiWjauwmZZE6YMV3eU1yic=
github.com/casbin/casbin/v2 v2.103.0/go.mod h1:Ee33aqGrmES+GNL17L0h9X28wXuo829wnNUnS0edAco= github.com/casbin/casbin/v2 v2.103.0/go.mod h1:Ee33aqGrmES+GNL17L0h9X28wXuo829wnNUnS0edAco=
github.com/casbin/gorm-adapter/v3 v3.32.0 h1:Au+IOILBIE9clox5BJhI2nA3p9t7Ep1ePlupdGbGfus= github.com/casbin/gorm-adapter/v3 v3.32.0 h1:Au+IOILBIE9clox5BJhI2nA3p9t7Ep1ePlupdGbGfus=
@ -93,9 +94,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn
github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I=
github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=
github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -292,12 +292,10 @@ github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zt
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
@ -419,6 +417,8 @@ github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFt
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/sijms/go-ora/v2 v2.7.17 h1:M/pYIqjaMUeBxyzOWp2oj4ntF6fHSBloJWGNH9vbmsU= github.com/sijms/go-ora/v2 v2.7.17 h1:M/pYIqjaMUeBxyzOWp2oj4ntF6fHSBloJWGNH9vbmsU=
github.com/sijms/go-ora/v2 v2.7.17/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= github.com/sijms/go-ora/v2 v2.7.17/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk=
github.com/songzhibin97/gkit v1.2.13 h1:paY0XJkdRuy9/8k9nTnbdrzo8pC22jIIFldUkOQv5nU= github.com/songzhibin97/gkit v1.2.13 h1:paY0XJkdRuy9/8k9nTnbdrzo8pC22jIIFldUkOQv5nU=
@ -841,7 +841,6 @@ modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

18
model/account/account.go Normal file
View File

@ -0,0 +1,18 @@
package account
import (
"bygdata/global"
"time"
)
type UserInfo struct {
global.GVA_MODEL2
Userno string `json:"userno" gorm:"column:userno"`
ClientIp string `json:"clientIp" gorm:"column:client_ip"`
RegisterTime time.Time `json:"registerTime" gorm:"column:register_time"`
LatestTime time.Time `json:"latestTime" gorm:"column:latest_time"`
}
func (UserInfo) TableName() string {
return "byl_data.user_info"
}

View File

@ -1,5 +1,11 @@
package awssqs package awssqs
import (
"encoding/json"
"github.com/shopspring/decimal"
)
type SqsMessage struct { type SqsMessage struct {
Action SqsAction `json:"action"` Action SqsAction `json:"action"`
Content string `json:"content"` Content string `json:"content"`
@ -51,3 +57,68 @@ var SqsActionMap = map[SqsAction]struct {
SqsActionGenDepositDailyClaim: {Id: 120, Name: "SqsActionGenDepositDailyClaim"}, SqsActionGenDepositDailyClaim: {Id: 120, Name: "SqsActionGenDepositDailyClaim"},
SqsActionDeductWithdrawLimitAfterTransfer: {Id: 130, Name: "SqsActionDeductWithdrawLimitAfterTransfer"}, SqsActionDeductWithdrawLimitAfterTransfer: {Id: 130, Name: "SqsActionDeductWithdrawLimitAfterTransfer"},
} }
type SqsActionRegisterContent struct {
Userno string `json:"userno"`
ClientIp string `json:"clientIp"`
}
type LoginIpCheck struct {
Userno string `json:"userno"`
Ip string `json:"ip"`
}
type SqsActionSendEmailVerifyCodeContent struct {
Email string `json:"email"`
Lang string `json:"lang"`
}
type SqsActionDailyQuestProcessContent struct {
Userno string `json:"userno"`
QuestType string `json:"questType"`
IncreaseProcess string `json:"increaseProcess"`
}
type SqsActionDepositSuccessContent struct {
Orderno string `json:"orderno"`
Userno string `json:"userno"`
DepositAmount decimal.Decimal `json:"depositAmount"`
SuccessTime int64 `json:"successTime"`
DepositTimes int32 `json:"depositTimes"`
BonusId string `json:"bonusId"`
}
type SqsActionWebSocketInitContent struct {
Userno string `json:"userno"`
ConnectId string `json:"userno"`
}
type SqsActionSaveBonusContent struct {
Userno string `json:"userno"`
BonusCategory int32 `json:"bonusCategory"`
BonusType int32 `json:"bonusType"`
BonusDetail string `json:"bonusDetail"`
SourceId string `json:"sourceId"`
DoneValue string `json:"doneValue"`
BonusAmount string `json:"bonusAmount"`
ClaimTime int64 `json:"claimTime"`
}
type SqsActionGenDepositDailyClaimContent struct {
UserPromotionId uint64 `json:"userPromotionId"`
}
type SqsActionDeductWithdrawLimitAfterTransferContent struct {
Userno string `json:"userno"`
BetOrderno string `json:"betOrderno"`
ValidBetAmount decimal.Decimal `json:"validBetAmount"`
ProviderId int32 `json:"providerId"`
SourceType int32 `json:"sourceType"` // WalletRecordSourceType
}
func (m SqsMessage) Json() (string, error) {
marshal, err := json.Marshal(m)
if err != nil {
return "", err
}
return string(marshal), nil
}

View File

@ -0,0 +1,72 @@
package account
import (
"bygdata/global"
"bygdata/model/account"
"bygdata/model/awssqs"
"encoding/json"
"time"
"go.uber.org/zap"
"gorm.io/gorm/clause"
)
func CreateUser(sqsContent string) {
var userData awssqs.SqsActionRegisterContent
err := json.Unmarshal([]byte(sqsContent), &userData)
if err != nil {
global.GVA_LOG.Warn("Sqs message unmarshal error, will retry", zap.String("content", sqsContent), zap.Error(err))
return
}
now := time.Now()
err = global.GVA_DB.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "userno"}},
DoUpdates: clause.Assignments(map[string]interface{}{
"client_ip": userData.ClientIp,
"latest_time": now,
}),
}).Create(&account.UserInfo{
Userno: userData.Userno,
ClientIp: userData.ClientIp,
RegisterTime: now,
LatestTime: now,
}).Error
if err != nil {
global.GVA_LOG.Warn("Sqs message create error", zap.String("content", sqsContent), zap.Error(err))
}
}
func CreateUserCheck(sqsContent string) {
var userData awssqs.LoginIpCheck
err := json.Unmarshal([]byte(sqsContent), &userData)
if err != nil {
global.GVA_LOG.Warn("Sqs message unmarshal error, will retry", zap.String("content", sqsContent), zap.Error(err))
return
}
now := time.Now()
err = global.GVA_DB.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "userno"}},
DoUpdates: clause.Assignments(map[string]interface{}{
"client_ip": userData.Ip,
"latest_time": now,
}),
}).Create(&account.UserInfo{
Userno: userData.Userno,
ClientIp: userData.Ip,
RegisterTime: now,
LatestTime: now,
}).Error
if err != nil {
global.GVA_LOG.Warn("Sqs message create error", zap.String("content", sqsContent), zap.Error(err))
}
}
func UpdateUser(userno string) {
now := time.Now()
err := global.GVA_DB.Model(&account.UserInfo{}).Where("userno = ?", userno).Update("latest_time", now).Error
if err != nil {
global.GVA_LOG.Warn("Sqs message update error", zap.String("userno", userno), zap.Error(err))
}
}