Commit Graph

24 Commits

Author SHA1 Message Date
lzh
423bf3ec3f feat(tenant): 实现 ProjectSecurityWebFilter 项目权限集合校验
新增 ProjectSecurityWebFilter:
- 集合校验: user.authorizedProjectIds.contains(header.projectId)
- 默认项目选择: DEFAULT编码 → 最小ID → 单项目自动选中 → 无授权403
- @ProjectIgnore URL 自动跳过
- 注册在 WebFilterOrderEnum.PROJECT_SECURITY_FILTER (-98)

框架层:
- ProjectCommonApi: 新增 getAuthorizedProjectIds, getDefaultProjectId
- ProjectFrameworkService: 新增授权查询 + Caffeine 缓存(60s/1000条)
- ViewshTenantAutoConfiguration: 注册 Filter + 扫描 @ProjectIgnore

业务层:
- ProjectService: 新增 getAuthorizedProjectIds, getDefaultProjectId
- ProjectServiceImpl: 默认项目3级回退逻辑
- ProjectApiImpl: 实现 Feign 端点

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 23:35:56 +08:00
lzh
87beb1228e feat(tenant): 租户-项目两级架构 Phase 0+1 — 基础框架层
Phase 0 技术验证:
- ProjectBaseDO extends TenantBaseDO,新增 projectId 字段
- ProjectContextHolder (TransmittableThreadLocal) 项目上下文管理
- ProjectDatabaseInterceptor 实现 TenantLineHandler,返回 project_id 列
- 注册第二个 TenantLineInnerInterceptor,通过 @Qualifier 保证初始化顺序
- DualInterceptorTest 11 个用例验证双拦截器 SQL 注入(SELECT/INSERT/UPDATE/DELETE + JOIN + 子查询)

Phase 1 基础框架层:
- @ProjectIgnore 注解 + ProjectIgnoreAspect (SpEL 条件支持)
- ProjectUtils 工具类 (execute/executeIgnore)
- ProjectContextWebFilter 从请求 Header 解析 project-id
- WebFrameworkUtils 扩展 HEADER_PROJECT_ID + getProjectId()
- WebFilterOrderEnum 新增 PROJECT_CONTEXT_FILTER、PROJECT_SECURITY_FILTER
- RPC: TenantRequestInterceptor 自动透传 project-id
- MQ: Kafka/RocketMQ/RabbitMQ/Redis 全部支持 project-id 发送与消费
- @ProjectJob + ProjectJobAspect (@Order(2) 内层,配合 @TenantJob 使用)
- TenantJobAspect 补充 @Order(1) 外层标记
- ProjectDO + UserProjectDO + Mapper + ProjectService + ProjectController
- ProjectCommonApi (Feign) + ProjectApiImpl + ProjectFrameworkServiceImpl (Guava 缓存)
- TenantServiceImpl.createTenant() 联动创建默认项目
- ErrorCodeConstants 新增 1-002-030-xxx 项目错误码

Review 修复:
- Bean 初始化顺序: projectLineInnerInterceptor 依赖 @Qualifier 确保顺序
- computeIgnoreTable: @ProjectIgnore 检查优先于 isAssignableFrom
- ProjectFrameworkServiceImpl 注册为 Spring Bean
- RocketMQ SendHook: project-id 独立于 tenantId 传播
- createDefaultProject 移入 TenantUtils.execute 事务块内
- 全部 MQ/RPC 统一使用 HEADER_PROJECT_ID 常量
- ProjectJobAspect 增加租户上下文防御校验
- 移除 ProjectDO/UserProjectDO 无效的 @KeySequence
- ProjectServiceImpl/ProjectApiImpl 移除冗余 TenantUtils.execute 嵌套

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 19:22:57 +08:00
lzh
90fa54dc11 build(ci): add stage deployment pipeline and configs 2026-03-30 22:53:46 +08:00
lzh
78aba0d1ed refactor(system): 用户头像预签名改为 @OssPresignUrl 声明式处理
在 AuthPermissionInfoRespVO、OAuth2UserInfoRespVO、UserProfileRespVO、
UserRespVO 的 avatar 字段添加 @OssPresignUrl 注解,移除
AuthController、OAuth2UserController、UserController、
UserProfileController 中手动调用 fileApi.presignGetUrl 的代码,
Controller 回归薄层职责。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:06:43 +08:00
lzh
f792ee1678 refactor(system): 社交绑定列表逻辑下沉至 Service 层
将 SocialUserBindMapper 从 Controller 移除,数据组装逻辑移至
SocialUserService.getSocialUserBindList(),返回绑定时间字段;
修复 avatar 误用 getNickname() 的 bug

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:04:37 +08:00
lzh
064ccdac89 feat(system): 管理后台微信小程序一键登录接口
新增 /system/auth/weixin-mini-app-login 端点,通过微信手机号授权
匹配管理员账号并自动绑定,含绑定冲突检测:
- 同一微信已绑定其他管理员 → 拒绝
- 同一管理员已绑定其他微信 → 拒绝

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:01:53 +08:00
lzh
d123057d73 feat(system): 用户头像 URL 预签名支持
- AuthController 登录权限接口返回预签名头像
- UserController 用户列表及详情返回预签名头像
- UserProfileController 个人中心预签名头像,保存时剥离签名参数
- OAuth2UserController 用户信息接口返回预签名头像

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 17:44:41 +08:00
lzh
b4de9d0df8 feat(config): 修改测试环境地址 2026-02-26 17:16:24 +08:00
lzh
a68ce9a28a fix(xxl-job): 配置executor IP和端口解决跨服务器回调失败
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
XXL-Job Admin部署在Infra服务器,executor运行在Prod服务器的Docker容器中,
容器内部IP不可达,需指定宿主机IP和独立端口供Admin回调。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:03:39 +08:00
lzh
bec46c2919 fix(rocketmq): 修正ACL配置位置到producer/consumer节点下
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
rocketmq-spring-boot-starter的access-key/secret-key需配置在
producer和consumer节点下而非rocketmq根节点,同时为所有
@RocketMQMessageListener注解添加accessKey/secretKey属性。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 16:19:42 +08:00
lzh
748b09d355 fix(rocketmq): 添加腾讯云TDMQ ACL认证配置解决连接失败
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
修复RocketMQ发送消息报"No accessKey is configured"错误,
统一各模块环境变量名为ROCKETMQ_NAMESRV_ADDR。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:50:44 +08:00
lzh
26e909cce9 fix(deploy): 迁移Nacos/TDengine/XXL-Job至Infra服务器(172.17.16.7)
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
将基础设施服务地址从Prod服务器(172.17.16.14)统一迁移至Infra服务器(172.17.16.7):
- Nacos: 172.17.16.14:8848 → 172.17.16.7:8848
- TDengine: 172.17.16.14:6041 → 172.17.16.7:6041
- XXL-Job: 172.17.16.14:19090 → 172.17.16.7:19090

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 11:22:02 +08:00
lzh
547da7cfd2 refactor(deploy): 迁移CI/CD至双服务器架构
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- Jenkinsfile: Registry改为Infra内网172.17.16.7:5000,部署目标改为Prod内网172.17.16.14
- docker-compose: 镜像源改为172.17.16.7:5000,MySQL改为172.17.16.8,Redis改为172.17.16.13,RocketMQ改为腾讯云TDMQ
- 所有模块application-prod.yaml: 统一更新MySQL/Redis/RocketMQ默认连接地址
- deploy.sh: Registry地址同步更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:41:54 +08:00
lzh
2a1cdfc4dc Merge remote-tracking branch 'origin/master' into merge-temp 2026-01-14 22:49:28 +08:00
lzh
01f900a6fe fix: 修改xxl-job地址
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
2026-01-14 15:43:41 +08:00
lzh
91861c0948 fix: 系统登录验证码水印修改
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
2026-01-14 14:21:00 +08:00
lzh
52017f7e23 fix: Jenkins修复3-prod缺失配置添加
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
2026-01-14 11:43:47 +08:00
lzh
a20ef566d0 fix: Jenkins修复3-修改nacos配置
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
2026-01-14 11:12:28 +08:00
lzh
efe05ad624 refactor: 重构配置管理,移除.env依赖,使用docker-compose环境变量+Nacos配置中心
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- 更新所有application-prod.yaml,将环境变量占位符替换为硬编码默认值
- 重写docker-compose.core.yml,使用Spring Boot环境变量命名规范
- 修复Jenkins pipeline中的getContainerName方法调用错误
- 配置优先级:Nacos配置中心 > Docker环境变量 > application-prod.yaml

变更文件:
- viewsh-gateway/src/main/resources/application-prod.yaml
- viewsh-module-system-server/src/main/resources/application-prod.yaml
- viewsh-module-infra-server/src/main/resources/application-prod.yaml
- viewsh-module-iot-server/src/main/resources/application-prod.yaml
- viewsh-module-iot-gateway/src/main/resources/application-prod.yaml
- docker-compose.core.yml
- Jenkinsfile
2026-01-13 23:50:37 +08:00
lzh
2b9c1aa7d8 feat: 添加所有核心服务的生产环境配置文件
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- 创建 application-prod.yaml 支持环境变量占位符
- 支持 Docker Compose 环境变量注入
- 支持 Nacos 配置中心覆盖
- 涵盖 5 个核心服务: gateway, system, infra, iot-server, iot-gateway
2026-01-13 11:52:27 +08:00
lzh
dd7c1e097b chore: iot、system配置文件调整 2025-12-31 15:53:40 +08:00
lzh
4f293436ef chore: system、infra、iot、server配置文件调整 - nacos使用124.221.55.225 2025-12-31 14:21:48 +08:00
lzh
ba22a96e44 chore: system、infra、iot、server配置文件调整v1.0 2025-12-31 14:09:36 +08:00
lzh
8ccfafe2bb first commit
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
2025-12-31 11:48:19 +08:00