f
This commit is contained in:
@@ -226,10 +226,30 @@ func (s *ApiApplicationServiceImpl) validateApiCall(ctx context.Context, cmd *co
|
|||||||
|
|
||||||
// 4. 验证IP白名单(非开发环境)
|
// 4. 验证IP白名单(非开发环境)
|
||||||
if !s.config.App.IsDevelopment() && !cmd.Options.IsDebug {
|
if !s.config.App.IsDevelopment() && !cmd.Options.IsDebug {
|
||||||
|
// 添加调试日志
|
||||||
|
s.logger.Info("开始验证白名单",
|
||||||
|
zap.String("userId", apiUser.UserId),
|
||||||
|
zap.String("clientIP", cmd.ClientIP),
|
||||||
|
zap.Bool("isDevelopment", s.config.App.IsDevelopment()),
|
||||||
|
zap.Bool("isDebug", cmd.Options.IsDebug),
|
||||||
|
zap.Int("whiteListCount", len(apiUser.WhiteList)))
|
||||||
|
|
||||||
|
// 输出白名单详细信息(用于调试)
|
||||||
|
for idx, item := range apiUser.WhiteList {
|
||||||
|
s.logger.Info("白名单项",
|
||||||
|
zap.Int("index", idx),
|
||||||
|
zap.String("ipAddress", item.IPAddress),
|
||||||
|
zap.String("remark", item.Remark))
|
||||||
|
}
|
||||||
|
|
||||||
if !apiUser.IsWhiteListed(cmd.ClientIP) {
|
if !apiUser.IsWhiteListed(cmd.ClientIP) {
|
||||||
s.logger.Error("IP不在白名单内", zap.String("userId", apiUser.UserId), zap.String("ip", cmd.ClientIP))
|
s.logger.Error("IP不在白名单内",
|
||||||
|
zap.String("userId", apiUser.UserId),
|
||||||
|
zap.String("ip", cmd.ClientIP),
|
||||||
|
zap.Int("whiteListSize", len(apiUser.WhiteList)))
|
||||||
return nil, ErrInvalidIP
|
return nil, ErrInvalidIP
|
||||||
}
|
}
|
||||||
|
s.logger.Info("白名单验证通过", zap.String("ip", cmd.ClientIP))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. 验证钱包状态
|
// 5. 验证钱包状态
|
||||||
|
|||||||
@@ -20,60 +20,60 @@ func SetupGormCache(db *gorm.DB, cacheService interfaces.CacheService, cfg *conf
|
|||||||
|
|
||||||
// 以下是原有的缓存配置代码,已注释掉
|
// 以下是原有的缓存配置代码,已注释掉
|
||||||
/*
|
/*
|
||||||
// 创建缓存配置
|
// 创建缓存配置
|
||||||
cacheConfig := cache.CacheConfig{
|
cacheConfig := cache.CacheConfig{
|
||||||
DefaultTTL: 30 * time.Minute,
|
DefaultTTL: 30 * time.Minute,
|
||||||
TablePrefix: "gorm_cache",
|
TablePrefix: "gorm_cache",
|
||||||
MaxCacheSize: 1000,
|
MaxCacheSize: 1000,
|
||||||
CacheComplexSQL: false,
|
CacheComplexSQL: false,
|
||||||
EnableStats: true,
|
EnableStats: true,
|
||||||
EnableWarmup: true,
|
EnableWarmup: true,
|
||||||
PenetrationGuard: true,
|
PenetrationGuard: true,
|
||||||
BloomFilter: false,
|
BloomFilter: false,
|
||||||
AutoInvalidate: true,
|
AutoInvalidate: true,
|
||||||
InvalidateDelay: 100 * time.Millisecond,
|
InvalidateDelay: 100 * time.Millisecond,
|
||||||
|
|
||||||
// 配置启用缓存的表
|
// 配置启用缓存的表
|
||||||
EnabledTables: []string{
|
EnabledTables: []string{
|
||||||
// "product",
|
// "product",
|
||||||
// "product_category",
|
// "product_category",
|
||||||
// "enterprise_info_submit_records",
|
// "enterprise_info_submit_records",
|
||||||
// "sms_codes",
|
// "sms_codes",
|
||||||
// "wallets",
|
// "wallets",
|
||||||
// "subscription",
|
// "subscription",
|
||||||
// "product_category",
|
// "product_category",
|
||||||
// "product_documentation",
|
// "product_documentation",
|
||||||
// "enterprise_infos",
|
// "enterprise_infos",
|
||||||
// "api_users",
|
// "api_users",
|
||||||
// 添加更多需要缓存的表
|
// 添加更多需要缓存的表
|
||||||
},
|
},
|
||||||
|
|
||||||
// 配置禁用缓存的表(日志表等)
|
// 配置禁用缓存的表(日志表等)
|
||||||
DisabledTables: []string{
|
DisabledTables: []string{
|
||||||
"audit_logs", // 审计日志
|
"audit_logs", // 审计日志
|
||||||
"system_logs", // 系统日志
|
"system_logs", // 系统日志
|
||||||
"operation_logs", // 操作日志
|
"operation_logs", // 操作日志
|
||||||
"api_calls", // API调用日志表,变化频繁,不适合缓存
|
"api_calls", // API调用日志表,变化频繁,不适合缓存
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化全局缓存配置管理器
|
// 初始化全局缓存配置管理器
|
||||||
cache.InitCacheConfigManager(cacheConfig)
|
cache.InitCacheConfigManager(cacheConfig)
|
||||||
|
|
||||||
// 创建缓存插件
|
// 创建缓存插件
|
||||||
cachePlugin := cache.NewGormCachePlugin(cacheService, logger, cacheConfig)
|
cachePlugin := cache.NewGormCachePlugin(cacheService, logger, cacheConfig)
|
||||||
|
|
||||||
// 注册插件到GORM
|
// 注册插件到GORM
|
||||||
if err := db.Use(cachePlugin); err != nil {
|
if err := db.Use(cachePlugin); err != nil {
|
||||||
logger.Error("注册GORM缓存插件失败", zap.Error(err))
|
logger.Error("注册GORM缓存插件失败", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Info("GORM缓存插件已成功注册",
|
logger.Info("GORM缓存插件已成功注册",
|
||||||
zap.Duration("default_ttl", cacheConfig.DefaultTTL),
|
zap.Duration("default_ttl", cacheConfig.DefaultTTL),
|
||||||
zap.Strings("enabled_tables", cacheConfig.EnabledTables),
|
zap.Strings("enabled_tables", cacheConfig.EnabledTables),
|
||||||
zap.Strings("disabled_tables", cacheConfig.DisabledTables),
|
zap.Strings("disabled_tables", cacheConfig.DisabledTables),
|
||||||
)
|
)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// return nil
|
// return nil
|
||||||
@@ -103,13 +103,13 @@ func GetCacheConfig(cfg *config.Config) cache.CacheConfig {
|
|||||||
},
|
},
|
||||||
|
|
||||||
DisabledTables: []string{
|
DisabledTables: []string{
|
||||||
"api_calls", // API调用日志表,变化频繁,不适合缓存
|
"api_calls", // API调用日志表,变化频繁,不适合缓存
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化全局缓存配置管理器
|
// 初始化全局缓存配置管理器
|
||||||
cache.InitCacheConfigManager(cacheConfig)
|
cache.InitCacheConfigManager(cacheConfig)
|
||||||
|
|
||||||
return cacheConfig
|
return cacheConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,13 +134,13 @@ func GetCacheConfig(cfg *config.Config) cache.CacheConfig {
|
|||||||
},
|
},
|
||||||
|
|
||||||
DisabledTables: []string{
|
DisabledTables: []string{
|
||||||
"api_calls", // API调用日志表,变化频繁,不适合缓存
|
"api_calls", // API调用日志表,变化频繁,不适合缓存
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化全局缓存配置管理器
|
// 初始化全局缓存配置管理器
|
||||||
cache.InitCacheConfigManager(cacheConfig)
|
cache.InitCacheConfigManager(cacheConfig)
|
||||||
|
|
||||||
return cacheConfig
|
return cacheConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ func convertTianYanChaError(err error) error {
|
|||||||
|
|
||||||
// 检查天眼查服务的错误类型,转换为处理器层的标准错误
|
// 检查天眼查服务的错误类型,转换为处理器层的标准错误
|
||||||
if errors.Is(err, tianyancha.ErrNotFound) {
|
if errors.Is(err, tianyancha.ErrNotFound) {
|
||||||
return errors.Join(processors.ErrNotFound, err)
|
return nil
|
||||||
}
|
}
|
||||||
if errors.Is(err, tianyancha.ErrDatasource) {
|
if errors.Is(err, tianyancha.ErrDatasource) {
|
||||||
return errors.Join(processors.ErrDatasource, err)
|
return errors.Join(processors.ErrDatasource, err)
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ func (t *TianYanChaService) CallAPI(ctx context.Context, apiCode string, params
|
|||||||
Message: tianYanChaResp.Reason,
|
Message: tianYanChaResp.Reason,
|
||||||
Data: tianYanChaResp.Result,
|
Data: tianYanChaResp.Result,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 成功情况
|
// 成功情况
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import (
|
|||||||
|
|
||||||
// UserRoutes 用户路由注册器
|
// UserRoutes 用户路由注册器
|
||||||
type UserRoutes struct {
|
type UserRoutes struct {
|
||||||
handler *handlers.UserHandler
|
handler *handlers.UserHandler
|
||||||
authMiddleware *middleware.JWTAuthMiddleware
|
authMiddleware *middleware.JWTAuthMiddleware
|
||||||
adminAuthMiddleware *middleware.AdminAuthMiddleware
|
adminAuthMiddleware *middleware.AdminAuthMiddleware
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewUserRoutes 创建用户路由注册器
|
// NewUserRoutes 创建用户路由注册器
|
||||||
@@ -24,10 +24,10 @@ func NewUserRoutes(
|
|||||||
logger *zap.Logger,
|
logger *zap.Logger,
|
||||||
) *UserRoutes {
|
) *UserRoutes {
|
||||||
return &UserRoutes{
|
return &UserRoutes{
|
||||||
handler: handler,
|
handler: handler,
|
||||||
authMiddleware: authMiddleware,
|
authMiddleware: authMiddleware,
|
||||||
adminAuthMiddleware: adminAuthMiddleware,
|
adminAuthMiddleware: adminAuthMiddleware,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,11 +56,12 @@ func (r *UserRoutes) Register(router *sharedhttp.GinRouter) {
|
|||||||
adminGroup := usersGroup.Group("/admin")
|
adminGroup := usersGroup.Group("/admin")
|
||||||
adminGroup.Use(r.adminAuthMiddleware.Handle())
|
adminGroup.Use(r.adminAuthMiddleware.Handle())
|
||||||
{
|
{
|
||||||
adminGroup.GET("/list", r.handler.ListUsers) // 管理员查看用户列表
|
adminGroup.GET("/list", r.handler.ListUsers) // 管理员查看用户列表
|
||||||
adminGroup.GET("/:user_id", r.handler.GetUserDetail) // 管理员获取用户详情
|
adminGroup.GET("/:user_id", r.handler.GetUserDetail) // 管理员获取用户详情
|
||||||
adminGroup.GET("/stats", r.handler.GetUserStats) // 管理员获取用户统计信息
|
adminGroup.GET("/stats", r.handler.GetUserStats) // 管理员获取用户统计信息
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
r.logger.Info("用户路由注册完成")
|
r.logger.Info("用户路由注册完成")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user