From c95fdfc067213d2fe1f635cd382c9b7590b5c12a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Tue, 11 Aug 2026 11:50:40 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=A7=94=E6=89=98=E6=96=B9=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd-user-center/src/main/resources/mapper/UserMapper.xml | 6 +++++- .../src/main/resources/mapper/UserShipperMapper.xml | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mhd-user-center/src/main/resources/mapper/UserMapper.xml b/mhd-user-center/src/main/resources/mapper/UserMapper.xml index 1ff9eff31..6caa17751 100644 --- a/mhd-user-center/src/main/resources/mapper/UserMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserMapper.xml @@ -781,7 +781,11 @@ /*组织ID - 数据隔离:南光组织(organizationId=2827)查询全部,其他组织查询自己组织的数据*/ AND ( - u.organization_id = #{organizationId} + u.organization_id = #{organizationId} + OR b.org_code LIKE concat('%"code":"', #{organizationId}, '"%') + OR b.org_code LIKE concat('%code:', #{organizationId}, '%') + OR b.org_code LIKE concat('%code: ', #{organizationId}, '%') + OR b.org_code LIKE concat('%"code":', #{organizationId}, '%') ) AND u.organization_name IS NOT NULL diff --git a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml index ee3f2f01b..02112d51b 100644 --- a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml @@ -378,9 +378,14 @@ and b.parent_shipper_id = #{parentShipperId} /*用户组织ID*/ + /*用户组织ID*/ AND ( - a.organization_id = #{organizationId} + a.organization_id = #{organizationId} + OR b.org_code LIKE concat('%"code":"', #{organizationId}, '"%') + OR b.org_code LIKE concat('%code:', #{organizationId}, '%') + OR b.org_code LIKE concat('%code: ', #{organizationId}, '%') + OR b.org_code LIKE concat('%"code":', #{organizationId}, '%') ) /*组织名称*/ From 064a87e751ad2972cd68af001daeedf26b1e9c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 11 Aug 2026 18:15:58 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=A7=94=E6=89=98=E6=96=B9=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserShipperApplicationService.java | 68 ++++++++++--------- .../service/UserShipperDomainService.java | 2 +- .../src/main/resources/bootstrap.yml | 8 +-- .../resources/mapper/UserShipperMapper.xml | 21 ++++-- 4 files changed, 56 insertions(+), 43 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index b84ff3401..3c6fdfd18 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -161,11 +161,22 @@ public class UserShipperApplicationService { // 先保存前端传递的 organizationId(如果存在) Long frontendOrganizationId = userShipperDO.getOrganizationId(); - + // 获取当前登录用户的组织信息 Long loginUserOrganizationId = userPo.getOrganizationId(); Long topOrganizationId = userPo.getTopOrganizationId(); - + + // 如果前端传了 orgCode(组织ID),直接按 org_code 过滤查询委托方,不覆盖组织条件 + // orgCode 匹配 user_shipper.org_code JSON 数组中的 code 字段,用于精确查询委托方 + if (StringUtils.isNotBlank(userShipperDO.getOrgCode())) { + // 清空 organizationId / topOrganizationId,避免被数据权限覆盖逻辑拦截 orgCode 已授权的委托方 + userShipperDO.setOrganizationId(null); + userShipperDO.setTopOrganizationId(null); + log.info("托运人列表查询 - 按 orgCode 查询:orgCode={}", userShipperDO.getOrgCode()); + List userShipperList = userShipperDomainService.userShipperList(userShipperDO); + return processShipperList(userShipperList); + } + // 数据权限:根据 organizationId 来设置查询权限 // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) { @@ -184,32 +195,13 @@ public class UserShipperApplicationService { log.info("托运人列表查询 - 南光组织查询所有组织:不设置组织过滤条件"); } } else { - // 其他组织:设置 organizationId,只查询当前组织的数据 - // 其他组织只能查询自己组织的数据,不能查询其他组织的数据 - if (frontendOrganizationId != null) { - // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 - if (!frontendOrganizationId.equals(loginUserOrganizationId)) { - // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 - log.warn("托运人列表查询 - 前端传递的组织ID {} 与当前登录用户的组织ID {} 不一致,使用当前登录用户的组织ID进行过滤", - frontendOrganizationId, loginUserOrganizationId); - userShipperDO.setOrganizationId(loginUserOrganizationId); - if (frontendOrganizationId.equals(2827L)){ - userShipperDO.setOrganizationId(null); - } - } else { - // 前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 - userShipperDO.setOrganizationId(frontendOrganizationId); - } - if (topOrganizationId != null) { - userShipperDO.setTopOrganizationId(topOrganizationId); - } - } else { - // 前端没有传递 organizationId,使用当前登录用户的组织ID - userShipperDO.setOrganizationId(loginUserOrganizationId); - if (topOrganizationId != null) { - userShipperDO.setTopOrganizationId(topOrganizationId); - } - } + // 其他组织:设置 organizationId 为当前登录组织ID。 + // 查询条件为:a.organization_id = 本组织 OR b.org_code LIKE 本组织ID + // 即委托方初始绑定本组织、或 org_code 中包含本组织(被授权给本组织)时,均可查到。 + // 不设置 topOrganizationId,避免跨顶级组织授权(org_code 已包含本组织)被顶级组织条件拦截。 + userShipperDO.setOrganizationId(loginUserOrganizationId); + userShipperDO.setTopOrganizationId(null); + log.info("托运人列表查询 - 其他组织按本组织及 org_code 查询:organizationId={}", loginUserOrganizationId); } log.info("托运人列表查询 - 设置组织ID后,查询参数:organizationId={}, topOrganizationId={}, userId={}", @@ -413,10 +405,15 @@ public class UserShipperApplicationService { shipperDO.setShipperEnterpriseName(companyName); // NC客户编码使用模板中的独立字段,不再复用登录账号 shipperDO.setCustomerNcCode(ncCustomerCode); - // 联系人 -> user表 user_name + user_shipper表 user_name_shipper - shipperDO.setUserName(contactName); + // 公司名称 -> user表 user_name + user_shipper表 user_name_shipper + shipperDO.setUserName(companyName); shipperDO.setUserNameShipper(contactName); - // 联系电话 -> user表 user_phone + // 登录账号 -> user表 user_member_code + shipperDO.setUserMemberCode(userAccount); + // 联系人 -> user表 emergency_contact_name + shipperDO.setEmergencyContactName(contactName); + // 联系电话 -> user表 emergency_contact_phone + shipperDO.setEmergencyContactPhone(contactPhone); shipperDO.setUserPhone(contactPhone); // 地址 -> user表 user_area_name,详细地址 -> user表 user_area_address shipperDO.setUserAreaName(address); @@ -547,8 +544,15 @@ public class UserShipperApplicationService { userDO.setUserId(userId); if (StringUtils.isNotBlank(userAccount)) { userDO.setUserAccount(userAccount); + // 登录账号 -> user表 user_member_code + userDO.setUserMemberCode(userAccount); } - userDO.setUserName(contactName); + // 公司名称 -> user表 user_name + userDO.setUserName(companyName); + // 联系人 -> user表 emergency_contact_name + userDO.setEmergencyContactName(contactName); + // 联系电话 -> user表 emergency_contact_phone + userDO.setEmergencyContactPhone(contactPhone); userDO.setUserPhone(contactPhone); userDO.setUserAreaName(address); userDO.setUserAreaAddress(detailedAddress); diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserShipperDomainService.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserShipperDomainService.java index 61eaece29..898b90476 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserShipperDomainService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserShipperDomainService.java @@ -47,7 +47,7 @@ public class UserShipperDomainService { } } -// @DataPermissions(cacheName = "master") + // @DataPermissions(cacheName = "master") public List userShipperList(UserShipperDO userShipperDO) { // 数据权限逻辑已在 UserShipperApplicationService.userShipperList 中处理 // 这里不再重复处理数据权限,直接使用传入的参数进行查询 diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index 7b6baaea4..6bf4ff00a 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -20,15 +20,15 @@ spring: discovery: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 -# server-addr: 10.102.192.30:6848 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 -# server-addr: 10.102.192.30:6848 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml index 02112d51b..54f8dd8c7 100644 --- a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml @@ -379,13 +379,22 @@ /*用户组织ID*/ /*用户组织ID*/ - + AND ( - a.organization_id = #{organizationId} - OR b.org_code LIKE concat('%"code":"', #{organizationId}, '"%') - OR b.org_code LIKE concat('%code:', #{organizationId}, '%') - OR b.org_code LIKE concat('%code: ', #{organizationId}, '%') - OR b.org_code LIKE concat('%"code":', #{organizationId}, '%') + + a.organization_id = #{organizationId} + OR b.org_code LIKE concat('%"code":"', #{organizationId}, '"%') + OR b.org_code LIKE concat('%code:', #{organizationId}, '%') + OR b.org_code LIKE concat('%code: ', #{organizationId}, '%') + OR b.org_code LIKE concat('%"code":', #{organizationId}, '%') + + + OR + b.org_code LIKE concat('%code:', #{orgCode}, '%') + OR b.org_code LIKE concat('%code: ', #{orgCode}, '%') + OR b.org_code LIKE concat('%"code":', #{orgCode}, '%') + OR b.org_code LIKE concat('%"code":"', #{orgCode}, '"%') + ) /*组织名称*/ From 9519d8610b8e9318803924696985115aa4977262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 11 Aug 2026 18:20:37 +0800 Subject: [PATCH 3/7] 31 --- .../src/main/java/com/mhd/system/api/BmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/OmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WlhyServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/YmsServiceFeign.java | 2 +- mhd-user-center/src/main/resources/bootstrap.yml | 4 ++-- .../mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java index e18484e8d..8cc8bfd57 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java @@ -18,7 +18,7 @@ import java.util.Set; /** * bms财务结算系统feign调用接口 */ -@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.3:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.32:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface BmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java index 42ad32c55..8ef01baad 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.concurrent.CompletableFuture; -@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.4:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.33:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface OmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java index e4a817238..d976fcc98 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java @@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.30:8014",configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.31:8014",configuration = FeignAutoConfiguration.class) public interface WlhyServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 558c4250e..28bee652c 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -21,7 +21,7 @@ import java.util.Map; * @description: TODO * @date 2024/5/10 8:58 **/ -@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.3:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.32:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface WmsServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java index dfac7337f..238ec5f81 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java @@ -9,7 +9,7 @@ import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; -@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.4:8018", configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.33:8018", configuration = FeignAutoConfiguration.class) public interface YmsServiceFeign { /** diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index 6bf4ff00a..dd13bfba5 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -21,14 +21,14 @@ spring: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 # server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.30:6848 + server-addr: 10.102.192.31:6848 username: nacos password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 # server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.30:6848 + server-addr: 10.102.192.31:6848 username: nacos password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java index ca93d3312..8c86ae1ad 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java +++ b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java @@ -22,7 +22,7 @@ import java.util.Map; /** * 三方服务 Feign */ -@FeignClient(contextId = "thirdPartyServiceFeign",url = "http://10.102.192.30:8012", value = ServiceNameConstants.THIRDPARTY_CENTER, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "thirdPartyServiceFeign",url = "http://10.102.192.31:8012", value = ServiceNameConstants.THIRDPARTY_CENTER, configuration = FeignAutoConfiguration.class) public interface ThirdPartyServiceFeign { //查询当前组织所有三方接口信息 From 300b5ac239fee77ba6110fc55bf1b5fb78fff7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 11 Aug 2026 23:11:25 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E8=A7=92=E8=89=B2=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=88=86=E9=85=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserShipperApplicationService.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index 3c6fdfd18..f522300bb 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -458,15 +458,26 @@ public class UserShipperApplicationService { } /** - * 导入时若账号没有任何角色,则补分配企业货主角色 + * 导入委托方时,确保账号绑定的是企业货主(company)角色。 + * 若账号已有 company 角色则跳过;否则先删除已绑定的其他角色(如 addUser 自动分配的 ownerCargo), + * 再重新分配当前组织下的 company 角色,避免登录报“账号未授权角色信息”。 */ private void assignCompanyRoleIfMissing(Long userId, Long organizationId) { if (userId == null || organizationId == null) { return; } + // 已绑定 company 角色则无需处理 List existingRoles = userRoleDomainService.selectRolesByUserId(userId); if (CollUtil.isNotEmpty(existingRoles)) { - return; + boolean hasCompany = existingRoles.stream() + .anyMatch(r -> RoleEnum.COMPANY.getCode().equals(r.getRoleCode())); + if (hasCompany) { + return; + } + // 没有 company 角色:删除之前绑定的错误角色(如 ownerCargo),重新分配 company + log.info("导入委托方 - 用户{}已有角色但缺少company角色,删除原角色后重新分配,原角色: {}", + userId, existingRoles.stream().map(UserRoleMenuPO::getRoleCode).collect(Collectors.toList())); + userRoleDomainService.deleteByUserId(userId); } // 按 role_code + organization_id 精确匹配角色(selectByOrganizationIdAndRoleCode 的 common_where 不含 roleCode 过滤,不适用) RolePO rolePO = roleDomainService.selectByRoleCodeAndOrganizationId(RoleEnum.COMPANY.getCode(), organizationId); @@ -568,8 +579,8 @@ public class UserShipperApplicationService { userDO.setUserSalt(salt); } userDomainService.updateUser(userDO); - // 如果该账号没有任何角色,补分配企业货主角色,避免登录报“账号未授权角色信息” - assignCompanyRoleIfMissing(userId, existingShipper.getOrganizationId()); + // 如果该账号没有企业货主(company)角色,补分配当前导入组织下的 company 角色,避免登录报“账号未授权角色信息” + assignCompanyRoleIfMissing(userId, currentOrgId); } // 3. 更新 orgCode 中当前组织的 ncCustomer From 7e496834ae972fc038121033cdb16123db57e25d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 11 Aug 2026 23:16:20 +0800 Subject: [PATCH 5/7] 30 --- .../src/main/java/com/mhd/system/api/BmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/OmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WlhyServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/YmsServiceFeign.java | 2 +- mhd-user-center/src/main/resources/bootstrap.yml | 4 ++-- .../mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java index 8cc8bfd57..e18484e8d 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java @@ -18,7 +18,7 @@ import java.util.Set; /** * bms财务结算系统feign调用接口 */ -@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.32:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.3:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface BmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java index 8ef01baad..42ad32c55 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.concurrent.CompletableFuture; -@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.33:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.4:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface OmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java index d976fcc98..e4a817238 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java @@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.31:8014",configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.30:8014",configuration = FeignAutoConfiguration.class) public interface WlhyServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 28bee652c..558c4250e 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -21,7 +21,7 @@ import java.util.Map; * @description: TODO * @date 2024/5/10 8:58 **/ -@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.32:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.3:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface WmsServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java index 238ec5f81..dfac7337f 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java @@ -9,7 +9,7 @@ import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; -@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.33:8018", configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.4:8018", configuration = FeignAutoConfiguration.class) public interface YmsServiceFeign { /** diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index dd13bfba5..6bf4ff00a 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -21,14 +21,14 @@ spring: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 # server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.31:6848 + server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 # server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.31:6848 + server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java index 8c86ae1ad..ca93d3312 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java +++ b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java @@ -22,7 +22,7 @@ import java.util.Map; /** * 三方服务 Feign */ -@FeignClient(contextId = "thirdPartyServiceFeign",url = "http://10.102.192.31:8012", value = ServiceNameConstants.THIRDPARTY_CENTER, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "thirdPartyServiceFeign",url = "http://10.102.192.30:8012", value = ServiceNameConstants.THIRDPARTY_CENTER, configuration = FeignAutoConfiguration.class) public interface ThirdPartyServiceFeign { //查询当前组织所有三方接口信息 From de4d4fa70d36b96e4d761b801bfa02650abcaffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 12 Aug 2026 00:00:43 +0800 Subject: [PATCH 6/7] 30 --- .../UserShipperApplicationService.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index f522300bb..fd45a1f66 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -458,24 +458,27 @@ public class UserShipperApplicationService { } /** - * 导入委托方时,确保账号绑定的是企业货主(company)角色。 - * 若账号已有 company 角色则跳过;否则先删除已绑定的其他角色(如 addUser 自动分配的 ownerCargo), - * 再重新分配当前组织下的 company 角色,避免登录报“账号未授权角色信息”。 + * 导入委托方时,确保账号仅绑定企业货主(company)角色。 + * 注意:authShipper 会把“当前登录管理员的所有角色”都分配给导入用户, + * 因此这里必须保证用户最终只绑定 company 角色——若现有角色不是“唯一的 company 角色”, + * 一律删除后重新分配,避免残留 ownerCargo 等多条错误角色。 */ private void assignCompanyRoleIfMissing(Long userId, Long organizationId) { if (userId == null || organizationId == null) { return; } - // 已绑定 company 角色则无需处理 + // 查询用户现有角色 List existingRoles = userRoleDomainService.selectRolesByUserId(userId); + // 只有恰好绑定了唯一的 company 角色时,才认为正确,无需处理 + boolean onlyCompany = !CollUtil.isEmpty(existingRoles) + && existingRoles.size() == 1 + && RoleEnum.COMPANY.getCode().equals(existingRoles.get(0).getRoleCode()); + if (onlyCompany) { + return; + } + // 否则:删除所有现有角色(ownerCargo、或多个角色),重新分配 company if (CollUtil.isNotEmpty(existingRoles)) { - boolean hasCompany = existingRoles.stream() - .anyMatch(r -> RoleEnum.COMPANY.getCode().equals(r.getRoleCode())); - if (hasCompany) { - return; - } - // 没有 company 角色:删除之前绑定的错误角色(如 ownerCargo),重新分配 company - log.info("导入委托方 - 用户{}已有角色但缺少company角色,删除原角色后重新分配,原角色: {}", + log.info("导入委托方 - 用户{}角色不正确,删除原角色后重新分配company,原角色: {}", userId, existingRoles.stream().map(UserRoleMenuPO::getRoleCode).collect(Collectors.toList())); userRoleDomainService.deleteByUserId(userId); } From 59ede5ceb7f45025d5f9e11ef871e20d03fcfc5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 12 Aug 2026 00:04:33 +0800 Subject: [PATCH 7/7] 31 --- .../src/main/java/com/mhd/system/api/BmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/OmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WlhyServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/YmsServiceFeign.java | 2 +- mhd-user-center/src/main/resources/bootstrap.yml | 4 ++-- .../mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java index e18484e8d..8cc8bfd57 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java @@ -18,7 +18,7 @@ import java.util.Set; /** * bms财务结算系统feign调用接口 */ -@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.3:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.32:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface BmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java index 42ad32c55..8ef01baad 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.concurrent.CompletableFuture; -@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.4:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.33:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface OmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java index e4a817238..d976fcc98 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java @@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.30:8014",configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.31:8014",configuration = FeignAutoConfiguration.class) public interface WlhyServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 558c4250e..28bee652c 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -21,7 +21,7 @@ import java.util.Map; * @description: TODO * @date 2024/5/10 8:58 **/ -@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.3:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.32:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface WmsServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java index dfac7337f..238ec5f81 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java @@ -9,7 +9,7 @@ import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; -@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.4:8018", configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.33:8018", configuration = FeignAutoConfiguration.class) public interface YmsServiceFeign { /** diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index 6bf4ff00a..dd13bfba5 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -21,14 +21,14 @@ spring: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 # server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.30:6848 + server-addr: 10.102.192.31:6848 username: nacos password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 # server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.30:6848 + server-addr: 10.102.192.31:6848 username: nacos password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java index ca93d3312..8c86ae1ad 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java +++ b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/ThirdPartyServiceFeign.java @@ -22,7 +22,7 @@ import java.util.Map; /** * 三方服务 Feign */ -@FeignClient(contextId = "thirdPartyServiceFeign",url = "http://10.102.192.30:8012", value = ServiceNameConstants.THIRDPARTY_CENTER, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "thirdPartyServiceFeign",url = "http://10.102.192.31:8012", value = ServiceNameConstants.THIRDPARTY_CENTER, configuration = FeignAutoConfiguration.class) public interface ThirdPartyServiceFeign { //查询当前组织所有三方接口信息