Files
BrunoGaoandClaude fb4c23da4e feat: 完善多租户客户切换和数据隔离功能
## 主要改进

### 1. 修复JavaScript数字精度问题
- 将所有customerId从number类型改为string类型,避免大整数精度丢失
- 修复customerId=1968304677554302978被截断为1968304677554303000的问题
- 更新CustomerSwitcher、CustomerSelector等组件的类型定义

### 2. 完善客户切换功能
- 新增TenantInfo组件显示当前租户信息
- 修复CustomerSwitcher下拉选择事件处理
- 完善客户切换的用户体验和错误处理

### 3. 实现真正的多租户数据隔离
- 后端SysOrgUnitsSearchDTO新增customerId字段支持
- SysOrgUnitsFacadeImpl中实现customerId到id的自动转换
- 修改/sys_org_units/page和/sys_org_units/tree接口支持customerId过滤

### 4. 优化API调用机制
- 前端移除手动传递id=0的逻辑
- 让请求拦截器自动注入customerId参数
- 后端自动将customerId转换为有效的查询条件

### 5. 新增客户配置管理
- TCustomerConfigController新增/all-customers接口
- 为客户选择器提供标准的客户列表API

## 技术细节
- 前端:Vue 3 + TypeScript + Pinia状态管理
- 后端:Spring Boot + MyBatis-Plus
- 数据隔离:customerId即sys_org_units表的id字段
- 精度安全:JavaScript大整数使用string类型处理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 22:41:37 +08:00
..
2025-09-06 23:39:04 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-09-06 23:39:04 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-26 21:34:11 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00
2025-08-14 08:11:03 +08:00

灵境万象健康管理系统 (LJWX)

🌟 系统简介

灵境万象健康管理系统是一个基于Docker的企业级健康数据管理平台,支持穿戴设备数据采集、实时监控大屏、智能健康分析等功能。

🏗️ 系统架构

  • ljwx-admin: Vue.js前端管理界面 (端口8080)
  • ljwx-boot: Spring Boot后端API (端口9998)
  • ljwx-bigscreen: Python Flask大屏应用 (端口8001)
  • ljwx-mysql: 定制化MySQL数据库 (端口3306)
  • ljwx-redis: 定制化Redis缓存 (端口6379)

🚀 快速开始

1. 多架构镜像拉取

我们的镜像支持 AMD64 和 ARM64 双架构,可以在任何服务器上运行:

# 自动拉取适合当前架构的镜像
docker pull crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-mysql:1.1.0
docker pull crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-redis:1.1.0
docker pull crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-boot:1.1.0
docker pull crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-bigscreen:1.1.0
docker pull crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-admin:1.1.0

# 强制拉取AMD64版本(在AMD64服务器上)
docker pull --platform linux/amd64 crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-boot:1.1.0

# 验证镜像架构支持
docker buildx imagetools inspect crpi-yilnm6upy4pmbp67.cn-shenzhen.personal.cr.aliyuncs.com/ljwx/ljwx-boot:1.1.0

2. 创建目录结构

# 创建外挂日志和数据目录
./setup-external-volumes.sh

这将创建以下目录结构:

./logs/
├── mysql/          # MySQL 日志文件
├── redis/          # Redis 日志文件  
├── ljwx-boot/      # Spring Boot 应用日志
├── ljwx-bigscreen/ # Python 大屏应用日志
└── ljwx-admin/     # Nginx 访问和错误日志

./data/
├── mysql/          # MySQL 数据文件(可选)
├── redis/          # Redis 数据文件(可选)
├── ljwx-boot/      # Spring Boot 应用数据
└── ljwx-bigscreen/ # Python 大屏应用数据

3. 快速部署

一键部署脚本

在线部署(默认):

# 自动从阿里云拉取最新镜像并部署
./deploy-client.sh

# 或指定配置文件
./deploy-client.sh custom-config.env

离线部署模式:

# 使用本地镜像部署,跳过网络下载
./deploy-client.sh offline

# 或指定配置文件的离线模式
./deploy-client.sh custom-config.env offline

手动部署

# 使用标准配置启动(Docker内部卷)
docker-compose up -d

# 使用增强配置启动(日志和数据外挂)
docker-compose -f docker-compose-enhanced.yml up -d

🔧 配置说明

📝 日志和数据外挂配置

我们提供两种部署方式:

方式1:标准部署 (docker-compose.yml)

  • 使用Docker命名卷存储数据和日志
  • 数据和日志由Docker管理
  • 适合开发和测试环境

方式2:增强部署 (docker-compose-enhanced.yml)

  • 日志和数据直接外挂到宿主机
  • 便于监控、备份和调试
  • 适合生产环境

增强部署特性:

# MySQL 数据持久化和日志外挂
mysql:
  volumes:
    - mysql_data:/var/lib/mysql          # 数据持久化
    - ./logs/mysql:/var/log/mysql        # 日志外挂
    
# Spring Boot 应用日志外挂
ljwx-boot:
  volumes:
    - ./logs/ljwx-boot:/app/ljwx-boot-logs    # 应用日志
    - ./data/ljwx-boot:/app/data              # 应用数据

📱 微信配置

在 custom-config.env 文件中配置微信告警:

# 微信小程序配置
WECHAT_APP_ID=wx10dcc9f0235e1d77
WECHAT_APP_SECRET=your_wechat_app_secret

# 微信模板消息配置
WECHAT_TEMPLATE_ID=your_template_id
WECHAT_USER_OPENID=your_user_openid

# 启用微信告警
WECHAT_ALERT_ENABLED=true

微信告警功能:

  • 健康异常数据实时推送
  • 设备离线状态通知
  • 系统运行状态监控
  • 定制化告警规则

🎨 定制化配置

# 将您的logo文件替换为 custom-logo.svg
cp your-logo.svg custom-logo.svg

2. 自定义配置文件

# 编辑大屏应用配置
vim custom-config.py

# 编辑前端配置
vim custom-admin-config.js

3. 自定义资源文件

# 在 custom-assets 目录放置自定义图片资源
mkdir -p custom-assets
cp your-images/* custom-assets/

4. 数据库初始化

# 自定义数据库初始化脚本
vim client-data.sql    # 业务数据
vim client-admin.sql   # 管理员数据

🛠️ 运维管理

查看服务状态

# 查看所有服务状态
docker-compose ps

# 查看服务日志
docker-compose logs -f ljwx-boot
docker-compose logs -f ljwx-bigscreen

# 查看外挂日志(增强模式)
tail -f logs/ljwx-boot/*.log
tail -f logs/mysql/error.log
tail -f logs/ljwx-admin/access.log

数据备份

# MySQL数据备份
docker-compose exec mysql mysqldump -u root -p123456 lj-06 > backup_$(date +%Y%m%d_%H%M%S).sql

# Redis数据备份
docker-compose exec redis redis-cli BGSAVE

服务重启

# 重启单个服务
docker-compose restart ljwx-boot

# 重启所有服务
docker-compose restart

# 更新服务
docker-compose pull
docker-compose up -d

🌐 访问地址

启动成功后,可以通过以下地址访问各个服务:

🔧 环境变量配置

在 custom-config.env 中可以配置以下参数:

# 数据库配置
MYSQL_PASSWORD=123456
MYSQL_DATABASE=lj-06
MYSQL_USER=root

# Redis配置
REDIS_PASSWORD=123456

# 应用配置
VITE_APP_TITLE=穿戴管理演示系统
VITE_BIGSCREEN_URL=http://localhost:8001

# 微信配置
WECHAT_APP_ID=wx10dcc9f0235e1d77
WECHAT_APP_SECRET=your_secret
WECHAT_TEMPLATE_ID=your_template_id
WECHAT_USER_OPENID=your_openid
WECHAT_ALERT_ENABLED=true

📊 监控和告警

健康检查

# 检查服务健康状态
docker-compose exec ljwx-boot curl http://localhost:9998/health
docker-compose exec ljwx-bigscreen curl http://localhost:8001/health

性能监控

  • CPU和内存使用情况
  • 数据库连接状态
  • Redis缓存命中率
  • 接口响应时间

🚨 故障排除

常见问题

  1. 服务启动失败

    # 查看详细错误日志
    docker-compose logs service_name
    
    # 检查端口占用
    netstat -tulpn | grep :8080
    
  2. 数据库连接失败

    # 检查MySQL服务状态
    docker-compose exec mysql mysql -u root -p123456 -e "SELECT 1"
    
    # 重置数据库密码
    docker-compose exec mysql mysql -u root -p -e "ALTER USER 'root'@'%' IDENTIFIED BY '123456';"
    
  3. 微信告警不工作

    • 检查WECHAT_APP_SECRET是否正确
    • 验证WECHAT_USER_OPENID是否有效
    • 确认模板消息ID是否匹配
  4. 日志文件权限问题

    # 修复日志目录权限
    sudo chmod -R 755 logs/
    sudo chown -R $USER:$USER logs/
    

🔄 版本更新

更新到最新版本

# 1. 备份当前数据
docker-compose exec mysql mysqldump -u root -p123456 lj-06 > backup_before_update.sql

# 2. 拉取最新镜像
docker-compose pull

# 3. 重新启动服务
docker-compose down
docker-compose up -d

# 4. 验证服务状态
docker-compose ps

📞 技术支持

如果在部署过程中遇到问题,请:

  1. 查看错误日志:docker-compose logs -f service_name
  2. 检查配置文件:确认环境变量和挂载路径
  3. 验证网络连接:确保服务间能正常通信
  4. 检查资源使用:确保服务器有足够的CPU和内存

版本: v1.1.0
更新时间: 2025年6月
支持架构: linux/amd64, linux/arm64
技术栈: Spring Boot + Vue.js + Python Flask + MySQL + Redis