From 9de418ce1db2bc4ad366d046c6b721ae10638c30 Mon Sep 17 00:00:00 2001 From: xiangheng <11675084@qq.com> Date: Mon, 17 Jun 2024 22:29:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/monitor_client.ts | 92 +++++-- admin/src/views/monitor_client/edit.vue | 134 ++++------- admin/src/views/monitor_client/index.vue | 162 +++++++++---- .../tpl_utils/templates/gocode/service.go.tpl | 1 + .../tpl_utils/templates/uniapp/edit.vue.tpl | 12 +- .../monitor_client/monitor_client_ctl.go | 226 ++++++++++-------- .../monitor_client/monitor_client_schema.go | 79 +++--- .../monitor_client/monitor_client_service.go | 92 +++---- server/admin/monitor_client_route.go | 42 ++-- server/model/monitor_client.go | 10 +- x_admin_app/api/monitor_client.ts | 103 ++++++++ x_admin_app/components/x-date/x-date.vue | 31 +++ x_admin_app/hooks/usePaging.ts | 1 + x_admin_app/pages.json | 28 +++ x_admin_app/pages/index/index.vue | 5 + x_admin_app/pages/monitor_client/details.vue | 114 +++++++++ x_admin_app/pages/monitor_client/edit.vue | 191 +++++++++++++++ x_admin_app/pages/monitor_client/index.vue | 135 +++++++++++ x_admin_app/pages/monitor_client/pages.json | 32 +++ x_admin_app/pages/monitor_client/search.vue | 99 ++++++++ 20 files changed, 1228 insertions(+), 361 deletions(-) create mode 100644 x_admin_app/api/monitor_client.ts create mode 100644 x_admin_app/components/x-date/x-date.vue create mode 100644 x_admin_app/pages/monitor_client/details.vue create mode 100644 x_admin_app/pages/monitor_client/edit.vue create mode 100644 x_admin_app/pages/monitor_client/index.vue create mode 100644 x_admin_app/pages/monitor_client/pages.json create mode 100644 x_admin_app/pages/monitor_client/search.vue diff --git a/admin/src/api/monitor_client.ts b/admin/src/api/monitor_client.ts index 86ff400..b85ec18 100644 --- a/admin/src/api/monitor_client.ts +++ b/admin/src/api/monitor_client.ts @@ -1,30 +1,86 @@ import request from '@/utils/request' +import type { Pages } from '@/utils/request' -// 客户端信息列表 -export function monitor_client_list(params?: Record) { - return request.get({ url: '/monitor_client/list', params }) +import config from '@/config' +import queryString from 'query-string' +import { getToken } from '@/utils/auth' + +export type type_monitor_client = { + id?: number; + projectKey?: string; + clientId?: string; + userId?: string; + os?: string; + browser?: string; + city?: string; + width?: number; + height?: number; + ua?: string; + createTime?: string; + clientTime?: string; } -// 客户端信息列表-所有 -export function monitor_client_list_all(params?: Record) { - return request.get({ url: '/monitor_client/listAll', params }) +// 查询 +export type type_monitor_client_query = { + projectKey?: string; + clientId?: string; + userId?: string; + os?: string; + browser?: string; + city?: string; + width?: number; + height?: number; + ua?: string; + createTimeStart?: string; + createTimeEnd?: string; + clientTimeStart?: string; + clientTimeEnd?: string; +} +// 添加编辑 +export type type_monitor_client_edit = { + clientId?: string; + userId?: string; + os?: string; + browser?: string; + city?: string; + width?: number; + height?: number; + ua?: string; + clientTime?: string; } -// 客户端信息详情 -export function monitor_client_detail(params: { id: string }) { - return request.get({ url: '/monitor_client/detail', params }) +// 监控-客户端信息列表 +export function monitor_client_list(params?: type_monitor_client_query) { + return request.get>({ url: '/monitor_client/list', params }) +} +// 监控-客户端信息列表-所有 +export function monitor_client_list_all(params?: type_monitor_client_query) { + return request.get>({ url: '/monitor_client/listAll', params }) } -// 客户端信息新增 -export function monitor_client_add(data: Record) { - return request.post({ url: '/monitor_client/add', data }) +// 监控-客户端信息详情 +export function monitor_client_detail(id: number | string) { + return request.get({ url: '/monitor_client/detail', params: { id } }) } -// 客户端信息编辑 -export function monitor_client_edit(data: Record) { - return request.post({ url: '/monitor_client/edit', data }) +// 监控-客户端信息新增 +export function monitor_client_add(data: type_monitor_client_edit) { + return request.post({ url: '/monitor_client/add', data }) } -// 客户端信息删除 -export function monitor_client_delete(data: Record) { - return request.post({ url: '/monitor_client/del', data }) +// 监控-客户端信息编辑 +export function monitor_client_edit(data: type_monitor_client_edit) { + return request.post({ url: '/monitor_client/edit', data }) +} + +// 监控-客户端信息删除 +export function monitor_client_delete(id: number | string) { + return request.post({ url: '/monitor_client/del', data: { id } }) +} + +// 监控-客户端信息导入 +export const monitor_client_import_file = '/monitor_client/ImportFile' + +// 监控-客户端信息导出 +export function monitor_client_export_file(params: any) { + return (window.location.href =`${config.baseUrl}${config.urlPrefix}/monitor_client/ExportFile?token=${getToken()}&` + queryString.stringify(params)) } diff --git a/admin/src/views/monitor_client/edit.vue b/admin/src/views/monitor_client/edit.vue index 7f38905..b2391bf 100644 --- a/admin/src/views/monitor_client/edit.vue +++ b/admin/src/views/monitor_client/edit.vue @@ -10,47 +10,48 @@ @close="handleClose" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/admin/generator/tpl_utils/templates/gocode/service.go.tpl b/server/admin/generator/tpl_utils/templates/gocode/service.go.tpl index 11231ad..617237a 100644 --- a/server/admin/generator/tpl_utils/templates/gocode/service.go.tpl +++ b/server/admin/generator/tpl_utils/templates/gocode/service.go.tpl @@ -50,6 +50,7 @@ func (service {{{ toCamelCase .EntityName }}}Service) GetModel(listReq {{{ title {{{- if contains .AllFields "is_delete" }}} dbModel = dbModel.Where("is_delete = ?", 0) {{{- end }}} + return dbModel } // List {{{ .FunctionName }}}列表 func (service {{{ toCamelCase .EntityName }}}Service) List(page request.PageReq, listReq {{{ title (toCamelCase .EntityName) }}}ListReq) (res response.PageResp, e error) { diff --git a/server/admin/generator/tpl_utils/templates/uniapp/edit.vue.tpl b/server/admin/generator/tpl_utils/templates/uniapp/edit.vue.tpl index 6d137e5..6d687bd 100644 --- a/server/admin/generator/tpl_utils/templates/uniapp/edit.vue.tpl +++ b/server/admin/generator/tpl_utils/templates/uniapp/edit.vue.tpl @@ -10,12 +10,14 @@ {{{- else if eq .HtmlType "textarea" }}} + {{{- else if eq .HtmlType "datetime" }}} + {{{- else if or (eq .HtmlType "checkbox") (eq .HtmlType "radio") (eq .HtmlType "select")}}} - {{{- if ne .DictType "" }}} - - {{{- else }}} - 请选择字典生成代码 - {{{- end }}} + {{{- if ne .DictType "" }}} + + {{{- else }}} + 请选择字典生成代码 + {{{- end }}} {{{- end }}} {{{- end }}} diff --git a/server/admin/monitor_client/monitor_client_ctl.go b/server/admin/monitor_client/monitor_client_ctl.go index a8fb5fa..97f083d 100644 --- a/server/admin/monitor_client/monitor_client_ctl.go +++ b/server/admin/monitor_client/monitor_client_ctl.go @@ -3,35 +3,38 @@ package monitor_client import ( "net/http" "time" + "github.com/gin-gonic/gin" "x_admin/core/request" "x_admin/core/response" "x_admin/util" "x_admin/util/excel" - - "github.com/gin-gonic/gin" ) -type MonitorClientHandler struct{} + +type MonitorClientHandler struct {} -// @Summary 客户端信息列表 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Param Token header string true "token" -// @Param PageNo query int true "页码" -// @Param PageSize query int true "每页数量" -// @Param projectKey query string false "项目key." -// @Param clientId query string false "sdk生成的客户端id." -// @Param userId query string false "用户id." -// @Param os query string false "系统." -// @Param browser query string false "浏览器." -// @Param city query string false "城市." -// @Param width query int false "屏幕." -// @Param height query int false "屏幕高度." -// @Param ua query string false "ua记录." -// @Param clientTime query int false "客户端时间." -// @Success 200 {object} []MonitorClientResp "成功" -// @Failure 400 {object} string "请求错误" -// @Router /api/admin/monitor_client/list [get] +// @Summary 监控-客户端信息列表 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param Token header string true "token" +// @Param PageNo query int true "页码" +// @Param PageSize query int true "每页数量" +// @Param projectKey query string false "项目key." +// @Param clientId query string false "sdk生成的客户端id." +// @Param userId query string false "用户id." +// @Param os query string false "系统." +// @Param browser query string false "浏览器." +// @Param city query string false "城市." +// @Param width query int false "屏幕." +// @Param height query int false "屏幕高度." +// @Param ua query string false "ua记录." +// @Param createTimeStart query core.TsTime false "创建时间." +// @Param createTimeEnd query core.TsTime false "创建时间." +// @Param clientTimeStart query core.TsTime false "更新时间." +// @Param clientTimeEnd query core.TsTime false "更新时间." +// @Success 200 {object} []MonitorClientResp "成功" +// @Failure 400 {object} string "请求错误" +// @Router /api/admin/monitor_client/list [get] func (hd MonitorClientHandler) List(c *gin.Context) { var page request.PageReq var listReq MonitorClientListReq @@ -45,28 +48,40 @@ func (hd MonitorClientHandler) List(c *gin.Context) { response.CheckAndRespWithData(c, res, err) } -// @Summary 客户端信息列表-所有 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Success 200 {object} []MonitorClientResp "成功" -// @Router /api/admin/monitor_client/listAll [get] +// @Summary 监控-客户端信息列表-所有 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param projectKey query string false "项目key." +// @Param clientId query string false "sdk生成的客户端id." +// @Param userId query string false "用户id." +// @Param os query string false "系统." +// @Param browser query string false "浏览器." +// @Param city query string false "城市." +// @Param width query int false "屏幕." +// @Param height query int false "屏幕高度." +// @Param ua query string false "ua记录." +// @Param createTimeStart query core.TsTime false "创建时间." +// @Param createTimeEnd query core.TsTime false "创建时间." +// @Param clientTimeStart query core.TsTime false "更新时间." +// @Param clientTimeEnd query core.TsTime false "更新时间." +// @Success 200 {object} []MonitorClientResp "成功" +// @Router /api/admin/monitor_client/listAll [get] func (hd MonitorClientHandler) ListAll(c *gin.Context) { - //var listReq MonitorClientListReq - //if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) { - // return - //} - res, err := Service.ListAll() - + var listReq MonitorClientListReq + if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) { + return + } + res, err := Service.ListAll(listReq) response.CheckAndRespWithData(c, res, err) } -// @Summary 客户端信息详情 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Param Token header string true "token" -// @Param id query int false "uuid." -// @Success 200 {object} MonitorClientResp "成功" -// @Router /api/admin/monitor_client/detail [get] +// @Summary 监控-客户端信息详情 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param Token header string true "token" +// @Param id query int false "uuid." +// @Success 200 {object} MonitorClientResp "成功" +// @Router /api/admin/monitor_client/detail [get] func (hd MonitorClientHandler) Detail(c *gin.Context) { var detailReq MonitorClientDetailReq if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) { @@ -76,22 +91,22 @@ func (hd MonitorClientHandler) Detail(c *gin.Context) { response.CheckAndRespWithData(c, res, err) } -// @Summary 客户端信息新增 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Param Token header string true "token" -// @Param projectKey body string false "项目key." -// @Param clientId body string false "sdk生成的客户端id." -// @Param userId body string false "用户id." -// @Param os body string false "系统." -// @Param browser body string false "浏览器." -// @Param city body string false "城市." -// @Param width body int false "屏幕." -// @Param height body int false "屏幕高度." -// @Param ua body string false "ua记录." -// @Param clientTime body int false "客户端时间." -// @Success 200 {object} response.RespType "成功" -// @Router /api/admin/monitor_client/add [post] + +// @Summary 监控-客户端信息新增 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param Token header string true "token" +// @Param clientId body string false "sdk生成的客户端id." +// @Param userId body string false "用户id." +// @Param os body string false "系统." +// @Param browser body string false "浏览器." +// @Param city body string false "城市." +// @Param width body int false "屏幕." +// @Param height body int false "屏幕高度." +// @Param ua body string false "ua记录." +// @Param clientTime body core.TsTime false "更新时间." +// @Success 200 {object} response.RespType "成功" +// @Router /api/admin/monitor_client/add [post] func (hd MonitorClientHandler) Add(c *gin.Context) { var addReq MonitorClientAddReq if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) { @@ -99,24 +114,21 @@ func (hd MonitorClientHandler) Add(c *gin.Context) { } response.CheckAndResp(c, Service.Add(addReq)) } - -// @Summary 客户端信息编辑 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Param Token header string true "token" -// @Param id body int false "uuid." -// @Param projectKey body string false "项目key." -// @Param clientId body string false "sdk生成的客户端id." -// @Param userId body string false "用户id." -// @Param os body string false "系统." -// @Param browser body string false "浏览器." -// @Param city body string false "城市." -// @Param width body int false "屏幕." -// @Param height body int false "屏幕高度." -// @Param ua body string false "ua记录." -// @Param clientTime body int false "客户端时间." -// @Success 200 {object} response.RespType "成功" -// @Router /api/admin/monitor_client/edit [post] +// @Summary 监控-客户端信息编辑 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param Token header string true "token" +// @Param clientId body string false "sdk生成的客户端id." +// @Param userId body string false "用户id." +// @Param os body string false "系统." +// @Param browser body string false "浏览器." +// @Param city body string false "城市." +// @Param width body int false "屏幕." +// @Param height body int false "屏幕高度." +// @Param ua body string false "ua记录." +// @Param clientTime body core.TsTime false "更新时间." +// @Success 200 {object} response.RespType "成功" +// @Router /api/admin/monitor_client/edit [post] func (hd MonitorClientHandler) Edit(c *gin.Context) { var editReq MonitorClientEditReq if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) { @@ -124,14 +136,13 @@ func (hd MonitorClientHandler) Edit(c *gin.Context) { } response.CheckAndResp(c, Service.Edit(editReq)) } - -// @Summary 客户端信息删除 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Param Token header string true "token" -// @Param id body int false "uuid." -// @Success 200 {object} response.RespType "成功" -// @Router /api/admin/monitor_client/del [post] +// @Summary 监控-客户端信息删除 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param Token header string true "token" +// @Param id body int false "uuid." +// @Success 200 {object} response.RespType "成功" +// @Router /api/admin/monitor_client/del [post] func (hd MonitorClientHandler) Del(c *gin.Context) { var delReq MonitorClientDelReq if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) { @@ -140,21 +151,24 @@ func (hd MonitorClientHandler) Del(c *gin.Context) { response.CheckAndResp(c, Service.Del(delReq.Id)) } -// @Summary 客户端信息导出 -// @Tags monitor_client-客户端信息 -// @Produce json -// @Param Token header string true "token" -// @Param projectKey query string false "项目key." -// @Param clientId query string false "sdk生成的客户端id." -// @Param userId query string false "用户id." -// @Param os query string false "系统." -// @Param browser query string false "浏览器." -// @Param city query string false "城市." -// @Param width query int false "屏幕." -// @Param height query int false "屏幕高度." -// @Param ua query string false "ua记录." -// @Param clientTime query int false "客户端时间." -// @Router /api/admin/monitor_client/ExportFile [get] + + +// @Summary 监控-客户端信息导出 +// @Tags monitor_client-监控-客户端信息 +// @Produce json +// @Param Token header string true "token" +// @Param projectKey query string false "项目key." +// @Param clientId query string false "sdk生成的客户端id." +// @Param userId query string false "用户id." +// @Param os query string false "系统." +// @Param browser query string false "浏览器." +// @Param city query string false "城市." +// @Param width query int false "屏幕." +// @Param height query int false "屏幕高度." +// @Param ua query string false "ua记录." +// @Param createTime query core.TsTime false "创建时间." +// @Param clientTime query core.TsTime false "更新时间." +// @Router /api/admin/monitor_client/ExportFile [get] func (hd MonitorClientHandler) ExportFile(c *gin.Context) { var listReq MonitorClientListReq if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) { @@ -165,17 +179,17 @@ func (hd MonitorClientHandler) ExportFile(c *gin.Context) { response.FailWithMsg(c, response.SystemError, "查询信息失败") return } - f, err := excel.NormalDynamicExport(res, "Sheet1", "客户端信息", nil) + f, err := excel.NormalDynamicExport(res, "Sheet1", "监控-客户端信息", nil) if err != nil { response.FailWithMsg(c, response.SystemError, "导出失败") return } - excel.DownLoadExcel("客户端信息"+time.Now().Format("2006-01-02 15:04:05"), c.Writer, f) + excel.DownLoadExcel("监控-客户端信息" + time.Now().Format("20060102-150405"), c.Writer, f) } -// @Summary 客户端信息导入 -// @Tags monitor_client-客户端信息 -// @Produce json +// @Summary 监控-客户端信息导入 +// @Tags monitor_client-监控-客户端信息 +// @Produce json func (hd MonitorClientHandler) ImportFile(c *gin.Context) { file, _, err := c.Request.FormFile("file") if err != nil { @@ -189,9 +203,9 @@ func (hd MonitorClientHandler) ImportFile(c *gin.Context) { c.String(http.StatusInternalServerError, err.Error()) return } - // for _, t := range importList { - // fmt.Printf("%#v", t) - // } +// for _, t := range importList { +// fmt.Printf("%#v", t) +// } err = Service.ImportFile(importList) response.CheckAndResp(c, err) -} +} \ No newline at end of file diff --git a/server/admin/monitor_client/monitor_client_schema.go b/server/admin/monitor_client/monitor_client_schema.go index 7426bd1..6a2b53b 100644 --- a/server/admin/monitor_client/monitor_client_schema.go +++ b/server/admin/monitor_client/monitor_client_schema.go @@ -2,62 +2,63 @@ package monitor_client import "x_admin/core" -//MonitorClientListReq 客户端信息列表参数 +//MonitorClientListReq 监控-客户端信息列表参数 type MonitorClientListReq struct { - ProjectKey string `form:"projectKey"` // 项目key - ClientId string `form:"clientId"` // sdk生成的客户端id - UserId string `form:"userId"` // 用户id - Os string `form:"os"` // 系统 - Browser string `form:"browser"` // 浏览器 - City string `form:"city"` // 城市 - Width int `form:"width"` // 屏幕 - Height int `form:"height"` // 屏幕高度 - Ua string `form:"ua"` // ua记录 - ClientTime string `form:"clientTime"` // 客户端时间 + ProjectKey string `form:"projectKey"` // 项目key + ClientId string `form:"clientId"` // sdk生成的客户端id + UserId string `form:"userId"` // 用户id + Os string `form:"os"` // 系统 + Browser string `form:"browser"` // 浏览器 + City string `form:"city"` // 城市 + Width int `form:"width"` // 屏幕 + Height int `form:"height"` // 屏幕高度 + Ua string `form:"ua"` // ua记录 + CreateTimeStart string `form:"createTimeStart"` // 开始创建时间 + CreateTimeEnd string `form:"createTimeEnd"` // 结束创建时间 + ClientTimeStart string `form:"clientTimeStart"` // 开始更新时间 + ClientTimeEnd string `form:"clientTimeEnd"` // 结束更新时间 } -//MonitorClientDetailReq 客户端信息详情参数 +//MonitorClientDetailReq 监控-客户端信息详情参数 type MonitorClientDetailReq struct { Id int `form:"id"` // uuid } -//MonitorClientAddReq 客户端信息新增参数 +//MonitorClientAddReq 监控-客户端信息新增参数 type MonitorClientAddReq struct { - ProjectKey string `form:"projectKey"` // 项目key - ClientId string `form:"clientId"` // sdk生成的客户端id - UserId string `form:"userId"` // 用户id - Os string `form:"os"` // 系统 - Browser string `form:"browser"` // 浏览器 - City string `form:"city"` // 城市 - Width int `form:"width"` // 屏幕 - Height int `form:"height"` // 屏幕高度 - Ua string `form:"ua"` // ua记录 - ClientTime string `form:"clientTime"` // 客户端时间 + ClientId string `form:"clientId"` // sdk生成的客户端id + UserId string `form:"userId"` // 用户id + Os string `form:"os"` // 系统 + Browser string `form:"browser"` // 浏览器 + City string `form:"city"` // 城市 + Width int `form:"width"` // 屏幕 + Height int `form:"height"` // 屏幕高度 + Ua string `form:"ua"` // ua记录 + ClientTime core.TsTime `form:"clientTime"` // 更新时间 } -//MonitorClientEditReq 客户端信息编辑参数 +//MonitorClientEditReq 监控-客户端信息编辑参数 type MonitorClientEditReq struct { - Id int `form:"id"` // uuid - ProjectKey string `form:"projectKey"` // 项目key - ClientId string `form:"clientId"` // sdk生成的客户端id - UserId string `form:"userId"` // 用户id - Os string `form:"os"` // 系统 - Browser string `form:"browser"` // 浏览器 - City string `form:"city"` // 城市 - Width int `form:"width"` // 屏幕 - Height int `form:"height"` // 屏幕高度 - Ua string `form:"ua"` // ua记录 - ClientTime string `form:"clientTime"` // 客户端时间 + Id int `form:"id"` // id + ClientId string `form:"clientId"` // sdk生成的客户端id + UserId string `form:"userId"` // 用户id + Os string `form:"os"` // 系统 + Browser string `form:"browser"` // 浏览器 + City string `form:"city"` // 城市 + Width int `form:"width"` // 屏幕 + Height int `form:"height"` // 屏幕高度 + Ua string `form:"ua"` // ua记录 + ClientTime core.TsTime `form:"clientTime"` // 更新时间 } -//MonitorClientDelReq 客户端信息新增参数 +//MonitorClientDelReq 监控-客户端信息新增参数 type MonitorClientDelReq struct { Id int `form:"id"` // uuid } -//MonitorClientResp 客户端信息返回信息 +//MonitorClientResp 监控-客户端信息返回信息 type MonitorClientResp struct { - Id int `json:"id" structs:"id" excel:"name:uuid;"` // uuid + Id int `json:"id" structs:"id"` // uuid ProjectKey string `json:"projectKey" structs:"projectKey" excel:"name:项目key;"` // 项目key ClientId string `json:"clientId" structs:"clientId" excel:"name:sdk生成的客户端id;"` // sdk生成的客户端id UserId string `json:"userId" structs:"userId" excel:"name:用户id;"` // 用户id @@ -67,6 +68,6 @@ type MonitorClientResp struct { Width int `json:"width" structs:"width" excel:"name:屏幕;"` // 屏幕 Height int `json:"height" structs:"height" excel:"name:屏幕高度;"` // 屏幕高度 Ua string `json:"ua" structs:"ua" excel:"name:ua记录;"` // ua记录 - ClientTime core.TsTime `json:"clientTime" structs:"clientTime" excel:"name:客户端时间;"` // 客户端时间 CreateTime core.TsTime `json:"createTime" structs:"createTime" excel:"name:创建时间;"` // 创建时间 + ClientTime core.TsTime `json:"clientTime" structs:"clientTime" excel:"name:更新时间;"` // 更新时间 } diff --git a/server/admin/monitor_client/monitor_client_service.go b/server/admin/monitor_client/monitor_client_service.go index 8342945..184be2b 100644 --- a/server/admin/monitor_client/monitor_client_service.go +++ b/server/admin/monitor_client/monitor_client_service.go @@ -9,16 +9,6 @@ import ( "gorm.io/gorm" ) -type IMonitorClientService interface { - List(page request.PageReq, listReq MonitorClientListReq) (res response.PageResp, e error) - ListAll() (res []MonitorClientResp, e error) - - Detail(id int) (res MonitorClientResp, e error) - Add(addReq MonitorClientAddReq) (e error) - Edit(editReq MonitorClientEditReq) (e error) - Del(id int) (e error) -} - var Service = NewMonitorClientService() // NewMonitorClientService 初始化 @@ -27,11 +17,12 @@ func NewMonitorClientService() *monitorClientService { return &monitorClientService{db: db} } -// monitorClientService 客户端信息服务实现类 +// monitorClientService 监控-客户端信息服务实现类 type monitorClientService struct { db *gorm.DB } +// List 监控-客户端信息列表 func (service monitorClientService) GetModel(listReq MonitorClientListReq) *gorm.DB { // 查询 dbModel := service.db.Model(&model.MonitorClient{}) @@ -62,72 +53,81 @@ func (service monitorClientService) GetModel(listReq MonitorClientListReq) *gorm if listReq.Ua != "" { dbModel = dbModel.Where("ua = ?", listReq.Ua) } - + if listReq.CreateTimeStart != "" { + dbModel = dbModel.Where("create_time >= ?", listReq.CreateTimeStart) + } + if listReq.CreateTimeEnd != "" { + dbModel = dbModel.Where("create_time <= ?", listReq.CreateTimeEnd) + } + if listReq.ClientTimeStart != "" { + dbModel = dbModel.Where("client_time >= ?", listReq.ClientTimeStart) + } + if listReq.ClientTimeEnd != "" { + dbModel = dbModel.Where("client_time <= ?", listReq.ClientTimeEnd) + } return dbModel } -// List 客户端信息列表 +// List 监控-客户端信息列表 func (service monitorClientService) List(page request.PageReq, listReq MonitorClientListReq) (res response.PageResp, e error) { // 分页信息 limit := page.PageSize offset := page.PageSize * (page.PageNo - 1) - dbModel := service.GetModel(listReq) - // 总数 var count int64 err := dbModel.Count(&count).Error - if e = response.CheckErr(err, "列表总数获取失败"); e != nil { + if e = response.CheckErr(err, "失败"); e != nil { return } // 数据 - var objs []model.MonitorClient - err = dbModel.Limit(limit).Offset(offset).Order("id desc").Find(&objs).Error - if e = response.CheckErr(err, "列表获取失败"); e != nil { + var modelList []model.MonitorClient + err = dbModel.Limit(limit).Offset(offset).Order("id desc").Find(&modelList).Error + if e = response.CheckErr(err, "查询失败"); e != nil { return } - resps := []MonitorClientResp{} - response.Copy(&resps, objs) + result := []MonitorClientResp{} + response.Copy(&result, modelList) return response.PageResp{ PageNo: page.PageNo, PageSize: page.PageSize, Count: count, - Lists: resps, + Lists: result, }, nil } -// ListAll 客户端信息列表 -func (service monitorClientService) ListAll() (res []MonitorClientResp, e error) { - var objs []model.MonitorClient +// ListAll 监控-客户端信息列表 +func (service monitorClientService) ListAll(listReq MonitorClientListReq) (res []MonitorClientResp, e error) { + dbModel := service.GetModel(listReq) - err := service.db.Find(&objs).Error - if e = response.CheckErr(err, "获取列表失败"); e != nil { + var modelList []model.MonitorClient + + err := dbModel.Find(&modelList).Error + if e = response.CheckErr(err, "查询全部失败"); e != nil { return } - response.Copy(&res, objs) + response.Copy(&res, modelList) return res, nil } -// Detail 客户端信息详情 +// Detail 监控-客户端信息详情 func (service monitorClientService) Detail(id int) (res MonitorClientResp, e error) { var obj model.MonitorClient err := service.db.Where("id = ?", id).Limit(1).First(&obj).Error if e = response.CheckErrDBNotRecord(err, "数据不存在!"); e != nil { return } - if e = response.CheckErr(err, "详情获取失败"); e != nil { + if e = response.CheckErr(err, "获取详情失败"); e != nil { return } response.Copy(&res, obj) return } -// Add 客户端信息新增 +// Add 监控-客户端信息新增 func (service monitorClientService) Add(addReq MonitorClientAddReq) (e error) { var obj model.MonitorClient response.Copy(&obj, addReq) - // obj.ClientTime = core.ToUnix(addReq.ClientTime) - err := service.db.Create(&obj).Error e = response.CheckMysqlErr(err) if e != nil { @@ -137,7 +137,7 @@ func (service monitorClientService) Add(addReq MonitorClientAddReq) (e error) { return } -// Edit 客户端信息编辑 +// Edit 监控-客户端信息编辑 func (service monitorClientService) Edit(editReq MonitorClientEditReq) (e error) { var obj model.MonitorClient err := service.db.Where("id = ?", editReq.Id).Limit(1).First(&obj).Error @@ -145,17 +145,17 @@ func (service monitorClientService) Edit(editReq MonitorClientEditReq) (e error) if e = response.CheckErrDBNotRecord(err, "数据不存在!"); e != nil { return } - if e = response.CheckErr(err, "待编辑数据查找失败"); e != nil { + if e = response.CheckErr(err, "查询失败"); e != nil { return } // 更新 response.Copy(&obj, editReq) - err = service.db.Model(&obj).Updates(obj).Error - e = response.CheckErr(err, "编辑失败") + err = service.db.Model(&obj).Select("*").Updates(obj).Error + e = response.CheckErr(err, "更新失败") return } -// Del 客户端信息删除 +// Del 监控-客户端信息删除 func (service monitorClientService) Del(id int) (e error) { var obj model.MonitorClient err := service.db.Where("id = ?", id).Limit(1).First(&obj).Error @@ -163,7 +163,7 @@ func (service monitorClientService) Del(id int) (e error) { if e = response.CheckErrDBNotRecord(err, "数据不存在!"); e != nil { return } - if e = response.CheckErr(err, "待删除数据查找失败"); e != nil { + if e = response.CheckErr(err, "查询数据失败"); e != nil { return } // 删除 @@ -172,20 +172,20 @@ func (service monitorClientService) Del(id int) (e error) { return } -// ExportFile 客户端信息导出 +// ExportFile 监控-客户端信息导出 func (service monitorClientService) ExportFile(listReq MonitorClientListReq) (res []MonitorClientResp, e error) { // 查询 dbModel := service.GetModel(listReq) // 数据 - var objs []model.MonitorClient - err := dbModel.Order("id asc").Find(&objs).Error - if e = response.CheckErr(err, "列表获取失败"); e != nil { + var modelList []model.MonitorClient + err := dbModel.Order("id asc").Find(&modelList).Error + if e = response.CheckErr(err, "查询失败"); e != nil { return } - resps := []MonitorClientResp{} - response.Copy(&resps, objs) - return resps, nil + result := []MonitorClientResp{} + response.Copy(&result, modelList) + return result, nil } // 导入 diff --git a/server/admin/monitor_client_route.go b/server/admin/monitor_client_route.go index c98a9b5..4fd2e08 100644 --- a/server/admin/monitor_client_route.go +++ b/server/admin/monitor_client_route.go @@ -1,10 +1,9 @@ package admin import ( - "x_admin/admin/monitor_client" - "x_admin/middleware" - "github.com/gin-gonic/gin" + "x_admin/middleware" + "x_admin/admin/monitor_client" ) /** @@ -17,14 +16,29 @@ import ( 请在 admin/entry.go 文件引入MonitorClientRoute注册路由 3. 后台手动添加菜单和按钮 -monitor_client:add -monitor_client:edit -monitor_client:del -monitor_client:list -monitor_client:listAll -monitor_client:detail +admin:monitor_client:add +admin:monitor_client:edit +admin:monitor_client:del +admin:monitor_client:list +admin:monitor_client:listAll +admin:monitor_client:detail +admin:monitor_client:ExportFile +admin:monitor_client:ImportFile + +// 列表-先添加菜单获取菜单id +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, paths, component, is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'C', '监控-客户端信息', '/monitor_client/index', 'monitor_client/index', 0, 1, 0, now(), now()); +按钮-替换pid参数为菜单id +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息添加','admin:monitor_client:add', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息编辑','admin:monitor_client:edit', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息删除','admin:monitor_client:del', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息列表','admin:monitor_client:list', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息全部列表','admin:monitor_client:listAll', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息详情','admin:monitor_client:detail', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息导出excel','admin:monitor_client:ExportFile', 0, 1, 0, now(), now()); +INSERT INTO x_system_auth_menu (pid, menu_type, menu_name, perms,is_cache, is_show, is_disable, create_time, update_time) VALUES (0, 'A', '监控-客户端信息导入excel','admin:monitor_client:ImportFile', 0, 1, 0, now(), now()); */ + // MonitorClientRoute(rg) func MonitorClientRoute(rg *gin.RouterGroup) { handle := monitor_client.MonitorClientHandler{} @@ -33,9 +47,9 @@ func MonitorClientRoute(rg *gin.RouterGroup) { r.GET("/monitor_client/list", handle.List) r.GET("/monitor_client/listAll", handle.ListAll) r.GET("/monitor_client/detail", handle.Detail) - r.POST("/monitor_client/add", middleware.RecordLog("客户端信息新增"), handle.Add) - r.POST("/monitor_client/edit", middleware.RecordLog("客户端信息编辑"), handle.Edit) - r.POST("/monitor_client/del", middleware.RecordLog("客户端信息删除"), handle.Del) - r.GET("/monitor_client/ExportFile", middleware.RecordLog("客户端信息导出"), handle.ExportFile) + r.POST("/monitor_client/add",middleware.RecordLog("监控-客户端信息新增"), handle.Add) + r.POST("/monitor_client/edit",middleware.RecordLog("监控-客户端信息编辑"), handle.Edit) + r.POST("/monitor_client/del", middleware.RecordLog("监控-客户端信息删除"), handle.Del) + r.GET("/monitor_client/ExportFile", middleware.RecordLog("监控-客户端信息导出"), handle.ExportFile) r.POST("/monitor_client/ImportFile", handle.ImportFile) -} +} \ No newline at end of file diff --git a/server/model/monitor_client.go b/server/model/monitor_client.go index c3c66b1..842210e 100644 --- a/server/model/monitor_client.go +++ b/server/model/monitor_client.go @@ -1,8 +1,10 @@ package model -import "x_admin/core" +import ( + "x_admin/core" +) -//MonitorClient 客户端信息实体 +// MonitorClient 监控-客户端信息实体 type MonitorClient struct { Id int `gorm:"primarykey;comment:'uuid'" excel:"name:uuid;"` // uuid @@ -24,8 +26,8 @@ type MonitorClient struct { Ua string `gorm:"comment:'ua记录'" excel:"name:ua记录;"` // ua记录 - ClientTime core.TsTime `gorm:"comment:'客户端时间'" excel:"name:客户端时间;"` // 客户端时间 - CreateTime core.TsTime `gorm:"autoCreateTime;comment:'创建时间'" excel:"name:创建时间;"` // 创建时间 + ClientTime core.TsTime `gorm:"comment:'更新时间'" excel:"name:更新时间;"` // 更新时间 + } diff --git a/x_admin_app/api/monitor_client.ts b/x_admin_app/api/monitor_client.ts new file mode 100644 index 0000000..3c6af56 --- /dev/null +++ b/x_admin_app/api/monitor_client.ts @@ -0,0 +1,103 @@ +import { request } from '@/utils/request' +import { clearObjEmpty } from '@/utils/utils' + +import type { Pages } from '@/utils/request' +export type type_monitor_client = { + id?: number; + projectKey?: string; + clientId?: string; + userId?: string; + os?: string; + browser?: string; + city?: string; + width?: number; + height?: number; + ua?: string; + createTime?: string; + clientTime?: string; +} +// 查询 +export type type_monitor_client_query = { + projectKey?: string; + clientId?: string; + userId?: string; + os?: string; + browser?: string; + city?: string; + width?: number; + height?: number; + ua?: string; + createTimeStart?: string; + createTimeEnd?: string; + clientTimeStart?: string; + clientTimeEnd?: string; +} +// 添加编辑 +export type type_monitor_client_edit = { + id?: number; + clientId?: string; + userId?: string; + os?: string; + browser?: string; + city?: string; + width?: number; + height?: number; + ua?: string; + clientTime?: string; +} + + +// 监控-客户端信息列表 +export function monitor_client_list(params?: type_monitor_client_query) { + return request>({ + url: '/monitor_client/list', + method: 'GET', + data: clearObjEmpty(params) + }) +} +// 监控-客户端信息列表-所有 +export function monitor_client_list_all(params?: type_monitor_client_query) { + return request({ + url: '/monitor_client/listAll', + method: 'GET', + data: clearObjEmpty(params) + }) +} + +// 监控-客户端信息详情 +export function monitor_client_detail(id: number | string) { + return request({ + url: '/monitor_client/detail', + method: 'GET', + data: { id } + }) +} + +// 监控-客户端信息新增 +export function monitor_client_add(data: type_monitor_client_edit) { + return request({ + url: '/monitor_client/add', + method: "POST", + data, + }); +} + +// 监控-客户端信息编辑 +export function monitor_client_edit(data: type_monitor_client_edit) { + return request({ + url: '/monitor_client/edit', + method: "POST", + data, + }); +} + +// 监控-客户端信息删除 +export function monitor_client_delete(id: number | string) { + return request({ + url: '/monitor_client/del', + method: "POST", + data:{ + id + }, + }); +} \ No newline at end of file diff --git a/x_admin_app/components/x-date/x-date.vue b/x_admin_app/components/x-date/x-date.vue new file mode 100644 index 0000000..4abf306 --- /dev/null +++ b/x_admin_app/components/x-date/x-date.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/x_admin_app/hooks/usePaging.ts b/x_admin_app/hooks/usePaging.ts index 27b597d..4984462 100644 --- a/x_admin_app/hooks/usePaging.ts +++ b/x_admin_app/hooks/usePaging.ts @@ -61,6 +61,7 @@ export function usePaging(options: Options) { pager.loading = "loadmore"; } }else{ + toast(res.message); pager.loading = "loadmore"; } return Promise.resolve(res); diff --git a/x_admin_app/pages.json b/x_admin_app/pages.json index c1df678..1f3bf2b 100644 --- a/x_admin_app/pages.json +++ b/x_admin_app/pages.json @@ -45,6 +45,34 @@ "style": { "navigationBarTitleText": "搜索项目监控" } + }, + + { + "path": "pages/monitor_client/index", + "style": { + "navigationBarTitleText": "监控-客户端信息", + "enablePullDownRefresh": true, + "onReachBottomDistance": 100 + } + }, + { + "path": "pages/monitor_client/details", + "style": { + "navigationBarTitleText": "监控-客户端信息详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/monitor_client/edit", + "style": { + "navigationBarTitleText": "编辑监控-客户端信息" + } + }, + { + "path": "pages/monitor_client/search", + "style": { + "navigationBarTitleText": "搜索监控-客户端信息" + } } diff --git a/x_admin_app/pages/index/index.vue b/x_admin_app/pages/index/index.vue index 30db725..3d6fa44 100644 --- a/x_admin_app/pages/index/index.vue +++ b/x_admin_app/pages/index/index.vue @@ -38,6 +38,11 @@ path: "/pages/monitor_project/index", title: "项目监控", }, + { + icon: "/static/index/equipment.png", + path: "/pages/monitor_client/index", + title: "项目用户", + }, { diff --git a/x_admin_app/pages/monitor_client/details.vue b/x_admin_app/pages/monitor_client/details.vue new file mode 100644 index 0000000..2024ca4 --- /dev/null +++ b/x_admin_app/pages/monitor_client/details.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/x_admin_app/pages/monitor_client/edit.vue b/x_admin_app/pages/monitor_client/edit.vue new file mode 100644 index 0000000..61e8099 --- /dev/null +++ b/x_admin_app/pages/monitor_client/edit.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/x_admin_app/pages/monitor_client/index.vue b/x_admin_app/pages/monitor_client/index.vue new file mode 100644 index 0000000..f820d30 --- /dev/null +++ b/x_admin_app/pages/monitor_client/index.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/x_admin_app/pages/monitor_client/pages.json b/x_admin_app/pages/monitor_client/pages.json new file mode 100644 index 0000000..18b27f5 --- /dev/null +++ b/x_admin_app/pages/monitor_client/pages.json @@ -0,0 +1,32 @@ +// 请将pages里的数据手动合并到根目录下pages.json中 +{ + "pages": [ + { + "path": "pages/monitor_client/index", + "style": { + "navigationBarTitleText": "监控-客户端信息", + "enablePullDownRefresh": true, + "onReachBottomDistance": 100 + } + }, + { + "path": "pages/monitor_client/details", + "style": { + "navigationBarTitleText": "监控-客户端信息详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/monitor_client/edit", + "style": { + "navigationBarTitleText": "编辑监控-客户端信息" + } + }, + { + "path": "pages/monitor_client/search", + "style": { + "navigationBarTitleText": "搜索监控-客户端信息" + } + } + ] +} diff --git a/x_admin_app/pages/monitor_client/search.vue b/x_admin_app/pages/monitor_client/search.vue new file mode 100644 index 0000000..101e402 --- /dev/null +++ b/x_admin_app/pages/monitor_client/search.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file