feat(charge):增加计费记录查询功能,待测。
This commit is contained in:
parent
9b2f869220
commit
a48e63d798
48
controller/charge.go
Normal file
48
controller/charge.go
Normal file
|
@ -0,0 +1,48 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/repository"
|
||||
"electricity_bill_calc/response"
|
||||
"electricity_bill_calc/security"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type _ChargesController struct {
|
||||
Router *gin.Engine
|
||||
}
|
||||
|
||||
var ChargesController *_ChargesController
|
||||
|
||||
func InitializeChargesController(router *gin.Engine) {
|
||||
ChargesController = &_ChargesController{
|
||||
Router: router,
|
||||
}
|
||||
|
||||
ChargesController.Router.GET("/charges", security.OPSAuthorize, listAllCharges)
|
||||
|
||||
}
|
||||
|
||||
func listAllCharges(c *gin.Context) {
|
||||
result := response.NewResult(c)
|
||||
requestPage, err := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
if err != nil {
|
||||
result.NotAccept("查询参数[page]格式不正确。")
|
||||
return
|
||||
}
|
||||
requestKeyword := c.DefaultQuery("keyword", "")
|
||||
requestBeginDate := c.DefaultQuery("begin", "")
|
||||
requestEndDate := c.DefaultQuery("end", "")
|
||||
charges, total, err := repository.ChargeRepo.ListPagedChargeRecord(requestKeyword, requestBeginDate, requestEndDate, requestPage)
|
||||
if err != nil {
|
||||
result.NotFound(err.Error())
|
||||
return
|
||||
}
|
||||
result.Json(
|
||||
http.StatusOK, "已获取到符合条件的计费记录。",
|
||||
response.NewPagedResponse(requestPage, total).ToMap(),
|
||||
gin.H{"records": charges},
|
||||
)
|
||||
}
|
1
go.mod
1
go.mod
|
@ -28,6 +28,7 @@ require (
|
|||
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||
github.com/jackc/pgpassfile v1.0.0 // indirect
|
||||
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
|
||||
github.com/jinzhu/copier v0.3.5 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/leodido/go-urn v1.2.1 // indirect
|
||||
github.com/magiconair/properties v1.8.6 // indirect
|
||||
|
|
2
go.sum
2
go.sum
|
@ -308,6 +308,8 @@ github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0f
|
|||
github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
|
||||
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
|
|
|
@ -22,3 +22,12 @@ type UserCharge struct {
|
|||
func (UserCharge) TableName() string {
|
||||
return "user_charge"
|
||||
}
|
||||
|
||||
type ChargeWithName struct {
|
||||
UserDetail `xorm:"extends"`
|
||||
UserCharge `xorm:"extends"`
|
||||
}
|
||||
|
||||
func (ChargeWithName) TableName() string {
|
||||
return "user_charge"
|
||||
}
|
||||
|
|
52
repository/charge.go
Normal file
52
repository/charge.go
Normal file
|
@ -0,0 +1,52 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/config"
|
||||
"electricity_bill_calc/global"
|
||||
"electricity_bill_calc/model"
|
||||
"time"
|
||||
|
||||
"xorm.io/builder"
|
||||
)
|
||||
|
||||
type _ChargeRepository struct{}
|
||||
|
||||
var ChargeRepo _ChargeRepository
|
||||
|
||||
func (_ChargeRepository) ListPagedChargeRecord(keyword, beginDate, endDate string, page int) ([]model.ChargeWithName, int64, error) {
|
||||
var cond = builder.NewCond()
|
||||
if len(keyword) != 0 {
|
||||
cond.And(builder.Like{"u.name", keyword})
|
||||
}
|
||||
if len(beginDate) != 0 {
|
||||
beginTime, err := time.Parse("2006-01-02", beginDate)
|
||||
if err != nil {
|
||||
return make([]model.ChargeWithName, 0), 0, err
|
||||
}
|
||||
cond.And(builder.Gte{"c.created_at": beginTime})
|
||||
}
|
||||
if len(endDate) != 0 {
|
||||
endTime, err := time.Parse("2006-01-02", endDate)
|
||||
if err != nil {
|
||||
return make([]model.ChargeWithName, 0), 0, err
|
||||
}
|
||||
cond.And(builder.Lte{"c.created_at": endTime})
|
||||
}
|
||||
startItem := (page - 1) * config.ServiceSettings.ItemsPageSize
|
||||
total, err := global.DBConn.
|
||||
Table("user_charge").Alias("c").
|
||||
Join("INNER", []string{"user_detail", "d"}, "c.user_id=d.id").
|
||||
Where(cond).
|
||||
Count(&model.ChargeWithName{})
|
||||
if err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
charges := make([]model.ChargeWithName, 0)
|
||||
err = global.DBConn.
|
||||
Table("user_charge").Alias("c").
|
||||
Join("INNER", []string{"user_detail", "d"}, "c.user_id=d.id").
|
||||
Where(cond).
|
||||
Limit(config.ServiceSettings.ItemsPageSize, startItem).
|
||||
Find(&charges)
|
||||
return charges, total, err
|
||||
}
|
5
service/charge.go
Normal file
5
service/charge.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package service
|
||||
|
||||
type _ChargeService struct{}
|
||||
|
||||
var ChargeService _ChargeService
|
Loading…
Reference in New Issue
Block a user