委托方导入修改
This commit is contained in:
+33
-29
@@ -166,6 +166,17 @@ public class UserShipperApplicationService {
|
||||
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<UserShipperPo> 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);
|
||||
// 其他组织:设置 organizationId 为当前登录组织ID。
|
||||
// 查询条件为:a.organization_id = 本组织 OR b.org_code LIKE 本组织ID
|
||||
// 即委托方初始绑定本组织、或 org_code 中包含本组织(被授权给本组织)时,均可查到。
|
||||
// 不设置 topOrganizationId,避免跨顶级组织授权(org_code 已包含本组织)被顶级组织条件拦截。
|
||||
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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ public class UserShipperDomainService {
|
||||
}
|
||||
}
|
||||
|
||||
// @DataPermissions(cacheName = "master")
|
||||
// @DataPermissions(cacheName = "master")
|
||||
public List<UserShipperPo> userShipperList(UserShipperDO userShipperDO) {
|
||||
// 数据权限逻辑已在 UserShipperApplicationService.userShipperList 中处理
|
||||
// 这里不再重复处理数据权限,直接使用传入的参数进行查询
|
||||
|
||||
@@ -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,如果使用默认分组可以不配置
|
||||
|
||||
@@ -379,13 +379,22 @@
|
||||
</if>
|
||||
/*用户组织ID*/
|
||||
/*用户组织ID*/
|
||||
<if test="organizationId !=null">
|
||||
<if test="organizationId !=null or (orgCode != null and orgCode != '')">
|
||||
AND (
|
||||
<if test="organizationId !=null">
|
||||
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}, '%')
|
||||
</if>
|
||||
<if test="orgCode != null and orgCode != ''">
|
||||
<if test="organizationId !=null"> OR </if>
|
||||
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}, '"%')
|
||||
</if>
|
||||
)
|
||||
</if>
|
||||
/*组织名称*/
|
||||
|
||||
Reference in New Issue
Block a user