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