Browse Source

数据源终端管理

xyxie 1 year ago
parent
commit
563999f867

+ 154 - 0
controllers/data_stat/edb_terminal.go

@@ -0,0 +1,154 @@
+package data_stat
+
+import (
+	"encoding/json"
+	"eta/eta_api/controllers"
+	"eta/eta_api/models"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/services/data_stat"
+)
+
+// EdbTerminalController 数据源终端管理
+type EdbTerminalController struct {
+	controllers.BaseAuthController
+}
+
+// Save
+// @Title 保存数据源终端
+// @Description 保存数据源终端接口
+// @Param	request  body  true data_manage.AddEdbTerminalListReq  "type json string"
+// @Success 200 string "操作成功"
+// @router /terminal/save [post]
+func (this *EdbTerminalController) Save() {
+	br := new(models.BaseResponse).Init()
+	br.IsSendEmail = false
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req *data_manage.AddEdbTerminalListReq
+	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.Name == "" {
+		br.Msg = "请输入终端名称"
+		return
+	}
+	if req.ServerUrl == "" {
+		br.Msg = "请输入终端地址"
+		return
+	}
+	if req.Num <= 0 {
+		br.Msg = "请输入指标数据量"
+		return
+	}
+	if req.Source == 0 {
+		br.Msg = "请输入终端类型"
+		return
+	}
+
+	// todo 校验终端数据
+
+	errMsg, err := data_stat.SaveEdbTerminal(req)
+	if err != nil {
+		br.Msg = errMsg
+		br.ErrMsg = "SaveEnglishVideoCover ErrMsg:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	return
+}
+
+// SetStatus
+// @Title 启用/禁用数据源终端
+// @Description 启用/禁用数据源终端
+// @Param	request  body  true data_manage.SetEdbTerminalStatusReq  "type json string"
+// @Success 200 string "操作成功"
+// @router /terminal/status/set [post]
+func (this *EdbTerminalController) SetStatus() {
+	br := new(models.BaseResponse).Init()
+	br.IsSendEmail = false
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req *data_manage.SetEdbTerminalStatusReq
+	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.TerminalId <= 0 {
+		br.Msg = "请选择要操作的终端"
+		return
+	}
+
+	if req.Status != 1 && req.Status != 2 {
+		br.Msg = "请选择正确的终端状态"
+		return
+	}
+
+	errMsg, err := data_stat.SetEdbTerminalStatus(req.TerminalId, req.Status)
+	if err != nil {
+		br.Msg = errMsg
+		br.ErrMsg = "SetEdbTerminalStatus ErrMsg:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	return
+}
+
+// List
+// @Title 数据源终端列表
+// @Description 数据源终端列表接口
+// @Success 200 {object} data_manage.EdbTerminalLisResp
+// @router /terminal/list [get]
+func (this *EdbTerminalController) List() {
+	br := new(models.BaseResponse).Init()
+	br.IsSendEmail = false
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	list, err := data_manage.GetEdbTerminalList()
+	if err != nil {
+		br.Msg = "获取终端列表失败"
+		br.ErrMsg = "获取终端列表失败 ErrMsg:" + err.Error()
+		return
+	}
+	resp := &data_manage.EdbTerminalLisResp{
+		List: list,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 64 - 1
models/data_manage/edb_terminal.go

@@ -10,9 +10,10 @@ import (
 type EdbTerminal struct {
 	TerminalId   int       `orm:"column(terminal_id);pk"`
 	Source       int       `orm:"column(source)" description:"指标来源类型"`
-	Name         string    `description:"终端名"`
+	Name         string    `description:"终端名"`
 	TerminalCode string    `description:"终端编码,用于配置在机器上"`
 	ServerUrl    string    `description:"终端地址"`
+	DirPath      string    `description:"终端存放的文件夹路径"`
 	Num          int       `description:"终端最大指标数"`
 	Status       int       `description:"状态,1启用,2禁用"`
 	Value        string    `description:"终端相关的token"`
@@ -20,6 +21,20 @@ type EdbTerminal struct {
 	CreateTime   time.Time `description:"创建时间"`
 }
 
+type EdbTerminalItem struct {
+	TerminalId   int    `orm:"column(terminal_id);pk"`
+	Source       int    `description:"指标来源类型"`
+	Name         string `description:"终端别名"`
+	TerminalCode string `description:"终端编码,用于配置在机器上"`
+	ServerUrl    string `description:"终端地址"`
+	DirPath      string `description:"终端存放的文件夹路径"`
+	Num          int    `description:"终端最大指标数"`
+	Status       int    `description:"状态,1启用,2禁用"`
+	Value        string `description:"终端相关的token"`
+	ModifyTime   string `description:"修改时间"`
+	CreateTime   string `description:"创建时间"`
+}
+
 // GetEdbTerminalListBySource 根据指标来源类型获取所有的终端列表
 func GetEdbTerminalListBySource(source int) (items []*EdbTerminal, err error) {
 	o := orm.NewOrmUsingDB("data")
@@ -32,6 +47,27 @@ type BaseIndexTerminalCode struct {
 	TerminalCode string `description:"终端编码,用于配置在机器上"`
 }
 
+type EdbTerminalLisResp struct {
+	List []*EdbTerminalItem `description:"列表数据"`
+}
+
+type AddEdbTerminalListReq struct {
+	TerminalId int    `description:"终端id"`
+	Source     int    `description:"指标来源类型"`
+	Name       string `description:"终端别名"`
+	//TerminalCode string `description:"终端编码,用于配置在机器上"`
+	ServerUrl string `description:"终端地址"`
+	DirPath   string `description:"终端存放的文件夹路径"`
+	Num       int    `description:"终端最大指标数"`
+	Status    int    `description:"状态,1启用,2禁用"`
+	Value     string `description:"终端相关的token"`
+}
+
+type SetEdbTerminalStatusReq struct {
+	TerminalId int `description:"终端id"`
+	Status     int `description:"状态,1启用,2禁用"`
+}
+
 // GetBaseIndexTerminalCode 获取数据源的终端code
 func GetBaseIndexTerminalCode(edbCode, tableName string) (item BaseIndexTerminalCode, err error) {
 	o := orm.NewOrmUsingDB("data")
@@ -39,3 +75,30 @@ func GetBaseIndexTerminalCode(edbCode, tableName string) (item BaseIndexTerminal
 	err = o.Raw(sql, edbCode).QueryRow(&item)
 	return
 }
+
+// GetEdbTerminalById 主键获取终端
+func GetEdbTerminalById(id int) (item *EdbTerminal, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM edb_terminal WHERE terminal_id = ? LIMIT 1`
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}
+
+func GetEdbTerminalList() (item []*EdbTerminalItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_terminal ORDER BY terminal_id ASC`
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
+func (item *EdbTerminal) Add() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Insert(item)
+	return
+}
+
+func (item *EdbTerminal) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(item, cols...)
+	return
+}

+ 27 - 0
routers/commentsRouter.go

@@ -3490,6 +3490,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_stat:EdbTerminalController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_stat:EdbTerminalController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/terminal/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_stat:EdbTerminalController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_stat:EdbTerminalController"],
+        beego.ControllerComments{
+            Method: "Save",
+            Router: `/terminal/save`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_stat:EdbTerminalController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_stat:EdbTerminalController"],
+        beego.ControllerComments{
+            Method: "SetStatus",
+            Router: `/terminal/status/set`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnPermissionController"],
         beego.ControllerComments{
             Method: "Add",

+ 1 - 0
routers/router.go

@@ -291,6 +291,7 @@ func init() {
 		web.NSNamespace("/data_stat/",
 			web.NSInclude(
 				&data_stat.EdbSourceStatController{},
+				&data_stat.EdbTerminalController{},
 			),
 		),
 	)

+ 90 - 0
services/data_stat/edb_terminal.go

@@ -0,0 +1,90 @@
+package data_stat
+
+import (
+	"errors"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/utils"
+	"time"
+)
+
+// SaveEdbTerminal 保存数据源终端信息
+func SaveEdbTerminal(req *data_manage.AddEdbTerminalListReq) (errMsg string, err error) {
+	nowTime := time.Now().Local()
+	// 更新
+	if req.TerminalId > 0 {
+		item, e := data_manage.GetEdbTerminalById(req.TerminalId)
+		if e != nil {
+			if e.Error() == utils.ErrNoRow() {
+				errMsg = "终端不存在"
+				err = errors.New(errMsg)
+				return
+			}
+			errMsg = "获取终端信息失败"
+			err = errors.New("获取终端信息失败, Err:" + e.Error())
+			return
+		}
+		updateCols := make([]string, 0)
+		updateCols = append(updateCols, "Source", "Name", "ServerUrl", "DirPath", "Num", "Status", "Value", "ModifyTime")
+		item.Source = req.Source
+		item.Name = req.Name
+		item.ServerUrl = req.ServerUrl
+		item.DirPath = req.DirPath
+		item.Num = req.Num
+		item.Value = req.Value
+		// todo 状态是否可修改
+		item.Status = req.Status
+		item.ModifyTime = nowTime
+		if e := item.Update(updateCols); e != nil {
+			errMsg = "更新失败"
+			err = errors.New("更新终端失败, Err:" + e.Error())
+		}
+		return
+	}
+	// todo 自动生成终端编码
+	terminalCode := ""
+	//item.TerminalCode = req.TerminalCode
+	// 新增
+	newTerminal := &data_manage.EdbTerminal{
+		Source:       req.Source,
+		Name:         req.Name,
+		TerminalCode: terminalCode,
+		ServerUrl:    req.ServerUrl,
+		DirPath:      req.DirPath,
+		Num:          req.Num,
+		Status:       1,
+		Value:        req.Value,
+		CreateTime:   nowTime,
+		ModifyTime:   nowTime,
+	}
+	if e := newTerminal.Add(); e != nil {
+		errMsg = "新增失败"
+		err = errors.New("新增终端失败, Err:" + e.Error())
+	}
+	return
+}
+
+// SetEdbTerminalStatus 启用/禁用 终端
+func SetEdbTerminalStatus(id int, status int) (errMsg string, err error) {
+	nowTime := time.Now().Local()
+	// 更新
+	item, e := data_manage.GetEdbTerminalById(id)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			errMsg = "终端不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取终端信息失败"
+		err = errors.New("获取终端信息失败, Err:" + e.Error())
+		return
+	}
+	updateCols := make([]string, 0)
+	updateCols = append(updateCols, "Status", "ModifyTime")
+	item.Status = status
+	item.ModifyTime = nowTime
+	if e := item.Update(updateCols); e != nil {
+		errMsg = "更新失败"
+		err = errors.New("更新终端失败, Err:" + e.Error())
+	}
+	return
+}