feat: 添加员工门户项目及相关后端改造

- 新增 hzhub-portal-employee 员工门户前端项目(基于 Vue3 + Element Plus)
- 后端登录接口增加返回 nickName 字段
- 移除 KnowledgeInfoController 的 @SaCheckPermission 注解
- 删除 hzhub-portal-company 旧门户项目
- 更新项目文档和架构说明
- 添加后台运行管理脚本(start-all.sh / status-all.sh / stop-all.sh)
- 更新 docker-compose 配置

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
大壮
2026-04-13 03:47:33 +00:00
parent 4e82f8e1e2
commit 278e507e8a
1310 changed files with 7243 additions and 1248 deletions

1
hzhub-ai/.pid Normal file
View File

@@ -0,0 +1 @@
3999223

View File

@@ -58,7 +58,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://127.0.0.1:3306/ruoyi_ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
url: jdbc:mysql://127.0.0.1:3306/hzhub?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
password: hzhub123
# agent:

View File

@@ -105,7 +105,7 @@ public class LoginUser implements Serializable {
/**
* 用户昵称
*/
private String nickname;
private String nickName;
/**
* 角色对象

View File

@@ -40,7 +40,6 @@ public class KnowledgeInfoController extends BaseController {
/**
* 查询知识库列表
*/
@SaCheckPermission("system:info:list")
@GetMapping("/list")
public TableDataInfo<KnowledgeInfoVo> list(KnowledgeInfoBo bo, PageQuery pageQuery) {
return knowledgeInfoService.queryPageList(bo, pageQuery);

View File

@@ -2,6 +2,7 @@ package org.hzhub.system.domain.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hzhub.common.core.domain.model.LoginUser;
/**
* 登录验证信息
@@ -51,4 +52,10 @@ public class LoginVo {
*/
private String openid;
/**
* 用户信息(用于前端展示昵称等)
*/
@JsonProperty("userInfo")
private LoginUser userInfo;
}

View File

@@ -154,7 +154,7 @@ public class SysLoginService {
loginUser.setUserId(userId);
loginUser.setDeptId(user.getDeptId());
loginUser.setUsername(user.getUserName());
loginUser.setNickname(user.getNickName());
loginUser.setNickName(user.getNickName());
loginUser.setUserType(user.getUserType());
loginUser.setMenuPermission(permissionService.getMenuPermission(userId));
loginUser.setRolePermission(permissionService.getRolePermission(userId));

View File

@@ -84,6 +84,7 @@ public class PasswordAuthStrategy implements IAuthStrategy {
loginVo.setAccessToken(StpUtil.getTokenValue());
loginVo.setExpireIn(StpUtil.getTokenTimeout());
loginVo.setClientId(client.getClientId());
loginVo.setUserInfo(loginUser);
return loginVo;
}

16
hzhub-ai/logs.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
# HZHub AI 后端服务日志查看脚本
# 功能:查看服务运行日志
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
LOG_FILE="$PROJECT_DIR/logs/backend.log"
if [ ! -f "$LOG_FILE" ]; then
echo "⚠️ 日志文件不存在: $LOG_FILE"
echo "服务可能未运行或未产生日志"
exit 1
fi
echo "查看 hzhub-ai 日志 (Ctrl+C 退出)"
echo "========================================="
tail -f "$LOG_FILE"

18
hzhub-ai/restart.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
# HZHub AI 后端服务重启脚本
# 功能:重启后台运行的 hzhub-ai Spring Boot 服务
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "========================================="
echo "重启 hzhub-ai 后端服务"
echo "========================================="
# 停止服务
"$PROJECT_DIR/stop.sh"
# 等待两秒确保完全停止
sleep 2
# 启动服务
"$PROJECT_DIR/start.sh"

59
hzhub-ai/start.sh Executable file
View File

@@ -0,0 +1,59 @@
#!/bin/bash
# HZHub AI 后端服务启动脚本
# 功能:后台启动 hzhub-ai Spring Boot 服务
# 注意:实际启动的是 hzhub-admin 子模块
PROJECT_NAME="hzhub-ai"
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
PID_FILE="$PROJECT_DIR/.pid"
LOG_FILE="$PROJECT_DIR/logs/backend.log"
# 创建日志目录
mkdir -p "$PROJECT_DIR/logs"
echo "========================================="
echo "启动 $PROJECT_NAME 后端服务"
echo "========================================="
# 检查是否已经在运行
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "⚠️ 服务已在运行中 (PID: $PID)"
echo "如需重启,请先执行 ./stop.sh"
exit 1
else
echo "清理无效的PID文件"
rm -f "$PID_FILE"
fi
fi
# 启动服务
echo "🚀 启动 Spring Boot 服务..."
cd "$PROJECT_DIR/hzhub-admin"
# 使用nohup后台运行Maven Spring Boot
nohup mvn spring-boot:run -Dspring-boot.run.profiles=dev > "$LOG_FILE" 2>&1 &
PID=$!
# 等待更长时间检查进程是否成功启动Spring Boot启动较慢
echo "⏳ 等待服务启动中..."
sleep 5
if ps -p "$PID" > /dev/null 2>&1; then
echo "$PID" > "$PID_FILE"
echo "✅ 服务启动成功"
echo " PID: $PID"
echo " 日志: $LOG_FILE"
echo " API: http://localhost:6039"
echo ""
echo "查看日志: tail -f $LOG_FILE"
echo "查看状态: ./status.sh"
echo ""
echo "💡 提示: Spring Boot 完整启动需要30-60秒"
echo " 请执行 ./logs.sh 或 tail -f $LOG_FILE 查看启动进度"
else
echo "❌ 服务启动失败"
echo "请查看日志: $LOG_FILE"
exit 1
fi

49
hzhub-ai/status.sh Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/bash
# HZHub AI 后端服务状态检查脚本
# 功能:查看服务运行状态
PROJECT_NAME="hzhub-ai"
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
PID_FILE="$PROJECT_DIR/.pid"
LOG_FILE="$PROJECT_DIR/logs/backend.log"
echo "========================================="
echo " $PROJECT_NAME 服务状态"
echo "========================================="
# 检查PID文件
if [ ! -f "$PID_FILE" ]; then
echo "状态: ⚪ 未运行"
exit 0
fi
PID=$(cat "$PID_FILE")
# 检查进程是否存在
if ps -p "$PID" > /dev/null 2>&1; then
echo "状态: 🟢 运行中"
echo "PID: $PID"
# 显示进程详细信息
ps -p "$PID" -o pid,ppid,cmd,etime
echo ""
echo "日志文件: $LOG_FILE"
echo "API地址: http://localhost:6039"
echo ""
# 检查端口是否在监听
if netstat -tuln 2>/dev/null | grep -q ":6039 "; then
echo "端口状态: ✅ 6039 端口正在监听"
else
echo "端口状态: ⏳ 6039 端口未监听 (可能还在启动中)"
fi
echo ""
echo "最近20行日志:"
echo "---"
tail -n 20 "$LOG_FILE" 2>/dev/null || echo "暂无日志"
else
echo "状态: 🔴 已停止 (PID文件存在但进程不存在)"
rm -f "$PID_FILE"
fi

44
hzhub-ai/stop.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
# HZHub AI 后端服务停止脚本
# 功能:停止后台运行的 hzhub-ai Spring Boot 服务
PROJECT_NAME="hzhub-ai"
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
PID_FILE="$PROJECT_DIR/.pid"
echo "========================================="
echo "停止 $PROJECT_NAME 后端服务"
echo "========================================="
# 检查PID文件是否存在
if [ ! -f "$PID_FILE" ]; then
echo "⚠️ 未找到PID文件服务可能未运行"
exit 0
fi
PID=$(cat "$PID_FILE")
# 检查进程是否存在
if ! ps -p "$PID" > /dev/null 2>&1; then
echo "⚠️ 进程不存在 (PID: $PID)"
rm -f "$PID_FILE"
exit 0
fi
# 停止进程
echo "🛑 正在停止服务 (PID: $PID)..."
kill "$PID"
# 等待进程结束
sleep 3
# 检查进程是否已停止
if ps -p "$PID" > /dev/null 2>&1; then
echo "⚠️ 进程未响应,强制终止..."
kill -9 "$PID"
sleep 2
fi
# 清理PID文件
rm -f "$PID_FILE"
echo "✅ 服务已停止"