diff --git a/global/model.go b/global/model.go index 51988ec..1809c10 100644 --- a/global/model.go +++ b/global/model.go @@ -17,7 +17,9 @@ type GLOBAL_MODEL struct { } //FormatTime 自定义时间 -type FormatTime time.Time +type FormatTime struct { + time.Time +} const timeLayout = "2006-01-02 15:04:05" @@ -25,32 +27,37 @@ func (t *FormatTime) UnmarshalJSON(data []byte) error { if string(data) == "null" { return nil } + var err error //前端接收的时间字符串 str := string(data) //去除接收的str收尾多余的" timeStr := strings.Trim(str, "\"") t1, err := time.Parse(timeLayout, timeStr) - *t = FormatTime(t1) + *t = FormatTime{t1} return err } func (t FormatTime) MarshalJSON() ([]byte, error) { - formatted := fmt.Sprintf("\"%v\"", time.Time(t).Format(timeLayout)) + formatted := fmt.Sprintf("\"%v\"", t.Time.Format(timeLayout)) return []byte(formatted), nil } func (t FormatTime) Value() (driver.Value, error) { // FormatTime 转换成 time.Time 类型 - tTime := time.Time(t) - return tTime.Format(timeLayout), nil + var zeroTime time.Time + if t.Time.UnixNano() == zeroTime.UnixNano() { + return nil, nil + } + + return t.Time.Format(timeLayout), nil } func (t *FormatTime) Scan(v interface{}) error { switch vt := v.(type) { case time.Time: // 字符串转成 time.Time 类型 - *t = FormatTime(vt) + *t = FormatTime{vt} default: return errors.New("类型处理错误") } @@ -58,5 +65,5 @@ func (t *FormatTime) Scan(v interface{}) error { } func (t *FormatTime) String() string { - return fmt.Sprintf("hhh:%s", time.Time(*t).String()) + return t.Time.Format(timeLayout) } diff --git a/service/wt/wt_output.go b/service/wt/wt_output.go index 3082fd3..c370392 100644 --- a/service/wt/wt_output.go +++ b/service/wt/wt_output.go @@ -128,8 +128,8 @@ func (wtOutputService *WtOutputService) ExportReportToExcel(info wt.StatDataSear excelContent = append(excelContent, fromString) } - excelContent = append(excelContent, report.CreatedAt) - excelContent = append(excelContent, report.UpdatedAt) + excelContent = append(excelContent, report.CreatedAt.String()) + excelContent = append(excelContent, report.UpdatedAt.String()) excel.SetSheetRow("Sheet1", axis, &excelContent) } diff --git a/service/wt/wt_report.go b/service/wt/wt_report.go index cb1f29f..06546fc 100644 --- a/service/wt/wt_report.go +++ b/service/wt/wt_report.go @@ -49,41 +49,45 @@ func (wtReportsService *WtReportsService) GetWtReportsInfoList(info wtReq.WtRepo reportTable := global.GLOBAL_DB.Table("wt_reports") - err = reportTable.Count(&total).Error - if err != nil { - return - } - var reportsSearchBOList []wtRes.WtReportsSearchBO - if info.Page == 0 { - limit = int(total) - } - querySql := "SELECT id, user_name, user_id, send_to, header, contents, pictures, attachments, created_at, updated_at, cmc.comment_count " + "FROM wt_reports " + "left join (SELECT report_id, count(report_id) as comment_count FROM wt_comments GROUP BY report_id) as cmc " + "on cmc.report_id = wt_reports.id " + - "WHERE 1=1 " + "WHERE " + condition := " 1=1 " if info.CurrUserId > 0 { - querySql += " and send_to LIKE '%\"id\":" + strconv.Itoa(int(info.CurrUserId)) + "%'" + condition += " and send_to LIKE '%\"id\":" + strconv.Itoa(int(info.CurrUserId)) + "%'" } // 条件高级查询 if info.UserId > 0 { - querySql += " and user_id = " + strconv.Itoa(int(info.UserId)) + condition += " and user_id = " + strconv.Itoa(int(info.UserId)) + }else { + condition += " OR user_id = " + strconv.Itoa(int(info.CurrUserId)) + " " } if len(info.Content) != 0 { - querySql += " and contents LIKE '%" + info.Content + "%'" + condition += " and contents LIKE '%" + info.Content + "%'" } if len(info.StartTime) != 0 && len(info.EndTime) != 0 { - querySql += " and created_at >= '" + info.StartTime + "' and created_at <= '" + info.EndTime + "'" + condition += " and created_at >= '" + info.StartTime + "' and created_at <= '" + info.EndTime + "'" + } + + querySql += condition + " ORDER BY created_at DESC LIMIT ? OFFSET ? " + + err = reportTable.Where(condition).Count(&total).Error + if err != nil { + return + } + + if info.Page == 0 { + limit = int(total) } - querySql += "ORDER BY created_at DESC LIMIT ? OFFSET ? " err = global.GLOBAL_DB.Raw(querySql, limit, offset).Scan(&reportsSearchBOList).Error reportsSearchResultList := reportsToSearchResult(reportsSearchBOList)