当前位置:首页 > 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小时)。

php实现提醒发货

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();
}

发送提醒通知

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

php实现提醒发货

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搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…

php实现多态

php实现多态

多态的概念 多态是面向对象编程的三大特性之一,指同一个方法在不同类中有不同实现方式。PHP通过继承和接口实现多态。 通过继承实现多态 父类定义方法,子类重写该方法实现不同行为: class…

php无法实现

php无法实现

PHP 是一种功能强大的服务器端脚本语言,能够实现多种功能,包括动态网页开发、数据库交互、文件操作等。如果遇到“无法实现”的问题,通常是由于以下原因之一: 环境配置问题 确保 PHP 环境正确安装和…

php实现异步图片上传

php实现异步图片上传

异步图片上传的实现方法 在PHP中实现异步图片上传通常需要结合前端JavaScript和后端PHP代码。以下是几种常见的方法: 使用XMLHttpRequest或Fetch API 前端使用Java…

php rsa 实现

php rsa 实现

PHP RSA 加密与解密实现 生成密钥对 使用 openssl_pkey_new 生成 RSA 密钥对,并通过 openssl_pkey_export 导出私钥。公钥可从密钥对中提取。 $conf…