From ff859437dd9d18d9d7411bafc4c31038f940b9f2 Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期五, 09 八月 2024 18:53:56 +0800 Subject: [PATCH] 添加管理员和非管理员的站点权限功能 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java | 3 ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 4 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java | 3 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/RoleSiteFallbackFactory.java | 33 +++++ ruoyi-service/ruoyi-chargingPile/pom.xml | 6 + ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java | 27 ++++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 20 +++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java | 28 ++++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java | 25 ++++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 21 +++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 20 +++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/UserSiteFallbackFactory.java | 32 +++++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 24 +++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java | 23 +++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserSiteController.java | 28 ++++ 17 files changed, 286 insertions(+), 17 deletions(-) diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/RoleSiteFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/RoleSiteFallbackFactory.java new file mode 100644 index 0000000..2fd74a2 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/RoleSiteFallbackFactory.java @@ -0,0 +1,33 @@ +package com.ruoyi.other.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 商品服务降级处理 + * + * @author ruoyi + */ +@Component +public class RoleSiteFallbackFactory implements FallbackFactory<RoleSiteClient> { + private static final Logger log = LoggerFactory.getLogger(RoleSiteFallbackFactory.class); + + @Override + public RoleSiteClient create(Throwable throwable) { + log.error("调用失败:{}", throwable.getMessage()); + return new RoleSiteClient() { + + @Override + public R<List<Integer>> getSiteIds(Long roleId) { + return R.fail("获取角色站点失败:" + throwable.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/UserSiteFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/UserSiteFallbackFactory.java new file mode 100644 index 0000000..8b5c1d9 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/UserSiteFallbackFactory.java @@ -0,0 +1,32 @@ +package com.ruoyi.other.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.feignClient.UserSiteClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 商品服务降级处理 + * + * @author ruoyi + */ +@Component +public class UserSiteFallbackFactory implements FallbackFactory<UserSiteClient> { + private static final Logger log = LoggerFactory.getLogger(UserSiteFallbackFactory.class); + + @Override + public UserSiteClient create(Throwable throwable) { + log.error("调用失败:{}", throwable.getMessage()); + return new UserSiteClient() { + + @Override + public R<List<Integer>> getSiteIds(Long userId) { + return R.fail("获取用户站点失败:" + throwable.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java new file mode 100644 index 0000000..55cd966 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java @@ -0,0 +1,28 @@ +package com.ruoyi.other.api.feignClient; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.factory.RoleSiteFallbackFactory; +import com.ruoyi.other.api.factory.UserSiteFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2024/8/9 18:14 + */ +@FeignClient(contextId = "RoleSiteClient", value = ServiceNameConstants.CONTRACT_SERVICE, fallbackFactory = RoleSiteFallbackFactory.class) +public interface RoleSiteClient { + + + /** + * 根据角色id获取可访问的站点数据 + * @param roleId + * @return + */ + @GetMapping("/t-user-site/getSiteIds") + R<List<Integer>> getSiteIds(@RequestParam("roleId") Long roleId); +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java new file mode 100644 index 0000000..57d0450 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java @@ -0,0 +1,27 @@ +package com.ruoyi.other.api.feignClient; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.factory.UserSiteFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2024/8/9 18:14 + */ +@FeignClient(contextId = "UserSiteClient", value = ServiceNameConstants.CONTRACT_SERVICE, fallbackFactory = UserSiteFallbackFactory.class) +public interface UserSiteClient { + + + /** + * 根据用户id获取可访问的站点数据 + * @param userId + * @return + */ + @GetMapping("/t-user-site/getSiteIds") + R<List<Integer>> getSiteIds(@RequestParam("userId") Long userId); +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 342bca3..42bb01c 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,3 @@ -com.ruoyi.other.api.factory.GoodsFallbackFactory \ No newline at end of file +com.ruoyi.other.api.factory.OtherFallbackFactory +com.ruoyi.other.api.factory.UserSiteFallbackFactory +com.ruoyi.other.api.factory.RoleSiteFallbackFactory \ No newline at end of file diff --git a/ruoyi-service/ruoyi-chargingPile/pom.xml b/ruoyi-service/ruoyi-chargingPile/pom.xml index eeef897..cfa425f 100644 --- a/ruoyi-service/ruoyi-chargingPile/pom.xml +++ b/ruoyi-service/ruoyi-chargingPile/pom.xml @@ -114,6 +114,12 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-api-other</artifactId> + <version>3.6.2</version> + <scope>compile</scope> + </dependency> </dependencies> diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 33c4558..1af8a88 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -14,6 +14,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import io.swagger.annotations.ApiImplicitParam; @@ -23,7 +25,9 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author zhibing.pu @@ -41,6 +45,12 @@ @Resource private SysUserClient sysUserClient; + + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; @@ -120,8 +130,17 @@ Integer objectId = sysUser.getObjectId(); LambdaQueryWrapper<Site> wrapper = new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0); if(2 == roleType){ - List<Integer> list = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + Set<Integer> list = partnerService.authSite(objectId, SiteMenu.SITE_LIST); wrapper.in(Site::getId, list); + }else{ + //非管理员需要根据角色和用户配置查询允许的站点数据 + if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); + data.addAll(data1); + Set<Integer> list = new HashSet<>(data); + wrapper.in(Site::getId, list); + } } List<Site> list = siteService.list(wrapper.orderByDesc(Site::getCreateTime)); return AjaxResult.success(list); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java index 0bf2781..0305c89 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java @@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * @author zhibing.pu @@ -25,7 +26,7 @@ * @param siteList * @return */ - List<GetSiteListDTO> getSiteList(PageInfo<GetSiteListDTO> pageInfo, @Param("item") GetSiteList siteList, @Param("ids") List<Integer> ids); + List<GetSiteListDTO> getSiteList(PageInfo<GetSiteListDTO> pageInfo, @Param("item") GetSiteList siteList, @Param("ids") Set<Integer> ids); /** * 获取站点分页列表 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java index 2076f7a..7ce3dd6 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * <p> @@ -27,6 +28,6 @@ * @param pageInfo * @return */ - List<TChargingGunVO> pageList(@Param("query") TChargingGunQuery query, @Param("pageInfo")PageInfo<TChargingGunVO> pageInfo, @Param("siteIds") List<Integer> siteIds); + List<TChargingGunVO> pageList(@Param("query") TChargingGunQuery query, @Param("pageInfo")PageInfo<TChargingGunVO> pageInfo, @Param("siteIds") Set<Integer> siteIds); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java index c4b4151..9ab3a93 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * <p> @@ -27,7 +28,7 @@ * @param page * @return */ - List<PageChargingPileListDTO> pageChargingPileList(PageInfo<PageChargingPileListDTO> pageInfo, @Param("item") PageChargingPileList page, @Param("siteIds") List<Integer> siteIds); + List<PageChargingPileListDTO> pageChargingPileList(PageInfo<PageChargingPileListDTO> pageInfo, @Param("item") PageChargingPileList page, @Param("siteIds") Set<Integer> siteIds); /** diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java index ad23cf3..4821f5d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Set; /** * @author zhibing.pu @@ -85,7 +86,7 @@ * @param siteMenu 授权菜单路径枚举类 * @return */ - List<Integer> authSite(Integer partnerId, SiteMenu siteMenu); + Set<Integer> authSite(Integer partnerId, SiteMenu siteMenu); /** diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java index e89e9e0..b3fceeb 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java @@ -16,6 +16,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysRoleClient; @@ -54,6 +56,12 @@ @Resource private TChargingPileService chargingPileService; + + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; @@ -391,16 +399,24 @@ * @return */ @Override - public List<Integer> authSite(Integer partnerId, SiteMenu siteMenu) { + public Set<Integer> authSite(Integer partnerId, SiteMenu siteMenu) { TSiteMenu one = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, siteMenu.getValue()).eq(TSiteMenu::getStatus, 0)); List<TPartnerSite> list = partnerSiteService.list(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, one.getMenuId())); List<Integer> collect = list.stream().map(TPartnerSite::getSiteId).collect(Collectors.toList()); - if(collect.size() == 0){ - collect.add(-1); + //获取合作商用户关联的站点数据 + Partner partner = this.getById(partnerId); + SysUser sysUser = sysUserClient.queryUserByUserName(partner.getAccount()).getData(); + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); + collect.addAll(data); + collect.addAll(data1); + Set<Integer> siteIds = new HashSet<>(collect); + if(siteIds.size() == 0){ + siteIds.add(-1); } - return collect; + return siteIds; } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java index c617bbd..5e6ae0e 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java @@ -21,6 +21,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; @@ -28,7 +30,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author zhibing.pu @@ -49,6 +53,12 @@ @Resource private IPartnerService partnerService; + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; + /** @@ -58,7 +68,7 @@ */ @Override public PageInfo<GetSiteListDTO> getSiteList(GetSiteList siteList) { - List<Integer> ids = null; + Set<Integer> ids = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); @@ -66,6 +76,14 @@ //合作商 if(roleType == 2){ ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + }else{ + //非管理员需要根据角色和用户配置查询允许的站点数据 + if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); + data.addAll(data1); + ids = new HashSet<>(data); + } } PageInfo<GetSiteListDTO> pageInfo = new PageInfo<>(siteList.getPageCurr(), siteList.getPageSize()); List<GetSiteListDTO> list = this.baseMapper.getSiteList(pageInfo, siteList, ids); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java index b97602d..06d2090 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java @@ -15,12 +15,17 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * <p> @@ -38,13 +43,19 @@ @Resource private IPartnerService partnerService; + + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; @Override public PageInfo<TChargingGunVO> pageList(TChargingGunQuery query) { - List<Integer> siteIds = null; + Set<Integer> siteIds = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); @@ -52,6 +63,14 @@ //合作商 if(roleType == 2){ siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_GUN); + }else{ + //非管理员需要根据角色和用户配置查询允许的站点数据 + if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); + data.addAll(data1); + siteIds = new HashSet<>(data); + } } PageInfo<TChargingGunVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<TChargingGunVO> list = this.baseMapper.pageList(query,pageInfo, siteIds); @@ -95,6 +114,10 @@ */ @Override public AjaxResult update(TChargingGunDTO dto) { + TChargingGun chargingGun = this.getById(dto.getId()); + if(Arrays.asList(3,4,5,6).contains(chargingGun.getStatus())){ + return AjaxResult.error("接口占用中,无法编辑!"); + } AjaxResult ajaxResult = addVerify(dto); if(ajaxResult.isError()){ return ajaxResult; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 055590a..fc4ca37 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -16,12 +16,16 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -44,6 +48,12 @@ @Resource private IPartnerService partnerService; + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; + @@ -54,7 +64,7 @@ */ @Override public PageInfo<PageChargingPileListDTO> pageChargingPileList(PageChargingPileList page) { - List<Integer> siteIds = null; + Set<Integer> siteIds = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); @@ -62,6 +72,14 @@ //合作商 if(roleType == 2){ siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_PILE); + }else{ + //非管理员需要根据角色和用户配置查询允许的站点数据 + if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); + data.addAll(data1); + siteIds = new HashSet<>(data); + } } PageInfo<PageChargingPileListDTO> pageInfo = new PageInfo<>(page.getPageCurr(), page.getPageSize()); List<PageChargingPileListDTO> list = this.baseMapper.pageChargingPileList(pageInfo, page, siteIds); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java index 0fa48ec..9be842e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java @@ -1,9 +1,15 @@ package com.ruoyi.other.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.TRoleSite; +import com.ruoyi.other.service.TRoleSiteService; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -17,5 +23,18 @@ @RequestMapping("/t-role-site") public class TRoleSiteController { + @Resource + private TRoleSiteService roleSiteService; + + + @ResponseBody + @GetMapping("/getSiteIds") + public R<List<Integer>> getSiteIds(@RequestParam("roleId") Long roleId){ + List<TRoleSite> list = roleSiteService.list(new LambdaQueryWrapper<TRoleSite>().eq(TRoleSite::getRoleId, roleId)); + List<Integer> collect = list.stream().map(TRoleSite::getSiteId).collect(Collectors.toList()); + return R.ok(collect); + } + + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserSiteController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserSiteController.java index 4800cb2..2c9b26b 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserSiteController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserSiteController.java @@ -1,9 +1,15 @@ package com.ruoyi.other.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.TUserSite; +import com.ruoyi.other.service.TUserSiteService; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -17,5 +23,23 @@ @RequestMapping("/t-user-site") public class TUserSiteController { + @Resource + private TUserSiteService userSiteService; + + + /** + * 根据用户id获取可访问的站点数据 + * @param userId 用户id + * @return + */ + @ResponseBody + @GetMapping("/getSiteIds") + public R<List<Integer>> getSiteIds(@RequestParam("userId") Long userId){ + List<TUserSite> list = userSiteService.list(new LambdaQueryWrapper<TUserSite>().eq(TUserSite::getUserId, userId)); + List<Integer> collect = list.stream().map(TUserSite::getSiteId).collect(Collectors.toList()); + return R.ok(collect); + } + + } -- Gitblit v1.7.1