瀏覽代碼

add:增加用户列表

zqbao 4 月之前
父節點
當前提交
6ca076a641

+ 34 - 0
controllers/edb_monitor/edb_monitor.go

@@ -356,3 +356,37 @@ func (m *EdbMonitorController) GetMonitorLevel() {
 	br.Ret = 200
 	br.Success = true
 }
+
+// GetMonitorUser
+// @Title 预警管理用户列表
+// @Description 预警管理用户列表
+// @Param   request body request.EdbMonitorSaveRequest  true  "每页数据条数"
+// @Success 200 {object} models.EnglishReportEmailPageListResp
+// @router /monitor_user/list [get]
+func (m *EdbMonitorController) GetMonitorUser() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		m.Data["json"] = br
+		m.ServeJSON()
+	}()
+	sysUser := m.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	resp, msg, err := edbmonitor.GetEdbMonitorInfoUserList()
+	if err != nil {
+		if msg == "" {
+			msg = "获取用户列表失败"
+		}
+		br.Msg = msg
+		br.ErrMsg = err.Error()
+		return
+	}
+
+	br.Data = resp
+	br.Msg = "获取成功"
+	br.Ret = 200
+}

+ 56 - 0
controllers/edb_monitor/edb_monitor_message.go

@@ -0,0 +1,56 @@
+package edb_monitor
+
+import (
+	"eta/eta_api/controllers"
+	"eta/eta_api/models"
+	edbmonitor "eta/eta_api/services/edb_monitor"
+	"net/http"
+
+	"github.com/gorilla/websocket"
+)
+
+type EdbMonitorMessage struct {
+	controllers.BaseAuthController
+}
+
+var upgrader = websocket.Upgrader{
+	ReadBufferSize:  1024,
+	WriteBufferSize: 1024,
+	CheckOrigin: func(r *http.Request) bool {
+		return true
+	},
+}
+
+var edbMonitorMessageClient = make(map[int]*websocket.Conn)
+
+// GetMonitorLevel
+// @Title 预警管理消息
+// @Description 预警管理消息
+// @Param   request body request.EdbMonitorSaveRequest  true  "每页数据条数"
+// @Success 200 {object} models.EnglishReportEmailPageListResp
+// @router /message [get]
+func (m *EdbMonitorController) Message() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		m.Data["json"] = br
+		m.ServeJSON()
+	}()
+	sysUser := m.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	conn, err := upgrader.Upgrade(m.Ctx.ResponseWriter, m.Ctx.Request, nil)
+	if err != nil {
+		return
+	}
+	edbMonitorMessageClient[sysUser.AdminId] = conn
+	conn.SetCloseHandler(func(code int, text string) error {
+		delete(edbMonitorMessageClient, sysUser.AdminId)
+		return nil
+	})
+	edbmonitor.SendMessages(conn, sysUser.AdminId)
+
+}

+ 3 - 2
models/db.go

@@ -639,10 +639,11 @@ func initFactorEdbSeries() {
 	)
 }
 
+// 预警管理
 func initEdbMonitor() {
 	orm.RegisterModel(
-		new(edbmonitor.EdbMonitorInfo),     // 指标监控
-		new(edbmonitor.EdbMonitorClassify), // 指标监控日志
+		new(edbmonitor.EdbMonitorInfo),     // 预警管理
+		new(edbmonitor.EdbMonitorClassify), // 预警管理分类
 	)
 }
 

+ 7 - 0
models/edb_monitor/edb_monitor.go

@@ -104,3 +104,10 @@ func GetEdbMonitorInfoPageByCondition(condition string, pars []interface{}, star
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
+
+func GetEdbMonitorCreateUserId() (userIds []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT create_user_id FROM edb_monitor_info`
+	_, err = o.Raw(sql).QueryRows(&userIds)
+	return
+}

+ 31 - 0
models/edb_monitor/edb_monitor_message.go

@@ -0,0 +1,31 @@
+package edbmonitor
+
+import (
+	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+)
+
+type EdbMonitorMessage struct {
+	EdbMonitorMessageId int       `orm:"column(edb_monitor_message_id);pk"`
+	EdbInfoId           int       `description:"指标id"`
+	EdbInfoType         int       `description:"指标类型: 0-普通指标;1-预测指标"`
+	AdminId             int       `description:"用户id"`
+	IsRead              int       `description:"是否已读: 0-未读;1-已读"`
+	Message             string    `description:"消息内容"`
+	MonitorTriggerTime  time.Time `description:"预警触发时间"`
+	CreateTime          time.Time `description:"创建时间"`
+}
+
+func (m *EdbMonitorMessage) Insert() (insertId int64, err error) {
+	o := orm.NewOrm()
+	insertId, err = o.Insert(m)
+	return
+}
+
+func GetEdbMonitorMessageByAdminId(adminId int) (items []*EdbMonitorMessage, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM edb_monitor_message WHERE admin_id =? AND is_read = 0 ORDER BY is_read ASC, create_time DESC"
+	_, err = o.Raw(sql, adminId).QueryRows(&items)
+	return
+}

+ 12 - 1
models/edb_monitor/response/edb_monitor.go

@@ -1,6 +1,8 @@
 package response
 
-import "github.com/rdlucklib/rdluck_tools/paging"
+import (
+	"github.com/rdlucklib/rdluck_tools/paging"
+)
 
 type EdbMonitorInfoItem struct {
 	EdbMonitorId           int     `orm:"column(edb_monitor_id);pk"`
@@ -26,6 +28,15 @@ type EdbMonitorInfoItem struct {
 	ModifyTime             string  `description:"修改时间" json:"-"`
 }
 
+type EdbMonitorCreateUserItem struct {
+	AdminId  int    `description:"管理员id"`
+	RealName string `description:"管理员姓名"`
+}
+
+type EdbMonitorInfoCreateUserResp struct {
+	List []*EdbMonitorCreateUserItem `description:"创建人信息"`
+}
+
 type EdbMonitorInfoListResp struct {
 	List   []*EdbMonitorInfoItem `description:"预警列表"`
 	Paging *paging.PagingItem    `description:"分页信息"`

+ 21 - 0
models/edb_monitor/response/edb_monitor_message.go

@@ -0,0 +1,21 @@
+package response
+
+import "time"
+
+type EdbMonitorMessageResp struct {
+	EdbInfoId   int    `description:"指标id"`
+	EdbInfoType int    `description:"指标类型:0-普通指标;1-预测指标"`
+	Message     string `description:"消息内容"`
+	TriggerTime string `description:"触发时间"`
+}
+
+type EdbMonitorMessageListResp struct {
+	EdbMonitorMessageId int       `orm:"column(edb_monitor_message_id);pk"`
+	EdbInfoId           int       `description:"指标id"`
+	EdbInfoType         int       `description:"指标类型: 0-普通指标;1-预测指标"`
+	AdminId             int       `description:"用户id"`
+	IsRead              int       `description:"是否已读: 0-未读;1-已读"`
+	Message             string    `description:"消息内容"`
+	MonitorTriggerTime  string    `description:"预警触发时间"`
+	CreateTime          time.Time `description:"创建时间"`
+}

+ 13 - 2
models/system/sys_admin.go

@@ -3,10 +3,11 @@ package system
 import (
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 type AdminItem struct {
@@ -45,6 +46,16 @@ type AdminItem struct {
 	IsLdap                  int    `description:"是否为域用户:0-系统账户;1-域用户"`
 }
 
+func GetAdminItemByIdList(adminId []int) (items []*AdminItem, err error) {
+	if len(adminId) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM admin WHERE admin_id IN (` + utils.GetOrmInReplace(len(adminId)) + `) ORDER BY created_time DESC`
+	_, err = o.Raw(sql, adminId).QueryRows(&items)
+	return
+}
+
 func GetSysuserList(condition string, pars []interface{}, startSize, pageSize int) (items []*AdminItem, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM admin WHERE 1=1 `

+ 18 - 0
routers/commentsRouter.go

@@ -6559,6 +6559,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
+        beego.ControllerComments{
+            Method: "Message",
+            Router: `/message`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
         beego.ControllerComments{
             Method: "GetMonitorLevel",
@@ -6568,6 +6577,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
+        beego.ControllerComments{
+            Method: "GetMonitorUser",
+            Router: `/monitor_user/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
         beego.ControllerComments{
             Method: "Restart",

+ 1 - 0
routers/router.go

@@ -402,6 +402,7 @@ func init() {
 			web.NSInclude(
 				&edb_monitor.EdbMonitorController{},
 				&edb_monitor.EdbMonitorClassifyController{},
+				&edb_monitor.EdbMonitorMessage{},
 			),
 		),
 	)

+ 22 - 0
services/edb_monitor/edb_monitor.go

@@ -384,6 +384,28 @@ func RestartEdbMonitorInfo(req request.EdbMonitorInfoRestartReq, adminId int) (m
 	return
 }
 
+func GetEdbMonitorInfoUserList() (resp response.EdbMonitorInfoCreateUserResp, msg string, err error) {
+	userIdList, err := edbmonitor.GetEdbMonitorCreateUserId()
+	if err != nil {
+		msg = "获取用户列表失败"
+		return
+	}
+	adminList, err := system.GetAdminItemByIdList(userIdList)
+	if err != nil {
+		msg = "获取用户列表失败"
+		return
+	}
+	createUserItem := make([]*response.EdbMonitorCreateUserItem, 0)
+	for _, v := range adminList {
+		tmp := new(response.EdbMonitorCreateUserItem)
+		tmp.AdminId = v.AdminId
+		tmp.RealName = v.RealName
+		createUserItem = append(createUserItem, tmp)
+	}
+	resp.List = createUserItem
+	return
+}
+
 func toEdbMonitorInfoItems(edbmonitor []*edbmonitor.EdbMonitorInfo, userMap map[int]string, classifyPathMap map[int]string) []*response.EdbMonitorInfoItem {
 	res := make([]*response.EdbMonitorInfoItem, 0, len(edbmonitor))
 	for _, v := range edbmonitor {

+ 50 - 0
services/edb_monitor/edb_monitor_message.go

@@ -0,0 +1,50 @@
+package edbmonitor
+
+import (
+	"encoding/json"
+	edbmonitor "eta/eta_api/models/edb_monitor"
+	"eta/eta_api/models/edb_monitor/response"
+	"eta/eta_api/utils"
+	"time"
+
+	"github.com/gorilla/websocket"
+)
+
+func GetEdbMonitorMessageList(adminId int) {
+
+	edbmonitor.GetEdbMonitorMessageByAdminId(adminId)
+
+}
+
+func LogMessage(content string, triggerTime time.Time, edbInfoId, edbInfoType, adminId int) (err error) {
+	message := &edbmonitor.EdbMonitorMessage{
+		EdbInfoId:          edbInfoId,
+		EdbInfoType:        edbInfoType,
+		AdminId:            adminId,
+		IsRead:             0,
+		Message:            content,
+		MonitorTriggerTime: triggerTime,
+		CreateTime:         time.Now(),
+	}
+	_, err = message.Insert()
+
+	return err
+}
+
+func SendMessages(conn *websocket.Conn, adminId int) {
+	for {
+
+		messageList, _ := edbmonitor.GetEdbMonitorMessageByAdminId(adminId)
+		for _, message := range messageList {
+			msg := response.EdbMonitorMessageResp{
+				EdbInfoId:   message.EdbInfoId,
+				EdbInfoType: message.EdbInfoType,
+				Message:     message.Message,
+				TriggerTime: utils.TimeTransferString(utils.FormatDateTime, message.MonitorTriggerTime),
+			}
+			b, _ := json.Marshal(msg)
+			conn.WriteMessage(websocket.TextMessage, b)
+		}
+		time.Sleep(5 * time.Minute)
+	}
+}