修复套餐创建事务回滚失败问题;修复 http dump 未根据环境配置打印问题;简化通道分配时计时输出
This commit is contained in:
@@ -239,19 +239,19 @@ func (s *channelService) CreateChannel(
|
||||
err = q.Q.Transaction(func(q *q.Query) (err error) {
|
||||
|
||||
// 查找套餐
|
||||
resource, err := findResource(q, rid, resourceId, authCtx, count)
|
||||
resource, err := findResource(q, resourceId, authCtx, count)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 查找网关
|
||||
proxies, err := findProxies(q, rid)
|
||||
proxies, err := findProxies(q)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 查找已使用的节点
|
||||
channels, err := findChannels(q, rid, proxies)
|
||||
channels, err := findChannels(q, proxies)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -259,7 +259,7 @@ func (s *channelService) CreateChannel(
|
||||
// 查找白名单
|
||||
var whitelist *[]string
|
||||
if authType == ChannelAuthTypeIp {
|
||||
whitelist, err = findWhitelist(q, rid, authCtx.Payload.Id)
|
||||
whitelist, err = findWhitelist(q, authCtx.Payload.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -299,10 +299,7 @@ func (s *channelService) CreateChannel(
|
||||
return newChannels, nil
|
||||
}
|
||||
|
||||
func findResource(q *q.Query, rid string, resourceId int32, authCtx *auth.Context, count int) (*ResourceInfo, error) {
|
||||
var step = time.Now()
|
||||
|
||||
// 查找套餐
|
||||
func findResource(q *q.Query, resourceId int32, authCtx *auth.Context, count int) (*ResourceInfo, error) {
|
||||
var resource = new(ResourceInfo)
|
||||
data := q.Resource.As("data")
|
||||
pss := q.ResourcePss.As("pss")
|
||||
@@ -348,13 +345,10 @@ func findResource(q *q.Query, rid string, resourceId int32, authCtx *auth.Contex
|
||||
}
|
||||
}
|
||||
|
||||
slog.Debug("查找套餐", "rid", rid, "step", time.Since(step))
|
||||
return resource, nil
|
||||
}
|
||||
|
||||
func findProxies(q *q.Query, rid string) (proxies []*m.Proxy, err error) {
|
||||
var step = time.Now()
|
||||
|
||||
func findProxies(q *q.Query) (proxies []*m.Proxy, err error) {
|
||||
proxies, err = q.Proxy.
|
||||
Where(q.Proxy.Type.Eq(1)).
|
||||
Find()
|
||||
@@ -362,18 +356,15 @@ func findProxies(q *q.Query, rid string) (proxies []*m.Proxy, err error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
slog.Debug("查找网关", "rid", rid, "step", time.Since(step))
|
||||
return proxies, nil
|
||||
}
|
||||
|
||||
func findChannels(q *q.Query, rid string, proxies []*m.Proxy) (channels []*m.Channel, err error) {
|
||||
var step = time.Now()
|
||||
|
||||
func findChannels(q *q.Query, proxies []*m.Proxy) (channels []*m.Channel, err error) {
|
||||
var proxyIds = make([]int32, len(proxies))
|
||||
for i, proxy := range proxies {
|
||||
proxyIds[i] = proxy.ID
|
||||
}
|
||||
channels, err = q.Channel.Debug().
|
||||
channels, err = q.Channel.
|
||||
Select(
|
||||
q.Channel.ProxyID,
|
||||
q.Channel.ProxyPort).
|
||||
@@ -388,14 +379,10 @@ func findChannels(q *q.Query, rid string, proxies []*m.Proxy) (channels []*m.Cha
|
||||
return nil, err
|
||||
}
|
||||
|
||||
slog.Debug("查找已使用节点", "rid", rid, "step", time.Since(step))
|
||||
return channels, nil
|
||||
}
|
||||
|
||||
func findWhitelist(q *q.Query, rid string, userId int32) (*[]string, error) {
|
||||
var step = time.Now()
|
||||
|
||||
// 按需查找用户白名单
|
||||
func findWhitelist(q *q.Query, userId int32) (*[]string, error) {
|
||||
var whitelist []string
|
||||
err := q.Whitelist.
|
||||
Where(q.Whitelist.UserID.Eq(userId)).
|
||||
@@ -408,7 +395,6 @@ func findWhitelist(q *q.Query, rid string, userId int32) (*[]string, error) {
|
||||
return nil, ChannelServiceErr("用户没有白名单")
|
||||
}
|
||||
|
||||
slog.Debug("查找用户白名单", "rid", rid, "step", time.Since(step))
|
||||
return &whitelist, nil
|
||||
}
|
||||
|
||||
@@ -590,13 +576,11 @@ func calcChannels(
|
||||
}
|
||||
}
|
||||
|
||||
slog.Debug("申请节点", "rid", step, "total", time.Since(step))
|
||||
slog.Debug("申请节点", "total", time.Since(step))
|
||||
return newChannels, nil
|
||||
}
|
||||
|
||||
func updateResource(rid string, resource *ResourceInfo, count int, now time.Time) (err error) {
|
||||
var step = time.Now()
|
||||
|
||||
toUpdate := m.ResourcePss{
|
||||
Used: resource.Used + int32(count),
|
||||
DailyLast: core.LocalDateTime(now),
|
||||
@@ -619,14 +603,10 @@ func updateResource(rid string, resource *ResourceInfo, count int, now time.Time
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("更新套餐使用记录", "rid", rid, "step", time.Since(step))
|
||||
return nil
|
||||
}
|
||||
|
||||
func saveChannels(channels []*m.Channel) (err error) {
|
||||
// 保存到数据库
|
||||
var step = time.Now()
|
||||
|
||||
err = q.Channel.
|
||||
Omit(
|
||||
q.Channel.NodeID,
|
||||
@@ -638,19 +618,15 @@ func saveChannels(channels []*m.Channel) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("保存到数据库", "step", time.Since(step))
|
||||
return nil
|
||||
}
|
||||
|
||||
func cacheChannels(ctx context.Context, rid string, channels []*m.Channel) (err error) {
|
||||
var step = time.Now()
|
||||
|
||||
err = cache(ctx, channels)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("缓存通道数据", "rid", rid, "step", time.Since(step))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user