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 @@
-
-
-
-
-
-
-
-
+
@@ -44,27 +37,28 @@
- {
- "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
+
+ file://$PROJECT_DIR$/center/usercenter/internal/user/logic.go
+ 104
+
+
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
}