#!/bin/bash # 绿纤美业ERP工资核算服务启动脚本 # 支持Windows、Linux、CentOS等操作系统 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' 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" } log_debug() { echo -e "${BLUE}[DEBUG]${NC} $1" } # 检查.NET 6是否安装 check_dotnet() { if ! command -v dotnet &> /dev/null; then log_error ".NET 6 未安装,请先安装 .NET 6 SDK" log_info "下载地址: https://dotnet.microsoft.com/download/dotnet/6.0" exit 1 fi local dotnet_version=$(dotnet --version) log_info "检测到 .NET 版本: $dotnet_version" if [[ ! "$dotnet_version" =~ ^6\. ]]; then log_warn "建议使用 .NET 6.0 版本" fi } # 检查配置文件 check_config() { if [ ! -f "appsettings.json" ]; then log_error "配置文件 appsettings.json 不存在" exit 1 fi log_info "配置文件检查通过" } # 创建必要目录 create_directories() { log_info "创建必要目录..." mkdir -p logs output backup log_info "目录创建完成" } # 还原NuGet包 restore_packages() { log_info "还原NuGet包..." dotnet restore if [ $? -eq 0 ]; then log_info "NuGet包还原成功" else log_error "NuGet包还原失败" exit 1 fi } # 构建项目 build_project() { log_info "构建项目..." dotnet build -c Release if [ $? -eq 0 ]; then log_info "项目构建成功" else log_error "项目构建失败" exit 1 fi } # 运行服务 run_service() { local month=${1:-$(date +%Y-%m)} log_info "启动工资核算服务,计算月份: $month" # 检查参数 if [ $# -eq 0 ]; then log_warn "未指定计算月份,使用当前月份: $month" log_info "使用方法: $0 [YYYY-MM]" log_info "示例: $0 2024-09" fi # 运行服务 dotnet run --configuration Release -- $month } # 显示帮助信息 show_help() { echo "绿纤美业ERP工资核算服务" echo "" echo "使用方法:" echo " $0 [月份] 运行工资核算服务" echo " $0 --help, -h 显示帮助信息" echo " $0 --version, -v 显示版本信息" echo " $0 --build 仅构建项目" echo " $0 --clean 清理构建文件" echo "" echo "参数:" echo " 月份 计算月份,格式: YYYY-MM (例如: 2024-09)" echo "" echo "示例:" echo " $0 2024-09 计算2024年9月工资" echo " $0 计算当前月份工资" echo "" echo "环境要求:" echo " - .NET 6.0 SDK" echo " - MySQL数据库连接" echo " - 网络连接" } # 显示版本信息 show_version() { echo "绿纤美业ERP工资核算服务 v1.0.0" echo "构建时间: $(date)" echo ".NET版本: $(dotnet --version)" } # 清理构建文件 clean_project() { log_info "清理构建文件..." dotnet clean rm -rf bin obj log_info "清理完成" } # 主函数 main() { case "${1:-}" in --help|-h) show_help exit 0 ;; --version|-v) show_version exit 0 ;; --build) check_dotnet check_config create_directories restore_packages build_project log_info "构建完成" exit 0 ;; --clean) clean_project exit 0 ;; *) check_dotnet check_config create_directories restore_packages build_project run_service "$@" ;; esac } # 执行主函数 main "$@"