Преглед на файлове

fix:管理员可以操作所有预警

zqbao преди 4 месеца
родител
ревизия
521f65e4df
променени са 2 файла, в които са добавени 69 реда и са изтрити 9 реда
  1. 1 1
      controllers/edb_monitor/edb_monitor.go
  2. 68 8
      services/edb_monitor/edb_monitor.go

+ 1 - 1
controllers/edb_monitor/edb_monitor.go

@@ -222,7 +222,7 @@ func (m *EdbMonitorController) Delete() {
 		return
 	}
 
-	msg, err := edbmonitor.DeleteEdbMonitorInfo(req)
+	msg, err := edbmonitor.DeleteEdbMonitorInfo(req, sysUser.AdminId)
 	if err != nil {
 		if msg == "" {
 			msg = "删除失败"

+ 68 - 8
services/edb_monitor/edb_monitor.go

@@ -173,6 +173,17 @@ func SaveEdbMonitorInfo(req request.EdbMonitorInfoSaveReq, adminId int) (msg str
 	}
 	var edbMonitorInfo *edbmonitor.EdbMonitorInfo
 	if req.EdbMonitorId > 0 {
+		ok, msg1, er := OperatePermissionCheck(req.EdbMonitorId, adminId)
+		if !ok {
+			if msg1 == "" {
+				msg1 = "编辑失败"
+			}
+			msg = msg1
+			if er == nil {
+				err = fmt.Errorf("权限校验失败")
+			}
+			return
+		}
 		edbMonitorInfo, er = edbmonitor.GetEdbMonitorInfoById(req.EdbMonitorId)
 		if er != nil {
 			if er.Error() == utils.ErrNoRow() {
@@ -330,11 +341,50 @@ func cmpEdbMonitorState(twoData []*data_manage.EdbData, monitorType int, monitor
 	}
 }
 
-func DeleteEdbMonitorInfo(req request.EdbMonitorInfoDeleteReq) (msg string, err error) {
+func OperatePermissionCheck(edbMonitorId int, adminId int) (ok bool, msg string, err error) {
+	monitorInfo, err := edbmonitor.GetEdbMonitorInfoById(edbMonitorId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			msg = "指标预警不存在,请刷新重试"
+			return
+		}
+		msg = "删除失败"
+		err = fmt.Errorf("获取预警详情失败, err:%w", err)
+		return
+	}
+	if monitorInfo.CreateUserId != adminId {
+		userInfo, er := system.GetSysAdminById(adminId)
+		if er != nil {
+			msg = "删除失败"
+			err = fmt.Errorf("查询用户信息失败 err:%w", er)
+			return
+		}
+		if userInfo.Role != utils.ROLE_TYPE_CODE_ADMIN {
+			msg = "无权限操作"
+			err = fmt.Errorf("无权限操作")
+			return
+		}
+	}
+	ok = true
+	return
+}
+
+func DeleteEdbMonitorInfo(req request.EdbMonitorInfoDeleteReq, adminId int) (msg string, err error) {
+	ok, msg, err := OperatePermissionCheck(req.EdbMonitorId, adminId)
+	if !ok {
+		if msg == "" {
+			msg = "删除失败"
+		}
+		if err == nil {
+			err = fmt.Errorf("权限校验失败")
+		}
+		return
+	}
+
 	err = edbmonitor.DeleteEdbMonitorInfoById(req.EdbMonitorId)
 	if err != nil {
 		msg = "删除失败"
-		err = fmt.Errorf("DeleteEdbMonitorInfoById err:%w", err)
+		err = fmt.Errorf("删除预警失败 err:%w", err)
 	}
 	return
 }
@@ -360,9 +410,14 @@ func CloseEdbMonitorInfo(req request.EdbMonitorInfoCloseReq, adminId int) (msg s
 		err = fmt.Errorf("获取预警详情失败, err:%w", er)
 		return
 	}
-	if edbMonitor.CreateUserId != adminId {
-		msg = "无权限操作"
-		err = fmt.Errorf("无权限操作")
+	ok, msg, err := OperatePermissionCheck(req.EdbMonitorId, adminId)
+	if !ok {
+		if msg == "" {
+			msg = "删除失败"
+		}
+		if err == nil {
+			err = fmt.Errorf("权限校验失败")
+		}
 		return
 	}
 	if edbMonitor.State == EDB_MONITOR_STATE_CLOSE {
@@ -392,9 +447,14 @@ func RestartEdbMonitorInfo(req request.EdbMonitorInfoRestartReq, adminId int) (m
 		err = fmt.Errorf("获取预警详情失败, err:%w", er)
 		return
 	}
-	if edbMonitor.CreateUserId != adminId {
-		msg = "无权限操作"
-		err = fmt.Errorf("无权限操作")
+	ok, msg, err := OperatePermissionCheck(req.EdbMonitorId, adminId)
+	if !ok {
+		if msg == "" {
+			msg = "删除失败"
+		}
+		if err == nil {
+			err = fmt.Errorf("权限校验失败")
+		}
 		return
 	}
 	if edbMonitor.State != EDB_MONITOR_STATE_CLOSE {