diff --git a/models/send_tasks_logs.go b/models/send_tasks_logs.go index 9b49287..7c8cd8a 100644 --- a/models/send_tasks_logs.go +++ b/models/send_tasks_logs.go @@ -37,7 +37,7 @@ type LogsResult struct { } // GetSendLogs 获取所有日志记录 -func GetSendLogs(pageNum int, pageSize int, name string, taskId string, maps interface{}) ([]LogsResult, error) { +func GetSendLogs(pageNum int, pageSize int, name string, taskId string, maps map[string]interface{}) ([]LogsResult, error) { var logs []LogsResult logt := db.NewScope(SendTasksLogs{}).TableName() taskt := db.NewScope(SendTasks{}).TableName() @@ -47,6 +47,13 @@ func GetSendLogs(pageNum int, pageSize int, name string, taskId string, maps int Select(fmt.Sprintf("%s.*, %s.name as task_name", logt, taskt)). Joins(fmt.Sprintf("LEFT JOIN %s ON %s.task_id = %s.id", taskt, logt, taskt)) + dayVal, ok := maps["day_created_on"] + if ok { + delete(maps, "day_created_on") + query = query.Where(fmt.Sprintf("DATE(%s.created_on) = ?", logt), dayVal) + } + + query = query.Where(maps) if name != "" { query = query.Where(fmt.Sprintf("%s.name like ?", taskt), fmt.Sprintf("%%%s%%", name)) } @@ -63,13 +70,21 @@ func GetSendLogs(pageNum int, pageSize int, name string, taskId string, maps int } // GetSendLogsTotal 获取所有日志总数 -func GetSendLogsTotal(name string, taskId string, maps interface{}) (int, error) { +func GetSendLogsTotal(name string, taskId string, maps map[string]interface{}) (int, error) { var total int logt := db.NewScope(SendTasksLogs{}).TableName() taskt := db.NewScope(SendTasks{}).TableName() query := db. Table(logt). Joins(fmt.Sprintf("LEFT JOIN %s ON %s.task_id = %s.id", taskt, logt, taskt)) + + dayVal, ok := maps["day_created_on"] + if ok { + delete(maps, "day_created_on") + query = query.Where(fmt.Sprintf("DATE(%s.created_on) = ?", logt), dayVal) + } + + query = query.Where(maps) if name != "" { query = query.Where(fmt.Sprintf("%s.name like ?", taskt), fmt.Sprintf("%%%s%%", name)) } diff --git a/routers/api/v1/send_tasks_logs.go b/routers/api/v1/send_tasks_logs.go index f267018..17c15e4 100644 --- a/routers/api/v1/send_tasks_logs.go +++ b/routers/api/v1/send_tasks_logs.go @@ -13,6 +13,7 @@ func GetTaskSendLogsList(c *gin.Context) { appG := app.Gin{C: c} name := c.Query("name") taskId := c.Query("taskid") + query := c.Query("query") offset, limit := util.GetPageSize(c) logsService := send_logs_service.SendTaskLogsService{ @@ -20,6 +21,7 @@ func GetTaskSendLogsList(c *gin.Context) { Name: name, PageNum: offset, PageSize: limit, + Query: query, } ways, err := logsService.GetAll() if err != nil { diff --git a/service/send_logs_service/send_logs.go b/service/send_logs_service/send_logs.go index d6303be..55cd116 100644 --- a/service/send_logs_service/send_logs.go +++ b/service/send_logs_service/send_logs.go @@ -1,13 +1,17 @@ package send_logs_service import ( + "encoding/json" + "github.com/sirupsen/logrus" "message-nest/models" + "net/url" ) type SendTaskLogsService struct { ID int TaskId string Name string + Query string PageNum int PageSize int @@ -27,5 +31,17 @@ func (st *SendTaskLogsService) GetAll() ([]models.LogsResult, error) { func (st *SendTaskLogsService) getMaps() map[string]interface{} { maps := make(map[string]interface{}) + if len(st.Query) > 0 { + decodedString, err := url.QueryUnescape(st.Query) + if err != nil { + logrus.Errorf("queryUrl编码解码失败: %s", err) + return maps + } + err = json.Unmarshal([]byte(decodedString), &maps) + if err != nil { + logrus.Errorf("queryJson反序列化失败: %s", err) + return maps + } + } return maps } diff --git a/web/src/views/tabsTools/sendLogs/sendLogs.vue b/web/src/views/tabsTools/sendLogs/sendLogs.vue index 855d62a..4c2f9da 100644 --- a/web/src/views/tabsTools/sendLogs/sendLogs.vue +++ b/web/src/views/tabsTools/sendLogs/sendLogs.vue @@ -134,14 +134,13 @@ export default { } } - const filterFunc = async () => { await queryListData(state.currPage, state.pageSize, state.search, state.optionValue); } - const queryListData = async (page, size, name = '', taskid = '') => { - let params = { page: page, size: size, name: name, taskid: taskid }; + const queryListData = async (page, size, name = '', taskid = '', query = '') => { + let params = { page: page, size: size, name: name, taskid: taskid, query: query }; const rsp = await request.get('/sendlogs/list', { params: params }); state.tableData = await rsp.data.data.lists; state.total = await rsp.data.data.total; @@ -149,7 +148,7 @@ export default { onMounted(async () => { state.search = router.query.name; - await queryListData(1, state.pageSize, router.query.name, router.query.taskid); + await queryListData(1, state.pageSize, router.query.name, router.query.taskid, router.query.query); }); return { diff --git a/web/src/views/tabsTools/statistic/statistic.vue b/web/src/views/tabsTools/statistic/statistic.vue index 88bc620..691f87a 100644 --- a/web/src/views/tabsTools/statistic/statistic.vue +++ b/web/src/views/tabsTools/statistic/statistic.vue @@ -32,6 +32,11 @@ 今日发送失败数 + @@ -42,7 +47,7 @@
-
+
@@ -50,17 +55,23 @@