Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7fe415de63 | |||
| 8e42fad8aa | |||
| 7a3c47f1d4 |
@@ -40,12 +40,13 @@ http 调用 clients 的初始化函数
|
|||||||
jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具
|
jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具
|
||||||
|
|
||||||
慢速请求底层调用埋点监控
|
慢速请求底层调用埋点监控
|
||||||
|
|
||||||
- redis
|
- redis
|
||||||
- gorm
|
- gorm
|
||||||
- 三方接口
|
- 三方接口
|
||||||
|
|
||||||
冷数据迁移方案
|
冷数据迁移方案
|
||||||
|
|
||||||
## 业务逻辑
|
## 业务逻辑
|
||||||
|
|
||||||
### 订单关闭的几种方式
|
### 订单关闭的几种方式
|
||||||
@@ -64,7 +65,8 @@ jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具
|
|||||||
|
|
||||||
### 节点分配与存储逻辑
|
### 节点分配与存储逻辑
|
||||||
|
|
||||||
提取:
|
提取:
|
||||||
|
|
||||||
- 检查用户套餐与白名单
|
- 检查用户套餐与白名单
|
||||||
- 选中代理
|
- 选中代理
|
||||||
- 找到当前可用端口最多的代理
|
- 找到当前可用端口最多的代理
|
||||||
@@ -76,6 +78,7 @@ jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具
|
|||||||
- 分别提交连接与配置请求
|
- 分别提交连接与配置请求
|
||||||
|
|
||||||
释放:
|
释放:
|
||||||
|
|
||||||
- 根据批次查出所有端口与相关节点
|
- 根据批次查出所有端口与相关节点
|
||||||
- 分别提交断开与关闭请求
|
- 分别提交断开与关闭请求
|
||||||
- 释放端口
|
- 释放端口
|
||||||
|
|||||||
16
publish.ps1
Normal file
16
publish.ps1
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if (-not $args) {
|
||||||
|
Write-Error "需要指定版本号"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$confrim = Read-Host "构建版本为 [platform:$($args[0])],是否继续?(y/n)"
|
||||||
|
if ($confrim -ne "y") {
|
||||||
|
Write-Host "已取消构建"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
docker build -t 43.226.58.254:53000/lanhu/platform:latest .
|
||||||
|
docker build -t 43.226.58.254:53000/lanhu/platform:$($args[0]) .
|
||||||
|
|
||||||
|
docker push 43.226.58.254:53000/lanhu/platform:latest
|
||||||
|
docker push 43.226.58.254:53000/lanhu/platform:$($args[0])
|
||||||
@@ -353,6 +353,9 @@ func authPassword(c *fiber.Ctx, auth *AuthCtx, req *TokenReq, now time.Time) (*m
|
|||||||
admin.LastLogin = u.P(time.Now())
|
admin.LastLogin = u.P(time.Now())
|
||||||
admin.LastLoginIP = ip
|
admin.LastLoginIP = ip
|
||||||
admin.LastLoginUA = ua
|
admin.LastLoginUA = ua
|
||||||
|
|
||||||
|
default:
|
||||||
|
return nil, ErrAuthorizeInvalidRequest
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成会话
|
// 生成会话
|
||||||
@@ -364,12 +367,7 @@ func authPassword(c *fiber.Ctx, auth *AuthCtx, req *TokenReq, now time.Time) (*m
|
|||||||
AccessToken: uuid.NewString(),
|
AccessToken: uuid.NewString(),
|
||||||
AccessTokenExpires: now.Add(time.Duration(env.SessionAccessExpire) * time.Second),
|
AccessTokenExpires: now.Add(time.Duration(env.SessionAccessExpire) * time.Second),
|
||||||
}
|
}
|
||||||
if user != nil {
|
|
||||||
session.UserID = &user.ID
|
|
||||||
}
|
|
||||||
if admin != nil {
|
|
||||||
session.AdminID = &admin.ID
|
|
||||||
}
|
|
||||||
if req.Remember {
|
if req.Remember {
|
||||||
session.RefreshToken = u.P(uuid.NewString())
|
session.RefreshToken = u.P(uuid.NewString())
|
||||||
session.RefreshTokenExpires = u.P(now.Add(time.Duration(env.SessionRefreshExpire) * time.Second))
|
session.RefreshTokenExpires = u.P(now.Add(time.Duration(env.SessionRefreshExpire) * time.Second))
|
||||||
@@ -377,18 +375,20 @@ func authPassword(c *fiber.Ctx, auth *AuthCtx, req *TokenReq, now time.Time) (*m
|
|||||||
|
|
||||||
// 保存用户更新和会话
|
// 保存用户更新和会话
|
||||||
err = q.Q.Transaction(func(tx *q.Query) error {
|
err = q.Q.Transaction(func(tx *q.Query) error {
|
||||||
if err := SaveSession(tx, session); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if user != nil {
|
if user != nil {
|
||||||
if err := tx.User.Save(user); err != nil {
|
if err := tx.User.Save(user); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
session.UserID = &user.ID
|
||||||
}
|
}
|
||||||
if admin != nil {
|
if admin != nil {
|
||||||
if err := tx.Admin.Save(admin); err != nil {
|
if err := tx.Admin.Save(admin); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
session.AdminID = &admin.ID
|
||||||
|
}
|
||||||
|
if err := SaveSession(tx, session); err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -172,8 +172,13 @@ func UpdatePassword(c *fiber.Ctx) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 验证手机号
|
||||||
|
if req.Phone != authCtx.User.Phone {
|
||||||
|
return fiber.NewError(fiber.StatusBadRequest, "手机号码不正确")
|
||||||
|
}
|
||||||
|
|
||||||
// 验证手机令牌
|
// 验证手机令牌
|
||||||
if req.Phone == "" || req.Code == "" {
|
if req.Code == "" {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, "手机号码和验证码不能为空")
|
return fiber.NewError(fiber.StatusBadRequest, "手机号码和验证码不能为空")
|
||||||
}
|
}
|
||||||
err = s.Verifier.VerifySms(c.Context(), req.Phone, req.Code)
|
err = s.Verifier.VerifySms(c.Context(), req.Phone, req.Code)
|
||||||
|
|||||||
Reference in New Issue
Block a user