当前位置:首页 > PHP

php实现提醒发货

2026-02-16 05:32:08PHP

实现提醒发货功能的方法

数据库设计

创建一个订单表(orders)和一个发货提醒表(shipment_reminders)。订单表包含订单状态字段,发货提醒表记录需要提醒的订单和提醒时间。

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT,
    order_date DATETIME,
    status VARCHAR(20), -- 如 'pending', 'shipped'
    -- 其他订单字段
);

CREATE TABLE shipment_reminders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    order_id INT,
    remind_date DATETIME,
    is_sent BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (order_id) REFERENCES orders(id)
);

设置提醒逻辑

当订单状态更新为准备发货时,向提醒表中插入记录。可以设置提醒时间为当前时间加上特定间隔(如24小时)。

function scheduleReminder($orderId) {
    $remindDate = date('Y-m-d H:i:s', strtotime('+24 hours'));
    $query = "INSERT INTO shipment_reminders (order_id, remind_date) VALUES (?, ?)";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$orderId, $remindDate]);
}

定时任务检查

创建定时任务(Cron Job)每分钟检查需要发送的提醒。使用PHP CLI脚本或框架的任务调度功能。

function checkPendingReminders() {
    $currentTime = date('Y-m-d H:i:s');
    $query = "SELECT r.id, o.id as order_id, o.customer_id 
              FROM shipment_reminders r
              JOIN orders o ON r.order_id = o.id
              WHERE r.remind_date <= ? AND r.is_sent = FALSE";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$currentTime]);
    return $stmt->fetchAll();
}

发送提醒通知

对于每个找到的提醒记录,发送邮件或短信通知,并标记为已发送。

function sendReminder($reminderId, $orderId, $customerId) {
    // 获取客户联系方式
    $customer = getCustomerById($customerId);

    // 发送邮件示例
    $subject = "您的订单即将发货";
    $message = "订单 #$orderId 将在24小时内发货,请做好准备。";
    mail($customer['email'], $subject, $message);

    // 更新提醒状态
    $query = "UPDATE shipment_reminders SET is_sent = TRUE WHERE id = ?";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$reminderId]);
}

前端集成

在订单管理界面添加手动提醒按钮,供管理员直接触发提醒。

<button onclick="sendReminder(<?= $orderId ?>)" class="btn btn-warning">
    发送发货提醒
</button>

<script>
function sendReminder(orderId) {
    fetch('/api/send-reminder.php?order_id=' + orderId)
        .then(response => response.json())
        .then(data => alert(data.message));
}
</script>

安全性考虑

验证管理员权限和订单所有权,防止未授权访问。所有数据库查询使用预处理语句防止SQL注入。

function validateOrderAccess($orderId, $userId) {
    $query = "SELECT id FROM orders WHERE id = ? AND customer_id = ?";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$orderId, $userId]);
    return $stmt->rowCount() > 0;
}

php实现提醒发货

标签: php
分享给朋友:

相关文章

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…