|
|
@@ -3,11 +3,13 @@ package controllers
|
|
|
|
|
|
import (
|
|
|
"Tech/common"
|
|
|
+ "Tech/models"
|
|
|
"crypto/rand"
|
|
|
"encoding/base64"
|
|
|
"encoding/json"
|
|
|
"sync"
|
|
|
|
|
|
+ "github.com/beego/beego/v2/client/orm"
|
|
|
"github.com/beego/beego/v2/core/logs"
|
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
|
)
|
|
|
@@ -52,6 +54,13 @@ func GetUserInfoFromCache_RYEMPID(RYEMPID string) (common.PersonalInfo, bool) {
|
|
|
return common.PersonalInfo{}, false
|
|
|
}
|
|
|
|
|
|
+// decryptMD5Password 尝试解密MD5密码
|
|
|
+func decryptMD5Password(hash string) string {
|
|
|
+
|
|
|
+ // 无法解密,返回原始hash值
|
|
|
+ return hash
|
|
|
+}
|
|
|
+
|
|
|
// initUserInfoCache 初始化用户信息缓存
|
|
|
func InitUserInfoCache() {
|
|
|
logs.Info("开始初始化用户信息缓存...")
|
|
|
@@ -62,6 +71,8 @@ func InitUserInfoCache() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ var tempUser []models.UserData
|
|
|
+
|
|
|
// 加锁更新缓存
|
|
|
cacheMutex.Lock()
|
|
|
defer cacheMutex.Unlock()
|
|
|
@@ -69,9 +80,67 @@ func InitUserInfoCache() {
|
|
|
for _, info := range personalInfos {
|
|
|
// 使用RYEMPID作为用户名缓存用户信息
|
|
|
userInfoCache[info.RYID] = info
|
|
|
+
|
|
|
+ // 转换为UserData结构并添加到tempUser数组
|
|
|
+ var userTypeInt int
|
|
|
+ // SF字段:1-学生 2-教师
|
|
|
+ if info.SF == "1" {
|
|
|
+ userTypeInt = 1 // 学生
|
|
|
+ } else if info.SF == "2" {
|
|
|
+ userTypeInt = 2 // 教师
|
|
|
+ } else {
|
|
|
+ userTypeInt = 0 // 默认管理员
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建UserData结构体
|
|
|
+ userData := models.UserData{
|
|
|
+ RYID: info.RYID,
|
|
|
+ RYEMPID: info.RYEMPID,
|
|
|
+ UserName: info.XM, // 使用姓名作为用户名
|
|
|
+ UserType: userTypeInt,
|
|
|
+ Password: "123", // 存储明文密码
|
|
|
+ }
|
|
|
+
|
|
|
+ tempUser = append(tempUser, userData)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量插入数据库以提高效率
|
|
|
+ o := orm.NewOrm()
|
|
|
+
|
|
|
+ // 开始事务
|
|
|
+ txOrmer, err := o.Begin()
|
|
|
+ if err != nil {
|
|
|
+ logs.Error("开启事务失败: ", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 先清空现有的UserData表
|
|
|
+ _, err = txOrmer.Raw("DELETE FROM UserData").Exec()
|
|
|
+ if err != nil {
|
|
|
+ txOrmer.Rollback()
|
|
|
+ logs.Error("清空用户数据表失败: ", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量插入用户数据
|
|
|
+ if len(tempUser) > 0 {
|
|
|
+ // 使用批量插入提高效率
|
|
|
+ _, err = txOrmer.InsertMulti(len(tempUser), tempUser)
|
|
|
+ if err != nil {
|
|
|
+ txOrmer.Rollback()
|
|
|
+ logs.Error("批量插入用户数据失败: ", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 提交事务
|
|
|
+ err = txOrmer.Commit()
|
|
|
+ if err != nil {
|
|
|
+ logs.Error("提交事务失败: ", err)
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- logs.Info("用户信息缓存初始化完成,共缓存%d个用户", len(personalInfos))
|
|
|
+ logs.Info("用户信息缓存初始化完成,共缓存%d个用户到数据库", len(tempUser))
|
|
|
}
|
|
|
func generateShortToken(userId string) string {
|
|
|
b := make([]byte, 6)
|