fix: api descript

This commit is contained in:
wwweww
2026-02-28 05:33:16 +08:00
parent 5930fb0dde
commit d2f33b4b96
243 changed files with 37065 additions and 780 deletions
+13
View File
@@ -0,0 +1,13 @@
Name: juwan-api
Host: 0.0.0.0
Port: 8888
Prometheus:
Host: 0.0.0.0
Port: 4001
Path: /metrics
# k8s://juwan/<service name>:8080
PlayerRpcConf:
Target: k8s://juwan/player-rpc-svc:8080
+14
View File
@@ -0,0 +1,14 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package config
import (
"github.com/zeromicro/go-zero/rest"
"github.com/zeromicro/go-zero/zrpc"
)
type Config struct {
rest.RestConf
PlayerRpcConf zrpc.RpcClientConf
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 创建服务
func CreateServiceHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.CreateServiceReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewCreateServiceLogic(r.Context(), svcCtx)
resp, err := l.CreateService(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 删除服务
func DeleteServiceHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.EmptyResp
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewDeleteServiceLogic(r.Context(), svcCtx)
resp, err := l.DeleteService(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 获取打手详情
func GetPlayerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.EmptyResp
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewGetPlayerLogic(r.Context(), svcCtx)
resp, err := l.GetPlayer(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 获取服务详情
func GetServiceHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.EmptyResp
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewGetServiceLogic(r.Context(), svcCtx)
resp, err := l.GetService(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 获取指定打手的服务列表
func ListPlayerServicesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.PageReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewListPlayerServicesLogic(r.Context(), svcCtx)
resp, err := l.ListPlayerServices(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 获取打手列表
func ListPlayersHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.PlayerListReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewListPlayersLogic(r.Context(), svcCtx)
resp, err := l.ListPlayers(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 获取所有服务列表
func ListServicesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.PageReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewListServicesLogic(r.Context(), svcCtx)
resp, err := l.ListServices(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 更新接单状态
func UpdatePlayerStatusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.UpdatePlayerStatusReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewUpdatePlayerStatusLogic(r.Context(), svcCtx)
resp, err := l.UpdatePlayerStatus(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/player/api/internal/logic/player"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
)
// 更新服务
func UpdateServiceHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.CreateServiceReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := player.NewUpdateServiceLogic(r.Context(), svcCtx)
resp, err := l.UpdateService(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
+81
View File
@@ -0,0 +1,81 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.9.2
package handler
import (
"net/http"
player "juwan-backend/app/player/api/internal/handler/player"
"juwan-backend/app/player/api/internal/svc"
"github.com/zeromicro/go-zero/rest"
)
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
server.AddRoutes(
[]rest.Route{
{
// 获取打手列表
Method: http.MethodGet,
Path: "/players",
Handler: player.ListPlayersHandler(serverCtx),
},
{
// 获取打手详情
Method: http.MethodGet,
Path: "/players/:id",
Handler: player.GetPlayerHandler(serverCtx),
},
{
// 获取指定打手的服务列表
Method: http.MethodGet,
Path: "/players/:id/services",
Handler: player.ListPlayerServicesHandler(serverCtx),
},
{
// 获取所有服务列表
Method: http.MethodGet,
Path: "/services",
Handler: player.ListServicesHandler(serverCtx),
},
{
// 获取服务详情
Method: http.MethodGet,
Path: "/services/:id",
Handler: player.GetServiceHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1"),
)
server.AddRoutes(
[]rest.Route{
{
// 更新接单状态
Method: http.MethodPut,
Path: "/players/me/status",
Handler: player.UpdatePlayerStatusHandler(serverCtx),
},
{
// 创建服务
Method: http.MethodPost,
Path: "/services",
Handler: player.CreateServiceHandler(serverCtx),
},
{
// 更新服务
Method: http.MethodPut,
Path: "/services/:id",
Handler: player.UpdateServiceHandler(serverCtx),
},
{
// 删除服务
Method: http.MethodDelete,
Path: "/services/:id",
Handler: player.DeleteServiceHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1"),
)
}
@@ -0,0 +1,48 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"errors"
"juwan-backend/app/player/rpc/playerservice"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type CreateServiceLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 创建服务
func NewCreateServiceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateServiceLogic {
return &CreateServiceLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *CreateServiceLogic) CreateService(req *types.CreateServiceReq) (resp *types.PlayerService, err error) {
_, err = l.svcCtx.PlayerRpc.AddPlayerServices(l.ctx, &playerservice.AddPlayerServicesReq{
GameId: req.GameId,
Title: req.Title,
Description: req.Description,
Price: req.Price,
Unit: req.Unit,
RankRange: req.RankRange,
Availability: req.Availability,
})
if err != nil {
logx.Errorf("failed to create player service: " + err.Error())
return nil, errors.New("failed to create player service")
}
return
}
@@ -0,0 +1,41 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"errors"
"juwan-backend/app/player/rpc/playerservice"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type DeleteServiceLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 删除服务
func NewDeleteServiceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteServiceLogic {
return &DeleteServiceLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *DeleteServiceLogic) DeleteService(req *types.DeleteServiceReq) (resp *types.EmptyResp, err error) {
_, err = l.svcCtx.PlayerRpc.DelPlayerServices(l.ctx, &playerservice.DelPlayerServicesReq{
Id: req.Id,
})
if err != nil {
logx.Errorf("DeleteServiceLogic.DeleteService err:%v", err)
return nil, errors.New("failed to delete player service")
}
return
}
@@ -0,0 +1,47 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"errors"
"juwan-backend/app/player/rpc/playerservice"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
type GetPlayerLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取打手详情
func NewGetPlayerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetPlayerLogic {
return &GetPlayerLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetPlayerLogic) GetPlayer(req *types.GetPlayerReq) (resp *types.PlayerProfile, err error) {
player, err := l.svcCtx.PlayerRpc.GetPlayersById(l.ctx, &playerservice.GetPlayersByIdReq{
Id: req.Id,
})
if err != nil {
logx.Errorf("GetPlayerLogic.GetPlayers err: %v", err)
return nil, errors.New("failed to get player details")
}
err = copier.Copy(resp, &player)
if err != nil {
logx.Errorf("copier.Copy err: %v", err)
return nil, errors.New("copier.Copy err")
}
return
}
@@ -0,0 +1,47 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"juwan-backend/app/player/rpc/playerservice"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
type GetServiceLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取服务详情
func NewGetServiceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetServiceLogic {
return &GetServiceLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetServiceLogic) GetService(req *types.GetServiceReq) (resp *types.PlayerService, err error) {
s, err := l.svcCtx.PlayerRpc.GetPlayerServicesById(l.ctx, &playerservice.GetPlayerServicesByIdReq{
Id: req.Id,
})
if err != nil {
logx.Errorf("GetServiceLogic.GetService err: %v", err)
return nil, err
}
err = copier.Copy(resp, &s)
if err != nil {
logx.Errorf("GetServiceLogic.GetService err: %v", err)
return nil, err
}
return
}
@@ -0,0 +1,52 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"juwan-backend/app/player/rpc/playerservice"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
type ListPlayerServicesLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取指定打手的服务列表
func NewListPlayerServicesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListPlayerServicesLogic {
return &ListPlayerServicesLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *ListPlayerServicesLogic) ListPlayerServices(req *types.ListPlayerServicesReq) (resp *types.PlayerServiceListResp, err error) {
resp = &types.PlayerServiceListResp{}
s, err := l.svcCtx.PlayerRpc.SearchPlayerServices(l.ctx, &playerservice.SearchPlayerServicesReq{
Page: req.Offset,
Limit: req.Limit,
PlayerId: req.Id,
})
if err != nil {
return nil, err
}
for _, v := range s.PlayerServices {
temp := types.PlayerService{}
err = copier.Copy(&temp, &v)
if err == nil {
logx.Errorf("ListPlayerServicesLogic.ListPlayerServices copier.Copy err: %v", err)
continue
}
resp.Items = append(resp.Items, temp)
}
return
}
@@ -0,0 +1,55 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"juwan-backend/app/player/rpc/pb"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
type ListPlayersLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取打手列表
func NewListPlayersLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListPlayersLogic {
return &ListPlayersLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *ListPlayersLogic) ListPlayers(req *types.PlayerListReq) (resp *types.PlayerListResp, err error) {
// todo: add your logic here and delete this line
p, err := l.svcCtx.PlayerRpc.SearchPlayers(l.ctx, &pb.SearchPlayersReq{
Page: req.Offset,
Limit: req.Limit,
Gender: int64(req.Gender),
})
if err != nil {
return nil, err
}
list := make([]types.PlayerProfile, 0, len(p.Players))
for _, v := range p.Players {
temp := types.PlayerProfile{}
err = copier.Copy(&temp, &v)
if err != nil {
logx.Errorf("ListPlayersLogic.ListPlayers copier.Copy err: %v", err)
continue
}
list = append(list, temp)
}
resp = &types.PlayerListResp{}
resp.Items = list
return
}
@@ -0,0 +1,52 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"juwan-backend/app/player/rpc/playerservice"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
type ListServicesLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取所有服务列表
func NewListServicesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListServicesLogic {
return &ListServicesLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *ListServicesLogic) ListServices(req *types.PageReq) (resp *types.PlayerServiceListResp, err error) {
resp = &types.PlayerServiceListResp{}
s, err := l.svcCtx.PlayerRpc.SearchPlayerServices(l.ctx, &playerservice.SearchPlayerServicesReq{
Page: req.Offset,
Limit: req.Limit,
PlayerId: 0,
})
if err != nil {
return nil, err
}
for _, v := range s.PlayerServices {
temp := types.PlayerService{}
err = copier.Copy(&temp, &v)
if err == nil {
logx.Errorf("ListPlayerServicesLogic.ListPlayerServices copier.Copy err: %v", err)
continue
}
resp.Items = append(resp.Items, temp)
}
return
}
@@ -0,0 +1,47 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"juwan-backend/app/player/rpc/pb"
"juwan-backend/common/utils/contextx"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type UpdatePlayerStatusLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 更新接单状态
func NewUpdatePlayerStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdatePlayerStatusLogic {
return &UpdatePlayerStatusLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *UpdatePlayerStatusLogic) UpdatePlayerStatus(req *types.UpdatePlayerStatusReq) (resp *types.EmptyResp, err error) {
// todo: add your logic here and delete this line
userId, err := contextx.UserIDFrom(l.ctx)
if err != nil {
return nil, err
}
_, err = l.svcCtx.PlayerRpc.UpdatePlayers(l.ctx, &pb.UpdatePlayersReq{
Id: userId,
Status: &req.Status,
})
if err != nil {
return nil, err
}
return
}
@@ -0,0 +1,46 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package player
import (
"context"
"juwan-backend/app/player/rpc/pb"
"juwan-backend/app/player/api/internal/svc"
"juwan-backend/app/player/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type UpdateServiceLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 更新服务
func NewUpdateServiceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateServiceLogic {
return &UpdateServiceLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *UpdateServiceLogic) UpdateService(req *types.UpdateServiceReq) (resp *types.PlayerService, err error) {
_, err = l.svcCtx.PlayerRpc.UpdatePlayerServices(l.ctx, &pb.UpdatePlayerServicesReq{
Id: req.Id,
GameId: req.GameId,
Title: req.Title,
Description: req.Description,
Price: req.Price,
Unit: req.Unit,
RankRange: req.RankRange,
Availability: req.Availability,
})
if err != nil {
return nil, err
}
return
}
@@ -0,0 +1,23 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package svc
import (
"juwan-backend/app/player/api/internal/config"
"juwan-backend/app/player/rpc/playerservice"
"github.com/zeromicro/go-zero/zrpc"
)
type ServiceContext struct {
Config config.Config
PlayerRpc playerservice.PlayerService
}
func NewServiceContext(c config.Config) *ServiceContext {
return &ServiceContext{
Config: c,
PlayerRpc: playerservice.NewPlayerService(zrpc.MustNewClient(c.PlayerRpcConf)),
}
}
+123
View File
@@ -0,0 +1,123 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.9.2
package types
type CreateServiceReq struct {
Id int64 `path:"id"`
GameId int64 `json:"gameId, optional"`
Title string `json:"title,optional"`
Description string `json:"description,optional"`
Price float64 `json:"price"`
Unit string `json:"unit"`
RankRange string `json:"rankRange,optional"`
Availability []string `json:"availability,optional"`
}
type DeleteServiceReq struct {
Id int64 `path:"id"`
}
type EmptyResp struct {
}
type GetPlayerReq struct {
Id int64 `path:"id"`
}
type GetServiceReq struct {
Id int64 `path:"id"`
}
type ListPlayerServicesReq struct {
PageReq
Id int64 `path:"id"`
}
type PageMeta struct {
Total int64 `json:"total"`
Offset int64 `json:"offset"`
Limit int64 `json:"limit"`
}
type PageReq struct {
Offset int64 `form:"offset,default=0"`
Limit int64 `form:"limit,default=20"`
}
type PlayerListReq struct {
PageReq
GameId int64 `form:"gameId,optional"`
Gender int `form:"gender,optional"`
}
type PlayerListResp struct {
Items []PlayerProfile `json:"items"`
Meta PageMeta `json:"meta"`
}
type PlayerProfile struct {
Id int64 `json:"id"`
User UserProfile `json:"user"`
Rating float64 `json:"rating"`
TotalOrders int64 `json:"totalOrders"`
CompletionRate float64 `json:"completionRate"`
Status string `json:"status"`
Games []string `json:"games"`
Services []PlayerService `json:"services"`
ShopId string `json:"shopId,optional"`
ShopName string `json:"shopName,optional"`
Tags []string `json:"tags"`
}
type PlayerService struct {
Id int64 `json:"id"`
PlayerId int64 `json:"playerId"`
GameId int64 `json:"gameId"`
GameName string `json:"gameName"`
Title string `json:"title"`
Description string `json:"description"`
Price float64 `json:"price"`
Unit string `json:"unit"`
RankRange string `json:"rankRange,optional"`
Availability []string `json:"availability"`
}
type PlayerServiceListResp struct {
Items []PlayerService `json:"items"`
Meta PageMeta `json:"meta"`
}
type SimpleUser struct {
Id string `json:"id"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
}
type UpdatePlayerStatusReq struct {
Status string `json:"status"`
}
type UpdateServiceReq struct {
Id int64 `path:"id"`
GameId *int64 `json:"gameId, optional"`
Title *string `json:"title,optional"`
Description *string `json:"description,optional"`
Price *float64 `json:"price,optional"`
Unit *string `json:"unit,optional"`
RankRange *string `json:"rankRange,optional"`
Availability []string `json:"availability"`
}
type UserProfile struct {
Id string `json:"id"`
Username string `json:"username"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
Role string `json:"role"` // consumer, player, owner, admin
VerifiedRoles []string `json:"verifiedRoles"`
VerificationStatus map[string]string `json:"verificationStatus"`
Phone string `json:"phone,optional"`
Bio string `json:"bio,optional"`
CreatedAt string `json:"createdAt"`
}
+34
View File
@@ -0,0 +1,34 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package main
import (
"flag"
"fmt"
"juwan-backend/app/player/api/internal/config"
"juwan-backend/app/player/api/internal/handler"
"juwan-backend/app/player/api/internal/svc"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/rest"
)
var configFile = flag.String("f", "etc/juwan-api.yaml", "the config file")
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
server := rest.MustNewServer(c.RestConf)
defer server.Stop()
ctx := svc.NewServiceContext(c)
handler.RegisterHandlers(server, ctx)
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
server.Start()
}