fix: some api bug

This commit is contained in:
wwweww
2026-03-31 22:12:06 +08:00
parent c5ff4f0216
commit e7970ac25f
219 changed files with 16195 additions and 2126 deletions
+10 -1
View File
@@ -7,5 +7,14 @@ Prometheus:
Port: 4001
Path: /metrics
# ===== PROC CONF =====
#GameRpcConf:
# Target: k8s://juwan/game-rpc-svc:8080
# ===== DEV CONF =====
GameRpcConf:
Target: k8s://juwan/game-rpc-svc:8080
Endpoints:
- game-rpc:8080
Log:
Level: debug
+3
View File
@@ -6,6 +6,7 @@ package main
import (
"flag"
"fmt"
"juwan-backend/common/middlewares"
"juwan-backend/app/game/api/internal/config"
"juwan-backend/app/game/api/internal/handler"
@@ -24,6 +25,8 @@ func main() {
conf.MustLoad(*configFile, &c)
server := rest.MustNewServer(c.RestConf)
server.Use(middlewares.NewRequestMiddleware().Handle)
server.Use(middlewares.NewHeaderExtractorMiddleware().Handle)
defer server.Stop()
ctx := svc.NewServiceContext(c)
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package game
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/game/api/internal/logic/game"
"juwan-backend/app/game/api/internal/svc"
"juwan-backend/app/game/api/internal/types"
)
// 创建游戏
func CreateGameHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.Game
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := game.NewCreateGameLogic(r.Context(), svcCtx)
resp, err := l.CreateGame(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
+6
View File
@@ -21,6 +21,12 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
Path: "/",
Handler: game.ListGamesHandler(serverCtx),
},
{
// 创建游戏
Method: http.MethodPost,
Path: "/",
Handler: game.CreateGameHandler(serverCtx),
},
{
// 获取游戏详情
Method: http.MethodGet,
@@ -0,0 +1,46 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package game
import (
"context"
"errors"
"juwan-backend/app/game/rpc/pb"
"juwan-backend/app/game/api/internal/svc"
"juwan-backend/app/game/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type CreateGameLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 创建游戏
func NewCreateGameLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateGameLogic {
return &CreateGameLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *CreateGameLogic) CreateGame(req *types.Game) (resp *types.Game, err error) {
// todo: add your logic here and delete this line
_, err = l.svcCtx.GameRpc.AddGames(l.ctx, &pb.AddGamesReq{
Name: req.Name,
Icon: req.Icon,
Category: req.Category,
IsActive: false,
})
if err != nil {
logx.Errorf("add game err: %v", err)
return nil, errors.New("add game err")
}
return &types.Game{}, nil
}
@@ -35,6 +35,7 @@ func (l *ListGamesLogic) ListGames(req *types.PageReq) (resp *types.GameListResp
Limit: req.Limit,
})
if err != nil {
logx.Errorf("ListGames err:%v", err)
return nil, err
}
+31 -14
View File
@@ -6,23 +6,40 @@ Prometheus:
Port: 4001
Path: /metrics
DB:
Master: "postgresql://${PD_USERNAME}:${DB_PASSWORD}@user-db-rw.juwan:${DB_PORT}/${DB_NAME}?sslmode=disable"
Slaves: "postgresql://${PD_USERNAME}:${DB_PASSWORD}@user-db-ro.juwan:${DB_PORT}/${DB_NAME}?sslmode=disable"
# ===== PROC CONF =====
#DB:
# Master: "postgresql://${PD_USERNAME}:${DB_PASSWORD}@user-db-rw.juwan:${DB_PORT}/${DB_NAME}?sslmode=disable"
# Slaves: "postgresql://${PD_USERNAME}:${DB_PASSWORD}@user-db-ro.juwan:${DB_PORT}/${DB_NAME}?sslmode=disable"
#
#
#SnowflakeRpcConf:
# Target: k8s://juwan/snowflake-svc:8080
#
#CacheConf:
# - Host: "${REDIS_M_HOST}"
# Type: node
# Pass: "${REDIS_PASSWORD}"
# User: "default"
# - Host: "${REDIS_S_HOST}"
# Type: node
# Pass: "${REDIS_PASSWORD}"
# User: "default"
#
#Log:
# Level: info
# ===== DEV CONF =====
SnowflakeRpcConf:
Target: k8s://juwan/snowflake-svc:8080
Endpoints:
- snowflake:8080
DB:
Master: "postgresql://${PD_USERNAME}:${DB_PASSWORD}@postgres:${DB_PORT}/${DB_NAME}?sslmode=disable"
Slaves: "postgresql://${PD_USERNAME}:${DB_PASSWORD}@postgres:${DB_PORT}/${DB_NAME}?sslmode=disable"
CacheConf:
- Host: "${REDIS_M_HOST}"
- Host: "${REDIS_HOST}:${REDIS_PORT}"
Type: node
Pass: "${REDIS_PASSWORD}"
User: "default"
- Host: "${REDIS_S_HOST}"
Type: node
Pass: "${REDIS_PASSWORD}"
User: "default"
Log:
Level: info
Level: debug
+1 -1
View File
@@ -37,7 +37,7 @@ func (l *AddGamesLogic) AddGames(in *pb.AddGamesReq) (*pb.AddGamesResp, error) {
SetName(in.Name).
SetIcon(in.Icon).
SetCategory(in.Category).
SetSortOrder(int(in.SortOrder)).
SetSortOrder(0).
Save(l.ctx)
if err != nil {
logx.Errorf("AddGamesLogic.addGames err:%v", err)
@@ -6,6 +6,7 @@ import (
"juwan-backend/app/game/rpc/internal/svc"
"juwan-backend/app/game/rpc/pb"
"ariga.io/entcache"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -25,14 +26,19 @@ func NewSearchGamesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Searc
}
func (l *SearchGamesLogic) SearchGames(in *pb.SearchGamesReq) (*pb.SearchGamesResp, error) {
notFoundErr := entcache.ErrNotFound
if in.Page <= 0 || in.Limit <= 0 || in.Page > 1000 || in.Limit > 100 {
return nil, errors.New("invalid pagination parameters")
}
all, err := l.svcCtx.GameModelRO.Games.Query().Limit(int(in.Limit)).Offset(int(in.Limit * (in.Page - 1))).All(l.ctx)
if err != nil {
if err != nil && !errors.As(err, &notFoundErr) {
logx.Errorf("failed to query games: %v", err)
return nil, errors.New("failed to query games")
}
logx.Debugf("games: %v", all)
if err != nil {
return &pb.SearchGamesResp{}, nil
}
list := make([]*pb.Games, 0, len(all))
for _, v := range all {
temp := &pb.Games{}
+6 -2
View File
@@ -1,6 +1,7 @@
package svc
import (
stdsql "database/sql"
"juwan-backend/app/game/rpc/internal/config"
"juwan-backend/app/game/rpc/internal/models"
"juwan-backend/app/snowflake/rpc/snowflake"
@@ -10,6 +11,7 @@ import (
"time"
"ariga.io/entcache"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"github.com/zeromicro/go-zero/core/logx"
@@ -24,14 +26,16 @@ type ServiceContext struct {
}
func NewServiceContext(c config.Config) *ServiceContext {
RWConn, err := sql.Open("pgx", c.DB.Master)
rawRW, err := stdsql.Open("pgx", c.DB.Master)
if err != nil {
panic(err)
}
ROConn, err := sql.Open("pgx", c.DB.Slaves)
rawRO, err := stdsql.Open("pgx", c.DB.Slaves)
if err != nil {
panic(err)
}
RWConn := sql.OpenDB(dialect.Postgres, rawRW)
ROConn := sql.OpenDB(dialect.Postgres, rawRO)
redisCluster, err := redisx.ConnectMasterSlaveCluster(c.CacheConf, 5*time.Second)
if redisCluster == nil || err != nil {