mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 17:52:27 +08:00
51 lines
1.1 KiB
Go
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)
|
|
}
|