From ce15d74146ecfd49b248fd9329f7169c771f512a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=80=A1?= Date: Tue, 5 Aug 2025 17:39:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7=E5=92=8C?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BE=9B=E5=BA=94=E5=95=86=E7=94=A8=E6=88=B7?= =?UTF-8?q?VO=E7=B1=BB=EF=BC=8C=E8=B0=83=E6=95=B4=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E5=B1=82=E7=BA=A7=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E4=BC=A0=E9=80=92=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../login/dao/mapper/BaseUserMapper.xml | 18 +++--- .../service/impl/BaseUserServiceImpl.java | 1 - .../ebtp/system/org/entity/SysOrg.java | 6 ++ .../org/service/impl/SysOrgServiceImpl.java | 60 ++++++++++++++++--- .../controller/SysSupplierUserController.java | 7 ++- .../user/entity/vo/SysSupplierUserVO.java | 28 +++++++++ .../user/service/SysSupplierUserService.java | 5 +- .../impl/SysSupplierUserServiceImpl.java | 14 +++-- 8 files changed, 108 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/coscoshipping/ebtp/system/user/entity/vo/SysSupplierUserVO.java diff --git a/src/main/java/com/coscoshipping/ebtp/system/login/dao/mapper/BaseUserMapper.xml b/src/main/java/com/coscoshipping/ebtp/system/login/dao/mapper/BaseUserMapper.xml index 4be3347..b3b2b2d 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/login/dao/mapper/BaseUserMapper.xml +++ b/src/main/java/com/coscoshipping/ebtp/system/login/dao/mapper/BaseUserMapper.xml @@ -52,7 +52,6 @@ - - @@ -145,8 +141,9 @@ sys_role r WHERE u.user_id = ou.user_id - AND ou.role_id = r.role_id - AND u.user_id = #{userId} + AND ou.role_id = r.role_id + AND r.role_scope = 'SUP' + AND u.user_id = #{userId} @@ -162,8 +159,9 @@ sys_role r WHERE u.user_id = ou.user_id - AND ou.role_id = r.role_id - AND u.user_id = #{userId} + AND ou.role_id = r.role_id + AND r.role_scope = 'EXPE' + AND u.user_id = #{userId} diff --git a/src/main/java/com/coscoshipping/ebtp/system/login/service/impl/BaseUserServiceImpl.java b/src/main/java/com/coscoshipping/ebtp/system/login/service/impl/BaseUserServiceImpl.java index f4b73dd..3f2cf6c 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/login/service/impl/BaseUserServiceImpl.java +++ b/src/main/java/com/coscoshipping/ebtp/system/login/service/impl/BaseUserServiceImpl.java @@ -141,7 +141,6 @@ public class BaseUserServiceImpl extends BaseServiceImpl imp @Override public Boolean insertByVo(SysOrgVO vo) { + // 无上级机构情况下默认赋予根节点 + String upOrgId = vo.getUpOrgId(); + if (StringUtils.isEmpty(upOrgId)) { + vo.setUpOrgId(CommonUtil.ROOT_NODE); + } + vo.setOrgId(PropertyUtils.getSnowflakeId()).setCreateDate(LocalDateTime.now()); + + // 添加全路径与全路径名称,同时设置公司相关信息 SysOrg full = this.buildOrgFullPath(vo); vo.setOrgFullId(full.getOrgFullId()).setOrgFullName(full.getOrgFullName()); + + // 设置所属公司编码和名称 + if (full.getCuCompanyNumber() != null) { + vo.setCuCompanyNumber(full.getCuCompanyNumber()); + vo.setCuCompanyName(full.getCuCompanyName()); + } + validEntityBeforeSave(vo, false); boolean result = baseMapper.insert(vo) > 0; - + // 新增成功后刷新缓存 if (result) { orgCacheManager.refreshCache(); } - + return result; } @@ -191,15 +206,22 @@ public class SysOrgServiceImpl extends BaseServiceImpl imp validEntityBeforeSave(vo, true); SysOrg full = this.buildOrgFullPath(vo); vo.setOrgFullId(full.getOrgFullId()).setOrgFullName(full.getOrgFullName()); + + // 设置所属公司编码和名称 + if (full.getCuCompanyNumber() != null) { + vo.setCuCompanyNumber(full.getCuCompanyNumber()); + vo.setCuCompanyName(full.getCuCompanyName()); + } + // 删除机构与人员关联 // roleMenuService.remove(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, vo.getRoleId())); boolean result = baseMapper.updateById(vo) > 0; - + // 更新成功后刷新缓存 if (result) { orgCacheManager.refreshCache(); } - + return result; } @@ -212,12 +234,12 @@ public class SysOrgServiceImpl extends BaseServiceImpl imp // 删除机构与人员关联 // roleMenuService.remove(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, roleId)); boolean result = this.removeById(orgId); - + // 删除成功后刷新缓存 if (result) { orgCacheManager.refreshCache(); } - + return result; } @@ -237,17 +259,29 @@ public class SysOrgServiceImpl extends BaseServiceImpl imp } - // @Override + /** + * 构建组织全路径并查找最近的上级公司组织 + * @param nowOrg 当前组织 + * @return 包含全路径信息和公司组织信息的对象 + */ public SysOrg buildOrgFullPath(SysOrg nowOrg) { String upOrgId = StringUtils.isBlank(nowOrg.getUpOrgId()) ? CommonUtil.ROOT_NODE : nowOrg.getUpOrgId(); List idPath = new ArrayList<>(); List namePath = new ArrayList<>(); idPath.add(0, nowOrg.getOrgId()); namePath.add(0, nowOrg.getOrgName()); + SysOrg currentOrg = baseMapper.selectById(upOrgId); + SysOrg companyOrg = null; // 用于存储找到的公司组织 + while (currentOrg != null) { idPath.add(0, currentOrg.getOrgId()); namePath.add(0, currentOrg.getOrgName()); + + // 如果还没有找到公司组织,且当前组织的orgCategory是"Org",则记录 + if (companyOrg == null && "Org".equals(currentOrg.getOrgCategory())) { + companyOrg = currentOrg; + } if (StringUtils.isBlank(currentOrg.getUpOrgId()) || currentOrg.getUpOrgId().equals(CommonUtil.ROOT_NODE)) { break; @@ -257,11 +291,19 @@ public class SysOrgServiceImpl extends BaseServiceImpl imp } String orgFullId = String.join(",", idPath); - String orgFullName = String.join("--", namePath); + String orgFullName = String.join(",", namePath); - return new SysOrg().setOrgId(idPath.get(idPath.size() - 1)) + SysOrg result = new SysOrg().setOrgId(idPath.get(idPath.size() - 1)) .setOrgFullId(orgFullId) .setOrgFullName(orgFullName); + + // 如果找到了公司组织,设置公司相关信息 + if (companyOrg != null) { + result.setCuCompanyNumber(companyOrg.getOrgId()); + result.setCuCompanyName(companyOrg.getOrgName()); + } + + return result; } diff --git a/src/main/java/com/coscoshipping/ebtp/system/user/controller/SysSupplierUserController.java b/src/main/java/com/coscoshipping/ebtp/system/user/controller/SysSupplierUserController.java index 5a8a91d..fc65b86 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/user/controller/SysSupplierUserController.java +++ b/src/main/java/com/coscoshipping/ebtp/system/user/controller/SysSupplierUserController.java @@ -3,6 +3,7 @@ package com.coscoshipping.ebtp.system.user.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser; +import com.coscoshipping.ebtp.system.user.entity.vo.SysSupplierUserVO; import com.coscoshipping.ebtp.system.user.service.SysSupplierUserService; import com.coscoshipping.ebtp.system.user.vo.SupplierRegistrationVO; import io.swagger.annotations.Api; @@ -51,13 +52,13 @@ public class SysSupplierUserController { /** * 供应商用户分页查询 * - * @param sysSupplierUser 查询条件 + * @param sysSupplierUserVO 查询条件 * @return 分页结果 */ @ApiOperation("供应商用户分页查询") @PostMapping("/getPage") - public BaseResponse> getPage(@ApiParam(value = "查询条件", required = true) @RequestBody SysSupplierUser sysSupplierUser) { - return BaseResponse.success(sysSupplierUserService.getPage(sysSupplierUser)); + public BaseResponse> getPage(@ApiParam(value = "查询条件", required = true) @RequestBody SysSupplierUserVO sysSupplierUserVO) { + return BaseResponse.success(sysSupplierUserService.getPage(sysSupplierUserVO)); } /** diff --git a/src/main/java/com/coscoshipping/ebtp/system/user/entity/vo/SysSupplierUserVO.java b/src/main/java/com/coscoshipping/ebtp/system/user/entity/vo/SysSupplierUserVO.java new file mode 100644 index 0000000..41cfc73 --- /dev/null +++ b/src/main/java/com/coscoshipping/ebtp/system/user/entity/vo/SysSupplierUserVO.java @@ -0,0 +1,28 @@ +package com.coscoshipping.ebtp.system.user.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** +* 实体类 SysSupplierUserVO-供应商用户表VO +* +* @author yss +*/ +@Data +@Accessors(chain = true) +@TableName(autoResultMap = true) +@ApiModel("供应商用户信息VO类") +public class SysSupplierUserVO extends SysSupplierUser implements Serializable { + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; +} \ No newline at end of file diff --git a/src/main/java/com/coscoshipping/ebtp/system/user/service/SysSupplierUserService.java b/src/main/java/com/coscoshipping/ebtp/system/user/service/SysSupplierUserService.java index e14877d..b3b2a24 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/user/service/SysSupplierUserService.java +++ b/src/main/java/com/coscoshipping/ebtp/system/user/service/SysSupplierUserService.java @@ -3,6 +3,7 @@ package com.coscoshipping.ebtp.system.user.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser; +import com.coscoshipping.ebtp.system.user.entity.vo.SysSupplierUserVO; import com.coscoshipping.ebtp.system.user.vo.SupplierRegistrationVO; /** @@ -14,10 +15,10 @@ public interface SysSupplierUserService extends IBaseService { /** * 供应商用户分页查询 - * @param sysSupplierUser 供应商用户信息 + * @param sysSupplierUserVO 供应商用户VO信息 * @return 返回结果 */ - IPage getPage(SysSupplierUser sysSupplierUser); + IPage getPage(SysSupplierUserVO sysSupplierUserVO); /** * 新增供应商用户 diff --git a/src/main/java/com/coscoshipping/ebtp/system/user/service/impl/SysSupplierUserServiceImpl.java b/src/main/java/com/coscoshipping/ebtp/system/user/service/impl/SysSupplierUserServiceImpl.java index 3a9c1be..8de9736 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/user/service/impl/SysSupplierUserServiceImpl.java +++ b/src/main/java/com/coscoshipping/ebtp/system/user/service/impl/SysSupplierUserServiceImpl.java @@ -9,6 +9,7 @@ import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser; +import com.coscoshipping.ebtp.system.user.entity.vo.SysSupplierUserVO; import com.coscoshipping.ebtp.system.user.service.SysSupplierUserService; import com.coscoshipping.ebtp.system.user.dao.SysSupplierUserMapper; import com.coscoshipping.ebtp.system.user.util.AccountGeneratorUtil; @@ -47,12 +48,13 @@ public class SysSupplierUserServiceImpl extends BaseServiceImpl getPage(SysSupplierUser sysSupplierUser) { - LambdaQueryWrapper query = buildQueryWrapper(sysSupplierUser); - - // 如果没有分页请求,创建一个默认的 - BasePageRequest basePageRequest = new BasePageRequest(); - + public IPage getPage(SysSupplierUserVO sysSupplierUserVO) { + LambdaQueryWrapper query = buildQueryWrapper(sysSupplierUserVO); + // 从VO中获取分页请求,如果没有则创建默认的 + BasePageRequest basePageRequest = sysSupplierUserVO.getBasePageRequest(); + if (basePageRequest == null) { + basePageRequest = new BasePageRequest(); + } // 查询 IPage result = new Page<>(basePageRequest.getPageNo(), basePageRequest.getPageSize()); result = this.page(result, query);