api.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package digital_ticket
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "wails-app/internal/model/common/response"
  5. "wails-app/internal/modules/digital-ticket/repository"
  6. "wails-app/internal/modules/digital-ticket/service"
  7. )
  8. var ticketSvc = service.NewTicketService()
  9. func GetTicket(c *gin.Context) {
  10. t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
  11. if err != nil {
  12. response.FailWithMessage("票不存在", c)
  13. return
  14. }
  15. response.OkWithData(t, c)
  16. }
  17. type payReq struct {
  18. PaymentMethod string `json:"payment_method"`
  19. PaymentOrderNo string `json:"payment_order_no"`
  20. PaidAmount float64 `json:"paid_amount"`
  21. }
  22. func PayTicket(c *gin.Context) {
  23. var req payReq
  24. if err := c.ShouldBindJSON(&req); err != nil {
  25. response.FailWithMessage(err.Error(), c)
  26. return
  27. }
  28. t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
  29. if err != nil {
  30. response.FailWithMessage("票不存在", c)
  31. return
  32. }
  33. extra := map[string]interface{}{
  34. "payment_method": req.PaymentMethod, "payment_order_no": req.PaymentOrderNo,
  35. "paid_amount": req.PaidAmount,
  36. }
  37. if err := ticketSvc.Transition(t.ID, service.StatePaid, extra); err != nil {
  38. response.FailWithMessage(err.Error(), c)
  39. return
  40. }
  41. response.OkWithMessage("支付成功", c)
  42. }
  43. func ExitTicket(c *gin.Context) {
  44. t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
  45. if err != nil {
  46. response.FailWithMessage("票不存在", c)
  47. return
  48. }
  49. if err := ticketSvc.Transition(t.ID, service.StateExited, nil); err != nil {
  50. response.FailWithMessage(err.Error(), c)
  51. return
  52. }
  53. response.OkWithMessage("已离场", c)
  54. }
  55. func ListTickets(c *gin.Context) {
  56. var q repository.TicketListQuery
  57. if err := c.ShouldBindQuery(&q); err != nil {
  58. response.FailWithMessage(err.Error(), c)
  59. return
  60. }
  61. list, total, err := ticketSvc.List(q)
  62. if err != nil {
  63. response.FailWithMessage(err.Error(), c)
  64. return
  65. }
  66. response.OkWithDetailed(response.PageResult{List: list, Total: total, Page: q.Page, PageSize: q.PageSize}, "查询成功", c)
  67. }
  68. func SetupDigitalTicketRouter(router *gin.RouterGroup) {
  69. dt := router.Group("/digital-ticket")
  70. {
  71. dt.GET("/:ticketNo", GetTicket)
  72. dt.POST("/:ticketNo/pay", PayTicket)
  73. dt.POST("/:ticketNo/exit", ExitTicket)
  74. }
  75. dt2 := router.Group("/digital-ticket")
  76. {
  77. dt2.GET("/list", ListTickets)
  78. }
  79. }