租户费用到期提醒功能说明
租户费用到期提醒功能说明
一、功能概述
本功能用于自动检查租户的房租和水电费到期情况,在到期前7天自动发送提醒消息给项目所有员工。
二、功能特性
2.1 房租到期提醒
- 触发条件: 租户的
rent_paid_until字段值等于当前日期+7天 - 提醒对象: 项目所有员工(status=1的在职员工)
- 提醒内容: 包含项目名称、租户名称、到期日期
2.2 水电费缴费提醒
- 触发条件: 水电费记录
payment_status=0(未缴费)且月份小于等于当前月份 - 提醒对象: 项目所有员工(status=1的在职员工)
- 提醒内容: 包含项目名称、租户名称、未缴费月份、合计金额
2.3 防重复发送
- 每天对同一租户的同一类型提醒只发送一次
- 通过检查当天是否已发送过相同内容的提醒来判断
三、实现文件
控制器: Banyan/Lib/Action/Cron/TenantReminderAction.class.php
主要方法:
checkExpiringFees(): 主入口,检查所有到期费用checkRentExpiring($reminder_date): 检查房租到期checkUtilityExpiring($reminder_date): 检查水电费到期
四、定时任务配置
4.1 Linux Cron配置
在服务器上配置crontab,每天执行一次:
# 编辑crontab
crontab -e
# 添加以下行(每天凌晨2点执行)
0 2 * * * /usr/bin/php /path/to/your/project/index.php Cron/TenantReminder/checkExpiringFees
4.2 Windows计划任务
- 打开"任务计划程序"
- 创建基本任务
- 触发器:每天
- 操作:启动程序
- 程序:
php.exe - 参数:
D:\www\baoan\index.php Cron/TenantReminder/checkExpiringFees
4.3 手动执行
可以通过浏览器访问:
http://your-domain.com/index.php?g=Cron&m=TenantReminder&a=checkExpiringFees
或通过命令行:
php index.php Cron/TenantReminder/checkExpiringFees
五、消息发送机制
5.1 消息类型
使用系统站内消息(by_message表)发送提醒
5.2 消息格式
房租到期提醒:
项目【项目名称】的租户【租户名称】的房租将于YYYY-MM-DD到期,请及时处理。
水电费缴费提醒:
项目【项目名称】的租户【租户名称】有YYYY-MM、YYYY-MM月份的水电费未缴费,合计金额:¥XX.XX,请及时处理。
5.3 消息接收
员工可以在以下位置查看提醒:
- Worker模块:
http://localhost/worker/index/index.html - 消息中心:
http://localhost/user/message/index.html
六、数据库表结构
6.1 相关表
by_project_tenant: 租户表(rent_paid_until字段)by_project_tenant_utility: 水电费记录表(payment_status、utility_month字段)by_project_worker: 项目员工表(project_id、worker_id、status字段)by_shop_worker: 员工表(worker_id、user_id字段)by_message: 消息表(存储提醒消息)
七、注意事项
- 时区设置: 确保服务器时区设置正确,避免日期计算错误
- 执行频率: 建议每天执行一次,避免频繁执行造成资源浪费
- 消息去重: 系统已实现每天只发送一次相同提醒的机制
- 员工状态: 只给状态为1(在职)的员工发送提醒
- 租户状态: 只检查状态为1(在租)的租户
八、扩展建议
8.1 微信推送
可以集成微信订阅消息,在发送站内消息的同时发送微信推送
8.2 邮件通知
可以添加邮件通知功能,发送提醒邮件给管理员
8.3 短信通知
可以集成短信服务,发送短信提醒
8.4 提醒时间可配置
可以将提前提醒天数(当前为7天)配置化,支持不同项目设置不同的提醒时间
九、故障排查
9.1 未收到提醒
- 检查定时任务是否正常执行
- 检查员工状态是否为1(在职)
- 检查租户状态是否为1(在租)
- 检查消息表中是否有记录
9.2 重复发送
- 检查防重复机制是否生效
- 检查日期计算是否正确
9.3 执行错误
- 查看PHP错误日志
- 检查数据库连接
- 检查相关表是否存在
文档版本: v1.0
最后更新: 2024年
