From 109cd3b52d3b1799ca7450b47c1404156cbdf1d4 Mon Sep 17 00:00:00 2001 From: Rogee Date: Sat, 20 Dec 2025 00:00:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4wepay=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=EF=BC=8C=E7=AE=80=E5=8C=96=E8=AE=A2=E5=8D=95=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend_v1/app/http/admin/orders.go | 61 +---------------------- backend_v1/app/http/admin/provider.gen.go | 9 +--- backend_v1/app/http/posts.go | 8 ++- backend_v1/app/http/provider.gen.go | 9 ++-- backend_v1/app/services/orders.go | 8 +-- 5 files changed, 14 insertions(+), 81 deletions(-) diff --git a/backend_v1/app/http/admin/orders.go b/backend_v1/app/http/admin/orders.go index 158f51d..269d491 100644 --- a/backend_v1/app/http/admin/orders.go +++ b/backend_v1/app/http/admin/orders.go @@ -1,16 +1,11 @@ package admin import ( - "fmt" - "quyun/v2/app/requests" "quyun/v2/app/services" "quyun/v2/database/models" - "quyun/v2/pkg/fields" - "quyun/v2/providers/wepay" "github.com/gofiber/fiber/v3" - "github.com/pkg/errors" "go.ipao.vip/gen" ) @@ -20,9 +15,7 @@ type OrderListQuery struct { } // @provider -type orders struct { - wepay *wepay.Client -} +type orders struct{} // List // @@ -62,55 +55,5 @@ func (ctl *orders) List( // @Router /admin/orders/:id/refund [post] // @Bind order path key(id) model(id) func (ctl *orders) Refund(ctx fiber.Ctx, order *models.Order) error { - user, err := services.Users.FindByID(ctx, order.UserID) - if err != nil { - return err - } - - post, err := services.Posts.FindByID(ctx, order.PostID) - if err != nil { - return err - } - - if order.PaymentMethod == "balance" { - if err := services.Users.AddBalance(ctx, user.ID, order.Meta.Data().CostBalance); err != nil { - return errors.Wrap(err, "add balance failed") - } - - if err := services.Users.RevokeUserPosts(ctx, user.ID, order.PostID); err != nil { - return errors.Wrap(err, "revoke posts failed") - } - - order.Status = fields.OrderStatusRefundSuccess - if _, err := order.Update(ctx); err != nil { - return errors.Wrap(err, "update order failed") - } - - return nil - } - - refundTotal := order.Price*int64(order.Discount)/100 - order.Meta.Data().CostBalance - resp, err := ctl.wepay.Refund(ctx, func(bm *wepay.BodyMap) { - bm. - OutRefundNo(order.OrderNo). - OutTradeNo(order.OrderNo). - TransactionID(order.TransactionID). - CNYRefundAmount(refundTotal, refundTotal). - RefundReason(fmt.Sprintf("%s 退款", post.Title)) - }) - if err != nil { - return err - } - - meta := order.Meta.Data() - meta.RefundResp = resp - order.Meta = meta.JsonType() - order.RefundTransactionID = resp.RefundId - order.Status = fields.OrderStatusRefundProcessing - - if _, err := order.Update(ctx); err != nil { - return err - } - - return nil + return services.Orders.Refund(ctx, order) } diff --git a/backend_v1/app/http/admin/provider.gen.go b/backend_v1/app/http/admin/provider.gen.go index 3e003bb..4011648 100755 --- a/backend_v1/app/http/admin/provider.gen.go +++ b/backend_v1/app/http/admin/provider.gen.go @@ -6,7 +6,6 @@ import ( "quyun/v2/providers/app" "quyun/v2/providers/job" "quyun/v2/providers/jwt" - "quyun/v2/providers/wepay" "go.ipao.vip/atom" "go.ipao.vip/atom/container" @@ -37,12 +36,8 @@ func Provide(opts ...opt.Option) error { }); err != nil { return err } - if err := container.Container.Provide(func( - wepay *wepay.Client, - ) (*orders, error) { - obj := &orders{ - wepay: wepay, - } + if err := container.Container.Provide(func() (*orders, error) { + obj := &orders{} return obj, nil }); err != nil { diff --git a/backend_v1/app/http/posts.go b/backend_v1/app/http/posts.go index 15cd597..e2fccb5 100644 --- a/backend_v1/app/http/posts.go +++ b/backend_v1/app/http/posts.go @@ -14,7 +14,6 @@ import ( "quyun/v2/providers/ali" "quyun/v2/providers/app" "quyun/v2/providers/job" - "quyun/v2/providers/wepay" "github.com/go-pay/gopay/wechat/v3" "github.com/gofiber/fiber/v3" @@ -30,10 +29,9 @@ type ListQuery struct { // @provider type posts struct { - wepay *wepay.Client - oss *ali.OSSClient - job *job.Job - app *app.Config + oss *ali.OSSClient + job *job.Job + app *app.Config } // List posts diff --git a/backend_v1/app/http/provider.gen.go b/backend_v1/app/http/provider.gen.go index 9ea36c9..7ad428e 100755 --- a/backend_v1/app/http/provider.gen.go +++ b/backend_v1/app/http/provider.gen.go @@ -5,7 +5,6 @@ import ( "quyun/v2/providers/ali" "quyun/v2/providers/app" "quyun/v2/providers/job" - "quyun/v2/providers/wepay" "go.ipao.vip/atom" "go.ipao.vip/atom/container" @@ -18,13 +17,11 @@ func Provide(opts ...opt.Option) error { app *app.Config, job *job.Job, oss *ali.OSSClient, - wepay *wepay.Client, ) (*posts, error) { obj := &posts{ - app: app, - job: job, - oss: oss, - wepay: wepay, + app: app, + job: job, + oss: oss, } return obj, nil diff --git a/backend_v1/app/services/orders.go b/backend_v1/app/services/orders.go index dbd570f..71e52c4 100644 --- a/backend_v1/app/services/orders.go +++ b/backend_v1/app/services/orders.go @@ -77,12 +77,12 @@ func (m *orders) List( } // Refund 订单退款(余额支付走本地退款;微信支付走微信退款并标记为退款处理中)。 -func (m *orders) Refund(ctx context.Context, id int64) error { +func (m *orders) Refund(ctx context.Context, order *models.Order) error { // 余额支付:这里强调“状态一致性”,必须在一个事务中完成:余额退回 + 撤销购买权益 + 更新订单状态。 return models.Q.Transaction(func(tx *models.Query) error { - order, err := tx.Order.WithContext(ctx).GetByID(id) - if err != nil { - return errors.Wrap(err, "failed to get order in tx") + // 已移除微信退款(wepay)能力:仅支持余额支付订单退款。 + if order.PaymentMethod != "balance" { + return errors.New("暂不支持该支付方式退款") } // 退回余额(使用原子自增,避免并发覆盖)。