Avec le développement d'Internet, de plus en plus d'entreprises commencent à utiliser Internet pour le traitement des affaires, ce qui oblige les entreprises à disposer d'un système complet de gestion des processus d'audit pour garantir la sécurité et la normalisation des activités. Dans le développement PHP, le framework ThinkPHP6 fournit des fonctions pratiques de gestion des processus d'audit. Cet article présentera comment implémenter la gestion des processus d'audit dans ThinkPHP6.
1. Idée de base de la gestion des processus d'audit dans ThinkPHP6
L'idée de base de la gestion des processus d'audit dans ThinkPHP6 est réalisée grâce à des enregistrements de base de données. Généralement, deux tables de données doivent être créées :
Le processus de gestion du processus de révision peut être brièvement décrit comme suit :
2. Créez la table de processus et la table d'étapes
Tout d'abord, nous devons créer la table de processus et la table d'étapes dans la base de données.
Table de processus :
CREATE TABLE `tp_flow` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) DEFAULT NULL COMMENT '流程名称', `create_user_id` int(11) DEFAULT NULL COMMENT '创建人ID', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核流程表';
Table d'étapes :
CREATE TABLE `tp_step` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `flow_id` int(11) DEFAULT NULL COMMENT '流程ID', `name` varchar(50) DEFAULT NULL COMMENT '步骤名称', `status` tinyint(1) DEFAULT '0' COMMENT '状态:0-未处理,1-已处理', `handler_id` int(11) DEFAULT NULL COMMENT '处理人ID', `handle_time` datetime DEFAULT NULL COMMENT '处理时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核步骤表';
3. Créer une classe de modèle
Ensuite, nous devons créer une classe de modèle, définir la relation entre la table de processus et la table d'étapes et implémenter diverses méthodes de fonctionnement.
Tout d'abord, nous créons la classe de modèle de processus FlowModel, définissons une relation un-à-plusieurs avec la classe de modèle d'étape StepModel et fournissons des méthodes liées à la gestion des processus.
// ppmodelFlowModel.php namespace appmodel; use thinkModel; class FlowModel extends Model { protected $table = 'tp_flow'; // 定义与StepModel的一对多关系 public function steps() { return $this->hasMany('StepModel', 'flow_id', 'id'); } // 创建审核流程 public function addFlow($data) { return $this->save($data); } // 编辑审核流程 public function editFlow($id, $data) { return $this->where('id', $id)->update($data); } // 删除审核流程 public function delFlow($id) { return $this->where('id', $id)->delete(); } // 按照ID获取审核流程详情 public function getFlowById($id) { return $this->with('steps')->find($id); } // 获取审核流程列表 public function getFlowList() { return $this->with('steps')->select(); } }
2. Créez la classe de modèle d'étape
Ensuite, nous créons la classe de modèle d'étape StepModel, définissons la relation d'appartenance avec la classe de modèle de processus FlowModel et fournissons des méthodes liées aux étapes d'audit.
// ppmodelStepModel.php namespace appmodel; use thinkModel; class StepModel extends Model { protected $table = 'tp_step'; // 定义与FlowModel的属于关系 public function flow() { return $this->belongsTo('FlowModel', 'flow_id'); } // 添加审核步骤 public function addStep($data) { return $this->save($data); } // 编辑审核步骤 public function editStep($id, $data) { return $this->where('id', $id)->update($data); } // 删除审核步骤 public function delStep($id) { return $this->where('id', $id)->delete(); } // 按照ID获取审核步骤详情 public function getStepById($id) { return $this->find($id); } // 获取审核步骤列表 public function getStepListByFlowId($flow_id) { return $this->where('flow_id', $flow_id)->select(); } // 更新审核步骤状态 public function updateStepStatus($id, $status, $handler_id, $handle_time) { $data = [ 'status' => $status, 'handler_id' => $handler_id, 'handle_time' => $handle_time, ]; return $this->where('id', $id)->update($data); } }
3. Implémentation du processus de révision
Dans la mise en œuvre du processus de révision, nous devons appeler les méthodes des classes de modèle de processus et d'étape dans le contrôleur ou la couche de service pour terminer chaque étape du processus de révision.
Lorsque l'administrateur crée un processus d'audit en arrière-plan, il doit d'abord créer le processus, puis ajouter des étapes.
// ppcontrollerFlowController.php namespace appcontroller; use appBaseController; use appmodelFlowModel; use appmodelStepModel; use thinkRequest; class FlowController extends BaseController { protected $flowModel; protected $stepModel; public function __construct(FlowModel $flowModel, StepModel $stepModel) { $this->flowModel = $flowModel; $this->stepModel = $stepModel; } // 创建审核流程 public function addFlow(Request $request) { $data = $request->post(); // 添加审核流程 $flow_result = $this->flowModel->addFlow([ 'name' => $data['name'], 'create_user_id' => $this->getCurrentUserId(), 'create_time' => date('Y-m-d H:i:s'), ]); if (!$flow_result) { return $this->error('创建审核流程失败!'); } // 添加审核步骤 $step_data = []; foreach ($data['step'] as $key => $value) { $step_data[] = [ 'flow_id' => $this->flowModel->id, 'name' => $value['name'], 'handler_id' => $value['handler_id'], ]; } $step_result = $this->stepModel->saveAll($step_data); if (!$step_result) { return $this->error('添加审核步骤失败!'); } return $this->success('创建审核流程成功!'); } }
Après avoir soumis la demande d'examen, l'utilisateur doit déclencher automatiquement le processus d'examen et laisser le processus d'examen démarrer.
// ppcontrollerApplyController.php namespace appcontroller; use appBaseController; use appmodelStepModel; use thinkRequest; class ApplyController extends BaseController { protected $stepModel; public function __construct(StepModel $stepModel) { $this->stepModel = $stepModel; } // 提交审核 public function submitApply(Request $request) { $data = $request->post(); // 获取审核流程的第一步骤 $steps = $this->stepModel->getStepListByFlowId($data['flow_id']); if (empty($steps)) { return $this->error('该审核流程未添加步骤!'); } $first_step = $steps[0]; // 更新第一步骤状态 $update_result = $this->stepModel->updateStepStatus($first_step->id, 1, $this->getCurrentUserId(), date('Y-m-d H:i:s')); if (!$update_result) { return $this->error('更新审核步骤状态失败!'); } return $this->success('提交审核成功!'); } }
Le système assigne automatiquement des auditeurs pour mener l'audit selon les étapes définies dans le processus d'audit et enregistre les résultats de l'audit.
// ppcontrollerApproveController.php namespace appcontroller; use appBaseController; use appmodelStepModel; use thinkRequest; class ApproveController extends BaseController { protected $stepModel; public function __construct(StepModel $stepModel) { $this->stepModel = $stepModel; } // 审核步骤 public function approveStep(Request $request) { $data = $request->post(); // 获取当前步骤 $step = $this->stepModel->getStepById($data['step_id']); // 更新当前步骤状态 $update_result = $this->stepModel->updateStepStatus($data['step_id'], $data['status'], $this->getCurrentUserId(), date('Y-m-d H:i:s')); if (!$update_result) { return $this->error('更新审核步骤状态失败!'); } // 获取下一步骤 $next_step = $this->stepModel->where('flow_id', $step->flow_id)->where('id', '>', $data['step_id'])->order('id asc')->find(); if (!$next_step) { return $this->success('已审核完成!'); } // 更新下一步骤状态 $update_result = $this->stepModel->updateStepStatus($next_step->id, 1, $next_step->handler_id, null); if (!$update_result) { return $this->error('更新审核步骤状态失败!'); } return $this->success('审核通过!'); } }
IV.Résumé
Grâce aux exemples de code ci-dessus, nous pouvons voir que la fonction de gestion des processus d'audit est très facilement implémentée dans ThinkPHP6 grâce à la gestion des enregistrements des tables de processus et des tables d'étapes, et aux opérations de méthode de la classe modèle, nous pouvons compléter rapidement et simplement un système complet de gestion du processus d’examen.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!