Rumah >rangka kerja php >ThinkPHP >Bagaimana untuk menguruskan proses semakan dalam ThinkPHP6?
Dengan perkembangan Internet, semakin banyak syarikat mula menggunakan Internet untuk pemprosesan perniagaan, yang memerlukan syarikat mempunyai sistem pengurusan proses audit yang lengkap untuk memastikan keselamatan dan penyeragaman perniagaan. Dalam pembangunan PHP, rangka kerja ThinkPHP6 menyediakan fungsi pengurusan proses audit yang mudah Artikel ini akan memperkenalkan cara melaksanakan pengurusan proses audit dalam ThinkPHP6.
1. Idea asas pengurusan proses audit dalam ThinkPHP6
Idea asas pengurusan proses audit dalam ThinkPHP6 dicapai melalui rekod pangkalan data Secara amnya, dua jadual data perlu dicipta:
Proses pengurusan proses semakan boleh diterangkan secara ringkas seperti berikut:
2. Cipta jadual proses dan jadual langkah
Pertama, kita perlu mencipta jadual proses dan jadual langkah dalam pangkalan data.
Jadual proses:
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='审核流程表';
Jadual langkah:
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 Cipta kelas model
Seterusnya, kita perlu mencipta kelas model, takrifkan. jadual proses dan Hubungan antara jadual langkah dan melaksanakan pelbagai kaedah operasi.
Pertama, kami mencipta kelas model proses FlowModel, mentakrifkan hubungan satu-ke-banyak dengan kelas model langkah StepModel dan menyediakan proses kaedah berkaitan pengurusan.
// 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. Cipta kelas model langkah
Kemudian, kami cipta kelas model langkah StepModel, tentukan hubungan kepunyaan dengan FlowModel kelas model proses, dan sediakan kaedah yang berkaitan dengan langkah 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. Pelaksanaan proses semakan
Dalam pelaksanaan proses semakan, kita perlu memanggil kaedah proses dan kelas model langkah dalam lapisan pengawal atau perkhidmatan untuk melengkapkan setiap langkah langkah proses semakan.
Apabila pentadbir membuat proses audit di latar belakang, dia perlu mencipta proses itu dahulu dan kemudian menambah langkah.
// 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('创建审核流程成功!'); } }
Selepas menyerahkan permohonan semakan, pengguna perlu mencetuskan proses semakan secara automatik dan membiarkan proses semakan mula berjalan.
// 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('提交审核成功!'); } }
Sistem secara automatik menugaskan juruaudit untuk menjalankan audit mengikut langkah yang ditakrifkan dalam proses audit, dan merekodkan keputusan 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('审核通过!'); } }
4 Ringkasan
Melalui contoh kod di atas, kita dapat melihat bahawa ThinkPHP6 telah melaksanakan fungsi pengurusan proses audit dengan sangat mudah, melalui pengurusan rekod jadual proses dan jadual langkah serta model. kelas Dengan menggunakan kaedah ini, kami boleh melengkapkan sistem pengurusan proses semakan yang lengkap dengan cepat dan ringkas.
Atas ialah kandungan terperinci Bagaimana untuk menguruskan proses semakan dalam ThinkPHP6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!