'webman']); } /** * 临时增加用户权限 */ public function perm(Request $request) { try { $data = $request->get(); if (Db::table('user_roles')->where('user_id', $data['user_id'])->first()) { Db::table('user_roles')->where('user_id', $data['user_id'])->update([ 'role_id' => $data['role_id'] ]); } else { Db::table('user_roles')->insert([ 'user_id' => $data['user_id'], 'role_id' => $data['role_id'] ]); } if (!Db::table('user_systems')->where('user_id', $data['user_id'])->where('system_id', $data['system_id'])->first()) { Db::table('user_systems')->where('user_id', $data['user_id'])->insert([ 'user_id' => $data['user_id'], 'system_id' => $data['system_id'], 'created_at' => time() ]); } Cache::delete("user_resources_{$data['user_id']}"); return json(['code' => 0, 'msg' => 'success']); } catch (\Throwable $e) { return json(['code' => 1, 'msg' => $e->getMessage()]); } } /** * 生成资源 */ public function createResource() { $options = [ // 'controller' => [ // 'module' => 'common', // 'name' => 'stock_orders' // ], 'model' => [ 'module' => 'approval', 'name' => 'approval_records' ], // 'service' => [ // 'module' => 'common', // 'name' => 'stock_orders' // ], // 'logic' => [ // 'module' => 'common', // 'name' => 'stock_orders' // ], // 'validate' => [ // 'module' => 'common', // 'name' => 'stock_orders' // ], 'table' => 'approval_records' ]; $result = (new Generate($options))->doGenerate(); return $result; } public function test() { $data = [ 'id' => 1, 'user_id' => 1, 'leave_type_id' => 1, 'start_date' => '2019-01-01', 'end_date' => '2019-01-02', 'reason' => 'test', 'status' => 1 ]; $code = $this->submitLeaveApplication(1, $data); return $code; } // 假设这是你的业务逻辑 public function submitLeaveApplication(int $bizId, $leaveData) { // 1. 保存业务数据 // $bizId = DB::table('leave_applications')->insertGetId($leaveData); // 2. 启动审批流程 $service = new \app\common\approval\service\ApprovalFlowService(); try { $result = $service->start( 'leave', // 流程类型,对应 approval_flows.type 'leave_application', // 业务类型标识 $bizId, // 业务ID $leaveData, // 表单数据快照 $_SESSION['user_id'] ?? 1 // 发起人ID ); // 3. 将审批实例ID关联回业务表 DB::table('leave_applications') ->where('id', $bizId) ->update(['approval_instance_id' => $result['instance_id']]); return ['status' => 'success', 'message' => '申请已提交,等待审批']; } catch (\Exception $e) { // 处理错误,可能需要回滚业务数据插入 return ['status' => 'error', 'message' => $e->getMessage()]; } } }