Files
hk4e/gm/controller/gm_controller.go
2023-04-15 20:02:35 +08:00

51 lines
1.1 KiB
Go

package controller
import (
"net/http"
"hk4e/common/rpc"
"hk4e/gs/api"
"hk4e/pkg/logger"
"github.com/gin-gonic/gin"
)
type GmCmdReq struct {
FuncName string `json:"func_name"`
ParamList []string `json:"param_list"`
GsId uint32 `json:"gs_id"`
}
func (c *Controller) gmCmd(context *gin.Context) {
gmCmdReq := new(GmCmdReq)
err := context.ShouldBindJSON(gmCmdReq)
if err != nil {
logger.Error("parse json error: %v", err)
return
}
logger.Info("GmCmdReq: %v", gmCmdReq)
c.gmClientMapLock.RLock()
gmClient, exist := c.gmClientMap[gmCmdReq.GsId]
c.gmClientMapLock.RUnlock()
if !exist {
var err error = nil
gmClient, err = rpc.NewGMClient(gmCmdReq.GsId)
if err != nil {
logger.Error("new gm client error: %v", err)
return
}
c.gmClientMapLock.Lock()
c.gmClientMap[gmCmdReq.GsId] = gmClient
c.gmClientMapLock.Unlock()
}
rep, err := gmClient.Cmd(context.Request.Context(), &api.CmdRequest{
FuncName: gmCmdReq.FuncName,
ParamList: gmCmdReq.ParamList,
})
if err != nil {
context.JSON(http.StatusInternalServerError, err)
return
}
context.JSON(http.StatusOK, rep)
}