= '" . mysqli_real_escape_string($conn, $fliterFromDate) . "'"; $urlStr .= "&fliterFromDate=" . urlencode($fliterFromDate); } if (!empty($fliterToDate)) { $fliterStr .= " AND o.order_date <= '" . mysqli_real_escape_string($conn, $fliterToDate) . " 23:59:59'"; $urlStr .= "&fliterToDate=" . urlencode($fliterToDate); } // 搜索参数 $keys = $_GET['Keys'] ?? ''; $keyscode = mysqli_real_escape_string($conn, $keys); $page = $_GET['Page'] ?? 1; // 构建基本条件SQL $employee_id = $_SESSION['employee_id']; $isAdmin = checkIfAdmin(); // 查询即将过期的返点订单 // 这里我们获取那些在60天期限内,但是已经接近过期的订单(比如只剩7天有效期) $cutoffDate = date('Y-m-d', strtotime("-" . (60 - $expiryDays) . " days")); $expiryDate = date('Y-m-d', strtotime("-60 days")); $customerListSql = "SELECT DISTINCT o.customer_id, c.cs_company AS customer_name, c.cs_code, MIN(o.order_date) AS oldest_order_date, DATE_ADD(MIN(o.order_date), INTERVAL 60 DAY) AS expiry_date, DATEDIFF(DATE_ADD(MIN(o.order_date), INTERVAL 60 DAY), CURRENT_DATE()) AS days_left FROM orders o JOIN order_items oi ON o.id = oi.order_id JOIN customer c ON o.customer_id = c.id JOIN products p ON oi.product_id = p.id WHERE o.order_date BETWEEN '$expiryDate' AND '$cutoffDate' AND p.rebate = 1 AND NOT EXISTS ( SELECT 1 FROM rebate_redemption_items rri WHERE rri.order_item_id = oi.id ) AND EXISTS ( SELECT 1 FROM rebate_rules rr WHERE rr.product_id = oi.product_id ) AND ( SELECT SUM(oi2.quantity) FROM order_items oi2 JOIN orders o2 ON oi2.order_id = o2.id WHERE o2.customer_id = o.customer_id AND oi2.product_id = oi.product_id AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 60 DAY) AND NOT EXISTS ( SELECT 1 FROM rebate_redemption_items rri WHERE rri.order_item_id = oi2.id ) ) >= ( SELECT MIN(rr.min_quantity) FROM rebate_rules rr WHERE rr.product_id = oi.product_id )"; // 非管理员只能查看自己的客户返点 if (!$isAdmin) { $customerListSql .= " AND c.cs_belong = $employee_id"; } // 添加搜索条件 if (!empty($keyscode)) { $customerListSql .= " AND (c.cs_company LIKE '%$keyscode%' OR c.cs_code LIKE '%$keyscode%')"; } // 添加日期筛选 $customerListSql .= $fliterStr; // 分组并按剩余天数排序 $customerListSql .= " GROUP BY o.customer_id, c.cs_company, c.cs_code ORDER BY days_left ASC"; // 执行查询获取客户列表 $result = mysqli_query($conn, $customerListSql); if (!$result) { die("查询即将过期返点错误: " . mysqli_error($conn)); } // 获取客户列表 $customers = []; while ($row = mysqli_fetch_assoc($result)) { $customers[] = $row; } // 设置每页显示记录数和分页 $pageSize = 20; $totalRecords = count($customers); // 计算总页数 $totalPages = ceil($totalRecords / $pageSize); if ($totalPages < 1) $totalPages = 1; // 验证当前页码 $page = (int)$page; if ($page < 1) $page = 1; if ($page > $totalPages) $page = $totalPages; // 分页处理 $paginatedCustomers = array_slice($customers, ($page - 1) * $pageSize, $pageSize); // 获取每个客户的返点金额 foreach ($paginatedCustomers as &$customer) { $customer_id = $customer['customer_id']; // 计算客户的总返点金额 $rebateAmountSql = " SELECT SUM( oi.quantity * ( SELECT rr.rebate_amount FROM rebate_rules rr WHERE rr.product_id = oi.product_id AND rr.min_quantity <= ( SELECT SUM(oi2.quantity) FROM order_items oi2 JOIN orders o2 ON oi2.order_id = o2.id WHERE o2.customer_id = o.customer_id AND oi2.product_id = oi.product_id AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 60 DAY) AND NOT EXISTS ( SELECT 1 FROM rebate_redemption_items rri WHERE rri.order_item_id = oi2.id ) ) ORDER BY rr.min_quantity DESC LIMIT 1 ) ) AS total_rebate_amount, COUNT(DISTINCT oi.product_id) AS qualifying_products FROM orders o JOIN order_items oi ON o.id = oi.order_id JOIN products p ON oi.product_id = p.id WHERE o.customer_id = $customer_id AND o.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 60 DAY) AND p.rebate = 1 AND NOT EXISTS ( SELECT 1 FROM rebate_redemption_items rri WHERE rri.order_item_id = oi.id )"; $amountResult = mysqli_query($conn, $rebateAmountSql); if (!$amountResult) { die("计算返点金额错误: " . mysqli_error($conn)); } $amountRow = mysqli_fetch_assoc($amountResult); $customer['total_rebate_amount'] = $amountRow['total_rebate_amount'] ?? 0; $customer['qualifying_products'] = $amountRow['qualifying_products'] ?? 0; } ?> 即将过期返点提醒
注意! 此页面显示即将过期的返点信息。返点订单在创建后60天内有效,过期后将无法兑换。请尽快处理以下客户的返点兑换。

即将过期返点订单

查看返点历史 返回返点统计
序号
客户编码
客户名称
最早订单日期
过期日期
剩余天数
返点金额
操作
目前没有即将过期的返点订单
'; } ?>
1) { $pageName = "?Keys=$keys$urlStr&expiryDays=$expiryDays&"; $pageLen = 3; if ($page > 1) { echo "首页"; echo "上一页"; } if ($pageLen * 2 + 1 >= $totalPages) { $startPage = 1; $endPage = $totalPages; } else { if ($page <= $pageLen + 1) { $startPage = 1; $endPage = $pageLen * 2 + 1; } else { $startPage = $page - $pageLen; $endPage = $page + $pageLen; } if ($page + $pageLen > $totalPages) { $startPage = $totalPages - $pageLen * 2; $endPage = $totalPages; } } for ($i = $startPage; $i <= $endPage; $i++) { if ($i == $page) { echo "$i"; } else { echo "$i"; } } if ($page < $totalPages) { if ($totalPages - $page > $pageLen) { echo "...$totalPages"; } echo "下一页"; echo "尾页"; } } ?>