From fa356431eebbadaa632c91bbdb6c61f63abdf4e0 Mon Sep 17 00:00:00 2001 From: luorijun Date: Wed, 30 Apr 2025 16:17:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BD=99=E9=A2=9D=E4=B8=8E?= =?UTF-8?q?=E5=A5=97=E9=A4=90=E7=94=A8=E9=87=8F=E5=B9=B6=E5=8F=91=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 --- web/services/channel.go | 10 ++++++---- web/services/resource.go | 5 +++-- web/services/user.go | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 600369d..af24050 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,5 @@ ## todo - -- 统一简化包导入别名 -- 修改 postgres 默认事务级别到 RR - 撤销令牌需要改成用户权限,只有本人可以撤销 - 移动端适配 - 扩展 device 权限验证方式,提供一种方法区分内部和外部服务 diff --git a/web/services/channel.go b/web/services/channel.go index 7aa1aa6..2a98e6d 100644 --- a/web/services/channel.go +++ b/web/services/channel.go @@ -2,6 +2,7 @@ package services import ( "context" + "database/sql" "encoding/json" "errors" "fmt" @@ -244,6 +245,8 @@ func (s *channelService) CreateChannel( count int, nodeFilter ...NodeFilterConfig, ) ([]*PortInfo, error) { + var now = time.Now() + var step = time.Now() var rid = ctx.Value(requestid.ConfigDefault.ContextKey).(string) @@ -298,7 +301,6 @@ func (s *channelService) CreateChannel( // 分配端口 step = time.Now() - now := time.Now() expiration := common.LocalDateTime(now.Add(time.Duration(resource.Live) * time.Second)) _addr, channels, err := assignPort(q, edgeAssigns, auth.Payload.Id, protocol, authType, expiration, filter) if err != nil { @@ -315,7 +317,7 @@ func (s *channelService) CreateChannel( Used: resource.Used + int32(count), DailyLast: common.LocalDateTime(now), } - last := time.Time(resource.DailyLast) + var last = time.Time(resource.DailyLast) if now.Year() != last.Year() || now.Month() != last.Month() || now.Day() != last.Day() { toUpdate.DailyUsed = int32(count) } else { @@ -346,7 +348,7 @@ func (s *channelService) CreateChannel( slog.Debug("缓存通道数据", "rid", rid, "step", time.Since(step)) return nil - }) + }, &sql.TxOptions{Isolation: sql.LevelRepeatableRead}) if err != nil { return nil, err } @@ -674,7 +676,7 @@ func assignPort( q.Channel.NodeHost, q.Channel.DeletedAt, ). - Save(channels...) + Create(channels...) if err != nil { return nil, nil, err } diff --git a/web/services/resource.go b/web/services/resource.go index a76432c..b974fff 100644 --- a/web/services/resource.go +++ b/web/services/resource.go @@ -2,6 +2,7 @@ package services import ( "context" + "database/sql" "encoding/json" "fmt" "platform/pkg/rds" @@ -162,13 +163,13 @@ func (s *resourceService) CreateResource(data *CreateResourceData, uid int32) er // 更新用户余额 _, err = q.User. Where(q.User.ID.Eq(uid)). - Update(q.User.Balance, user.Balance-amount) + UpdateSimple(q.User.Balance.Sub(amount)) if err != nil { return err } return nil - }) + }, &sql.TxOptions{Isolation: sql.LevelRepeatableRead}) if err != nil { return err } diff --git a/web/services/user.go b/web/services/user.go index 62f4aa5..a7b82c4 100644 --- a/web/services/user.go +++ b/web/services/user.go @@ -31,7 +31,7 @@ func (s *userService) RechargeConfirm(ctx context.Context, tradeNo string, verif _, err = tx.User. Where(tx.User.ID.Eq(user.ID)). - Update(tx.User.Balance, user.Balance+result.Trade.Amount) + UpdateSimple(tx.User.Balance.Add(result.Trade.Amount)) if err != nil { return err }