# 订单赠品审批流程使用示例 ## 概述 本文档展示了如何在订单编辑添加赠品后触发审批流程的完整实现。 ## 数据库表结构 ### 核心表关系 1. **订单相关表** - `ome_orders` - 订单主表 - `ome_order_objects` - 订单子单表(包含赠品) - `ome_order_items` - 订单行明细表 2. **审批流程表** - `ticket_workflow_template` - 审批流模板表 - `ticket_workflow_node` - 审批流节点表 - `ticket_workflow_case` - 审批流实例表 - `ticket_workflow_record` - 审批记录表 ## 使用流程 ### 1. 配置审批模板 首先需要创建赠品审批模板: ```php // 创建审批模板 $templateData = [ 'template_bn' => 'GIFT_APPROVAL_001', 'template_name' => '赠品审批模板', 'scene_type' => 'add_gift', 'description' => '用于订单添加赠品的审批流程', 'is_enabled' => 'true' ]; $templateMdl = app::get('ticket')->model('workflow_template'); $template_id = $templateMdl->insert($templateData); // 创建审批节点 $nodeData = [ 'node_name' => '部门经理审批', 'node_type' => 'approval', 'template_id' => $template_id, 'step_order' => 1, 'assignee_type' => 'user', 'assignee_id' => 1001, // 部门经理用户ID 'assignee_name' => '张经理' ]; $nodeMdl = app::get('ticket')->model('workflow_node'); $nodeMdl->insert($nodeData); ``` ### 2. 订单编辑时触发审批 在订单编辑页面添加赠品时: ```php // 订单编辑控制器 class ome_ctl_admin_orders extends desktop_controller { public function add_gift() { $order_id = $_POST['order_id']; $gift_items = $_POST['gift_items']; // 1. 保存赠品到订单 $this->saveGiftToOrder($order_id, $gift_items); // 2. 触发审批流程 $giftApprovalService = kernel::single('ticket_service_order_gift_approval'); $result = $giftApprovalService->triggerGiftApproval($order_id, $gift_items); if($result['rsp'] == 'succ') { $this->end(true, '赠品添加成功,审批流程已启动'); } else { $this->end(false, $result['error_msg']); } } private function saveGiftToOrder($order_id, $gift_items) { // 保存赠品到订单明细表 $orderObjectMdl = app::get('ome')->model('order_objects'); foreach($gift_items as $gift) { $objectData = [ 'order_id' => $order_id, 'obj_type' => 'gift', 'name' => $gift['name'], 'price' => $gift['price'], 'quantity' => $gift['quantity'], // ... 其他字段 ]; $orderObjectMdl->insert($objectData); } } } ``` ### 3. 审批人处理审批 审批人可以在审批页面查看和处理: ```php // 审批页面 public function audit($case_id) { $caseMdl = app::get('ticket')->model('workflow_case'); $caseInfo = $caseMdl->dump($case_id); // 获取订单和赠品信息 $workflowCaseLib = kernel::single('ticket_workflow_case'); $orderResult = $workflowCaseLib->getOrderDetails($caseInfo); $this->pagedata['caseInfo'] = $caseInfo; $this->pagedata['orderInfo'] = $orderResult['data']; $this->page('admin/workflow/case/audit.html'); } // 处理审批 public function do_audit() { $data = $_POST; $workflowCaseLib = kernel::single('ticket_workflow_case'); $result = $workflowCaseLib->processAudit($data, $error_msg); if($result['rsp'] == 'succ') { $this->end(true, '审批处理成功'); } else { $this->end(false, $error_msg); } } ``` ### 4. 查看审批状态 订单编辑页面可以显示审批状态: ```php // 在订单编辑页面显示审批状态 public function edit($order_id) { $orderMdl = app::get('ome')->model('orders'); $orderInfo = $orderMdl->dump($order_id); // 检查审批状态 $giftApprovalService = kernel::single('ticket_service_order_gift_approval'); $approvalResult = $giftApprovalService->getOrderApprovalStatus($order_id); $this->pagedata['orderInfo'] = $orderInfo; $this->pagedata['approvalStatus'] = $approvalResult['data']; $this->page('admin/orders/edit.html'); } ``` ## 前端页面示例 ### 审批页面模板 ```html
订单号:{$orderInfo.order_bn}
客户:{$orderInfo.ship_name}
订单金额:{$orderInfo.total_amount}
| 赠品名称 | 数量 | 单价 | 小计 |
|---|---|---|---|
| {$gift.name} | {$gift.quantity} | {$gift.price} | {$gift.amount} |
审批号:{$approval.case_bn}
状态:{$approval.status}
提交人:{$approval.submitter_name}
当前审批人:{$approval.assignee_name}
{if $approval.records}