add ledger test
This commit is contained in:
@@ -57,7 +57,12 @@ type order struct {
|
||||
}
|
||||
|
||||
// AdminTopupUser credits tenant balance to a tenant member (tenant-admin action).
|
||||
func (s *order) AdminTopupUser(ctx context.Context, tenantID, operatorUserID, targetUserID, amount int64, idempotencyKey, reason string, now time.Time) (*models.Order, error) {
|
||||
func (s *order) AdminTopupUser(
|
||||
ctx context.Context,
|
||||
tenantID, operatorUserID, targetUserID, amount int64,
|
||||
idempotencyKey, reason string,
|
||||
now time.Time,
|
||||
) (*models.Order, error) {
|
||||
if tenantID <= 0 || operatorUserID <= 0 || targetUserID <= 0 {
|
||||
return nil, errorx.ErrInvalidParameter.WithMsg("tenant_id/operator_user_id/target_user_id must be > 0")
|
||||
}
|
||||
@@ -158,7 +163,11 @@ func (s *order) AdminTopupUser(ctx context.Context, tenantID, operatorUserID, ta
|
||||
}
|
||||
|
||||
// MyOrderPage lists orders for current user within a tenant.
|
||||
func (s *order) MyOrderPage(ctx context.Context, tenantID, userID int64, filter *dto.MyOrderListFilter) (*requests.Pager, error) {
|
||||
func (s *order) MyOrderPage(
|
||||
ctx context.Context,
|
||||
tenantID, userID int64,
|
||||
filter *dto.MyOrderListFilter,
|
||||
) (*requests.Pager, error) {
|
||||
if tenantID <= 0 || userID <= 0 {
|
||||
return nil, errorx.ErrInvalidParameter.WithMsg("tenant_id/user_id must be > 0")
|
||||
}
|
||||
@@ -222,7 +231,11 @@ func (s *order) MyOrderDetail(ctx context.Context, tenantID, userID, orderID int
|
||||
}
|
||||
|
||||
// AdminOrderPage lists orders within a tenant for tenant-admin.
|
||||
func (s *order) AdminOrderPage(ctx context.Context, tenantID int64, filter *dto.AdminOrderListFilter) (*requests.Pager, error) {
|
||||
func (s *order) AdminOrderPage(
|
||||
ctx context.Context,
|
||||
tenantID int64,
|
||||
filter *dto.AdminOrderListFilter,
|
||||
) (*requests.Pager, error) {
|
||||
if tenantID <= 0 {
|
||||
return nil, errorx.ErrInvalidParameter.WithMsg("tenant_id must be > 0")
|
||||
}
|
||||
@@ -281,7 +294,13 @@ func (s *order) AdminOrderDetail(ctx context.Context, tenantID, orderID int64) (
|
||||
}
|
||||
|
||||
// AdminRefundOrder refunds a paid order (supports forced refund) and revokes granted content access.
|
||||
func (s *order) AdminRefundOrder(ctx context.Context, tenantID, operatorUserID, orderID int64, force bool, reason, idempotencyKey string, now time.Time) (*models.Order, error) {
|
||||
func (s *order) AdminRefundOrder(
|
||||
ctx context.Context,
|
||||
tenantID, operatorUserID, orderID int64,
|
||||
force bool,
|
||||
reason, idempotencyKey string,
|
||||
now time.Time,
|
||||
) (*models.Order, error) {
|
||||
if tenantID <= 0 || operatorUserID <= 0 || orderID <= 0 {
|
||||
return nil, errorx.ErrInvalidParameter.WithMsg("tenant_id/operator_user_id/order_id must be > 0")
|
||||
}
|
||||
@@ -655,7 +674,17 @@ func (s *order) PurchaseContent(ctx context.Context, params *PurchaseContentPara
|
||||
}); err != nil {
|
||||
// 5) Compensate: unfreeze and persist rollback marker.
|
||||
_ = s.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
_, e1 := s.ledger.UnfreezeTx(ctx, tx, params.TenantID, params.UserID, 0, amountPaid, rollbackKey, "purchase rollback", now)
|
||||
_, e1 := s.ledger.UnfreezeTx(
|
||||
ctx,
|
||||
tx,
|
||||
params.TenantID,
|
||||
params.UserID,
|
||||
0,
|
||||
amountPaid,
|
||||
rollbackKey,
|
||||
"purchase rollback",
|
||||
now,
|
||||
)
|
||||
return e1
|
||||
})
|
||||
logrus.WithFields(logrus.Fields{
|
||||
@@ -892,7 +921,12 @@ func (s *order) computeFinalPrice(priceAmount int64, price *models.ContentPrice,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *order) grantAccess(ctx context.Context, tx *gorm.DB, tenantID, userID, contentID, orderID int64, now time.Time) error {
|
||||
func (s *order) grantAccess(
|
||||
ctx context.Context,
|
||||
tx *gorm.DB,
|
||||
tenantID, userID, contentID, orderID int64,
|
||||
now time.Time,
|
||||
) error {
|
||||
insert := map[string]any{
|
||||
"tenant_id": tenantID,
|
||||
"user_id": userID,
|
||||
|
||||
Reference in New Issue
Block a user