feat(report):完成多端共用的报表检索功能。

This commit is contained in:
徐涛
2022-08-24 08:36:06 +08:00
parent 72d8e938e0
commit 9bc2001b2e
2 changed files with 89 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
package service
import (
"electricity_bill_calc/config"
"electricity_bill_calc/exceptions"
"electricity_bill_calc/global"
"electricity_bill_calc/model"
@@ -379,3 +380,45 @@ func (_ReportService) PublishReport(report model.Report) (err error) {
_, err = global.DBConn.ID(report.Id).Cols("step_state", "published", "published_at").Update(report)
return
}
func (_ReportService) SearchReport(requestUser, requestPark, requestKeyword string, requestPeriod *time.Time, requestPage int) ([]model.JoinedReportForWithdraw, int64, error) {
cond := builder.NewCond().And(builder.Eq{"r.published": true})
if len(requestUser) > 0 {
cond = cond.And(builder.Eq{"u.id": requestUser})
}
if len(requestPark) > 0 {
cond = cond.And(builder.Eq{"p.id": requestPark})
}
if requestPeriod != nil {
cond = cond.And(builder.Eq{"r.period": *requestPeriod})
}
if len(requestKeyword) > 0 {
cond = cond.And(
builder.Like{"u.name", requestKeyword}.
Or(builder.Like{"p.name", requestKeyword}).
Or(builder.Like{"u.abbr", requestKeyword}).
Or(builder.Like{"p.abbr", requestKeyword}).
Or(builder.Like{"u.address", requestKeyword}).
Or(builder.Like{"p.address", requestKeyword}),
)
}
total, err := global.DBConn.
Table("report").Alias("r").
Join("INNER", []string{"park", "p"}, "p.id=r.park_id").
Join("INNER", []string{"user_detail", "u"}, "u.id=p.user_id").
Where(cond).
Count()
if err != nil {
return make([]model.JoinedReportForWithdraw, 0), -1, err
}
startItem := (requestPage - 1) * config.ServiceSettings.ItemsPageSize
records := make([]model.JoinedReportForWithdraw, 0)
err = global.DBConn.
Table("report").Alias("r").
Join("INNER", []string{"park", "p"}, "p.id=r.park_id").
Join("INNER", []string{"user_detail", "u"}, "u.id=p.user_id").
Where(cond).
Limit(config.ServiceSettings.ItemsPageSize, startItem).
Find(&records)
return records, total, err
}