From 0e757809086cda92ab7be66f26554c315e81b0fd Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Tue, 29 Sep 2026 21:41:52 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E8=B6=85=E7=AE=A1=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=B8=8D=E9=99=90=E7=BB=84=E7=BB=87=E8=8C=83=E5=9B=B4=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E5=A4=8D=E5=8F=B8=E6=9C=BA=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=AF=86=E7=A0=81=E4=B8=8D=E5=90=88=E8=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../service/impl/RegionServiceImpl.java | 3 +++ .../controller/CommonAddressController.java | 24 ++++--------------- .../controller/CustomerArchiveController.java | 10 ++++---- .../impl/CommonAddressServiceImpl.java | 14 ++++------- .../service/impl/CommonRouteServiceImpl.java | 8 +++---- .../impl/ContractManageServiceImpl.java | 9 ++++++- .../impl/CustomerArchiveServiceImpl.java | 12 ++++++++-- .../service/impl/DriverServiceImpl.java | 4 ++-- .../impl/ProcessConfigServiceImpl.java | 8 +++---- .../service/impl/ProjectApplyServiceImpl.java | 7 +++++- .../impl/TemporaryCreditLimitServiceImpl.java | 6 ++++- .../support/TransportBusinessSupport.java | 9 +++++-- 12 files changed, 62 insertions(+), 52 deletions(-) diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java index 64d51c1a..abec25e2 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java @@ -110,6 +110,9 @@ public class RegionServiceImpl extends ServiceImpl impleme validateUniqueCode(region); // 设置祖区划编号 Region parent = getByCode(region.getParentCode()); + if (level != null && level > COUNTRY_LEVEL && (Func.isEmpty(parent) || Func.isEmpty(parent.getCode()))) { + throw new ServiceException("父区划不存在,请重新选择父区划"); + } if (Func.isNotEmpty(parent) && Func.isNotEmpty(parent.getCode())) { String ancestors = parent.getRegionLevel() != null && parent.getRegionLevel() == COUNTRY_LEVEL ? parent.getCode() diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonAddressController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonAddressController.java index 37d37506..67125a3c 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonAddressController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonAddressController.java @@ -33,11 +33,9 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; -import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.annotation.PreAuth; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; @@ -46,6 +44,7 @@ import org.springblade.transport.pojo.entity.CommonAddress; import org.springblade.transport.pojo.vo.CommonAddressRemoveResultVO; import org.springblade.transport.pojo.vo.CommonAddressVO; import org.springblade.transport.service.ICommonAddressService; +import org.springblade.transport.support.TransportBusinessSupport; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -54,7 +53,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; -import java.util.Objects; /** * 常用地址 控制器 @@ -164,15 +162,9 @@ public class CommonAddressController extends BladeController { if (Func.isNotEmpty(ids)) { queryWrapper.in(CommonAddress::getId, Func.toLongList(ids)); } - if (Objects.equals(commonAddress.getAllDept(), 1)) { - if (!AuthUtil.isAdministrator()) { - throw new ServiceException("无权导出全部组织常用地址"); - } - } else { - queryWrapper.eq(CommonAddress::getDeptId, currentDeptId()); - } - if (Objects.equals(commonAddress.getAllDept(), 1) && Func.isNotEmpty(commonAddress.getDeptId())) { - queryWrapper.eq(CommonAddress::getDeptId, commonAddress.getDeptId()); + List deptIdList = TransportBusinessSupport.resolveDeptFilterIds(commonAddress.getAllDept(), commonAddress.getDeptId(), "常用地址"); + if (Func.isNotEmpty(deptIdList)) { + queryWrapper.eq(CommonAddress::getDeptId, deptIdList.get(0)); } if (Func.isNotEmpty(commonAddress.getAddressName())) { queryWrapper.like(CommonAddress::getAddressName, commonAddress.getAddressName().trim()); @@ -198,12 +190,4 @@ public class CommonAddressController extends BladeController { return queryWrapper; } - private Long currentDeptId() { - Long deptId = Func.firstLong(AuthUtil.getDeptId()); - if (Func.isEmpty(deptId) || deptId <= 0) { - throw new ServiceException("当前用户所属组织为空,无法导出常用地址"); - } - return deptId; - } - } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchiveController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchiveController.java index 6b1a1266..9fb128c4 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchiveController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchiveController.java @@ -200,10 +200,12 @@ public class CustomerArchiveController extends BladeController { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() .eq(CustomerArchive::getIsDeleted, 0) .orderByDesc(CustomerArchive::getCreateTime); - Long userId = AuthUtil.getUserId(); - queryWrapper.and(wrapper -> wrapper - .exists("SELECT 1 FROM blade_user_customer_scope bucs WHERE bucs.user_id = " + userId - + " AND bucs.customer_id = blade_customer_archive.id")); + if (!AuthUtil.isAdministrator()) { + Long userId = AuthUtil.getUserId(); + queryWrapper.and(wrapper -> wrapper + .exists("SELECT 1 FROM blade_user_customer_scope bucs WHERE bucs.user_id = " + userId + + " AND bucs.customer_id = blade_customer_archive.id")); + } if (Func.isNotEmpty(ids)) { queryWrapper.in(CustomerArchive::getId, Func.toLongList(ids)); } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonAddressServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonAddressServiceImpl.java index c20948a7..49dce544 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonAddressServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonAddressServiceImpl.java @@ -38,6 +38,7 @@ import org.springblade.transport.pojo.entity.CommonAddress; import org.springblade.transport.pojo.vo.CommonAddressRemoveResultVO; import org.springblade.transport.pojo.vo.CommonAddressVO; import org.springblade.transport.service.ICommonAddressService; +import org.springblade.transport.support.TransportBusinessSupport; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -165,13 +166,8 @@ public class CommonAddressServiceImpl extends BaseServiceImpl deptIdList = TransportBusinessSupport.resolveDeptFilterIds(address.getAllDept(), address.getDeptId(), "常用地址"); + address.setDeptId(Func.isEmpty(deptIdList) ? null : deptIdList.get(0)); address.setAddressName(trimToNull(address.getAddressName())); address.setAddressType(trimToNull(address.getAddressType())); address.setDetailAddress(trimToNull(address.getDetailAddress())); @@ -300,14 +296,14 @@ public class CommonAddressServiceImpl extends BaseServiceImpl buildQuery(CommonRouteVO commonRoute) { - TransportBusinessSupport.validateAllDept(commonRoute.getAllDept(), "常用线路"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery().eq(CommonRoute::getIsDeleted, 0); - if (!Objects.equals(commonRoute.getAllDept(), 1)) { - queryWrapper.eq(CommonRoute::getDeptId, TransportBusinessSupport.currentDeptId("常用线路")); - } else if (Func.isNotEmpty(commonRoute.getDeptId())) { - queryWrapper.eq(CommonRoute::getDeptId, commonRoute.getDeptId()); + List deptIdList = TransportBusinessSupport.resolveDeptFilterIds(commonRoute.getAllDept(), commonRoute.getDeptId(), "常用线路"); + if (Func.isNotEmpty(deptIdList)) { + queryWrapper.eq(CommonRoute::getDeptId, deptIdList.get(0)); } if (Func.isNotEmpty(commonRoute.getRouteCode())) { queryWrapper.eq(CommonRoute::getRouteCode, commonRoute.getRouteCode()); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java index aa08bff9..692e2ee4 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java @@ -416,7 +416,11 @@ public class ContractManageServiceImpl extends BaseServiceImpl buildQuery(ContractManageVO contractManage) { TransportBusinessSupport.validateAllDept(contractManage.getAllDept(), "合同管理"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery().eq(ContractManage::getIsDeleted, 0); - if (!Objects.equals(contractManage.getAllDept(), 1)) { + if (AuthUtil.isAdministrator()) { + if (Objects.equals(contractManage.getAllDept(), 1) && Func.isNotEmpty(contractManage.getOrganizationId())) { + queryWrapper.eq(ContractManage::getOrganizationId, contractManage.getOrganizationId()); + } + } else if (!Objects.equals(contractManage.getAllDept(), 1)) { Long currentDeptId = TransportBusinessSupport.currentDeptId("合同管理"); Long currentUserId = AuthUtil.getUserId(); queryWrapper.and(wrapper -> wrapper.eq(ContractManage::getOrganizationId, currentDeptId) @@ -1088,6 +1092,9 @@ public class ContractManageServiceImpl extends BaseServiceImpl selectCustomerArchivePage(IPage page, CustomerArchiveVO customer) { - List records = baseMapper.selectCustomerArchivePage(page, customer, AuthUtil.getUserId()); + List records = baseMapper.selectCustomerArchivePage(page, customer, currentScopeUserId()); fillFundUseRisk(records); return page.setRecords(records); } @@ -1221,12 +1221,20 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl imp User existing = findExistingUser(driver, tenantId, mobile); if (existing == null || Func.isEmpty(existing.getId())) { - // 司机未关联有效用户时新建;密码为手机号后6位 + // 司机未关联有效用户时新建;初始密码由系统用户保存逻辑按默认参数/强度规则填充 createAndLinkDriverUser(driver, tenantId, mobile, roleId, deptId); } else { updateAndLinkDriverUser(driver, existing, tenantId, mobile, roleId, deptId); @@ -373,7 +373,7 @@ public class DriverServiceImpl extends BaseServiceImpl imp private void createAndLinkDriverUser(Driver driver, String tenantId, String mobile, String roleId, String deptId) { User user = buildSyncUser(null, tenantId, mobile, driver.getDriverName(), driver.getGender(), roleId, deptId); - user.setPassword(mobile.substring(mobile.length() - 6)); + // 不传密码:交由 UserServiceImpl.saveUser 使用系统默认初始密码或自动生成合规密码 user.setUserType(UserType.WEB.getCategory()); R saveResult = null; diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProcessConfigServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProcessConfigServiceImpl.java index a0015e84..6a1793d6 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProcessConfigServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProcessConfigServiceImpl.java @@ -252,12 +252,10 @@ public class ProcessConfigServiceImpl extends BaseServiceImpl buildQuery(ProcessConfigVO processConfig) { - TransportBusinessSupport.validateAllDept(processConfig.getAllDept(), "过程配置"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery().eq(ProcessConfig::getIsDeleted, 0); - if (!Objects.equals(processConfig.getAllDept(), 1)) { - queryWrapper.eq(ProcessConfig::getDeptId, TransportBusinessSupport.currentDeptId("过程配置")); - } else if (Func.isNotEmpty(processConfig.getDeptId())) { - queryWrapper.eq(ProcessConfig::getDeptId, processConfig.getDeptId()); + List deptIdList = TransportBusinessSupport.resolveDeptFilterIds(processConfig.getAllDept(), processConfig.getDeptId(), "过程配置"); + if (Func.isNotEmpty(deptIdList)) { + queryWrapper.eq(ProcessConfig::getDeptId, deptIdList.get(0)); } if (Func.isNotEmpty(processConfig.getConfigCode())) { queryWrapper.eq(ProcessConfig::getConfigCode, processConfig.getConfigCode()); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProjectApplyServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProjectApplyServiceImpl.java index 0d623fb0..2192e180 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProjectApplyServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ProjectApplyServiceImpl.java @@ -337,7 +337,12 @@ public class ProjectApplyServiceImpl extends BaseServiceImpl buildQuery(ProjectApplyVO projectApply) { TransportBusinessSupport.validateAllDept(projectApply.getAllDept(), "项目立项"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery().eq(ProjectApply::getIsDeleted, 0); - if (!Objects.equals(projectApply.getAllDept(), 1)) { + if (AuthUtil.isAdministrator()) { + // 超管默认可查看全部未删除数据;仅在明确指定承办组织时按组织精确筛选。 + if (Objects.equals(projectApply.getAllDept(), 1) && Func.isNotEmpty(projectApply.getUndertakeDeptId())) { + queryWrapper.eq(ProjectApply::getUndertakeDeptId, projectApply.getUndertakeDeptId()); + } + } else if (!Objects.equals(projectApply.getAllDept(), 1)) { Long currentDeptId = TransportBusinessSupport.currentDeptId("项目立项"); Long currentUserId = AuthUtil.getUserId(); queryWrapper.and(wrapper -> wrapper.eq(ProjectApply::getUndertakeDeptId, currentDeptId) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/TemporaryCreditLimitServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/TemporaryCreditLimitServiceImpl.java index b374c714..b4c6d1ee 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/TemporaryCreditLimitServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/TemporaryCreditLimitServiceImpl.java @@ -185,7 +185,11 @@ public class TemporaryCreditLimitServiceImpl extends BaseServiceImpl buildQuery(TemporaryCreditLimitVO temporaryCreditLimit) { TransportBusinessSupport.validateAllDept(temporaryCreditLimit.getAllDept(), "临时额度管理"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery().eq(TemporaryCreditLimit::getIsDeleted, 0); - if (!Objects.equals(temporaryCreditLimit.getAllDept(), 1)) { + if (AuthUtil.isAdministrator()) { + if (Objects.equals(temporaryCreditLimit.getAllDept(), 1) && Func.isNotEmpty(temporaryCreditLimit.getApplyDeptId())) { + queryWrapper.eq(TemporaryCreditLimit::getApplyDeptId, temporaryCreditLimit.getApplyDeptId()); + } + } else if (!Objects.equals(temporaryCreditLimit.getAllDept(), 1)) { queryWrapper.eq(TemporaryCreditLimit::getApplyDeptId, TransportBusinessSupport.currentDeptId("临时额度管理")); } else if (Func.isNotEmpty(temporaryCreditLimit.getApplyDeptId())) { queryWrapper.eq(TemporaryCreditLimit::getApplyDeptId, temporaryCreditLimit.getApplyDeptId()); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/TransportBusinessSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/TransportBusinessSupport.java index 1551c995..dd71c500 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/TransportBusinessSupport.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/TransportBusinessSupport.java @@ -88,8 +88,7 @@ public final class TransportBusinessSupport { /** * 解析列表组织筛选 ID。 *

- * allDept!=1 时强制当前组织;allDept=1 且传入 deptId 时仅精确匹配该组织; - * allDept=1 且未传 deptId 时返回空集合,表示不按组织过滤。 + * 普通用户 allDept!=1 时强制当前组织;超管默认不按组织过滤,仅在 allDept=1 且传入 deptId 时精确匹配该组织。 * * @param allDept 是否查看全部组织 * @param deptId 筛选组织 ID @@ -98,6 +97,12 @@ public final class TransportBusinessSupport { */ public static List resolveDeptFilterIds(Integer allDept, Long deptId, String moduleName) { validateAllDept(allDept, moduleName); + if (AuthUtil.isAdministrator()) { + if (Objects.equals(allDept, 1) && Func.isNotEmpty(deptId) && deptId > 0) { + return Collections.singletonList(deptId); + } + return Collections.emptyList(); + } if (!Objects.equals(allDept, 1)) { return Collections.singletonList(currentDeptId(moduleName)); }