修改项目数据拦截器逻辑,站点相关,项目相关,机构相关接口逻辑完善
This commit is contained in:
@ -13,5 +13,6 @@ public class ProjectInfo {
|
||||
private String projectAdminId;//项目管理员id
|
||||
private List<Long> projectIdList;//项目id列表包含子项目id
|
||||
private String projectId;//当前项目id
|
||||
private String projectDeptId;//项目机构id
|
||||
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public class ResourcesConfig implements WebMvcConfigurer
|
||||
"/tool/gen/**");
|
||||
//配置项目数据隔离拦截器
|
||||
registry.addInterceptor(projectDataIsolationInterceptor)
|
||||
.addPathPatterns("/gis/groups/**", "/gis/legend/**","/gis/site/**","/project/**");
|
||||
.addPathPatterns("/gis/groups/**", "/gis/legend/**","/gis/site/**","/project/**","/system/**");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,29 +1,23 @@
|
||||
package com.fastbee.framework.interceptor;
|
||||
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.json.JSON;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.fastbee.common.holder.ProjectHolder;
|
||||
import com.fastbee.common.holder.ProjectInfo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -73,12 +67,16 @@ public class ProjectDataIsolationInterceptor implements HandlerInterceptor {
|
||||
//获取cookie中的projectId
|
||||
if ("projectId".equals(cookie.getName())) {
|
||||
projectInfo.setProjectId(cookie.getValue());
|
||||
System.err.println("获取cooke的项目id:"+cookie.getValue());
|
||||
}
|
||||
//获取cookie中的userId
|
||||
if ("userId".equals(cookie.getName())) {
|
||||
projectInfo.setProjectAdminId(cookie.getValue());
|
||||
}
|
||||
|
||||
//获取cookie中的projectDeptId
|
||||
if ("deptId".equals(cookie.getName())) {
|
||||
projectInfo.setProjectDeptId(cookie.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -29,7 +29,9 @@
|
||||
<version>1.5.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.fastbee</groupId>
|
||||
<artifactId>fastbee-system-service</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.ggroup.domain.dto;
|
||||
|
||||
|
||||
import com.fastbee.common.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
@ -27,4 +29,8 @@ private static final long serialVersionUID = 1L;
|
||||
|
||||
private String parentId;//父节点id
|
||||
|
||||
private String areaCode;//区域编码
|
||||
|
||||
private String fullAreaCode;//完整区域编码
|
||||
|
||||
}
|
||||
|
@ -1,10 +1,13 @@
|
||||
package com.fastbee.ggroup.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import com.fastbee.common.core.domain.entity.SysDept;
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.holder.ProjectHolder;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.common.utils.json.JsonUtils;
|
||||
import com.fastbee.ggroup.domain.GGroups;
|
||||
import com.fastbee.ggroup.domain.GSiteGroups;
|
||||
import com.fastbee.ggroup.domain.GSites;
|
||||
@ -12,6 +15,7 @@ import com.fastbee.ggroup.domain.vo.GGroupSiteVo;
|
||||
import com.fastbee.ggroup.mapper.GGroupsMapper;
|
||||
import com.fastbee.ggroup.mapper.GSiteGroupsMapper;
|
||||
import com.fastbee.ggroup.service.IGGroupsService;
|
||||
import com.fastbee.system.mapper.SysDeptMapper;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -34,9 +38,12 @@ public class GGroupsServiceImpl implements IGGroupsService
|
||||
|
||||
private final GSiteGroupsMapper gSiteGroupsMapper;
|
||||
|
||||
public GGroupsServiceImpl(GGroupsMapper gGroupsMapper, GSiteGroupsMapper gSiteGroupsMapper) {
|
||||
private final SysDeptMapper sysDeptMapper;
|
||||
|
||||
public GGroupsServiceImpl(GGroupsMapper gGroupsMapper, GSiteGroupsMapper gSiteGroupsMapper, SysDeptMapper sysDeptMapper) {
|
||||
this.gGroupsMapper = gGroupsMapper;
|
||||
this.gSiteGroupsMapper = gSiteGroupsMapper;
|
||||
this.sysDeptMapper = sysDeptMapper;
|
||||
}
|
||||
|
||||
|
||||
@ -79,6 +86,7 @@ public class GGroupsServiceImpl implements IGGroupsService
|
||||
*/
|
||||
@Override
|
||||
public List<GGroupSiteVo> selectGGroupsListSites(GGroups gGroups) {
|
||||
|
||||
MPJLambdaWrapper<GSiteGroups> gSiteGroupsMPJLambdaWrapper = new MPJLambdaWrapper<GSiteGroups>()
|
||||
.select(GSiteGroups::getId, GSiteGroups::getParentId, GSiteGroups::getSiteId)
|
||||
// .select(GGroups::getName)//起个别名
|
||||
@ -89,7 +97,29 @@ public class GGroupsServiceImpl implements IGGroupsService
|
||||
.leftJoin(GSites.class, GSites::getId, GSiteGroups::getSiteId)
|
||||
.eq(GSiteGroups::getParentId, gGroups.getParentId())
|
||||
.like(StringUtils.isNotBlank(gGroups.getSearchValue()), GSites::getName, gGroups.getSearchValue());
|
||||
return gSiteGroupsMapper.selectJoinList(GGroupSiteVo.class,gSiteGroupsMPJLambdaWrapper);
|
||||
List<GGroupSiteVo> gGroupSiteVos = gSiteGroupsMapper.selectJoinList(GGroupSiteVo.class, gSiteGroupsMPJLambdaWrapper);
|
||||
gSiteGroupsMapper.selectJoinList(GGroupSiteVo.class,gSiteGroupsMPJLambdaWrapper);
|
||||
//查询该机构下的行政区划列表
|
||||
SysDept sysDept = new LambdaQueryChainWrapper<>(sysDeptMapper)
|
||||
.select(SysDept::getDeptId, SysDept::getProvinceCode, SysDept::getCityCode, SysDept::getCountyCode, SysDept::getTownCode, SysDept::getVillageCode)
|
||||
.eq(SysDept::getDeptId, ProjectHolder.getProjectInfo().getProjectDeptId())
|
||||
.one();
|
||||
if(Objects.isNull(sysDept)){
|
||||
throw new ServiceException("未查询到机构信息");
|
||||
}
|
||||
List<Long> adcodeList = new ArrayList<>();
|
||||
adcodeList.addAll(JsonUtils.parseArray(sysDept.getProvinceCode(), Long.class));
|
||||
adcodeList.addAll(JsonUtils.parseArray(sysDept.getCityCode(), Long.class));
|
||||
adcodeList.addAll(JsonUtils.parseArray(sysDept.getCountyCode(), Long.class));
|
||||
adcodeList.addAll(JsonUtils.parseArray(sysDept.getTownCode(), Long.class));
|
||||
adcodeList.addAll(JsonUtils.parseArray(sysDept.getVillageCode(), Long.class));
|
||||
//根据区域代码过滤站点
|
||||
if(Objects.nonNull(adcodeList) && !adcodeList.isEmpty()){
|
||||
gGroupSiteVos = gGroupSiteVos
|
||||
.stream()
|
||||
.filter(gGroupSiteVo -> adcodeList.contains(Long.valueOf(gGroupSiteVo.getAreaCode()))).collect(Collectors.toList());
|
||||
}
|
||||
return gGroupSiteVos;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -151,9 +151,9 @@ public class GSitesServiceImpl extends ServiceImpl<GSiteGroupsMapper,GSiteGroups
|
||||
JSONArray jsonArray = JSONUtil.parseArray(coordinates);
|
||||
//判断数组每个元素必须为经度或纬度
|
||||
for (Object o : jsonArray) {
|
||||
/* if(isLongitudeOrLatitude(o.toString())){
|
||||
if(!isLongitudeOrLatitude(o.toString())){
|
||||
throw new ServiceException("coordinates数组元素必须为经度或纬度!");
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
int startIndex = space.indexOf("/profile/upload/");
|
||||
@ -169,8 +169,8 @@ public class GSitesServiceImpl extends ServiceImpl<GSiteGroupsMapper,GSiteGroups
|
||||
* @param str 经纬度字符串
|
||||
* @return true 或 false
|
||||
*/
|
||||
private boolean isLongitudeOrLatitude(String str) {
|
||||
String regex = "^[-+]?\\d{1,3}(\\.\\d+)?$"; // 修改了正则表达式的格式,允许有或无小数部分
|
||||
private static boolean isLongitudeOrLatitude(String str) {
|
||||
String regex = "^[-+]?\\d{1,3}(\\.\\d+)?$"; // 正则表达式,匹配经度或纬度格式
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(str);
|
||||
|
||||
@ -178,10 +178,19 @@ public class GSitesServiceImpl extends ServiceImpl<GSiteGroupsMapper,GSiteGroups
|
||||
return matcher.matches() && isValueInRange(str);
|
||||
}
|
||||
|
||||
private boolean isValueInRange(String str) {
|
||||
double value = Double.parseDouble(str);
|
||||
return value >= -180 && value <= 180; // 经度范围
|
||||
// 如果需要判断纬度,则再添加一行判断逻辑:else if (value >= -90 && value <= 90) return true; 或者根据需要合并到一行判断中。
|
||||
/**
|
||||
* 判断值是否在经纬度范围内
|
||||
* @param str 经纬度字符串表示的值
|
||||
* @return true 如果值在范围内,false 否则
|
||||
*/
|
||||
private static boolean isValueInRange(String str) {
|
||||
try {
|
||||
double value = Double.parseDouble(str);
|
||||
return value >= -180 && value <= 180; // 经度范围
|
||||
} catch (NumberFormatException e) {
|
||||
// 字符串无法转换为数字,认为不在范围内
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -85,6 +85,7 @@ public class ProjectServiceImpl implements IProjectService
|
||||
Project::getAdministrativeAreaCode, Project::getLevel, Project::getDeptId, Project::getDeptName,
|
||||
Project::getVideoIntroduction, Project::getImage, Project::getLogo, Project::getRemark)
|
||||
.eq(Project::getId, projectId)
|
||||
.eq(Project::getDelFlag,0)
|
||||
.list();
|
||||
//查询项目管理员信息
|
||||
List<SysUser> list = new LambdaQueryChainWrapper<>(sysUserMapper)
|
||||
@ -117,6 +118,7 @@ public class ProjectServiceImpl implements IProjectService
|
||||
Project::getLogo, Project::getImage, Project::getLevel, Project::getDeptName,
|
||||
Project::getCreateTime,
|
||||
Project::getAdministrativeAreaCode,Project::getAdministrativeArea, Project::getProvinceCode,Project::getCityCode,Project::getCountyCode)
|
||||
.eq(Project::getDelFlag,0)
|
||||
.like(StringUtils.isNotBlank(project.getSearchValue()),Project::getProjectName, project.getSearchValue())
|
||||
.list();
|
||||
}
|
||||
@ -169,7 +171,7 @@ public class ProjectServiceImpl implements IProjectService
|
||||
SysDept sysDept = deptService.selectDeptById(100L);
|
||||
List<SysMenu> sysMenuList = sysMenuService.selectMenuList(new SysMenu(), sysDept.getDeptUserId());
|
||||
Long[] menuIdList = sysMenuList.stream().map(SysMenu::getMenuId)
|
||||
.filter(menuId-> menuId!=3469L&&menuId!=3L&&menuId!=2L)
|
||||
.filter(menuId-> menuId!=3469L&&menuId!=3L&&menuId!=2L &&menuId!=3468L)
|
||||
.toArray(Long[]::new);
|
||||
SysRole sysRole = new SysRole();
|
||||
sysRole.setRoleName("管理员");
|
||||
@ -184,7 +186,7 @@ public class ProjectServiceImpl implements IProjectService
|
||||
RegisterUserInput registerUserInput = new RegisterUserInput();
|
||||
registerUserInput.setUsername(project.getUserName());
|
||||
registerUserInput.setPassword(project.getPassword());
|
||||
registerUserInput.setPhonenumber(String.valueOf(UUID.randomUUID()).substring(5,9));
|
||||
registerUserInput.setPhonenumber(project.getPhoneNumber());
|
||||
registerUserInput.setDeptId(newSysDept.getDeptId());
|
||||
registerUserInput.setRoleIds(new Long[]{sysRole.getRoleId()});
|
||||
RegisterUserOutput registerUserOutput = toolService.registerNoCaptcha(registerUserInput);
|
||||
@ -331,9 +333,35 @@ public class ProjectServiceImpl implements IProjectService
|
||||
* 删除项目
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int deleteProjectByProjectIds(Long projectId)
|
||||
{
|
||||
return projectMapper.deleteById(projectId);
|
||||
{ //逻辑删除项目信息
|
||||
boolean updateProject = new LambdaUpdateChainWrapper<>(projectMapper)
|
||||
.set(Project::getDelFlag, "2")
|
||||
.eq(Project::getId, projectId)
|
||||
.update();
|
||||
//查询项目下的机构
|
||||
List<SysDept> projectDeptList = new LambdaQueryChainWrapper<>(sysDeptMapper)
|
||||
.eq(SysDept::getProjectId, projectId)
|
||||
.eq(SysDept::getDelFlag, "0")
|
||||
.list();
|
||||
//逻辑删除项目机构信息
|
||||
boolean updateDept = new LambdaUpdateChainWrapper<>(sysDeptMapper)
|
||||
.set(SysDept::getDelFlag, "2")
|
||||
.eq(SysDept::getProjectId, projectId)
|
||||
.update();
|
||||
//逻辑删除项目用户信息
|
||||
boolean updateUser=false;
|
||||
LambdaUpdateChainWrapper<SysUser> sysUserLambdaUpdateChainWrapper = new LambdaUpdateChainWrapper<>(sysUserMapper);
|
||||
sysUserLambdaUpdateChainWrapper
|
||||
.set(SysUser::getDelFlag, "2");
|
||||
if(!projectDeptList.isEmpty()){
|
||||
updateUser = sysUserLambdaUpdateChainWrapper.in(SysUser::getDeptId, projectDeptList.stream().map(SysDept::getDeptId).collect(Collectors.toList()))
|
||||
.update();
|
||||
|
||||
}
|
||||
|
||||
return updateDept&&updateProject&&updateUser?1:0;
|
||||
}
|
||||
|
||||
|
||||
@ -384,7 +412,7 @@ public class ProjectServiceImpl implements IProjectService
|
||||
projectLoginBaseInfo.setProjectLevel(ProjectLevelConstant.LEVEL_CITY);
|
||||
projectLoginBaseInfo.setProjectAreaCode(JSONUtil.parseArray(project.getCityCode()).get(0).toString());
|
||||
}
|
||||
if(project.getLevel().equals("县级")){
|
||||
if(project.getLevel().equals("县/区级")){
|
||||
projectLoginBaseInfo.setProjectLevel(ProjectLevelConstant.LEVEL_COUNTY);
|
||||
projectLoginBaseInfo.setProjectAreaCode(JSONUtil.parseArray(project.getCountyCode()).get(0).toString());
|
||||
}
|
||||
@ -530,9 +558,12 @@ public class ProjectServiceImpl implements IProjectService
|
||||
|
||||
}
|
||||
//先根据项目机构行政管理级别查上层的行政区划信息
|
||||
List<SysDistrict> aboveSysDistrictList = aboveSysDistrictLambdaQueryChainWrapper
|
||||
.in(SysDistrict::getAdcode, queryInAdcodeList)
|
||||
.list();
|
||||
List<SysDistrict> aboveSysDistrictList =new ArrayList<>();
|
||||
if(!queryInAdcodeList.isEmpty()){
|
||||
aboveSysDistrictList= aboveSysDistrictLambdaQueryChainWrapper
|
||||
.in(SysDistrict::getAdcode, queryInAdcodeList)
|
||||
.list();
|
||||
}
|
||||
//根据行政区划级别查询下级行政区划信息
|
||||
List<SysDistrict> belowSysDistrictList = belowSysDistrictLambdaQueryChainWrapper
|
||||
.in(!queryInLevelList.isEmpty(),SysDistrict::getLevel, queryInLevelList)
|
||||
|
@ -12,6 +12,7 @@ import com.fastbee.common.core.domain.entity.SysUser;
|
||||
import com.fastbee.common.core.domain.model.LoginUser;
|
||||
import com.fastbee.common.core.text.Convert;
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.holder.ProjectHolder;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.common.utils.SecurityUtils;
|
||||
import com.fastbee.common.utils.StringUtils;
|
||||
@ -251,6 +252,8 @@ public class SysDeptServiceImpl implements ISysDeptService
|
||||
}
|
||||
//设置祖级别列表
|
||||
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
|
||||
//设置项目id
|
||||
dept.setProjectId(Long.valueOf(ProjectHolder.getProjectInfo().getProjectId()));
|
||||
//处理机构所管理行政区划信息
|
||||
parseAdministrativeDivisionInfo(dept);
|
||||
dept.setCreateTime(DateUtils.getNowDate());
|
||||
|
Reference in New Issue
Block a user