| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package monthly
- import (
- "fmt"
- "strconv"
- "strings"
- "time"
- "github.com/gin-gonic/gin"
- "wails-app/internal/model/common/response"
- "wails-app/internal/modules/monthly/repository"
- "wails-app/internal/modules/monthly/service"
- utils "wails-app/internal/pkg"
- )
- var monthlySvc = service.NewMonthlyCardService()
- type createReq struct {
- VehicleID uint `json:"vehicle_id"`
- CardType string `json:"card_type"`
- Fee float64 `json:"fee"`
- EffectiveDate string `json:"effective_date"`
- Remark string `json:"remark"`
- }
- func parseEffectiveDate(value string) (time.Time, error) {
- value = strings.TrimSpace(value)
- if value == "" {
- return time.Time{}, fmt.Errorf("生效日期不能为空")
- }
- date, err := time.ParseInLocation("2006-01-02", value, time.Local)
- if err != nil {
- return time.Time{}, fmt.Errorf("生效日期格式错误,应为 YYYY-MM-DD")
- }
- return date, nil
- }
- func CreateCard(c *gin.Context) {
- var req createReq
- if err := c.ShouldBindJSON(&req); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- effectiveDate, err := parseEffectiveDate(req.EffectiveDate)
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- card, err := monthlySvc.Create(req.VehicleID, req.CardType, req.Fee, utils.GetUserID(c), req.Remark, effectiveDate)
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithData(card, c)
- }
- type renewReq struct {
- CardID uint `json:"card_id"`
- CardType string `json:"card_type"`
- Fee float64 `json:"fee"`
- EffectiveDate string `json:"effective_date"`
- }
- func RenewCard(c *gin.Context) {
- var req renewReq
- if err := c.ShouldBindJSON(&req); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- effectiveDate, err := parseEffectiveDate(req.EffectiveDate)
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- if err := monthlySvc.Renew(req.CardID, req.CardType, req.Fee, utils.GetUserID(c), effectiveDate); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithMessage("续费成功", c)
- }
- func RefundCard(c *gin.Context) {
- id, _ := strconv.Atoi(c.Query("id"))
- if err := monthlySvc.Refund(uint(id)); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithMessage("退卡成功", c)
- }
- func ListCards(c *gin.Context) {
- var q repository.MonthlyCardQuery
- if err := c.ShouldBindQuery(&q); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- list, total, err := monthlySvc.List(q)
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithDetailed(response.PageResult{List: list, Total: total, Page: q.Page, PageSize: q.PageSize}, "查询成功", c)
- }
- func SetupMonthlyCardRouter(router *gin.RouterGroup) {
- mc := router.Group("/monthly-card")
- {
- mc.POST("/create", CreateCard)
- mc.POST("/renew", RenewCard)
- mc.DELETE("/refund", RefundCard)
- mc.GET("/list", ListCards)
- }
- }
|