修复bug

This commit is contained in:
liuxiaobo 2025-06-15 13:41:57 +08:00
parent c791e6f54c
commit eb2d4ad973
8 changed files with 35 additions and 38 deletions

6
go.mod
View File

@ -16,7 +16,7 @@ require (
github.com/golang/protobuf v1.5.4 github.com/golang/protobuf v1.5.4
github.com/google/uuid v1.6.0 github.com/google/uuid v1.6.0
github.com/nats-io/nats.go v1.42.0 github.com/nats-io/nats.go v1.42.0
golang.org/x/crypto v0.38.0 golang.org/x/crypto v0.39.0
google.golang.org/protobuf v1.33.0 google.golang.org/protobuf v1.33.0
gorm.io/datatypes v1.2.5 gorm.io/datatypes v1.2.5
gorm.io/gorm v1.30.0 gorm.io/gorm v1.30.0
@ -31,12 +31,10 @@ require (
github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-semver v0.3.0 // indirect
github.com/coreos/go-systemd/v22 v22.3.2 // indirect github.com/coreos/go-systemd/v22 v22.3.2 // 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/dromara/carbon/v2 v2.6.5 // indirect
github.com/go-faster/city v1.0.1 // indirect github.com/go-faster/city v1.0.1 // indirect
github.com/go-faster/errors v0.7.1 // indirect github.com/go-faster/errors v0.7.1 // indirect
github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-module/carbon/v2 v2.6.5 // indirect
github.com/gorilla/websocket v1.5.3 // indirect github.com/gorilla/websocket v1.5.3 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect
@ -54,7 +52,7 @@ require (
go.etcd.io/etcd/client/v3 v3.5.19 // indirect go.etcd.io/etcd/client/v3 v3.5.19 // indirect
go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel v1.36.0 // indirect
go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect
golang.org/x/net v0.40.0 // indirect golang.org/x/net v0.41.0 // indirect
golang.org/x/sys v0.33.0 // indirect golang.org/x/sys v0.33.0 // indirect
golang.org/x/text v0.26.0 // indirect golang.org/x/text v0.26.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect

12
go.sum
View File

@ -19,8 +19,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dromara/carbon/v2 v2.6.5 h1:OC1k8zGBpSnRoPjezlWeajx+3nCMq7xhZqAS4WWrKmE=
github.com/dromara/carbon/v2 v2.6.5/go.mod h1:7GXqCUplwN1s1b4whGk2zX4+g4CMCoDIZzmjlyt0vLY=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw=
@ -35,8 +33,6 @@ github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqw
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-module/carbon/v2 v2.6.5 h1:C3YpydJZmo77AyMsgQ1QpVDQeLJ0itOa5sQB4Y/jk4I=
github.com/golang-module/carbon/v2 v2.6.5/go.mod h1:JvSYEoe3+OcMnSQyRvUNQFpg0T/4xCq7moHu1S8ESXQ=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
@ -147,8 +143,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@ -156,8 +152,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

View File

@ -39,7 +39,7 @@ BUILD_DIR=$FILE
# 删除旧的编译文件 # 删除旧的编译文件
rm -f bin/$FILE rm -f bin/$FILE
set GOEXPERIMENT=aliastypeparams
go build -ldflags "-X main.GitBranch=$GIT_BRANCH -X main.GitCommit=$GIT_COMMIT_HASH -X main.BuildDate=$BUILD_DATE" -o bin/$FILE $BUILD_DIR/main.go go build -ldflags "-X main.GitBranch=$GIT_BRANCH -X main.GitCommit=$GIT_COMMIT_HASH -X main.BuildDate=$BUILD_DATE" -o bin/$FILE $BUILD_DIR/main.go
# 检查编译是否成功 # 检查编译是否成功

View File

@ -19,6 +19,7 @@ func Run(GitCommit, GitBranch, BuildDate string) {
config.InitLog() config.InitLog()
config.LoadConfig(GitCommit, GitBranch, BuildDate) config.LoadConfig(GitCommit, GitBranch, BuildDate)
log.Info(fmt.Sprintf("版本分支:%v,hash值:%v,编译时间:%v", GitBranch, GitCommit, BuildDate)) log.Info(fmt.Sprintf("版本分支:%v,hash值:%v,编译时间:%v", GitBranch, GitCommit, BuildDate))
initRepo() initRepo()
server.Init() server.Init()

View File

@ -8,7 +8,7 @@ import (
"game/common/proto/pb" "game/common/proto/pb"
"game/common/rpc" "game/common/rpc"
"game/common/userBindService" "game/common/userBindService"
"game/server/chat/model" "game/server/colorgame/model"
"github.com/fox/fox/log" "github.com/fox/fox/log"
"github.com/fox/fox/processor" "github.com/fox/fox/processor"
"github.com/fox/fox/service" "github.com/fox/fox/service"
@ -38,9 +38,16 @@ type ColorRoom struct {
} }
func newColorRoom(id, roomType int, srv service.IService, userMgr *baseroom.PlayerMgr, bindService *userBindService.UserBindService) (baseroom.IRoom, pb.ErrCode) { func newColorRoom(id, roomType int, srv service.IService, userMgr *baseroom.PlayerMgr, bindService *userBindService.UserBindService) (baseroom.IRoom, pb.ErrCode) {
// 初始化房间核心数据
gameId := int(pb.ServiceTypeId_STI_ColorGame) gameId := int(pb.ServiceTypeId_STI_ColorGame)
hundredRoom, code := baseroom.NewHundredRoom(id, roomType, gameId, srv)
if code != pb.ErrCode_OK {
log.ErrorF("new color room err code:%v", code)
return nil, code
}
rm := &ColorRoom{ rm := &ColorRoom{
HundredRoom: nil, HundredRoom: hundredRoom,
userMgr: userMgr, userMgr: userMgr,
bindService: bindService, bindService: bindService,
roomCfg: &game.ColorRoomConfig{}, roomCfg: &game.ColorRoomConfig{},
@ -52,16 +59,10 @@ func newColorRoom(id, roomType int, srv service.IService, userMgr *baseroom.Play
winBetAreaMul: nil, winBetAreaMul: nil,
jackpotMgr: jackpot.NewJackpotMgr(gameId, model.UserRedis), jackpotMgr: jackpot.NewJackpotMgr(gameId, model.UserRedis),
} }
// 初始化数据在OnInit之前完成
rm.trend = rm.initGameTrend() rm.trend = rm.initGameTrend()
rm.resetGameData() rm.resetGameData()
code := pb.ErrCode_OK
rm.HundredRoom, code = baseroom.NewHundredRoom(id, roomType, gameId, srv)
if code != pb.ErrCode_OK {
log.ErrorF("new color room err code:%v", code)
return nil, code
}
// 初始化数据在OnInit之前完成
rm.OnInit() rm.OnInit()
return rm, code return rm, code
} }

View File

@ -9,9 +9,9 @@ import (
"github.com/fox/fox/ksync" "github.com/fox/fox/ksync"
"github.com/fox/fox/log" "github.com/fox/fox/log"
"github.com/fox/fox/xrand" "github.com/fox/fox/xrand"
"github.com/fox/fox/xtime"
"sort" "sort"
"sync" "sync"
"time"
) )
const ( const (
@ -21,7 +21,7 @@ const (
func (rm *ColorRoom) setStatus(status pb.ColorGameStatus) { func (rm *ColorRoom) setStatus(status pb.ColorGameStatus) {
rm.status = status rm.status = status
rm.statusTime = xtime.Now().TimestampMilli() rm.statusTime = time.Now().UnixMilli()
} }
// 状态结束时间点,毫秒 // 状态结束时间点,毫秒
@ -186,7 +186,7 @@ func (rm *ColorRoom) getAreaMul(area pb.ColorBetArea, prizeArea pb.ColorPrizeAre
mul = bam.Mul mul = bam.Mul
prizeType = bam.PrizeType prizeType = bam.PrizeType
} else { } else {
arr2Mul := make([][]*game.ColorMulRate, 5) arr2Mul := make([][]*game.ColorMulRate, 0, 5)
arr2Mul = append(arr2Mul, rm.roomCfg.WinSingleColorMul...) arr2Mul = append(arr2Mul, rm.roomCfg.WinSingleColorMul...)
arr2Mul = append(arr2Mul, rm.roomCfg.WinDoubleColorMul) arr2Mul = append(arr2Mul, rm.roomCfg.WinDoubleColorMul)
arr2Mul = append(arr2Mul, rm.roomCfg.WinThreeColorMul) arr2Mul = append(arr2Mul, rm.roomCfg.WinThreeColorMul)
@ -443,7 +443,7 @@ func (rm *ColorRoom) getNotifyTrend() *pb.NtfColorTrend {
// 五个档位(single有三个加上double,three两个)的赔率范围 // 五个档位(single有三个加上double,three两个)的赔率范围
func (rm *ColorRoom) initPrizeAreaRange() { func (rm *ColorRoom) initPrizeAreaRange() {
rm.prizeAreaRange = rm.prizeAreaRange[0:0] rm.prizeAreaRange = rm.prizeAreaRange[0:0]
arr2Mul := make([][]*game.ColorMulRate, 5) arr2Mul := make([][]*game.ColorMulRate, 0, 5)
arr2Mul = append(arr2Mul, rm.roomCfg.WinSingleColorMul...) arr2Mul = append(arr2Mul, rm.roomCfg.WinSingleColorMul...)
arr2Mul = append(arr2Mul, rm.roomCfg.WinDoubleColorMul) arr2Mul = append(arr2Mul, rm.roomCfg.WinDoubleColorMul)
arr2Mul = append(arr2Mul, rm.roomCfg.WinThreeColorMul) arr2Mul = append(arr2Mul, rm.roomCfg.WinThreeColorMul)
@ -451,7 +451,7 @@ func (rm *ColorRoom) initPrizeAreaRange() {
rm.prizeAreaRange = append(rm.prizeAreaRange, &pb.ColorPrizeAreaRange{ rm.prizeAreaRange = append(rm.prizeAreaRange, &pb.ColorPrizeAreaRange{
Pos: pb.ColorPrizeArea(prizeType), Pos: pb.ColorPrizeArea(prizeType),
MinMul: mul[0].Mul, MinMul: mul[0].Mul,
MaxMul: mul[len(mul)].Mul, MaxMul: mul[len(mul)-1].Mul,
}) })
} }
} }

View File

@ -48,7 +48,7 @@ func (rm *ColorRoom) gameSettle() {
func (rm *ColorRoom) onSecond() { func (rm *ColorRoom) onSecond() {
rm.notifyColorBetAreaInfo() rm.notifyColorBetAreaInfo()
if rm.status < pb.ColorGameStatus_CGS_BetEnd { if rm.status < pb.ColorGameStatus_CGS_BetEnd {
rm.NewTimer(TtGameStart, time.Second) rm.NewTimer(TtSecond, time.Second)
} }
} }

View File

@ -52,14 +52,8 @@ func Stop() {
func newColorService(serviceId int) service.IService { func newColorService(serviceId int) service.IService {
var err error var err error
s := new(ColorService) s := new(ColorService)
s.playerMgr = baseroom.NewPlayerMgr(nil)
factory := &room.RoomFactory{}
s.room, _ = factory.CreateRoom(int(pb.ServiceTypeId_STI_ColorGame), 0, s, s.playerMgr, s.bindService)
s.status = baseroom.SsWorking
//s.roomMgr = baseroom.NewRoomMgr(&room.RoomFactory{})
sName := fmt.Sprintf("%v-%d", serviceName.ColorGame, serviceId) sName := fmt.Sprintf("%v-%d", serviceName.ColorGame, serviceId)
if s.NatsService, err = service.NewNatsService(&service.InitNatsServiceParams{ s.NatsService, err = service.NewNatsService(&service.InitNatsServiceParams{
EtcdAddress: config.Cfg.Etcd.Address, EtcdAddress: config.Cfg.Etcd.Address,
EtcdUsername: "", EtcdUsername: "",
EtcdPassword: "", EtcdPassword: "",
@ -69,14 +63,21 @@ func newColorService(serviceId int) service.IService {
OnFunc: s, OnFunc: s,
TypeId: int(pb.ServiceTypeId_STI_ColorGame), TypeId: int(pb.ServiceTypeId_STI_ColorGame),
Version: config.Cfg.BuildDate, Version: config.Cfg.BuildDate,
}); err != nil { })
if err != nil {
log.Fatal(err.Error()) log.Fatal(err.Error())
return nil return nil
} }
s.bindService = userBindService.NewUserBindService(model.UserBindServiceRedis, s.ServiceEtcd()) s.bindService = userBindService.NewUserBindService(model.UserBindServiceRedis, s.ServiceEtcd())
s.processor = processor.NewProcessor() s.processor = processor.NewProcessor()
s.initProcessor() s.initProcessor()
s.playerMgr = baseroom.NewPlayerMgr(nil)
factory := &room.RoomFactory{}
s.room, _ = factory.CreateRoom(int(pb.ServiceTypeId_STI_ColorGame), 0, s, s.playerMgr, s.bindService)
s.status = baseroom.SsWorking
//s.roomMgr = baseroom.NewRoomMgr(&room.RoomFactory{})
s.OnInit() s.OnInit()
return s return s
} }