【问题标题】:Creating an advanced admin/staff rota [closed]创建高级管理员/员工名单[关闭]
【发布时间】:2026-02-20 10:50:01
【问题描述】:

我知道这个地方是用来上传可能需要一些帮助的代码的,尽管我希望你不会介意帮助,因为我不确定从哪里真正开始使用这段代码。您是专家,而我是新手,需要有关未来编码的帮助。如果有针对这种事情的部分,我会很乐意重新发布。

情况如下:

我开始为我的员工开发一个高级管理后台面板,我目前的想法是使用 MySQLi 数据库来创建员工名单,以显示在 aPanel 上的简单日历中,如表格。

现在,高级部分是工作人员可以在名单上发布的时间/日期内点击"Clock In""Clock Out"

系统不会让工作人员Clock In,除非他们在一天中的那个时间在名单上。然后,我将可以访问面板的管理部分,让我查看工作人员已经打卡的小时数,如果他们错过了几天,或者迟到了等等......并支付他们记录的打卡时间小时。

也许一些附加功能是他们在轮班结束时自动下班或者系统会记录加班等等?

我不知道我将如何创建这样的系统,或者它是否真的可能,所以如果有人对这样的想法有任何建议/提示/示例,我将不胜感激!

一切顺利!

【问题讨论】:

  • 可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。

标签: php system admin


【解决方案1】:

您的系统必然由几个部分组成:

  1. 数据库存储 - 包含系统的所有必要信息、员工日程安排、时钟条目、用户信息等。听起来您已经基本完成了这些,但可能需要针对您的目的进行一些调整。

  2. 员工分配/管理界面 - 系统允许管理员或具有适当访问权限的人员为员工分配时间表、向系统添加新员工等。

  3. Timeclock Frontend - 员工将使用它登录以查看他们的日程安排和打卡/打卡。

  4. (可能)自动监控系统 - 如果您希望系统自动监控在职员工,并在他们的日程安排完成时将他们打卡,您将需要一个重复任务,一个每 X 分钟运行一次的脚本,并且将所需的员工打卡。

这不是一个快速简单的项目,但也不是很复杂。您需要避免的主要陷阱是自己编写整个代码的诱惑。乍一看,这似乎是个好主意,您只需要几个硬编码的页面,对吗?不过,相信我,这个过程总是以后来的严重头痛而告终。找到可以作为应用程序基础的框架。需要学习更多内容,但您将能够更多地专注于构建应用程序,而不是重新发明*。

对于 PHP,我强烈推荐 Symfony。它使用Doctrine 作为其ORM,这将使处理数据交互变得更加容易,而Twig 模板化,这远远优于直接混合PHP/HTML。 Symfony 有不错的文档和许多教程。 (以及一个活跃的 Stack Overflow 标签。)

无论您做出何种选择,最好的办法是选择一个框架来作为您的应用程序的基础,这将使众多的小设计决策变得更加容易。 (并且对于任何广泛使用的框架都不容易出错。)

如果没有围绕它们的系统,您的个人问题有点过于模糊,无法直接回答。不过,我会尝试为他们提供一些一般性建议。

我开始为我的员工开发一个高级管理后端面板,我目前的想法是使用 MySQLi 数据库来创建员工列表,以显示在 aPanel 上的简单日历中,如表格。

您可能想看看Full Calendar,一个不错的可自定义 JS 日历。

现在,高级部分是工作人员可以在名单上发布的时间/日期内点击“打卡”或“打卡”。

当员工登录应用程序时,应用程序将加载该员工的日程安排。如果他们有当前(或即将到来的)任务,请显示“打卡”表单。提交时,打卡表会将员工状态更改为打卡,并在与员工关联的时钟日志中插入一个时间戳。如果员工当前正在打卡,则改为显示一个打卡表格(可能带有轮班说明),它的作用大致相同,只是将状态切换为打卡。

系统不会让工作人员打卡,除非他们在一天中的那个时间在轮班表上。

在提交打卡表后检查这些事情是相当容易的。如果他们不应该打卡,则抛出错误。 (注意,永远不要假设提交前的验证就足够了。也就是说,不要依赖于“打卡”表单只会在员工可以打卡时显示的事实。

然后,我将可以访问面板的管理部分,让我查看工作人员在旷工或迟到等情况下打卡的小时数...并支付他们的费用以小时为单位记录。

在管理部分,您可以通过获取给定日期范围内给定员工的所有 Timeclock 日志、总工时以及与预期时间表进行比较来创建报告。

也许一些附加功能是他们在轮班结束时自动下班,或者系统会记录加班等?

在您的服务器上设置一个每隔 X 分钟运行一次的脚本(时间越短,分辨率越高,但会消耗更多资源)作为计划任务,检查每个打卡上班的员工,并让那些不应再打卡的员工下班。如果您使用 Symfony,我建议您为该作业创建一个 Custom Console Command

希望这足以让您入门。如果您遇到任何更具体的问题,请随时返回。

【讨论】:

  • 感谢您的反馈和建议,我会进行测试,看看我取得了什么样的结果。让这一切正常工作会很棒,我很高兴有人能理解哈哈