forked from free-lancers/electricity_bill_calc_service
feat(report):完成多端共用的报表检索功能。
This commit is contained in:
@@ -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},
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user