|
@@ -0,0 +1,87 @@
|
|
|
|
|
+package digital_ticket
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
|
|
+ "wails-app/internal/model/common/response"
|
|
|
|
|
+ "wails-app/internal/modules/digital-ticket/repository"
|
|
|
|
|
+ "wails-app/internal/modules/digital-ticket/service"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+var ticketSvc = service.NewTicketService()
|
|
|
|
|
+
|
|
|
|
|
+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 {
|
|
|
|
|
+ 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
|
|
|
|
|
+ }
|
|
|
|
|
+ t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ response.FailWithMessage("票不存在", c)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ extra := map[string]interface{}{
|
|
|
|
|
+ "payment_method": req.PaymentMethod, "payment_order_no": req.PaymentOrderNo,
|
|
|
|
|
+ "paid_amount": req.PaidAmount,
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := ticketSvc.Transition(t.ID, service.StatePaid, extra); err != nil {
|
|
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ response.OkWithMessage("支付成功", c)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func ExitTicket(c *gin.Context) {
|
|
|
|
|
+ t, err := ticketSvc.GetByTicketNo(c.Param("ticketNo"))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ response.FailWithMessage("票不存在", c)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := ticketSvc.Transition(t.ID, service.StateExited, nil); err != nil {
|
|
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ response.OkWithMessage("已离场", 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 SetupDigitalTicketRouter(router *gin.RouterGroup) {
|
|
|
|
|
+ dt := router.Group("/digital-ticket")
|
|
|
|
|
+ {
|
|
|
|
|
+ dt.GET("/:ticketNo", GetTicket)
|
|
|
|
|
+ dt.POST("/:ticketNo/pay", PayTicket)
|
|
|
|
|
+ dt.POST("/:ticketNo/exit", ExitTicket)
|
|
|
|
|
+ }
|
|
|
|
|
+ dt2 := router.Group("/digital-ticket")
|
|
|
|
|
+ {
|
|
|
|
|
+ dt2.GET("/list", ListTickets)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|