diff --git a/jsowell-common/src/main/java/com/jsowell/common/core/domain/BaseEntity.java b/jsowell-common/src/main/java/com/jsowell/common/core/domain/BaseEntity.java index 96702d497..16cebae87 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/core/domain/BaseEntity.java +++ b/jsowell-common/src/main/java/com/jsowell/common/core/domain/BaseEntity.java @@ -1,10 +1,12 @@ package com.jsowell.common.core.domain; import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; import java.io.Serializable; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -12,7 +14,7 @@ import java.util.Map; * * @author jsowell */ - +@Data public class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; @@ -53,6 +55,11 @@ public class BaseEntity implements Serializable { */ private Map params; + // 有权限的运营商 + private List merchantDeptIds; + // 有权限的站点 + private List stationDeptIds; + public String getSearchValue() { return searchValue; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index d3e4b51e0..0d84ffd3b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -3,9 +3,11 @@ package com.jsowell.pile.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; -import com.jsowell.common.annotation.DataScope; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.entity.SysDept; +import com.jsowell.common.core.domain.entity.SysRole; +import com.jsowell.common.core.domain.entity.SysUser; +import com.jsowell.common.core.domain.model.LoginUser; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.DistanceUtils; @@ -24,8 +26,10 @@ import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.StationInfoVO; import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; +import com.jsowell.pile.vo.web.AuthorizedDeptVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.system.service.SysDeptService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -40,6 +44,7 @@ import java.util.Map; * @author jsowell * @date 2022-08-30 */ +@Slf4j @Service public class PileStationInfoServiceImpl implements IPileStationInfoService { @Autowired @@ -123,6 +128,45 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { return pileStationInfoMapper.selectPileStationInfoList(pileStationInfo); } + // 查询登录用户权限id + private AuthorizedDeptVO getAuthorizedMap() { + // 登录用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser == null) { + return null; + } + // 用户 + SysUser user = loginUser.getUser(); + if (user == null) { + return null; + } + AuthorizedDeptVO resultVO = AuthorizedDeptVO.builder().build(); + // 登录用户所属部门(运营商或站点 根据父级id判断) + SysDept dept = user.getDept(); + if (dept == null) { + return null; + } + // 登录用户角色 + List roles = user.getRoles(); + log.info("登录用户deptIds", roles.get(0).getDeptIds()); + Long parentId = dept.getParentId(); + List merchantDeptIds = Lists.newArrayList(); + List stationDeptIds = Lists.newArrayList(); + if (parentId == 0L) { + // 父级id是0,表明是该账号挂在平台下面,是系统管理员 + + } else if (parentId == 100L) { + // 父级id是100,表明是该账号挂在运营商下面,是运营商管理员 + merchantDeptIds.add(String.valueOf(dept.getDeptId())); + resultVO.setMerchantDeptIds(merchantDeptIds); + } else { + // 其他情况,表明是站点管理员 + stationDeptIds.add(String.valueOf(dept.getDeptId())); + resultVO.setStationDeptIds(stationDeptIds); + } + return resultVO; + } + /** * 通过运营商id查询站点信息 * @@ -225,15 +269,16 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { * @return 充电站对象集合 */ @Override - @DataScope(deptAlias = "t3") + // @DataScope(deptAlias = "t3") public List queryStationInfos(QueryStationDTO dto) { + AuthorizedDeptVO authorizedMap = getAuthorizedMap(); + if (authorizedMap == null) { + // 为空表示没有权限,返回空数组 + return Lists.newArrayList(); + } + dto.setStationDeptIds(authorizedMap.getStationDeptIds()); + dto.setMerchantDeptIds(authorizedMap.getMerchantDeptIds()); List list = pileStationInfoMapper.queryStationInfos(dto); - // if (Objects.nonNull(list)){ - // for (PileStationVO p:list) { - // String station_type = p.getStationType(); - // p.setStationType(DictUtils.getDictLabel("station_type", station_type)); - // } - // } return list; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/AuthorizedDeptVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/AuthorizedDeptVO.java new file mode 100644 index 000000000..0958f5022 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/AuthorizedDeptVO.java @@ -0,0 +1,19 @@ +package com.jsowell.pile.vo.web; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class AuthorizedDeptVO { + // 有权限的运营商 + private List merchantDeptIds; + // 有权限的站点 + private List stationDeptIds; +} diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml index 4114bf55c..cd5cd8ab1 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml @@ -318,8 +318,19 @@ and t1.public_flag = #{stationDTO.publicFlag,jdbcType=VARCHAR} - - ${stationDTO.params.dataScope} + + + and t3.dept_id in + + #{merchantDeptId} + + + + and t1.dept_id in + + #{stationDeptId} + + GROUP BY t1.id, t1.station_name,