| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package digital_ticket
- import (
- "github.com/gin-gonic/gin"
- "strings"
- "wails-app/internal/model/common/response"
- vehicleRequest "wails-app/internal/model/vehicle/request"
- "wails-app/internal/modules/digital-ticket/repository"
- ticketService "wails-app/internal/modules/digital-ticket/service"
- utils "wails-app/internal/pkg"
- appService "wails-app/internal/service"
- )
- var ticketSvc = ticketService.NewTicketService()
- var ticketVehicleSvc = appService.ServiceGroupApp.VehicleServiceGroup.VehicleService
- func GetTicket(c *gin.Context) {
- t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
- if err != nil {
- response.FailWithMessage("票不存在", c)
- return
- }
- response.OkWithData(t, c)
- }
- type payReq struct {
- PaymentEntry string `json:"payment_entry"`
- PaymentMethod string `json:"payment_method"`
- PaymentOrderNo string `json:"payment_order_no"`
- PaidAmount float64 `json:"paid_amount"`
- }
- func PayTicket(c *gin.Context) {
- var req payReq
- if err := c.ShouldBindJSON(&req); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- entryCode := strings.TrimSpace(req.PaymentEntry)
- if entryCode == "" {
- response.FailWithMessage("数字票支付必须指定支付入口", c)
- return
- }
- if err := ticketVehicleSvc.PayDigitalTicket(
- c.Param("ticketNo"), entryCode, strings.TrimSpace(req.PaymentMethod),
- strings.TrimSpace(req.PaymentOrderNo), req.PaidAmount, utils.GetUserID(c),
- ); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithMessage("支付成功", c)
- }
- func ExitTicket(c *gin.Context) {
- result, err := ticketVehicleSvc.ExitConfirm(vehicleRequest.ExitConfirmRequest{
- TicketNo: c.Param("ticketNo"),
- }, utils.GetUserID(c))
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithData(result, c)
- }
- func ListTickets(c *gin.Context) {
- var q repository.TicketListQuery
- if err := c.ShouldBindQuery(&q); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- list, total, err := ticketSvc.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 SummaryTickets(c *gin.Context) {
- var q repository.TicketListQuery
- if err := c.ShouldBindQuery(&q); err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- summary, err := ticketSvc.Summary(q)
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- response.OkWithData(summary, c)
- }
- func SetupDigitalTicketRouter(router *gin.RouterGroup) {
- dt := router.Group("/digital-ticket")
- {
- dt.GET("/summary", SummaryTickets)
- dt.GET("/list", ListTickets)
- dt.GET("/:ticketNo", GetTicket)
- dt.POST("/:ticketNo/pay", PayTicket)
- dt.POST("/:ticketNo/exit", ExitTicket)
- }
- }
|