修复订阅
Build docker and publish / build (20.15.1) (push) Failing after 8m2s

This commit is contained in:
2026-03-04 23:08:46 -08:00
parent 4349a7ea2f
commit 70c0483ca9
6 changed files with 230 additions and 30 deletions
@@ -183,13 +183,30 @@ func (l *AttachTransactionLogic) Attach(req *types.AttachAppleTransactionRequest
if existTx != nil && existTx.Id > 0 {
token := fmt.Sprintf("iap:%s", txPayload.OriginalTransactionId)
existSub, err := l.svcCtx.UserModel.FindOneSubscribeByToken(l.ctx, token)
if err == nil && existSub != nil && existSub.Id > 0 {
// Already processed, return success
l.Infow("事务已处理,直接返回", logger.Field("originalTransactionId", txPayload.OriginalTransactionId), logger.Field("tier", tier), logger.Field("expiresAt", exp.Unix()))
switch {
case err == nil && existSub != nil && existSub.Id > 0:
newExpire := existSub.ExpireTime
if exp.After(newExpire) {
existSub.ExpireTime = exp
newExpire = exp
}
if subscribeId > 0 && existSub.SubscribeId != subscribeId {
existSub.SubscribeId = subscribeId
}
existSub.Status = 1
existSub.FinishedAt = nil
if err := l.svcCtx.UserModel.UpdateSubscribe(l.ctx, existSub); err != nil {
l.Errorw("刷新 IAP 订阅失败", logger.Field("error", err.Error()), logger.Field("subscribeId", existSub.Id))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "update iap subscribe failed: %v", err.Error())
}
l.Infow("事务已处理,刷新订阅到期时间", logger.Field("originalTransactionId", txPayload.OriginalTransactionId), logger.Field("tier", tier), logger.Field("expiresAt", newExpire.Unix()))
return &types.AttachAppleTransactionResponse{
ExpiresAt: exp.Unix(),
ExpiresAt: newExpire.Unix(),
Tier: tier,
}, nil
case err != nil && !errors.Is(err, gorm.ErrRecordNotFound):
l.Errorw("查询 IAP 订阅失败", logger.Field("error", err.Error()), logger.Field("token", token))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "find iap subscribe error: %v", err.Error())
}
}