package user import ( "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/heqiapp/platforms/backend/api/internal/impl" "git.apinb.com/heqiapp/platforms/backend/api/internal/logic/common" "git.apinb.com/heqiapp/platforms/backend/api/internal/logic/payment" "git.apinb.com/heqiapp/platforms/backend/api/internal/models" "github.com/gin-gonic/gin" ) func CreateRefund(businessType string) gin.HandlerFunc { return func(ctx *gin.Context) { account, ok := common.UserAccount(ctx) if !ok { return } var request struct { RequestNo string `json:"request_no" binding:"required"` Reason string `json:"reason" binding:"required"` Description string `json:"description"` Items []payment.RefundItemInput `json:"items" binding:"required,min=1"` } if ctx.ShouldBindJSON(&request) != nil { infra.Response.Error(ctx, errcode.ErrInvalidArgument) return } refund, err := payment.CreateRefund(account.ID, account.Identity, businessType, ctx.Param("identity"), payment.RefundInput{RequestNo: request.RequestNo, Reason: request.Reason, Description: request.Description, Items: request.Items}) if err != nil { infra.Response.Error(ctx, err) return } infra.Response.Success(ctx, common.ResourceResponse(refund)) } } func ListRefunds(ctx *gin.Context) { account, ok := common.UserAccount(ctx) if !ok { return } var list []models.PaymentRefund if err := impl.DBService.Where("user_identity = ?", account.Identity).Order("created_at desc").Find(&list).Error; err != nil { infra.Response.Error(ctx, err) return } infra.Response.Success(ctx, common.ResourceResponse(list)) }