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

@@ -9,6 +9,7 @@ import (
"electricity_bill_calc/tools"
"log"
"net/http"
"strconv"
"time"
"github.com/fufuok/utils"
@@ -34,6 +35,7 @@ func InitializeReportController(router *gin.Engine) {
router.PUT("/report/:rid/step/diluted/fees", security.EnterpriseAuthorize, progressReportWillDilutedFee)
router.PUT("/report/:rid/step/meter/register", security.EnterpriseAuthorize, progressEndUserRegister)
router.POST("/report/:rid/publish", security.EnterpriseAuthorize, publishReport)
router.GET("/reports", security.MustAuthenticated, searchReports)
}
func ensureReportBelongs(c *gin.Context, result *response.Result, requestReportId string) bool {
@@ -398,3 +400,47 @@ func publishReport(c *gin.Context) {
}
result.Success("指定的公示报表已经发布。")
}
func searchReports(c *gin.Context) {
result := response.NewResult(c)
session, err := _retreiveSession(c)
if err != nil {
result.Unauthorized(err.Error())
return
}
requestUser := lo.
If(session.Type == model.USER_TYPE_ENT, session.Uid).
Else(c.DefaultQuery("user", ""))
requestPark := c.DefaultQuery("park", "")
if len(requestPark) > 0 && session.Type == model.USER_TYPE_ENT {
if !ensureParkBelongs(c, result, requestPark) {
return
}
}
requestPeriodString := c.DefaultQuery("period", "")
var requestPeriod *time.Time = nil
if len(requestPeriodString) > 0 {
parsedPeriod, err := time.Parse("2006-01", requestPeriodString)
if err != nil {
result.NotAccept("参数[period]的格式不正确。")
return
}
requestPeriod = lo.ToPtr(parsedPeriod)
}
requestKeyword := c.DefaultQuery("keyword", "")
requestPage, err := strconv.Atoi(c.DefaultQuery("page", "1"))
if err != nil {
result.NotAccept("查询参数[page]格式不正确。")
return
}
records, totalItems, err := service.ReportService.SearchReport(requestUser, requestPark, requestKeyword, requestPeriod, requestPage)
if err != nil {
result.NotFound(err.Error())
return
}
result.Success(
"已经取得符合条件的公示报表记录。",
response.NewPagedResponse(requestPage, totalItems).ToMap(),
gin.H{"reports": records},
)
}