소스 검색

Merge branch 'hotfix/bug7230_role_type' of eta_server/eta_api into master

xyxie 1 주 전
부모
커밋
b643484cde
2개의 변경된 파일23개의 추가작업 그리고 3개의 파일을 삭제
  1. 15 3
      controllers/sys_role.go
  2. 8 0
      models/system/sys_role.go

+ 15 - 3
controllers/sys_role.go

@@ -65,7 +65,7 @@ func (this *SysRoleController) Add() {
 	}
 
 	// 同步角色缓存
-	if utils.BusinessCode == utils.BusinessCodeRelease {
+	if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeDebug {
 		var syncData system.SyncRoleData
 		syncData.Source = utils.SOURCE_ETA_FLAG
 		syncData.RoleId = int(roleId)
@@ -117,6 +117,8 @@ func (this *SysRoleController) Edit() {
 		br.Msg = "角色不存在, 请刷新页面"
 		return
 	}
+	oldRoleCodeType := item.RoleTypeCode
+	oldRoleName := item.RoleName
 	exists, e := system.GetSysRoleByName(req.RoleName)
 	if e != nil && !utils.IsErrNoRow(e) {
 		br.Msg = "操作失败"
@@ -135,8 +137,18 @@ func (this *SysRoleController) Edit() {
 		return
 	}
 
+	if oldRoleName != req.RoleName || oldRoleCodeType != roleTypeCode {
+		// 查询所有和角色相关的管理员的信息,并更新成最新的角色
+		err = system.UpdateAdminRoleInfoByRoleId(req.RoleId, req.RoleName, roleTypeCode)
+		if err != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "更新管理员角色信息失败, Err: " + err.Error()
+			return
+		}
+	}
+
 	// 同步角色缓存
-	if utils.BusinessCode == utils.BusinessCodeRelease {
+	if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeDebug {
 		var syncData system.SyncRoleData
 		syncData.Source = utils.SOURCE_ETA_FLAG
 		syncData.RoleId = item.RoleId
@@ -192,7 +204,7 @@ func (this *SysRoleController) Delete() {
 	}
 
 	// 同步角色缓存
-	if utils.BusinessCode == utils.BusinessCodeRelease {
+	if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeDebug {
 		var syncData system.SyncRoleData
 		syncData.Source = utils.SOURCE_ETA_FLAG
 		syncData.RoleId = role.RoleId

+ 8 - 0
models/system/sys_role.go

@@ -285,3 +285,11 @@ func GetSysRoleByIdList(id []int) (items []*SysRole, err error) {
 	err = o.Raw(sql, id).Find(&items).Error
 	return
 }
+
+
+// 更新所有管理员的角色信息
+func UpdateAdminRoleInfoByRoleId(roleId int, roleName, roleTypeCode string) (err error) {
+	sql := `UPDATE admin SET role_name=?, role_type_code=? WHERE role_id=?`
+	err = global.DbMap[utils.DbNameMaster].Exec(sql, roleName, roleTypeCode, roleId).Error
+	return
+}