diff --git a/trunk/.idea/workspace.xml b/trunk/.idea/workspace.xml index f058e30..2f34fc5 100644 --- a/trunk/.idea/workspace.xml +++ b/trunk/.idea/workspace.xml @@ -6,14 +6,7 @@ - - - - - - - - + - { - "keyToString": { - "DefaultGoTemplateProperty": "Go File", - "Docker.admincenter.redis: Compose 部署.executor": "Run", - "Docker.center/admincenter/Dockerfile builder.executor": "Run", - "Go 构建.go build admincenter.executor": "Debug", - "Go 构建.go build logincenter.executor": "Debug", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.go.formatter.settings.were.checked": "true", - "RunOnceActivity.go.migrated.go.modules.settings": "true", - "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true", - "git-widget-placeholder": "master", - "go.import.settings.migrated": "true", - "go.sdk.automatically.set": "true", - "last_opened_file_path": "D:/workspace/e2023/goProject/trunk", - "node.js.detected.package.eslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "settings.editor.selected.configurable": "preferences.pluginManager" + +}]]> @@ -72,7 +66,7 @@ - + @@ -82,9 +76,9 @@ - + - + @@ -128,8 +122,8 @@ + - @@ -158,6 +152,11 @@ 68 diff --git a/trunk/center/usercenter/internal/user/logic.go b/trunk/center/usercenter/internal/user/logic.go index 0e03193..1f05b43 100644 --- a/trunk/center/usercenter/internal/user/logic.go +++ b/trunk/center/usercenter/internal/user/logic.go @@ -7,9 +7,13 @@ import ( "sync" ) -// 用户缓存对象 -var userMap = make(map[int64]*User) -var rwmu sync.RWMutex +var ( + // 用户缓存对象 + userMap = make(map[int64]*User) + rwmu sync.RWMutex + userAccountMap = make(map[string]*User) + rwmu2 sync.RWMutex +) // GetUserByID 根据用户id获取用户信息 func GetUserByID(UserID int64) (*User, error) { @@ -55,35 +59,61 @@ func AddUserCache(user *User) { userMap[user.ID] = user } +func GetUserByAccount(account string) (*User, error) { + rwmu2.RLock() + defer rwmu2.RUnlock() + + //判断缓存是否存在 + var user *User + ok := true + if user, ok = userAccountMap[account]; ok { + return user, nil + } + return nil, nil +} + +func AddUserIdCache(user *User) { + rwmu2.Lock() + defer rwmu2.Unlock() + user.Cache = cache.NewCache() + userAccountMap[user.Account] = user +} + // AddUser 添加用户 // AddUser 添加新的用户到数据库中。 // 参数 User: 包含用户信息的对象。 // 返回值: 插入操作影响的行数和可能发生的错误。 -func AddUser(User *User) (int64, error) { +func AddUser(user *User) (int64, error) { //处理一些验证 - //写入缓存 - AddUserCache(User) - // 写入到数据库 - result := connection.GetUserDB().Create(&User) // 通过数据的指针来创建 - + result := connection.GetUserDB().Create(&user) // 通过数据的指针来创建 if result.Error != nil { logUtilPlus.ErrorLog("添加用户失败 错误信息:", result.Error.Error()) } - return User.ID, nil + + return user.ID, nil } // Login 用户登录 func Login(account string, password string) (*User, error) { - //这里优先验证缓存数据 + var user *User - var User User - result := connection.GetUserDB().Where("account = ? AND password = ?", account, password).First(&User) + //这里优先验证缓存数据 + user, err := GetUserByAccount(account) + if err == nil && user != nil { + return user, err + } + result := connection.GetUserDB().Where("account = ? AND password = ?", account, password).First(&user) if result.Error != nil { return nil, result.Error } - return &User, nil + + //写入缓存 + AddUserCache(user) + AddUserIdCache(user) + + return user, nil }