fundplatform/scripts/dev-stop.sh
zhangjf cc6577b3df feat: 新增本地开发启动脚本及各模块代码优化
- 新增 scripts/dev-start.sh: 本地开发环境启动脚本,支持启动所有/核心/单个服务
- 新增 scripts/dev-stop.sh: 本地开发环境停止脚本
- 新增 scripts/dev-status.sh: 服务状态检查脚本
- 优化各模块 Controller/Service/VO/DTO 代码
- 删除过时的计划文件
2026-03-02 22:46:31 +08:00

238 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# ============================================
# 本地开发环境停止脚本
# 用法: ./dev-stop.sh [选项]
# 选项:
# all - 停止所有服务(默认)
# gateway - 仅停止网关
# sys - 仅停止系统服务
# cust - 仅停止客户服务
# proj - 仅停止项目服务
# req - 仅停止需求服务
# exp - 仅停止支出服务
# receipt - 仅停止票据服务
# file - 仅停止文件服务
# report - 仅停止报表服务
# frontend - 仅停止前端
# help - 显示帮助信息
# ============================================
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
APP_HOME="$(dirname "$SCRIPT_DIR")"
LOG_DIR="${APP_HOME}/logs"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 停止服务
# 参数: $1=服务名, $2=进程匹配模式
stop_service() {
local name=$1
local pattern=$2
local pid_file="${LOG_DIR}/${name}.pid"
if [ -f "${pid_file}" ]; then
local pid=$(cat "${pid_file}")
if ps -p ${pid} > /dev/null 2>&1; then
log_info "停止 ${name} 服务 (PID: ${pid})..."
kill ${pid} 2>/dev/null
# 等待进程结束
local count=0
while ps -p ${pid} > /dev/null 2>&1; do
if [ $count -ge 10 ]; then
log_warn "${name} 未响应,强制终止..."
kill -9 ${pid} 2>/dev/null
break
fi
sleep 1
((count++))
done
log_info "${name} 服务已停止"
else
log_warn "${name} 服务未运行"
fi
rm -f "${pid_file}"
else
# 通过进程名查找
local pids=$(pgrep -f "${pattern}")
if [ -n "${pids}" ]; then
log_info "停止 ${name} 服务 (PIDs: ${pids})..."
echo "${pids}" | xargs kill 2>/dev/null
log_info "${name} 服务已停止"
else
log_warn "${name} 服务未运行"
fi
fi
}
# 停止网关
stop_gateway() {
stop_service "gateway" "fund-gateway.*GatewayApplication"
}
# 停止系统服务
stop_sys() {
stop_service "sys" "fund-sys.*SysApplication"
}
# 停止客户服务
stop_cust() {
stop_service "cust" "fund-cust.*CustApplication"
}
# 停止项目服务
stop_proj() {
stop_service "proj" "fund-proj.*ProjApplication"
}
# 停止需求服务
stop_req() {
stop_service "req" "fund-req.*ReqApplication"
}
# 停止支出服务
stop_exp() {
stop_service "exp" "fund-exp.*ExpApplication"
}
# 停止票据服务
stop_receipt() {
stop_service "receipt" "fund-receipt.*ReceiptApplication"
}
# 停止文件服务
stop_file() {
stop_service "file" "fund-file.*FileApplication"
}
# 停止报表服务
stop_report() {
stop_service "report" "fund-report.*ReportApplication"
}
# 停止前端
stop_frontend() {
log_info "停止前端服务..."
# 停止 vite 进程
local vite_pids=$(pgrep -f "vite.*fund-admin")
if [ -n "${vite_pids}" ]; then
log_info "停止前端服务 (PIDs: ${vite_pids})..."
echo "${vite_pids}" | xargs kill 2>/dev/null
log_info "前端服务已停止"
else
log_warn "前端服务未运行"
fi
# 清理 PID 文件
rm -f "${LOG_DIR}/frontend.pid"
}
# 停止所有服务
stop_all() {
log_info "=========================================="
log_info "停止本地开发环境..."
log_info "=========================================="
stop_frontend
stop_gateway
stop_sys
stop_cust
stop_proj
stop_req
stop_exp
stop_receipt
stop_file
stop_report
log_info "=========================================="
log_info "本地开发环境已停止"
log_info "=========================================="
}
# 显示帮助
show_help() {
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " all 停止所有服务(默认)"
echo " gateway 仅停止网关服务"
echo " sys 仅停止系统服务"
echo " cust 仅停止客户服务"
echo " proj 仅停止项目服务"
echo " req 仅停止需求服务"
echo " exp 仅停止支出服务"
echo " receipt 仅停止票据服务"
echo " file 仅停止文件服务"
echo " report 仅停止报表服务"
echo " frontend 仅停止前端服务"
echo " help 显示此帮助信息"
echo ""
echo "示例:"
echo " $0 # 停止所有服务"
echo " $0 sys # 仅停止系统服务"
echo " $0 frontend # 仅停止前端"
}
# 主入口
case "$1" in
gateway)
stop_gateway
;;
sys)
stop_sys
;;
cust)
stop_cust
;;
proj)
stop_proj
;;
req)
stop_req
;;
exp)
stop_exp
;;
receipt)
stop_receipt
;;
file)
stop_file
;;
report)
stop_report
;;
frontend)
stop_frontend
;;
help|--help|-h)
show_help
;;
all|"")
stop_all
;;
*)
log_error "未知选项: $1"
show_help
exit 1
;;
esac