优化结构
This commit is contained in:
@@ -39,15 +39,16 @@ func (h *Payment) OrderByPath(c *gin.Context) {
|
||||
|
||||
func (h *Payment) RefundByPath(c *gin.Context) {
|
||||
var req struct {
|
||||
Amount int64 `json:"amount"`
|
||||
Amount int64 `json:"amount"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
result, err := h.service.Refund(c.Request.Context(), &dto.PaymentRefundRequest{
|
||||
Provider: c.Param("provider"), TradeNo: c.Param("tradeNo"), Amount: req.Amount,
|
||||
})
|
||||
request := &dto.PaymentRefundRequest{Provider: c.Param("provider"), TradeNo: c.Param("tradeNo"), Amount: req.Amount, Reason: req.Reason}
|
||||
setPaymentRequestActor(c, &request.OperatorID, &request.OperatorName, &request.ClientIP, &request.UserAgent, &request.DeviceID)
|
||||
result, err := h.service.Refund(c.Request.Context(), request)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
@@ -56,9 +57,9 @@ func (h *Payment) RefundByPath(c *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *Payment) FulfillByPath(c *gin.Context) {
|
||||
result, err := h.service.Fulfill(c.Request.Context(), &dto.PaymentFulfillRequest{
|
||||
Provider: c.Param("provider"), TradeNo: c.Param("tradeNo"),
|
||||
})
|
||||
request := &dto.PaymentFulfillRequest{Provider: c.Param("provider"), TradeNo: c.Param("tradeNo")}
|
||||
setPaymentRequestActor(c, &request.OperatorID, &request.OperatorName, &request.ClientIP, &request.UserAgent, &request.DeviceID)
|
||||
result, err := h.service.Fulfill(c.Request.Context(), request)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
@@ -80,6 +81,36 @@ func (h *Payment) Orders(c *gin.Context) {
|
||||
Write(c, CodeSuccess, PageResult{List: items, Total: total, Page: page, PageSize: pageSize}, "获取成功")
|
||||
}
|
||||
|
||||
func (h *Payment) OrderSummary(c *gin.Context) {
|
||||
var req dto.PaymentOrderListRequest
|
||||
if err := c.ShouldBindQuery(&req); err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
result, err := h.service.OrderSummary(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
OKWithData(c, result)
|
||||
}
|
||||
|
||||
func (h *Payment) OrderEvents(c *gin.Context) {
|
||||
var req struct {
|
||||
Limit int `form:"limit"`
|
||||
}
|
||||
if err := c.ShouldBindQuery(&req); err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
items, err := h.service.OrderEvents(c.Request.Context(), c.Param("provider"), c.Param("tradeNo"), req.Limit)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
OKWithData(c, items)
|
||||
}
|
||||
|
||||
func (h *Payment) TestProvider(c *gin.Context) {
|
||||
result, err := h.service.TestProvider(c.Request.Context(), c.Param("provider"))
|
||||
if err != nil {
|
||||
@@ -99,6 +130,8 @@ func (h *Payment) Create(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
req.ClientIP = c.ClientIP()
|
||||
req.UserAgent = c.Request.UserAgent()
|
||||
req.DeviceID = c.GetHeader("X-Device-Id")
|
||||
result, err := h.service.Create(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
@@ -112,6 +145,7 @@ func (h *Payment) Query(c *gin.Context) {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
setPaymentRequestActor(c, &req.OperatorID, &req.OperatorName, &req.ClientIP, &req.UserAgent, &req.DeviceID)
|
||||
result, err := h.service.Query(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
@@ -125,6 +159,7 @@ func (h *Payment) Refund(c *gin.Context) {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
setPaymentRequestActor(c, &req.OperatorID, &req.OperatorName, &req.ClientIP, &req.UserAgent, &req.DeviceID)
|
||||
result, err := h.service.Refund(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
@@ -139,6 +174,7 @@ func (h *Payment) Fulfill(c *gin.Context) {
|
||||
Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
setPaymentRequestActor(c, &req.OperatorID, &req.OperatorName, &req.ClientIP, &req.UserAgent, &req.DeviceID)
|
||||
result, err := h.service.Fulfill(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
Fail(c, err.Error())
|
||||
@@ -166,13 +202,26 @@ func (h *Payment) Callback(c *gin.Context) {
|
||||
query[k] = v[0]
|
||||
}
|
||||
}
|
||||
ack, err := h.service.Callback(c.Request.Context(), &dto.PaymentCallbackRequest{Provider: c.Param("provider"), Headers: headers, Body: raw, Query: query})
|
||||
ack, err := h.service.Callback(c.Request.Context(), &dto.PaymentCallbackRequest{
|
||||
Provider: c.Param("provider"), Headers: headers, Body: raw, Query: query,
|
||||
ClientIP: c.ClientIP(), UserAgent: c.Request.UserAgent(),
|
||||
})
|
||||
writePaymentCallbackAck(c, ack)
|
||||
if err != nil {
|
||||
_ = c.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func setPaymentRequestActor(c *gin.Context, operatorID *uint, operatorName, clientIP, userAgent, deviceID *string) {
|
||||
if claims := Claims(c); claims != nil {
|
||||
*operatorID = claims.ID
|
||||
*operatorName = claims.Username
|
||||
}
|
||||
*clientIP = c.ClientIP()
|
||||
*userAgent = c.Request.UserAgent()
|
||||
*deviceID = c.GetHeader("X-Device-Id")
|
||||
}
|
||||
|
||||
func writePaymentCallbackAck(c *gin.Context, ack dto.PaymentCallbackAck) {
|
||||
if ack.StatusCode == 0 {
|
||||
ack.StatusCode = http.StatusInternalServerError
|
||||
|
||||
Reference in New Issue
Block a user