diff --git a/config/locales/i18n_data.xlsx b/config/locales/i18n_data.xlsx index b2d44366..f0d21619 100644 Binary files a/config/locales/i18n_data.xlsx and b/config/locales/i18n_data.xlsx differ diff --git a/src/assets/template/excel/user_import_template_en.xlsx b/src/assets/template/excel/user_import_template_en.xlsx index 5acb1c4a..90f88c41 100644 Binary files a/src/assets/template/excel/user_import_template_en.xlsx and b/src/assets/template/excel/user_import_template_en.xlsx differ diff --git a/src/assets/template/excel/user_import_template_zh.xlsx b/src/assets/template/excel/user_import_template_zh.xlsx index 4f4713b2..0f034a35 100644 Binary files a/src/assets/template/excel/user_import_template_zh.xlsx and b/src/assets/template/excel/user_import_template_zh.xlsx differ diff --git a/src/modules/system/controller/sys_user.go b/src/modules/system/controller/sys_user.go index 6bf77cd7..63202a8e 100644 --- a/src/modules/system/controller/sys_user.go +++ b/src/modules/system/controller/sys_user.go @@ -507,11 +507,12 @@ func (s *SysUserController) Export(c *gin.Context) { "E1": i18n.TKey(language, "user.export.phone"), "F1": i18n.TKey(language, "user.export.sex"), "G1": i18n.TKey(language, "user.export.status"), - "H1": i18n.TKey(language, "user.export.deptID"), - "I1": i18n.TKey(language, "user.export.deptName"), - "J1": i18n.TKey(language, "user.export.deptLeader"), - "K1": i18n.TKey(language, "user.export.loginIP"), - "L1": i18n.TKey(language, "user.export.loginDate"), + "H1": i18n.TKey(language, "user.export.role"), + "I1": i18n.TKey(language, "user.export.deptID"), + "J1": i18n.TKey(language, "user.export.deptName"), + "K1": i18n.TKey(language, "user.export.deptLeader"), + "L1": i18n.TKey(language, "user.export.loginIP"), + "M1": i18n.TKey(language, "user.export.loginDate"), } // 读取用户性别字典数据 dictSysUserSex := s.sysDictDataService.SelectDictDataByType("sys_user_sex") @@ -532,6 +533,13 @@ func (s *SysUserController) Export(c *gin.Context) { if row.Status == "1" { statusValue = i18n.TKey(language, "dictData.normal") } + // 用户角色, 默认导出首个 + userRole := "" + if len(row.Roles) > 0 { + roleID := row.Roles[0].RoleID + roleName := i18n.TKey(language, row.Roles[0].RoleName) + userRole = fmt.Sprintf("%s-%s", roleID, roleName) + } dataCells = append(dataCells, map[string]any{ "A" + idx: row.UserID, "B" + idx: row.UserName, @@ -540,11 +548,12 @@ func (s *SysUserController) Export(c *gin.Context) { "E" + idx: row.PhoneNumber, "F" + idx: sysUserSex, "G" + idx: statusValue, - "H" + idx: row.Dept.DeptID, - "I" + idx: row.Dept.DeptName, - "J" + idx: row.Dept.Leader, - "K" + idx: row.LoginIP, - "L" + idx: date.ParseDateToStr(row.LoginDate, date.YYYY_MM_DD_HH_MM_SS), + "H" + idx: userRole, + "I" + idx: row.Dept.DeptID, + "J" + idx: row.Dept.DeptName, + "K" + idx: row.Dept.Leader, + "L" + idx: row.LoginIP, + "M" + idx: date.ParseDateToStr(row.LoginDate, date.YYYY_MM_DD_HH_MM_SS), }) } @@ -655,22 +664,32 @@ func (s *SysUserController) ImportData(c *gin.Context) { break } } + // 用户状态 sysUserStatus := common.STATUS_NO - if row["G"] == "Normal" { + if row["G"] == "正常" || row["G"] == "Normal" { sysUserStatus = common.STATUS_YES } + // 用户角色 拿编号 + sysUserRole := "" + if v, ok := row["H"]; ok && v != "" { + sysUserRole = strings.SplitN(v, "-", 2)[0] + if sysUserRole == "1" { + sysUserRole = "" + } + } // 构建用户实体信息 newSysUser := model.SysUser{ UserType: "sys", Password: initPassword, - DeptID: row["H"], + DeptID: row["I"], UserName: row["B"], NickName: row["C"], PhoneNumber: row["E"], Email: row["D"], Status: sysUserStatus, Sex: sysUserSex, + RoleIDs: []string{sysUserRole}, } // 检查手机号码格式并判断是否唯一 @@ -725,7 +744,7 @@ func (s *SysUserController) ImportData(c *gin.Context) { successMsgArr = append(successMsgArr, msg) } else { // 用户编号:%s 登录名称 %s 导入失败 - msg := i18n.TTemplate(language, "user.import.fail", map[string]any{"id": row["A"], "email": newSysUser.UserName}) + msg := i18n.TTemplate(language, "user.import.fail", map[string]any{"id": row["A"], "name": newSysUser.UserName}) failureNum++ failureMsgArr = append(failureMsgArr, msg) } @@ -739,12 +758,12 @@ func (s *SysUserController) ImportData(c *gin.Context) { rows := s.sysUserService.UpdateUser(newSysUser) if rows > 0 { // 用户编号:%s 登录名称 %s 更新成功 - msg := i18n.TTemplate(language, "user.import.successUpdate", map[string]any{"id": row["A"], "email": newSysUser.UserName}) + msg := i18n.TTemplate(language, "user.import.successUpdate", map[string]any{"id": row["A"], "name": newSysUser.UserName}) successNum++ successMsgArr = append(successMsgArr, msg) } else { // 用户编号:%s 登录名称 %s 更新失败 - msg := i18n.TTemplate(language, "user.import.failUpdate", map[string]any{"id": row["A"], "email": newSysUser.UserName}) + msg := i18n.TTemplate(language, "user.import.failUpdate", map[string]any{"id": row["A"], "name": newSysUser.UserName}) failureNum++ failureMsgArr = append(failureMsgArr, msg) }