Merge upstream/master into develop

Sync upstream changes from perfect-panel/server

  Includes updates from v1.0.1 to v1.2.5:
  - Currency configuration support
  - Subscribe improvements (short token, inventory check, etc.)
  - Node management enhancements
  - Database migrations
  - Bug fixes and optimizations
This commit is contained in:
EUForest
2026-01-02 12:51:55 +08:00
parent 47c41d1d14
commit 80ee9a6acf
63 changed files with 947 additions and 1509 deletions
@@ -51,6 +51,16 @@ func (l *CloseOrderLogic) CloseOrder(req *types.CloseOrderRequest) error {
)
return nil
}
sub, err := l.svcCtx.SubscribeModel.FindOne(l.ctx, orderInfo.SubscribeId)
if err != nil {
l.Errorw("[CloseOrder] Find subscribe info failed",
logger.Field("error", err.Error()),
logger.Field("subscribeId", orderInfo.SubscribeId),
)
return nil
}
err = l.svcCtx.DB.Transaction(func(tx *gorm.DB) error {
// update order status
err := tx.Model(&order.Order{}).Where("order_no = ?", req.OrderNo).Update("status", 3).Error
@@ -124,9 +134,21 @@ func (l *CloseOrderLogic) CloseOrder(req *types.CloseOrderRequest) error {
// update user cache
return l.svcCtx.UserModel.UpdateUserCache(l.ctx, userInfo)
}
if sub.Inventory != -1 {
sub.Inventory++
if e := l.svcCtx.SubscribeModel.Update(l.ctx, sub, tx); e != nil {
l.Errorw("[CloseOrder] Restore subscribe inventory failed",
logger.Field("error", e.Error()),
logger.Field("subscribeId", sub.Id),
)
return e
}
}
return nil
})
if err != nil {
logger.Errorf("[CloseOrder] Transaction failed: %v", err.Error())
return err
}
return nil