yaojianjun 9 månader sedan
förälder
incheckning
615c8bb93d
4 ändrade filer med 75 tillägg och 3 borttagningar
  1. 1 0
      .gitignore
  2. 1 1
      Tech/conf/app.conf
  3. 70 1
      Tech/controllers/用户.go
  4. 3 1
      Tech/models/教员模型.go

+ 1 - 0
.gitignore

@@ -12,3 +12,4 @@ Tech/frp/frp_0.65.0_linux_amd64/frpc
 Tech/frp/frp_0.65.0_linux_amd64/frpc.toml
 Tech/frp/frp_0.65.0_linux_amd64/frps
 Tech/frp/frp_0.65.0_linux_amd64/frps.toml
+新建文件夹

+ 1 - 1
Tech/conf/app.conf

@@ -12,7 +12,7 @@ ElectricalPort = 7314
 # 数据库配置
 DB.Adapter = mysql
 DB.URL = dbadmin:dbadmin@987@(124.222.28.5:7312)/CCGD_project?charset=utf8
-#DB.URL = root:wl110@(127.0.0.1:3306)/CCGD_project?charset=utf8
+# DB.URL = root:wl110@(127.0.0.1:3306)/ccgd_project?charset=utf8
 
 # 信息化服务器和地址
 ESYSIP = 124.222.28.5

+ 70 - 1
Tech/controllers/用户.go

@@ -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)

+ 3 - 1
Tech/models/教员模型.go

@@ -294,9 +294,11 @@ func (r *RoleInfo) TableName() string { return "RoleInfo" }
 // 18. UserData - 用户信息表
 type UserData struct {
 	UserID      int    `orm:"column(用户ID);pk" json:"userID"`
+	RYID        string `orm:"column(人员ID);type(text)" json:"RYID"`
+	RYEMPID     string `orm:"column(人员GUID);type(text)" json:"RYEMPID"`
 	UserName    string `orm:"column(用户名称);type(text)" json:"userName"`
 	UserGroupID int    `orm:"column(用户所属分组)" json:"userGroupID"`
-	UserType    int    `orm:"column(用户类型)" json:"userType"` // 0管理员1教员2学员
+	UserType    int    `orm:"column(用户类型)" json:"userType"` // 0管理员1-学生 2-教师
 	Password    string `orm:"column(密码);type(text)" json:"password"`
 }