api.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package digital_ticket
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "strings"
  5. "wails-app/internal/model/common/response"
  6. vehicleRequest "wails-app/internal/model/vehicle/request"
  7. "wails-app/internal/modules/digital-ticket/repository"
  8. ticketService "wails-app/internal/modules/digital-ticket/service"
  9. utils "wails-app/internal/pkg"
  10. appService "wails-app/internal/service"
  11. )
  12. var ticketSvc = ticketService.NewTicketService()
  13. var ticketVehicleSvc = appService.ServiceGroupApp.VehicleServiceGroup.VehicleService
  14. func GetTicket(c *gin.Context) {
  15. t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
  16. if err != nil {
  17. response.FailWithMessage("票不存在", c)
  18. return
  19. }
  20. response.OkWithData(t, c)
  21. }
  22. type payReq struct {
  23. PaymentEntry string `json:"payment_entry"`
  24. PaymentMethod string `json:"payment_method"`
  25. PaymentOrderNo string `json:"payment_order_no"`
  26. PaidAmount float64 `json:"paid_amount"`
  27. }
  28. func PayTicket(c *gin.Context) {
  29. var req payReq
  30. if err := c.ShouldBindJSON(&req); err != nil {
  31. response.FailWithMessage(err.Error(), c)
  32. return
  33. }
  34. entryCode := strings.TrimSpace(req.PaymentEntry)
  35. if entryCode == "" {
  36. response.FailWithMessage("数字票支付必须指定支付入口", c)
  37. return
  38. }
  39. if err := ticketVehicleSvc.PayDigitalTicket(
  40. c.Param("ticketNo"), entryCode, strings.TrimSpace(req.PaymentMethod),
  41. strings.TrimSpace(req.PaymentOrderNo), req.PaidAmount, utils.GetUserID(c),
  42. ); err != nil {
  43. response.FailWithMessage(err.Error(), c)
  44. return
  45. }
  46. response.OkWithMessage("支付成功", c)
  47. }
  48. func ExitTicket(c *gin.Context) {
  49. result, err := ticketVehicleSvc.ExitConfirm(vehicleRequest.ExitConfirmRequest{
  50. TicketNo: c.Param("ticketNo"),
  51. }, utils.GetUserID(c))
  52. if err != nil {
  53. response.FailWithMessage(err.Error(), c)
  54. return
  55. }
  56. response.OkWithData(result, c)
  57. }
  58. func ListTickets(c *gin.Context) {
  59. var q repository.TicketListQuery
  60. if err := c.ShouldBindQuery(&q); err != nil {
  61. response.FailWithMessage(err.Error(), c)
  62. return
  63. }
  64. list, total, err := ticketSvc.List(q)
  65. if err != nil {
  66. response.FailWithMessage(err.Error(), c)
  67. return
  68. }
  69. response.OkWithDetailed(response.PageResult{List: list, Total: total, Page: q.Page, PageSize: q.PageSize}, "查询成功", c)
  70. }
  71. func SummaryTickets(c *gin.Context) {
  72. var q repository.TicketListQuery
  73. if err := c.ShouldBindQuery(&q); err != nil {
  74. response.FailWithMessage(err.Error(), c)
  75. return
  76. }
  77. summary, err := ticketSvc.Summary(q)
  78. if err != nil {
  79. response.FailWithMessage(err.Error(), c)
  80. return
  81. }
  82. response.OkWithData(summary, c)
  83. }
  84. func SetupDigitalTicketRouter(router *gin.RouterGroup) {
  85. dt := router.Group("/digital-ticket")
  86. {
  87. dt.GET("/summary", SummaryTickets)
  88. dt.GET("/list", ListTickets)
  89. dt.GET("/:ticketNo", GetTicket)
  90. dt.POST("/:ticketNo/pay", PayTicket)
  91. dt.POST("/:ticketNo/exit", ExitTicket)
  92. }
  93. }