修复异步图片导致的多个问题 (#12)
* fix:修复响应污染问题 * fix:修改存储相关文件为中文注释 * fix:修复二次退款问题 * fix:修复多个考虑不全面问题 1.误删用户数据 2.R2存储默认区域 3.删除失败导致孤儿记录 4.网络抖动事变时重试 5.前端无限次请求获取图片 6.文件管理权限 * fix:修复字符串截断异常问题和文件下载超时问题 * fix:修复多图问题 * fix:异步生成图片时未配置oss提示错误信息 * fix:修复关闭异步后同步生成出错问题 * feat:新增文件存储测试功能,防止设置后不生效 * fix:修复同步图片转异步后计费错误 * fix:修复无下限扣款问题 * fix:修复结算重复扣款问题 * fix:修复计费出错导致的0费用结算 * fix:修复回调双重履约 * fix:修复预扣事务 * fix:修复费用字段类型问题 * fix:修复缓存问题 * fix:修复安全问题 * fix:修复数据库操作事务问题 * refactor:重构事务使用方式,改为官方推荐的dao形式 * fix:修复余额更新隐患 * fix:修复N+1查询问题 * fix:修复密钥安全问题 * fix:结算失败时打印错误日志 * improve:优化扣款 * fix:修复用户接口越权 --------- Co-authored-by: chengqian <wuchengqian@kkidc.com>
This commit is contained in:
1 parent
c237fb6c3f
commit
be9e707bfd
97 files changed
+2810
-1017
No files matched your search
+13
-1
@@ -28,6 +28,7 @@ import (
|
||||
"github.com/qianfree/team-api/internal/logic/update"
|
||||
"github.com/qianfree/team-api/internal/middleware"
|
||||
"github.com/qianfree/team-api/internal/response"
|
||||
"github.com/qianfree/team-api/internal/utility/crypto"
|
||||
|
||||
"github.com/qianfree/team-api/internal/handler/public"
|
||||
"github.com/qianfree/team-api/internal/handler/relay"
|
||||
@@ -61,6 +62,14 @@ var (
|
||||
// Initialize JWT secret
|
||||
common.InitJWTSecret(ctx)
|
||||
|
||||
// 启动阶段校验加密密钥,避免运行时请求路径 panic(#3)
|
||||
if hexKey := g.Cfg().MustGet(ctx, "crypto.encryptionKey").String(); hexKey == "" {
|
||||
g.Log().Fatal(ctx, "crypto.encryptionKey 未配置,程序退出(运行 openssl rand -hex 32 生成)")
|
||||
} else if _, keyErr := crypto.GetEncryptionKey(hexKey); keyErr != nil {
|
||||
g.Log().Fatalf(ctx, "crypto.encryptionKey 配置无效,程序退出: %v", keyErr)
|
||||
}
|
||||
g.Log().Info(ctx, "加密密钥校验通过")
|
||||
|
||||
// System initialization: env auto-init or detect setup mode
|
||||
autoInit, initErr := admin.AutoInitAdmin(ctx)
|
||||
if initErr != nil {
|
||||
@@ -80,6 +89,9 @@ var (
|
||||
common.Config().Warmup(ctx)
|
||||
common.Config().StartSubscriber(ctx)
|
||||
|
||||
// C1: 通用 Cache 的跨实例 L1 失效订阅(cache:invalidate)
|
||||
common.StartCacheInvalidationSubscriber(ctx)
|
||||
|
||||
// Initialize content filter engine
|
||||
common.InitContentFilter(ctx)
|
||||
|
||||
@@ -264,7 +276,7 @@ var (
|
||||
|
||||
// Tenant — public endpoints use g.Meta middleware:"-" to skip auth
|
||||
group.Group("/tenant", func(g *ghttp.RouterGroup) {
|
||||
g.Middleware(middleware.DemoMode, middleware.MaintenanceMode, middleware.TenantAuth)
|
||||
g.Middleware(middleware.DemoMode, middleware.MaintenanceMode, middleware.TenantAuth, middleware.Idempotency)
|
||||
g.Bind(tenantController.NewV1())
|
||||
})
|
||||
|
||||
|
||||
Reference in new issue
Block a user