From c5a96f35ff17e71a330fd391bc3866cead3d13b4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 14 八月 2024 15:59:42 +0800
Subject: [PATCH] 充电桩权限管理

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java             |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java |   39 +++++++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingLotService.java                   |    9 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingLotMapper.java                     |   12 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java          |   71 +++++++++++++++++
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml                           |   23 +++++
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TMonitoringEquipmentVO.java                |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml                  |    6 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TMonitoringEquipmentMapper.java            |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingLotVO.java                         |   14 +++
 10 files changed, 177 insertions(+), 7 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TMonitoringEquipmentVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TMonitoringEquipmentVO.java
index ff55ae9..3cfd12e 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TMonitoringEquipmentVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TMonitoringEquipmentVO.java
@@ -12,4 +12,7 @@
     @ApiModelProperty(value = "停车场名称")
     private String parkingLotName;
 
+    @ApiModelProperty(value = "查看权限")
+    private boolean authQueryInfo = true;
+
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingLotVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingLotVO.java
index ba7b831..5cd6177 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingLotVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingLotVO.java
@@ -13,4 +13,18 @@
     @ApiModelProperty(value = "归属电站")
     private String siteName;
 
+    @ApiModelProperty(value = "编辑权限")
+    private boolean authUpdate = true;
+
+    @ApiModelProperty(value = "删除权限")
+    private boolean authDelete = true;
+
+    @ApiModelProperty(value = "查看权限")
+    private boolean authQueryInfo = true;
+
+    @ApiModelProperty(value = "添加权限")
+    private boolean authAddParkingLot = true;
+
+    @ApiModelProperty(value = "车场监控权限")
+    private boolean authMonitor = true;
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
index be3a1ba..b35c8a1 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
@@ -62,9 +62,8 @@
      */
     @ApiOperation(tags = {"后台-停车场"},value = "查询停车场列表")
     @PostMapping(value = "/list")
-    public AjaxResult<List<TParkingLot>> list(@RequestBody TParkingLotQuery query) {
-        return AjaxResult.ok(parkingLotService.list(Wrappers.lambdaQuery(TParkingLot.class)
-                .eq(TParkingLot::getName,query.getName())));
+    public AjaxResult<List<TParkingLotVO>> list(@RequestBody TParkingLotQuery query) {
+        return AjaxResult.ok(parkingLotService.getList(query.getName()));
     }
 
     /**
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TMonitoringEquipmentMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TMonitoringEquipmentMapper.java
index ee5ab7f..59e9572 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TMonitoringEquipmentMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TMonitoringEquipmentMapper.java
@@ -27,5 +27,5 @@
      * @param pageInfo
      * @return
      */
-    List<TMonitoringEquipmentVO> pageList(@Param("query") TMonitoringEquipmentQuery query, @Param("pageInfo")PageInfo<TMonitoringEquipmentVO> pageInfo);
+    List<TMonitoringEquipmentVO> pageList(@Param("query") TMonitoringEquipmentQuery query, @Param("pageInfo")PageInfo<TMonitoringEquipmentVO> pageInfo,@Param("parkingLotIds")List<Integer> parkingLotIds);
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingLotMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingLotMapper.java
index 10f8c33..6d3357c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingLotMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingLotMapper.java
@@ -9,6 +9,7 @@
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -27,5 +28,14 @@
      * @param pageInfo
      * @return
      */
-    List<TParkingLotVO> pageList(@Param("query") TParkingLotQuery query, @Param("pageInfo")PageInfo<TParkingLotVO> pageInfo);
+    List<TParkingLotVO> pageList(@Param("query") TParkingLotQuery query, @Param("pageInfo")PageInfo<TParkingLotVO> pageInfo, @Param("siteIds") Set<Integer> siteIds);
+
+    /**
+     * 获取停车场列表
+     * @param name
+     * @param siteIds
+     * @return
+     */
+    List<TParkingLotVO> getList(@Param("name")String name, @Param("siteIds")Set<Integer> siteIds);
+
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingLotService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingLotService.java
index 785d773..e9fb57f 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingLotService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingLotService.java
@@ -6,6 +6,8 @@
 import com.ruoyi.chargingPile.api.vo.TParkingLotVO;
 import com.ruoyi.common.core.web.page.PageInfo;
 
+import java.util.List;
+
 /**
  * <p>
  * 停车场 服务类
@@ -22,4 +24,11 @@
      * @return
      */
     PageInfo<TParkingLotVO> pageList(TParkingLotQuery query);
+
+    /**
+     * 查询停车场列表
+     * @param name
+     * @return
+     */
+    List<TParkingLotVO> getList(String name);
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java
index 8711f63..f59407c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java
@@ -5,12 +5,24 @@
 import com.ruoyi.chargingPile.api.query.TMonitoringEquipmentQuery;
 import com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO;
 import com.ruoyi.chargingPile.api.vo.TParkingLotVO;
+import com.ruoyi.chargingPile.domain.SiteMenu;
 import com.ruoyi.chargingPile.mapper.TMonitoringEquipmentMapper;
+import com.ruoyi.chargingPile.service.IPartnerService;
 import com.ruoyi.chargingPile.service.TMonitoringEquipmentService;
+import com.ruoyi.chargingPile.service.TParkingLotService;
 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;
 
 /**
  * <p>
@@ -22,11 +34,36 @@
  */
 @Service
 public class TMonitoringEquipmentServiceImpl extends ServiceImpl<TMonitoringEquipmentMapper, TMonitoringEquipment> implements TMonitoringEquipmentService {
+    @Resource
+    private SysUserClient sysUserClient;
 
+    @Resource
+    private IPartnerService partnerService;
+
+    @Resource
+    private UserSiteClient userSiteClient;
+
+    @Resource
+    private RoleSiteClient roleSiteClient;
+    @Resource
+    private TParkingLotService parkingLotService;
     @Override
     public PageInfo<TMonitoringEquipmentVO> pageList(TMonitoringEquipmentQuery query) {
+
+        //校验合作商权限
+        SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+        Integer roleType = sysUser.getRoleType();
+        Integer objectId = sysUser.getObjectId();
+        // 查询管理站点下的停车场
+        List<TParkingLotVO> parkingLotVOS = parkingLotService.getList(null);
+        List<Integer> parkingLotIds = parkingLotVOS.stream().map(TParkingLotVO::getId).collect(Collectors.toList());
+
         PageInfo<TMonitoringEquipmentVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
-        List<TMonitoringEquipmentVO> list = this.baseMapper.pageList(query,pageInfo);
+        List<TMonitoringEquipmentVO> list = this.baseMapper.pageList(query,pageInfo,parkingLotIds);
+        for (TMonitoringEquipmentVO monitoringEquipmentVO : list) {
+            Integer siteId = parkingLotVOS.stream().filter(park->park.getId().equals(monitoringEquipmentVO.getParkingLotId())).findFirst().get().getSiteId();
+            monitoringEquipmentVO.setAuthQueryInfo(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_MONITOR));
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java
index ba8a894..d56b2b2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java
@@ -1,15 +1,26 @@
 package com.ruoyi.chargingPile.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO;
 import com.ruoyi.chargingPile.api.model.TParkingLot;
 import com.ruoyi.chargingPile.api.query.TParkingLotQuery;
 import com.ruoyi.chargingPile.api.vo.TParkingLotVO;
+import com.ruoyi.chargingPile.domain.SiteMenu;
 import com.ruoyi.chargingPile.mapper.TParkingLotMapper;
+import com.ruoyi.chargingPile.service.IPartnerService;
 import com.ruoyi.chargingPile.service.TParkingLotService;
 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;
 
 /**
  * <p>
@@ -21,12 +32,70 @@
  */
 @Service
 public class TParkingLotServiceImpl extends ServiceImpl<TParkingLotMapper, TParkingLot> implements TParkingLotService {
+    @Resource
+    private SysUserClient sysUserClient;
 
+    @Resource
+    private IPartnerService partnerService;
+
+    @Resource
+    private UserSiteClient userSiteClient;
+
+    @Resource
+    private RoleSiteClient roleSiteClient;
     @Override
     public PageInfo<TParkingLotVO> pageList(TParkingLotQuery query) {
+
+        Set<Integer> siteIds = null;
+        //校验合作商权限
+        SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+        Integer roleType = sysUser.getRoleType();
+        Integer objectId = sysUser.getObjectId();
+        //合作商
+        if(roleType == 2){
+            siteIds = partnerService.authSite(objectId, SiteMenu.PARKING_LOT);
+        }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<TParkingLotVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
-        List<TParkingLotVO> list = this.baseMapper.pageList(query,pageInfo);
+        List<TParkingLotVO> list = this.baseMapper.pageList(query,pageInfo,siteIds);
+        for (TParkingLotVO parkingLotVO : list) {
+            Integer siteId = parkingLotVO.getSiteId();
+            parkingLotVO.setAuthAddParkingLot(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_ADD_GARAGE));
+            parkingLotVO.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_DELETE));
+            parkingLotVO.setAuthQueryInfo(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_QUERY_INFO));
+            parkingLotVO.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_UPDATE));
+            parkingLotVO.setAuthMonitor(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_MONITOR));
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public List<TParkingLotVO> getList(String name) {
+        Set<Integer> siteIds = null;
+        //校验合作商权限
+        SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+        Integer roleType = sysUser.getRoleType();
+        Integer objectId = sysUser.getObjectId();
+        //合作商
+        if(roleType == 2){
+            siteIds = partnerService.authSite(objectId, SiteMenu.PARKING_LOT);
+        }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);
+            }
+        }
+        return this.baseMapper.getList(name,siteIds);
+    }
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
index cf8fa8e..ace731e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
@@ -27,6 +27,12 @@
             <if test="query.parkingLotId != null">
                 AND tme.parking_lot_id = #{query.parkingLotId}
             </if>
+            <if test="parkingLotIds != null and parkingLotIds.size()>0">
+                AND tme.parking_lot_id IN
+                <foreach collection="parkingLotIds" item="parkingLotId" open="(" separator="," close=")">
+                    #{parkingLotId}
+                </foreach>
+            </if>
             AND tme.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
         </where>
         ORDER BY tme.create_time DESC
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml
index c5a5bd3..ce9ef7e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml
@@ -39,9 +39,32 @@
             <if test="query.siteId != null">
                 AND tpl.site_id = #{query.siteId}
             </if>
+            <if test="null != siteIds and siteIds.size() > 0">
+                and tcg.site_id in
+                <foreach collection="siteIds" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
             AND tpl.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
         </where>
         ORDER BY tpl.create_time DESC
     </select>
+    <select id="getList" resultType="com.ruoyi.chargingPile.api.vo.TParkingLotVO">
+        select <include refid="Base_Column_List"></include>
+        from t_parking_lot
+        <where>
+            <if test="name != null and name != ''">
+                AND `name` LIKE concat('%',#{name},'%')
+            </if>
+            <if test="null != siteIds and siteIds.size() > 0">
+                and site_id in
+                <foreach collection="siteIds" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        </where>
+        ORDER BY create_time DESC
+    </select>
 
 </mapper>

--
Gitblit v1.7.1