diff --git a/CLAUDE.md b/CLAUDE.md index 3d04518f2..c35ebd5bc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,7 +5,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview PigX is a proprietary enterprise-grade microservices platform built on Spring Cloud Alibaba, focusing on AI knowledge -management, document processing, and intelligent Q&A capabilities. The current version is 5.10.2-SNAPSHOT. +management, document processing, and intelligent Q&A capabilities. The current version is 5.10.0. **Important**: This is NOT an open-source project. All rights reserved by the author. Commercial use requires proper licensing. diff --git a/pigx-common/pigx-common-bom/pom.xml b/pigx-common/pigx-common-bom/pom.xml index e5e58858c..6f013a319 100644 --- a/pigx-common/pigx-common-bom/pom.xml +++ b/pigx-common/pigx-common-bom/pom.xml @@ -188,13 +188,7 @@ com.pig4cloud - pigx-flow-task-api - ${pigx.version} - - - - com.pig4cloud - pigx-flow-engine-api + pigx-flow-api ${pigx.version} diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/ServiceNameConstants.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/ServiceNameConstants.java index b6ce2f3a6..1727c7c3c 100644 --- a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/ServiceNameConstants.java +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/ServiceNameConstants.java @@ -25,34 +25,30 @@ package com.pig4cloud.pigx.common.core.constant; */ public interface ServiceNameConstants { - /** - * 认证中心 - */ - String AUTH_SERVICE = "pigx-auth"; + /** + * 认证中心 + */ + String AUTH_SERVICE = "pigx-auth"; - /** - * UMPS模块 - */ - String UPMS_SERVICE = "pigx-upms-biz"; + /** + * UMPS模块 + */ + String UPMS_SERVICE = "pigx-upms-biz"; - /** - * app服务 - */ - String APP_SERVER = "pigx-app-server-biz"; + /** + * app服务 + */ + String APP_SERVER = "pigx-app-server-biz"; - /** - * 流程引擎 - */ - String FLOW_ENGINE_SERVER = "pigx-flow-engine-biz"; + /** + * 流程引擎 + */ + String FLOW_ENGINE_SERVER = "pigx-flow-biz"; - /** - * 流程工单 - */ - String FLOW_TASK_SERVER = "pigx-flow-task-biz"; - /** - * 代码生成模块 - */ - String CODEGEN_SERVICE = "pigx-codegen"; + /** + * 代码生成模块 + */ + String CODEGEN_SERVICE = "pigx-codegen"; } diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDataScopeHandle.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDataScopeHandle.java index 083278b8e..394bb2e63 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDataScopeHandle.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDataScopeHandle.java @@ -22,13 +22,11 @@ import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.admin.api.entity.SysDept; import com.pig4cloud.pigx.admin.api.entity.SysRole; import com.pig4cloud.pigx.admin.api.feign.RemoteDataScopeService; -import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum; import com.pig4cloud.pigx.common.core.util.RetOps; import com.pig4cloud.pigx.common.security.service.PigxUser; import com.pig4cloud.pigx.common.security.util.SecurityUtils; import lombok.RequiredArgsConstructor; -import org.springframework.security.core.GrantedAuthority; import java.util.Arrays; import java.util.Collections; @@ -51,115 +49,110 @@ import java.util.Objects; @RequiredArgsConstructor public class PigxDefaultDataScopeHandle implements DataScopeHandle { - private final RemoteDataScopeService dataScopeService; + private final RemoteDataScopeService dataScopeService; - @Override - public Boolean calcScope(DataScope dataScope) { - // 对于TOC客户端,不进行数据权限校验 - PigxUser user = SecurityUtils.getUser(); - if (UserTypeEnum.TOC.getStatus().equals(user.getUserType())) { - return true; - } + @Override + public Boolean calcScope(DataScope dataScope) { + // 对于TOC客户端,不进行数据权限校验 + PigxUser user = SecurityUtils.getUser(); + if (UserTypeEnum.TOC.getStatus().equals(user.getUserType())) { + return true; + } - // 业务代码里的规则,覆盖计算规则 - if (StrUtil.isNotBlank(dataScope.getUsername()) || CollUtil.isNotEmpty(dataScope.getDeptList())) { - return false; - } + // 业务代码里的规则,覆盖计算规则 + if (StrUtil.isNotBlank(dataScope.getUsername()) || CollUtil.isNotEmpty(dataScope.getDeptList())) { + return false; + } - // 获取用户角色ID列表 - List roleIdList = user.getAuthorities() - .stream() - .map(GrantedAuthority::getAuthority) - .filter(authority -> authority.startsWith(SecurityConstants.ROLE)) - .map(authority -> authority.split(StrUtil.UNDERLINE)[1]) - .toList(); - if (CollUtil.isEmpty(roleIdList)) { - return false; - } + // 获取用户角色ID列表 + List roleIdList = user.getRoleIds(); + if (CollUtil.isEmpty(roleIdList)) { + return false; + } - // 获取角色列表 - List roleList = RetOps.of(dataScopeService.getRoleList(roleIdList)) - .getData() - .orElseGet(Collections::emptyList); - if (CollUtil.isEmpty(roleList)) { - return false; - } + // 获取角色列表 + List roleList = RetOps.of(dataScopeService.getRoleList(roleIdList)) + .getData() + .orElseGet(Collections::emptyList); + if (CollUtil.isEmpty(roleList)) { + return false; + } - // 处理数据权限 - return processDataScope(user, dataScope, roleList); - } + // 处理数据权限 + return processDataScope(user, dataScope, roleList); + } - /** - * 处理数据权限 - */ - private boolean processDataScope(PigxUser user, DataScope dataScope, List roleList) { - List deptList = dataScope.getDeptList(); + /** + * 处理数据权限 + */ + private boolean processDataScope(PigxUser user, DataScope dataScope, List roleList) { + List deptList = dataScope.getDeptList(); - for (SysRole role : roleList) { - Integer dsType = role.getDsType(); + for (SysRole role : roleList) { + Integer dsType = role.getDsType(); - // 处理不同数据权限类型 - switch (Objects.requireNonNull(DataScopeTypeEnum.getByType(dsType))) { - case ALL: - return true; - case CUSTOM: - handleCustomScope(role, deptList); - break; - case OWN_CHILD_LEVEL: - handleOwnChildLevelScope(user, deptList); - break; - case OWN_LEVEL: - handleOwnLevelScope(user, deptList); - break; - case SELF_LEVEL: - handleSelfLevelScope(user, dataScope); - break; - default: - break; - } - } + // 处理不同数据权限类型 + switch (Objects.requireNonNull(DataScopeTypeEnum.getByType(dsType))) { + case ALL: + return true; + case CUSTOM: + handleCustomScope(role, deptList); + break; + case OWN_CHILD_LEVEL: + handleOwnChildLevelScope(user, deptList); + break; + case OWN_LEVEL: + handleOwnLevelScope(user, deptList); + break; + case SELF_LEVEL: + handleSelfLevelScope(user, dataScope); + break; + default: + break; + } + } - return false; - } + return false; + } - /** - * 处理自定义数据权限 - */ - private void handleCustomScope(SysRole role, List deptList) { - if (StrUtil.isNotBlank(role.getDsScope())) { - deptList.addAll(Arrays.stream(role.getDsScope().split(StrUtil.COMMA)).map(Long::parseLong).toList()); - } - } + /** + * 处理自定义数据权限 + */ + private void handleCustomScope(SysRole role, List deptList) { + if (StrUtil.isNotBlank(role.getDsScope())) { + deptList.addAll(Arrays.stream(role.getDsScope().split(StrUtil.COMMA)).map(Long::parseLong).toList()); + } + } - /** - * 处理本级及下级数据权限 - */ - private void handleOwnChildLevelScope(PigxUser user, List deptList) { + /** + * 处理本级及下级数据权限 + */ + private void handleOwnChildLevelScope(PigxUser user, List deptList) { - for (Long deptId : user.getDeptIds()) { - List descendantDeptIds = RetOps.of(dataScopeService.getDescendantList(deptId)) - .getData() - .orElseGet(Collections::emptyList) - .stream() - .map(SysDept::getDeptId) - .toList(); - deptList.addAll(descendantDeptIds); - } + for (Long deptId : user.getDeptIds()) { + List descendantDeptIds = RetOps.of(dataScopeService.getDescendantList(deptId)) + .getData() + .orElseGet(Collections::emptyList) + .stream() + .map(SysDept::getDeptId) + .toList(); + deptList.addAll(descendantDeptIds); + } - } + } - /** - * 处理本级数据权限 - */ - private void handleOwnLevelScope(PigxUser user, List deptList) { - deptList.addAll(user.getDeptIds()); - } + /** + * 处理本级数据权限 + */ + private void handleOwnLevelScope(PigxUser user, List deptList) { + deptList.addAll(user.getDeptIds()); + } - /** - * 处理个人数据权限 - */ - private void handleSelfLevelScope(PigxUser user, DataScope dataScope) { - dataScope.setUsername(user.getUsername()); - } + /** + * 处理个人数据权限 + */ + private void handleSelfLevelScope(PigxUser user, DataScope dataScope) { + dataScope.setUsername(user.getUsername()); + } } diff --git a/pigx-flow/pigx-flow-api/pom.xml b/pigx-flow/pigx-flow-api/pom.xml index f3720ee47..c9d444cc1 100644 --- a/pigx-flow/pigx-flow-api/pom.xml +++ b/pigx-flow/pigx-flow-api/pom.xml @@ -7,7 +7,7 @@ com.pig4cloud pigx-flow - 5.10.2-SNAPSHOT + 5.10.0 pigx-flow-api @@ -33,5 +33,9 @@ com.pig4cloud pigx-common-excel + + com.pig4cloud + pigx-common-core + diff --git a/pigx-flow/pigx-flow-api/src/main/java/com/pig4cloud/pigx/flow/api/feign/RemoteFlowApiFlowService.java b/pigx-flow/pigx-flow-api/src/main/java/com/pig4cloud/pigx/flow/api/feign/RemoteFlowApiFlowService.java index dd277ee60..c9094fb53 100644 --- a/pigx-flow/pigx-flow-api/src/main/java/com/pig4cloud/pigx/flow/api/feign/RemoteFlowApiFlowService.java +++ b/pigx-flow/pigx-flow-api/src/main/java/com/pig4cloud/pigx/flow/api/feign/RemoteFlowApiFlowService.java @@ -20,53 +20,53 @@ import java.util.List; * 主要包括流程查询、流程启动等操作。该接口用于微服务间的远程调用, * 使其他服务能够便捷地使用流程引擎的功能。 *

- * + * * @author lengleng * @date 2025/07/12 */ -@FeignClient(contextId = "remoteFlowApiFlowService", value = ServiceNameConstants.FLOW_SERVER) +@FeignClient(contextId = "remoteFlowApiFlowService", value = ServiceNameConstants.FLOW_ENGINE_SERVER) public interface RemoteFlowApiFlowService { - /** - * 查询当前用户可发起的流程列表 - *

- * 根据当前登录用户的权限,查询该用户有权发起的所有流程。 - * 返回结果按分组组织,方便前端展示。 - *

- * - * @return 分组后的流程列表,包含分组信息和各分组下的流程 - */ - @GetMapping("/combination/group/listCurrentUserStartGroup") - R> listCurrentUserStartGroup(); + /** + * 查询当前用户可发起的流程列表 + *

+ * 根据当前登录用户的权限,查询该用户有权发起的所有流程。 + * 返回结果按分组组织,方便前端展示。 + *

+ * + * @return 分组后的流程列表,包含分组信息和各分组下的流程 + */ + @GetMapping("/combination/group/listCurrentUserStartGroup") + R> listCurrentUserStartGroup(); - /** - * 获取流程详细信息 - *

- * 根据流程ID获取流程的完整配置信息,包括: - * - 流程基本信息(名称、图标、描述等) - * - 表单配置(表单项定义、验证规则等) - * - 流程配置(节点定义、流转规则等) - *

- * - * @param flowId 流程定义ID - * @return 流程详细信息视图对象 - */ - @GetMapping("/process/getDetail") - R getDetail(@RequestParam("flowId") String flowId); + /** + * 获取流程详细信息 + *

+ * 根据流程ID获取流程的完整配置信息,包括: + * - 流程基本信息(名称、图标、描述等) + * - 表单配置(表单项定义、验证规则等) + * - 流程配置(节点定义、流转规则等) + *

+ * + * @param flowId 流程定义ID + * @return 流程详细信息视图对象 + */ + @GetMapping("/process/getDetail") + R getDetail(@RequestParam("flowId") String flowId); - /** - * 启动流程实例 - *

- * 根据流程定义创建新的流程实例。启动流程时需要提供: - * - 流程ID - * - 表单数据 - * - 需要自选的节点执行人信息 - *

- * - * @param paramDto 流程实例启动参数,包含流程ID、表单数据等 - * @return 启动成功后的流程实例ID - */ - @PostMapping("/process-instance/startProcessInstance") - R startProcessInstance(@RequestBody ProcessInstanceParamDto paramDto); + /** + * 启动流程实例 + *

+ * 根据流程定义创建新的流程实例。启动流程时需要提供: + * - 流程ID + * - 表单数据 + * - 需要自选的节点执行人信息 + *

+ * + * @param paramDto 流程实例启动参数,包含流程ID、表单数据等 + * @return 启动成功后的流程实例ID + */ + @PostMapping("/process-instance/startProcessInstance") + R startProcessInstance(@RequestBody ProcessInstanceParamDto paramDto); } diff --git a/pigx-flow/pigx-flow-biz/pom.xml b/pigx-flow/pigx-flow-biz/pom.xml index 3f1dbeef3..80f975ce0 100644 --- a/pigx-flow/pigx-flow-biz/pom.xml +++ b/pigx-flow/pigx-flow-biz/pom.xml @@ -7,7 +7,7 @@ com.pig4cloud pigx-flow - 5.10.2-SNAPSHOT + 5.10.0 pigx-flow-biz diff --git a/pigx-flow/pom.xml b/pigx-flow/pom.xml index d83e407ac..d04f2cd52 100644 --- a/pigx-flow/pom.xml +++ b/pigx-flow/pom.xml @@ -24,7 +24,7 @@ com.pig4cloud pigx - 5.10.2-SNAPSHOT + 5.10.0 pigx-flow