262 lines
6.5 KiB
Go
262 lines
6.5 KiB
Go
package controller
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/1340691923/xwl_bi/engine/db"
|
|
"github.com/1340691923/xwl_bi/engine/logs"
|
|
"github.com/1340691923/xwl_bi/platform-basic-libs/jwt"
|
|
"github.com/1340691923/xwl_bi/platform-basic-libs/request"
|
|
"github.com/1340691923/xwl_bi/platform-basic-libs/response"
|
|
"github.com/1340691923/xwl_bi/platform-basic-libs/service/debug_data"
|
|
"github.com/1340691923/xwl_bi/platform-basic-libs/service/realdata"
|
|
"github.com/1340691923/xwl_bi/platform-basic-libs/util"
|
|
"github.com/gofiber/fiber/v2"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
type RealDataController struct {
|
|
BaseController
|
|
}
|
|
|
|
//查看实时数据列表
|
|
func (this RealDataController) List(ctx *fiber.Ctx) error {
|
|
|
|
type ReqData struct {
|
|
Appid int `json:"appid"`
|
|
SearchKw string `json:"searchKw"`
|
|
Date string `json:"date"`
|
|
}
|
|
|
|
var reqData ReqData
|
|
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
appid := strconv.Itoa(reqData.Appid)
|
|
|
|
type Res struct {
|
|
CreateTime string `json:"create_time" db:"-"`
|
|
CreateTimeDb time.Time `json:"-" db:"create_time"`
|
|
EventName string `json:"event_name" db:"event_name"`
|
|
ReportData string `json:"report_data" db:"report_data"`
|
|
}
|
|
|
|
filterSql := ""
|
|
|
|
date := strings.Split(reqData.Date,",")
|
|
|
|
args := []interface{}{appid}
|
|
|
|
if len(date) == 2{
|
|
filterSql = filterSql+ ` and create_time >= toDateTime(?) and create_time <=toDateTime(?) `
|
|
args = append(args, date[0],date[1])
|
|
}
|
|
logs.Logger.Sugar().Infof("reqData.SearchKw",reqData.SearchKw)
|
|
if strings.TrimSpace(reqData.SearchKw)!="" {
|
|
filterSql = filterSql+ ` and event_name like '%`+reqData.SearchKw+`%' `
|
|
}
|
|
sql := `select report_data,event_name,create_time as create_time from xwl_real_time_warehousing where table_id = ? `+filterSql+` order by create_time desc limit 0,1000;`
|
|
logs.Logger.Sugar().Infof("sql",sql,args)
|
|
var res []Res
|
|
err := db.ClickHouseSqlx.Select(&res,sql,
|
|
args...,
|
|
)
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
for index:= range res{
|
|
res[index].CreateTime = res[index].CreateTimeDb.Format(util.TimeFormat)
|
|
}
|
|
|
|
return this.Success(ctx, response.SearchSuccess, map[string]interface{}{"list": res})
|
|
}
|
|
|
|
//错误数据列表
|
|
func (this RealDataController) FailDataList(ctx *fiber.Ctx) error {
|
|
|
|
type ReqData struct {
|
|
Appid int `json:"appid"`
|
|
Minutes int `json:"minutes"`
|
|
}
|
|
|
|
var reqData ReqData
|
|
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
if reqData.Minutes == 0 {
|
|
reqData.Minutes = 10
|
|
}
|
|
|
|
realDataService := realdata.RealDataService{}
|
|
|
|
res,err := realDataService.FailDataList(reqData.Minutes,reqData.Appid)
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
return this.Success(ctx, response.SearchSuccess, map[string]interface{}{"list": res})
|
|
}
|
|
|
|
//抽样示例
|
|
func (this RealDataController) FailDataDesc(ctx *fiber.Ctx) error {
|
|
|
|
type ReqData struct {
|
|
StartTime string `json:"start_time"`
|
|
EndTime string `json:"end_time"`
|
|
Appid int `json:"appid"`
|
|
ErrorReason string `json:"error_reason"`
|
|
ErrorHandling string `json:"error_handling"`
|
|
ReportType string `json:"report_type"`
|
|
}
|
|
var reqData ReqData
|
|
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
startTime := reqData.StartTime
|
|
endTime := reqData.EndTime
|
|
appid := strconv.Itoa(reqData.Appid)
|
|
errorReason := reqData.ErrorReason
|
|
errorHandling := reqData.ErrorHandling
|
|
reportType := reqData.ReportType
|
|
|
|
realDataService := realdata.RealDataService{}
|
|
|
|
res,err := realDataService.FailDataDesc(appid,startTime,endTime,errorReason,errorHandling,reportType)
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
return this.Success(ctx, response.SearchSuccess, map[string]interface{}{"data": res})
|
|
}
|
|
|
|
//查看所有上报数据情况
|
|
func (this RealDataController) ReportCount(ctx *fiber.Ctx) error {
|
|
|
|
var err error
|
|
|
|
var reqData request.ReportCountReq
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
startTime := reqData.StartTime
|
|
endTime := reqData.EndTime
|
|
appid := strconv.Itoa(reqData.Appid)
|
|
|
|
realDataService := realdata.RealDataService{}
|
|
|
|
res,err := realDataService.ReportCount(appid,startTime,endTime)
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
|
|
return this.Success(ctx, response.SearchSuccess, map[string]interface{}{"list": res})
|
|
}
|
|
|
|
//事件失败详情
|
|
func (this RealDataController) EventFailDesc(ctx *fiber.Ctx) error {
|
|
|
|
|
|
var reqData request.EventFailDescReq
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
startTime := reqData.StartTime
|
|
endTime := reqData.EndTime
|
|
appid := strconv.Itoa(reqData.Appid)
|
|
dataName := reqData.DataName
|
|
|
|
realDataService := realdata.RealDataService{}
|
|
|
|
res,err := realDataService.EventFailDesc(appid,startTime,endTime,dataName)
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
return this.Success(ctx, response.SearchSuccess, map[string]interface{}{"list": res})
|
|
}
|
|
|
|
//添加DEBUG设备ID
|
|
func (this RealDataController) AddDebugDeviceID(ctx *fiber.Ctx) error {
|
|
|
|
var reqData request.AddDebugDeviceIDReq
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
appid := strconv.Itoa(reqData.Appid)
|
|
remark := reqData.Remark
|
|
deviceID := reqData.DeviceID
|
|
|
|
if deviceID == "" {
|
|
return this.Error(ctx, errors.New("设备ID不能为空"))
|
|
}
|
|
|
|
c, _ := jwt.ParseToken(this.GetToken(ctx))
|
|
|
|
debugData := debug_data.DebugData{}
|
|
|
|
err :=debugData.AddDebugDeviceID(appid,deviceID,remark,c.UserID)
|
|
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
return this.Success(ctx, response.OperateSuccess, nil)
|
|
}
|
|
|
|
//删除测试设备
|
|
func (this RealDataController) DelDebugDeviceID(ctx *fiber.Ctx) error {
|
|
|
|
var reqData request.DelDebugDeviceIDReq
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
appid := strconv.Itoa(reqData.Appid)
|
|
|
|
deviceID := reqData.DeviceID
|
|
|
|
c, _ := jwt.ParseToken(this.GetToken(ctx))
|
|
|
|
debugData := debug_data.DebugData{}
|
|
|
|
err :=debugData.DelDebugDeviceID(appid,deviceID,c.UserID)
|
|
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
return this.Success(ctx, response.OperateSuccess, nil)
|
|
}
|
|
|
|
//查看测试设备列表
|
|
func (this RealDataController) DebugDeviceIDList(ctx *fiber.Ctx) error {
|
|
|
|
var reqData request.DebugDeviceIDListReq
|
|
if err := ctx.BodyParser(&reqData); err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
|
|
appid := reqData.Appid
|
|
c, _ := jwt.ParseToken(this.GetToken(ctx))
|
|
|
|
debugData := debug_data.DebugData{}
|
|
|
|
res,err :=debugData.DebugDeviceIDList(appid,c.UserID)
|
|
|
|
if err != nil {
|
|
return this.Error(ctx, err)
|
|
}
|
|
return this.Success(ctx, response.SearchSuccess, map[string]interface{}{"list": res})
|
|
}
|