## 主要改进 ### 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]>
灵境万象健康管理系统 (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
微信告警功能:
- 健康异常数据实时推送
- 设备离线状态通知
- 系统运行状态监控
- 定制化告警规则
🎨 定制化配置
1. 自定义Logo
# 将您的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
🌐 访问地址
启动成功后,可以通过以下地址访问各个服务:
-
管理后台: http://localhost:8080
- 默认账号: admin/123456
-
健康大屏: http://localhost:8001
- 实时健康数据展示
-
API接口: http://localhost:9998
- Swagger文档: http://localhost:9998/doc.html
-
数据库: localhost:3306
- 用户名: root
- 密码: 123456
- 数据库: lj-06
🔧 环境变量配置
在 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缓存命中率
- 接口响应时间
🚨 故障排除
常见问题
-
服务启动失败
# 查看详细错误日志 docker-compose logs service_name # 检查端口占用 netstat -tulpn | grep :8080 -
数据库连接失败
# 检查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';" -
微信告警不工作
- 检查WECHAT_APP_SECRET是否正确
- 验证WECHAT_USER_OPENID是否有效
- 确认模板消息ID是否匹配
-
日志文件权限问题
# 修复日志目录权限 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
📞 技术支持
如果在部署过程中遇到问题,请:
- 查看错误日志:
docker-compose logs -f service_name - 检查配置文件:确认环境变量和挂载路径
- 验证网络连接:确保服务间能正常通信
- 检查资源使用:确保服务器有足够的CPU和内存
版本: v1.1.0
更新时间: 2025年6月
支持架构: linux/amd64, linux/arm64
技术栈: Spring Boot + Vue.js + Python Flask + MySQL + Redis