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