本教程PHP/MySQL开发的沙龙管理系统。该系统专为中小型美容院、水疗中心及发型设计沙龙设计,旨在简化日常运营管理。它集成了预约安排、账单处理、员工工作时间规划、库存追踪等关键业务功能。作为一套开源解决方案,它不仅易于部署,也为您提供了高度的定制化和功能扩展潜力。


一、部署前的系统配置要求

在着手安装系统之前,请确保您的服务器环境满足以下基本条件:

1. 核心系统要求

  • 操作系统:本系统兼容 Windows、Linux 和 macOS 等主流操作系统。
  • Web 服务器:您可以选择 Apache、Nginx,或者使用 PHP 内置的开发服务器。
  • PHP 版本:建议使用 PHP 7.4 或更新的版本以获得最佳兼容性与性能。
  • 数据库:需要 MySQL 5.7 或更高版本。
  • 必备 PHP 扩展:请确保已安装以下 PHP 扩展,它们是系统正常运行所必需的:
    • php-mysql:用于数据库连接。
    • php-gd:用于图像处理,如生成缩略图或水印。
    • php-curl:用于与外部服务进行通信。
    • php-mbstring:支持多字节字符串处理,对于中文等字符集至关重要。
    • php-xml:用于处理 XML 数据。

2. 安装 PHP 依赖(以 Ubuntu Linux 为例)

若您使用 Ubuntu 系统,可以通过以下命令快速安装所需的 PHP 扩展:

sudo apt update
sudo apt install php php-mysql php-gd php-curl php-mbstring php-xml
  • 说明sudo apt update 命令用于刷新包列表,确保能找到最新的软件版本。apt install 命令则用于安装指定的软件包。

二、项目部署步骤

1. 获取系统源代码

首先,您需要将项目文件下载到您的服务器或本地开发环境中。我们推荐使用 Git 进行版本控制和代码获取。

# 使用 Git 克隆项目仓库到当前目录
git clone https://github.com/mayuri-k/salon-management-system.git

# 进入项目目录
cd salon-management-system
  • 提示:如果您尚未安装 Git,请先根据您的操作系统进行安装。

2. 数据库准备与设置

部署项目需要一个MySQL数据库来存储所有业务数据。

  • 创建数据库和数据库用户
    在 MySQL 服务器上执行以下 SQL 命令,创建一个专门用于沙龙管理系统的数据存储空间,并为其设置一个独立的访问用户。使用独立用户有助于提高安全性。

    -- 创建一个新的数据库
    CREATE DATABASE salon_db;
    
    -- 创建一个数据库用户,并设置密码。请务必将 'your_password' 替换为一个强密码。
    CREATE USER 'salon_user'@'localhost' IDENTIFIED BY 'your_password';
    
    -- 授予该用户对新数据库的所有操作权限
    GRANT ALL PRIVILEGES ON salon_db.* TO 'salon_user'@'localhost';
    
    -- 刷新权限,使更改立即生效
    FLUSH PRIVILEGES;
    
  • 导入数据库结构
    将系统的数据库结构(表、字段等定义)导入到刚刚创建的数据库中。

    # 使用 MySQL 客户端连接到数据库
    mysql -u salon_user -p salon_db
    

    在 MySQL 客户端提示符下,您需要找到包含数据库结构定义的文件(通常是 .sql 文件,可能在项目的 databasesql 目录下),然后执行该文件。例如,如果文件名为 salon_db_structure.sql

    -- 在 MySQL 客户端中执行
    SOURCE /path/to/your/salon_db_structure.sql;
    

    (请将 /path/to/your/ 替换为实际文件路径。)


三、启动与运行

1. 启动开发环境

对于本地开发和测试,PHP 内置的 Web 服务器是一个非常便捷的选择。

# 在项目根目录下运行此命令
php -S localhost:8000 -t public/
  • 说明
    • php -S 命令启动一个内建的 Web 服务器。
    • localhost:8000 指定服务器监听的地址和端口。
    • -t public/ 指明 Web 服务器的文档根目录是 public/ 文件夹。
      启动成功后,您可以通过访问 http://localhost:8000 在浏览器中打开系统的首页。

2. 首次运行与系统设置

当您第一次通过浏览器访问系统时,通常会引导您进入一个初始化设置页面。

  • 创建管理员账户
    在此步骤中,您需要设置系统的主要管理员。默认提供的账户信息是:
    • 用户名 (邮箱)admin@salon.com
    • 密码admin123
      (强烈建议在首次登录后立即修改默认密码以增强安全性。)
  • 完成基本配置
    系统还会要求您输入一些基础信息,例如:
    • 门店名称。
    • 营业时间安排。
    • 时区设置等。
      这些信息将用于系统内的各项功能显示和业务逻辑。

四、核心功能与使用说明

本系统旨在覆盖沙龙运营的方方面面。以下是其主要功能及其简要使用说明:

1. 在线预约系统

客户可以通过网站或移动端轻松预约服务。该功能支持集成短信或电子邮件通知,自动向客户发送预约确认、提醒等信息,有效减少客户流失。

示例代码:提交预约请求(模拟 API 调用)

<?php
// 假设这是客户端或另一个服务调用的示例
$data = [
    'customer' => '张三',           // 客户姓名
    'service'  => '面部护理',       // 预约的服务项目
    'staff'    => '李四',           // 预约的员工/技师
    'time'     => '2025-07-20 14:30:00' // 预约时间
];

// 这是一个简化的 API 调用示例,实际应用中需要具体的 HTTP 请求函数
// $response = send_post_request('api/appointment.php', $data);
// echo $response; // 显示 API 返回结果,如预约成功/失败信息
?>

2. 账单与发票管理

系统支持生成符合税务标准的账单(如 GST 账单),并可以追踪每笔交易的付款状态。

示例代码:生成账单(模拟计算与生成逻辑)

<?php
// 假设这是后端处理账单的逻辑

// 获取服务的基础价格(可能通过数据库查询)
function get_service_price($service_name) {
    // ... 实际查询逻辑 ...
    return 200.00; // 假设面部护理基础价格为 200
}

$service_price = get_service_price('面部护理');
$gst_rate = 0.18; // 假设 GST 税率为 18%

// 计算含税总金额
$total_amount = $service_price * (1 + $gst_rate);

// 生成账单信息(可能写入数据库或生成PDF)
function generate_invoice($invoice_data) {
    // ... 实际生成账单(如创建数据库记录、生成PDF文件等)...
    print_r($invoice_data); // 示例:输出账单数据
}

generate_invoice([
    'customer' => '张三',
    'service'  => '面部护理',
    'price'    => $service_price,
    'gst'      => $gst_rate,
    'total'    => $total_amount
]);
?>

3. 员工排班与管理

您可以为员工分配客户服务,并提供一个直观的日历视图来查看员工的工作排班。

示例代码:查询员工排班(模拟数据获取)

<?php
// 假设这是一个查询员工排班的后端函数
function get_appointments_by_staff($staff_id) {
    // ... 实际查询数据库,获取该员工的所有预约记录 ...
    // 返回一个包含预约详情的数组
    return [
        ['id' => 101, 'customer' => '王五', 'service' => '按摩', 'time' => '2025-07-20 10:00:00'],
        ['id' => 102, 'customer' => '赵六', 'service' => '染发', 'time' => '2025-07-20 15:00:00']
    ];
}

// 查询员工李四(假设其ID为 12)的排班情况
$staff_id = 12;
$appointments = get_appointments_by_staff($staff_id);
print_r($appointments); // 输出排班列表
?>

4. 库存与产品管理

系统能够追踪店内产品(如护肤品、洗发水等)的库存量。当某项产品库存低于预设阈值时,系统会自动发出提醒,帮助您及时补货。

示例代码:检查库存(模拟库存查询)

<?php
// 假设这是一个检查库存的后端函数
function check_stock($product_id) {
    // ... 实际查询数据库,获取产品库存量 ...
    $stock_level = 10; // 假设产品ID为5的库存是10
    $low_stock_threshold = 5; // 设置一个库存低于5时提醒的阈值

    if ($stock_level < $low_stock_threshold) {
        return true; // 库存低于阈值
    } else {
        return false; // 库存充足
    }
}

// 检查产品ID为5的库存是否低于阈值
$product_id = 5;
if (check_stock($product_id)) {
    echo "产品ID {$product_id} 库存较低,请及时补货!";
} else {
    echo "产品ID {$product_id} 库存充足。";
}
?>

5. 客户管理 (CRM)

系统内置了客户关系管理功能,允许您记录客户信息、服务历史、偏好等。这有助于提供更个性化的客户服务,并进行有效的营销活动。

示例代码:查询客户服务历史(模拟数据获取)

<?php
// 假设这是一个查询客户服务历史的函数
function get_customer_history($customer_name) {
    // ... 实际查询数据库,获取该客户的所有服务记录 ...
    return [
        ['service' => '面部护理', 'date' => '2025-07-15', 'staff' => '王芳'],
        ['service' => '头皮护理', 'date' => '2025-06-10', 'staff' => '赵强']
    ];
}

// 查询客户“王五”的服务历史
$customer_history = get_customer_history('王五');
print_r($customer_history); // 输出服务历史记录
?>

五、系统定制与开发

1. 数据备份策略

为确保数据安全,定期备份数据库至关重要。您可以使用MySQL自带的mysqldump工具,或系统提供的备份功能(如果内置)。

示例:使用 mysqldump 进行数据库备份

# 备份整个数据库到文件
mysqldump -u salon_user -p salon_db > salon_backup.sql
  • 说明:执行此命令后,系统会提示您输入 salon_user 的密码。备份文件 salon_backup.sql 将包含所有表结构和数据。

2. 扩展系统功能:模块开发

如果您有特定的业务需求,可以在 modules/ 目录下创建新的PHP文件来添加自定义功能。

示例:创建客户忠诚度积分模块

<?php
// modules/loyalty.php

class LoyaltyProgram {
    private $db; // 假设有一个数据库连接对象

    public function __construct($db_connection) {
        $this->db = $db_connection;
    }

    public function addPoints($customer_id, $points) {
        // 实际操作:更新数据库中客户的积分字段
        // $stmt = $this->db->prepare("UPDATE customers SET loyalty_points = loyalty_points + ? WHERE customer_id = ?");
        // $stmt->bind_param("ii", $points, $customer_id);
        // $stmt->execute();
        echo "为客户 {$customer_id} 添加了 {$points} 积分。";
    }

    // ... 其他积分管理方法 ...
}

// 使用示例 (假设 $db 是已连接的数据库对象)
// $loyalty_module = new LoyaltyProgram($db);
// $loyalty_module->addPoints(10, 50); // 为客户ID 10 添加 50 积分
?>

3. 接入外部服务

系统支持与第三方服务集成,例如支付平台、短信服务等,以增强功能性。

示例:集成短信通知服务

<?php
// 假设存在一个发送短信的函数
function send_sms($phone_number, $message) {
    // ... 实际调用短信服务商的API ...
    echo "已向 {$phone_number} 发送短信:\"{$message}\"";
}

// 发送预约确认短信
$customer_phone = '+8613800000000'; // 客户手机号
$sms_content = '您的预约已确认,请准时到达。';
send_sms($customer_phone, $sms_content);
?>

六、常见问题与解决方案

在部署和使用过程中,您可能会遇到一些常见问题。以下是一些指导性的排查方法:

问题描述 解决方法
数据库连接失败 仔细检查 config.php (或类似配置文件) 中的数据库名、用户名、密码、主机地址是否准确无误。
页面显示空白 开启 PHP 错误报告:编辑 php.ini 文件,将 display_errors 设置为 On,并重启 Web 服务器。
短信未发送 确认短信服务 API 的配置信息(如API Key, 签名)是否正确,并检查服务器的网络连通性。
系统运行缓慢 启用 PHP OPcache:编辑 php.ini 文件,设置 opcache.enable=1,并调整相关配置参数,然后重启 Web 服务器。
文件上传失败 检查服务器 php.iniupload_max_filesizepost_max_size 的设置是否足够大。
权限错误 确保 Web 服务器用户(如 www-data on Linux)对项目文件和目录(尤其是 uploads, logs 目录)有写权限。

七、持续学习与进阶

1. 个性化界面:主题定制

您可以修改 themes/default/ 目录下的 HTML、CSS 和 JavaScript 文件,来自定义系统的外观和用户界面风格。

2. 深度开发:API 接口扩展

如果需要与其他系统集成或开发移动应用,可以参考 api/ 目录下现有的接口实现,开发新的 RESTful API 接口。

3. 系统性能提升

  • 数据库优化:为常用查询字段添加索引,优化慢查询。
  • 缓存策略:考虑使用 Redis 或 Memcached 等工具缓存频繁访问的数据,如产品列表、排班信息等,以显著提升响应速度。

4. 保障系统安全

  • HTTPS 加密:为您的系统启用 SSL/TLS 证书,确保数据传输的安全性。
  • 防火墙配置:限制不必要的端口开放。
  • 防止常见攻击:对所有外部输入进行严格校验和过滤,防止 SQL 注入、跨站脚本攻击(XSS)等。定期更新系统和依赖库,修补安全漏洞。

八、结语

这款 PHP 沙龙管理系统,为中小型美容院、水疗中心和发型店提供了一套强大且灵活的数字化管理解决方案。通过本教程的指引,您应该能够顺利完成系统的部署,掌握核心功能的使用,并初步了解其定制与开发潜力。

若在部署或使用过程中遇到更复杂的问题,或需要更深入的开发指导,建议查阅项目官方文档。


标签#PHP #沙龙管理系统 #开源项目 #预约系统 #美容院管理 #MySQL #Web开发

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐