diff --git a/trunk/.idea/workspace.xml b/trunk/.idea/workspace.xml
index a7a2394..f058e30 100644
--- a/trunk/.idea/workspace.xml
+++ b/trunk/.idea/workspace.xml
@@ -6,6 +6,14 @@
+
+
+
+
+
+
+
+
@@ -26,6 +34,7 @@
+
{
"associatedIndex": 3
@@ -53,7 +62,7 @@
"node.js.detected.package.eslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
- "settings.editor.selected.configurable": "go.sdk"
+ "settings.editor.selected.configurable": "preferences.pluginManager"
}
}
@@ -63,7 +72,7 @@
-
+
@@ -119,8 +128,8 @@
-
+
diff --git a/trunk/center/admincenter/internal/admin/api.go b/trunk/center/admincenter/internal/admin/api.go
index 9f3d91a..f189392 100644
--- a/trunk/center/admincenter/internal/admin/api.go
+++ b/trunk/center/admincenter/internal/admin/api.go
@@ -33,6 +33,7 @@ type AdminApi struct {
func init() {
moduleName := "AdminApi"
methodName := "Add"
+ skipVerifyTokenPage := true
methodDesc := "添加管理员用户"
methodAuthor := "tangping"
methodMendor := ""
@@ -47,7 +48,7 @@ func init() {
"id '类型:int'": "管理员id",
}
}`
- remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam)
+ remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam, skipVerifyTokenPage)
}
func (a *AdminApi) Add(account string, name string, password string, sex int32, birthday string, phone int64, email string, wechatGroup string, describe string) (responseObj *webServer.ResponseObject) {
responseObj = webServer.GetInitResponseObj()
@@ -86,6 +87,7 @@ func (a *AdminApi) Add(account string, name string, password string, sex int32,
func init() {
moduleName := "AdminApi"
methodName := "Get"
+ skipVerifyTokenPage := false
methodDesc := "获取管理员用户"
methodAuthor := "tangping"
methodMendor := ""
@@ -108,12 +110,14 @@ func init() {
}
}`
- remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam)
+ remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam, skipVerifyTokenPage)
}
-func (a *AdminApi) Get(adminId int64) (responseObj *webServer.ResponseObject) {
+func (a *AdminApi) Get(useAdmin *Admin, adminId int64) (responseObj *webServer.ResponseObject) {
responseObj = webServer.GetInitResponseObj()
+ //获取当前登录用户信息
+
//验证参数
if adminId == 0 {
responseObj.SetResultStatus(resultStatus.APIDataError)
@@ -145,6 +149,7 @@ func (a *AdminApi) Get(adminId int64) (responseObj *webServer.ResponseObject) {
func init() {
moduleName := "AdminApi"
methodName := "Login"
+ skipVerifyTokenPage := true
methodDesc := "管理员登录"
methodAuthor := "tangping"
methodMendor := ""
@@ -160,7 +165,7 @@ func init() {
}
}`
- remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam)
+ remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam, skipVerifyTokenPage)
}
func (a *AdminApi) Login(account string, password string) (responseObj *webServer.ResponseObject) {
@@ -187,7 +192,7 @@ func (a *AdminApi) Login(account string, password string) (responseObj *webServe
}
//添加登录用户
- webServer.AddLoginUserToken(token, &webServer.TokenInfo{Id: adminData.ID, Account: account})
+ webServer.AddLoginUserToken(token, &webServer.TokenInfo{Id: adminData.ID, Account: account, UserInfo: adminData})
//adminData映射成map
resultMap := make(map[string]any)
diff --git a/trunk/center/admincenter/main.go b/trunk/center/admincenter/main.go
index 646a1a3..2318319 100644
--- a/trunk/center/admincenter/main.go
+++ b/trunk/center/admincenter/main.go
@@ -35,6 +35,9 @@ func main() {
// 目前函数的实现为空,需要根据实际的配置加载逻辑进行填充。
func loadConfig() {
+ //设置数据类型
+ connection.SetModelDB(connection.GetAdminDB())
+
//构建数据库
connection.BuildDB()
}
diff --git a/trunk/center/common/remark/remarkMgr.go b/trunk/center/common/remark/remarkMgr.go
index be0fb06..7240170 100644
--- a/trunk/center/common/remark/remarkMgr.go
+++ b/trunk/center/common/remark/remarkMgr.go
@@ -1,6 +1,7 @@
package remark
import (
+ "common/webServer"
"goutil/logUtilPlus"
)
@@ -41,7 +42,7 @@ func RegisterModuleRemark(name, desc, author, mendor, date string) {
// @outParam: 输出参数
//
// return:
-func RegisterMethodRemark(moduleName, name, desc, author, mendor, date string, inParam []string, outParam string) {
+func RegisterMethodRemark(moduleName, name, desc, author, mendor, date string, inParam []string, outParam string, skipVerifyTokenPage bool) {
var moduleRemark *ModuleRemark
var exists bool
for _, item := range remarksSlice {
@@ -57,4 +58,9 @@ func RegisterMethodRemark(moduleName, name, desc, author, mendor, date string, i
}
moduleRemark.MethodRemarkSlice = append(moduleRemark.MethodRemarkSlice, newMethodRemark(moduleName, name, desc, author, mendor, date, inParam, outParam))
+
+ //跳过登录验证
+ if skipVerifyTokenPage {
+ webServer.AddSkipVerifyTokenPage(moduleName, name)
+ }
}
diff --git a/trunk/center/common/webServer/reflect.go b/trunk/center/common/webServer/reflect.go
index 79dfc1a..854230a 100644
--- a/trunk/center/common/webServer/reflect.go
+++ b/trunk/center/common/webServer/reflect.go
@@ -387,6 +387,11 @@ func CallFunction(requestObj *RequestObject) (responseObj *ResponseObject) {
in[i] = reflect.ValueOf(param_uint8)
}
}
+ case reflect.Pointer:
+ //if paramStruct, ok := paramItem.(struct{}); ok {
+ // in[i] = reflect.ValueOf(paramStruct)
+ //}
+ in[i] = reflect.ValueOf(paramItem)
}
}
diff --git a/trunk/center/common/webServer/serverMux.go b/trunk/center/common/webServer/serverMux.go
index 3aca796..424ab62 100644
--- a/trunk/center/common/webServer/serverMux.go
+++ b/trunk/center/common/webServer/serverMux.go
@@ -91,24 +91,28 @@ func (mux *selfDefineMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
+ params, err = context.RequestDataBySlice2ByJson()
+ if err != nil {
+ responseResult(w, responseObj.SetResultStatus(resultStatus.APIDataError))
+ return
+ }
+
//验证是否登录
- if strs[0] != "AdminApi" || strs[1] != "Login" {
+ if !IsSkipVerifyTokenPage(strs[0], strs[1]) {
tokenStr := context.header.Get("token")
// token 转型成 int64
token := stringUtil.StringToInt64(tokenStr)
//是否存在
- if !CheckToken(token) {
+ exist, tokenData := CheckToken(token)
+ if !exist {
responseResult(w, responseObj.SetResultStatus(resultStatus.NotLogin))
return
}
- }
- params, err = context.RequestDataBySlice2ByJson()
- if err != nil {
- responseResult(w, responseObj.SetResultStatus(resultStatus.APIDataError))
- return
+ //添加登录用户到参数里的第一个
+ params = append([]interface{}{tokenData.UserInfo}, params...)
}
resquestData := NewRequestObject(strs[0], strs[1], params)
diff --git a/trunk/center/common/webServer/tokenHandler.go b/trunk/center/common/webServer/tokenHandler.go
index 24048fd..bebf6ad 100644
--- a/trunk/center/common/webServer/tokenHandler.go
+++ b/trunk/center/common/webServer/tokenHandler.go
@@ -11,6 +11,9 @@ var (
//锁
lock sync.RWMutex
+
+ //跳过验证token的页面
+ skipVerifyTokenPage = make(map[string]bool)
)
type TokenInfo struct {
@@ -20,6 +23,9 @@ type TokenInfo struct {
//管理员账号
Account string
+ //登录用户缓存
+ UserInfo any
+
//过期时间
ExpireTime time.Time
}
@@ -57,7 +63,7 @@ func AddLoginUserToken(token int64, tokenInfo *TokenInfo) {
// 返回值:
//
// bool: 表示令牌是否有效的布尔值,true表示有效,false表示无效
-func CheckToken(token int64) bool {
+func CheckToken(token int64) (bool, *TokenInfo) {
//添加锁防止并发
lock.Lock()
@@ -70,7 +76,7 @@ func CheckToken(token int64) bool {
tokenInfo, ok := loginUserMap[token]
if !ok {
// 如果没有找到对应的用户信息,则令牌无效
- return false
+ return false, nil
}
// 获取令牌过期时间
@@ -82,11 +88,23 @@ func CheckToken(token int64) bool {
//移除令牌
delete(loginUserMap, token)
- return false
+ return false, nil
}
//如果生效的话,则更新过期时间
tokenInfo.ExpireTime = now.Add(time.Hour * 24)
- return true
+ return true, tokenInfo
+}
+
+func AddSkipVerifyTokenPage(moduleName, methodName string) {
+ skipVerifyTokenPage[moduleName+"_"+methodName] = true
+}
+
+func IsSkipVerifyTokenPage(moduleName, methodName string) bool {
+ exist, ok := skipVerifyTokenPage[moduleName+"_"+methodName]
+ if !exist {
+ return false
+ }
+ return ok
}
diff --git a/trunk/center/usercenter/internal/game/api.go b/trunk/center/usercenter/internal/game/api.go
index 21367b7..5c0ebe9 100644
--- a/trunk/center/usercenter/internal/game/api.go
+++ b/trunk/center/usercenter/internal/game/api.go
@@ -2,7 +2,9 @@ package game
import (
"common/remark"
+ "common/resultStatus"
"common/webServer"
+ "logincenter/internal/user"
)
func init() {
@@ -12,7 +14,7 @@ func init() {
}
func init() {
- moduleName := "UserApi"
+ moduleName := "GameApi"
desc := "用户接口"
author := "tangping"
mendor := ""
@@ -23,3 +25,45 @@ func init() {
// GameApi 游戏接口
type GameApi struct {
}
+
+func init() {
+ moduleName := "GameApi"
+ methodName := "Add"
+ skipVerifyTokenPage := false
+ methodDesc := "添加游戏"
+ methodAuthor := "tangping"
+ methodMendor := ""
+ methodDate := "2024-12-25 15:55:00"
+ methodInParam := []string{"string 账号,int 游戏id"}
+ methodOutParam := `
+ {
+ "Code '类型:int'": "响应结果的状态值",
+ "Message '类型:string'": "响应结果的状态值所对应的描述信息",
+ "Data '类型:interface{}'": "响应结果的数据"
+ {
+
+ }
+ }`
+ remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam, skipVerifyTokenPage)
+}
+
+func (this *GameApi) Add(userData *user.User, account string, gameId int64) (responseObj *webServer.ResponseObject) {
+ responseObj = webServer.GetInitResponseObj()
+
+ //用户登录用户数据
+
+ //参数验证
+
+ //添加游戏
+ game := &Game{
+ Account: account,
+ GameID: int64(gameId),
+ }
+
+ gameId, err := AddGame(userData, game)
+ if err != nil {
+ return responseObj.SetResultStatus(resultStatus.DataError)
+ }
+
+ return
+}
diff --git a/trunk/center/usercenter/internal/user/api.go b/trunk/center/usercenter/internal/user/api.go
index 530ea3c..54c7e3e 100644
--- a/trunk/center/usercenter/internal/user/api.go
+++ b/trunk/center/usercenter/internal/user/api.go
@@ -33,6 +33,7 @@ type UserApi struct {
func init() {
moduleName := "UserApi"
methodName := "Register"
+ skipVerifyTokenPage := true
methodDesc := "注册用户"
methodAuthor := "tangping"
methodMendor := ""
@@ -47,7 +48,7 @@ func init() {
"id '类型:int'": "用户id",
}
}`
- remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam)
+ remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam, skipVerifyTokenPage)
}
func (a *UserApi) Register(account string, name string, password string, sex int32, birthday string, phone int64, email string, wechatGroup string, describe string) (responseObj *webServer.ResponseObject) {
responseObj = webServer.GetInitResponseObj()
@@ -86,6 +87,7 @@ func (a *UserApi) Register(account string, name string, password string, sex int
func init() {
moduleName := "UserApi"
methodName := "Login"
+ skipVerifyTokenPage := true
methodDesc := "用户登录"
methodAuthor := "tangping"
methodMendor := ""
@@ -101,7 +103,7 @@ func init() {
}
}`
- remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam)
+ remark.RegisterMethodRemark(moduleName, methodName, methodDesc, methodAuthor, methodMendor, methodDate, methodInParam, methodOutParam, skipVerifyTokenPage)
}
func (a *UserApi) Login(account string, password string) (responseObj *webServer.ResponseObject) {
@@ -128,7 +130,7 @@ func (a *UserApi) Login(account string, password string) (responseObj *webServer
}
//添加登录用户
- webServer.AddLoginUserToken(token, &webServer.TokenInfo{Id: userData.ID, Account: account})
+ webServer.AddLoginUserToken(token, &webServer.TokenInfo{Id: userData.ID, Account: account, UserInfo: userData})
//UserData映射成map
resultMap := make(map[string]any)