diff --git a/api/project.go b/api/project.go index 9c711e17d..73fa4ae70 100644 --- a/api/project.go +++ b/api/project.go @@ -162,10 +162,14 @@ func (p *ProjectAPI) FilterAccessLog() { username := filter.Username keywords := filter.Keywords - beginTime := filter.BeginTime - endTime := filter.EndTime - query := models.AccessLog{ProjectId: p.projectId, Username: "%" + username + "%", Keywords: keywords, BeginTime: beginTime, EndTime: endTime} + beginTime := time.Unix(filter.BeginTimestamp, 0) + endTime := time.Unix(filter.EndTimestamp, 0) + + query := models.AccessLog{ProjectId: p.projectId, Username: "%" + username + "%", Keywords: keywords, BeginTime: beginTime, BeginTimestamp: filter.BeginTimestamp, EndTime: endTime, EndTimestamp: filter.EndTimestamp} + + log.Printf("Query AccessLog: begin: %v, end: %v, keywords: %s", query.BeginTime, query.EndTime, query.Keywords) + accessLogList, err := dao.GetAccessLogs(query) if err != nil { log.Printf("Error occurred in GetAccessLogs: %v", err) diff --git a/dao/access_log.go b/dao/access_log.go index 4e99cfdb8..5860a30c3 100644 --- a/dao/access_log.go +++ b/dao/access_log.go @@ -73,13 +73,13 @@ func GetAccessLogs(accessLog models.AccessLog) ([]models.AccessLog, error) { } } } - if accessLog.BeginTime != "" { - sql += ` and a.op_time >= str_to_date(?, '%Y-%m-%d %H:%i:%s') ` - queryParam = append(queryParam, accessLog.BeginTime+" 00:00:00.000000") + if accessLog.BeginTimestamp > 0 { + sql += ` and a.op_time >= ? ` + queryParam = append(queryParam, accessLog.BeginTime) } - if accessLog.EndTime != "" { - sql += ` and a.op_time <= str_to_date(?, '%Y-%m-%d %H:%i:%s') ` - queryParam = append(queryParam, accessLog.EndTime+" 23:59:59.99999") + if accessLog.EndTimestamp > 0 { + sql += ` and a.op_time <= ? ` + queryParam = append(queryParam, accessLog.EndTime) } sql += ` order by a.op_time desc ` diff --git a/models/access_log.go b/models/access_log.go index 7c980103d..a167d70de 100644 --- a/models/access_log.go +++ b/models/access_log.go @@ -26,10 +26,11 @@ type AccessLog struct { Guid string Operation string OpTime time.Time - OpTimeStr string - Username string Keywords string - BeginTime string - EndTime string + + BeginTime time.Time + BeginTimestamp int64 + EndTime time.Time + EndTimestamp int64 } diff --git a/static/resources/js/item-detail.js b/static/resources/js/item-detail.js index d2ff211bb..764df0fe6 100644 --- a/static/resources/js/item-detail.js +++ b/static/resources/js/item-detail.js @@ -374,24 +374,38 @@ jQuery(function(){ listUser(username); }); + function toUTCSeconds(date, hour, min, sec) { + var t = new Date(date); + t.setHours(hour); + t.setMinutes(min); + t.setSeconds(sec); + var utcTime = new Date(t.getUTCFullYear(), + t.getUTCMonth(), + t.getUTCDate(), + t.getUTCHours(), + t.getUTCMinutes(), + t.getUTCSeconds()); + return utcTime.getTime() / 1000; + } + $("#btnFilterLog").on("click", function(){ var projectId = $("#projectId").val(); var username = $("#txtSearchUserName").val(); - var beginTime = ""; - var endTime = ""; + var beginTimestamp = 0; + var endTimestamp = 0; if($("#begindatepicker").val() != ""){ - beginTime = moment(new Date($("#begindatepicker").val())).format("YYYY-MM-DD"); + beginTimestamp = toUTCSeconds($("#begindatepicker").val(), 0, 0, 0); } if($("#enddatepicker").val() != ""){ - endTime = moment(new Date($("#enddatepicker").val())).format("YYYY-MM-DD"); + endTimestamp = toUTCSeconds($("#enddatepicker").val(), 23, 59, 59); } new AjaxUtil({ url: "/api/projects/" + projectId + "/logs/filter", - data:{"username":username, "project_id" : projectId, "keywords" : getKeyWords() , "beginTime" : beginTime, "endTime" : endTime}, + data:{"username":username, "project_id" : projectId, "keywords" : getKeyWords() , "beginTimestamp" : beginTimestamp, "endTimestamp" : endTimestamp}, type: "post", success: function(data, status, xhr){ if(xhr && xhr.status == 200){