Commit ba944255 authored by 梁光意's avatar 梁光意

Merge remote-tracking branch 'remotes/origin/develop' into develop-fix

# Conflicts: # src/main/java/com/syc/slm/slmbi/controller/BaseRestController.java
parents 115abd61 19d0d1a9
...@@ -115,4 +115,14 @@ public class VariableController extends BaseRestController{ ...@@ -115,4 +115,14 @@ public class VariableController extends BaseRestController{
public R<Map<String, List<Map<String, HistoryVariableVo>>>> getVariableHistoryDataList(@PathVariable String appId,VariableDataDTO variableDTO) { public R<Map<String, List<Map<String, HistoryVariableVo>>>> getVariableHistoryDataList(@PathVariable String appId,VariableDataDTO variableDTO) {
return call(()->(variableService.getVariableHistoryDataList(variableDTO))); return call(()->(variableService.getVariableHistoryDataList(variableDTO)));
} }
@PostMapping("/send")
@ApiOperation("下发")
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<Object> send(HttpServletRequest request,@PathVariable String appId,@RequestBody VariableSendDTO sendDTO) {
return call(() -> {
CurrentUser currentUser = getCurrentUser(request);
variableService.send(sendDTO, currentUser,dcClientHost + deptsRoles);
});
}
} }
package com.syc.slm.slmbi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* slm-bi
*
* @author : lin
* @date : 2021-04-19 19:31
**/
@Data
@ApiModel(value = "下发DTO")
public class VariableSendDTO {
@ApiModelProperty(value = "访问权限", required = true)
private String accessType;
@ApiModelProperty(value = "权限控制", required = true)
private List<CustomPermissionDTO> permissions;
@ApiModelProperty(value = "变量id", required = true)
private String variableId;
@ApiModelProperty(value = "设备id", required = true)
private String equipmentId;
@ApiModelProperty(value = "权限为私有的时候需要把创建人传入", required = true)
private String userId;
}
...@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.syc.slm.slmbi.dto.QueryPageDTO; import com.syc.slm.slmbi.dto.QueryPageDTO;
import com.syc.slm.slmbi.dto.VariableDataDTO; import com.syc.slm.slmbi.dto.VariableDataDTO;
import com.syc.slm.slmbi.dto.VariableDTO; import com.syc.slm.slmbi.dto.VariableDTO;
import com.syc.slm.slmbi.dto.VariableSendDTO;
import com.syc.slm.slmbi.entity.CurrentUser;
import com.syc.slm.slmbi.vo.*; import com.syc.slm.slmbi.vo.*;
import java.util.List; import java.util.List;
...@@ -53,4 +55,11 @@ public interface VariableService { ...@@ -53,4 +55,11 @@ public interface VariableService {
* @return * @return
*/ */
Map<String, List<Map<String, HistoryVariableVo>>> getVariableHistoryDataList(VariableDataDTO variableDTO); Map<String, List<Map<String, HistoryVariableVo>>> getVariableHistoryDataList(VariableDataDTO variableDTO);
/**
* 下发
* @param sendDTO
* @param currentUser
*/
void send(VariableSendDTO sendDTO, CurrentUser currentUser,String uri);
} }
...@@ -2,6 +2,7 @@ package com.syc.slm.slmbi.service.impl; ...@@ -2,6 +2,7 @@ package com.syc.slm.slmbi.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
...@@ -9,16 +10,19 @@ import com.google.gson.reflect.TypeToken; ...@@ -9,16 +10,19 @@ import com.google.gson.reflect.TypeToken;
import com.syc.slm.common.core.constant.SlmConstants; import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.common.core.util.R; import com.syc.slm.common.core.util.R;
import com.syc.slm.common.core.util.RestTemplateUtils; import com.syc.slm.common.core.util.RestTemplateUtils;
import com.syc.slm.slmbi.dto.QueryPageDTO; import com.syc.slm.slmbi.dto.*;
import com.syc.slm.slmbi.dto.VariableDataDTO; import com.syc.slm.slmbi.entity.CurrentUser;
import com.syc.slm.slmbi.dto.VariableDTO; import com.syc.slm.slmbi.enums.AccessType;
import com.syc.slm.slmbi.exception.SysException;
import com.syc.slm.slmbi.service.VariableService; import com.syc.slm.slmbi.service.VariableService;
import com.syc.slm.slmbi.vo.*; import com.syc.slm.slmbi.vo.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* slm-bi * slm-bi
...@@ -120,4 +124,77 @@ public class VariableServiceImpl implements VariableService { ...@@ -120,4 +124,77 @@ public class VariableServiceImpl implements VariableService {
public Map<String, List<Map<String, HistoryVariableVo>>> getVariableHistoryDataList(VariableDataDTO variableDTO) { public Map<String, List<Map<String, HistoryVariableVo>>> getVariableHistoryDataList(VariableDataDTO variableDTO) {
return null; return null;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void send(VariableSendDTO sendDTO, CurrentUser currentUser,String uri) {
if (StringUtils.isBlank(sendDTO.getAccessType())) {
throw new SysException("请传入访问类型");
}
if (StringUtils.isBlank(sendDTO.getEquipmentId())) {
throw new SysException("请传入设备id");
}
if (StringUtils.isBlank(sendDTO.getVariableId())) {
throw new SysException("请传入变量id");
}
if(AccessType.PRIVATE.value.equals(sendDTO.getAccessType())){
if (StringUtils.isBlank(sendDTO.getUserId())) {
throw new SysException("访问类型为私有,请传入创建人");
}
if(currentUser.getUid().equals(sendDTO.getUserId())){
throw new SysException("没有访问权限");
}
}else if(AccessType.CUSTOM.value.equals(sendDTO.getAccessType())) {
if(CollectionUtils.isNotEmpty(sendDTO.getPermissions())){
Map<String, List<CustomPermissionDTO>> maps =
sendDTO.getPermissions().stream().collect(Collectors.groupingBy(CustomPermissionDTO::getType));
List<CustomPermissionDTO> departments = maps.get("department");
List<CustomPermissionDTO> positions = maps.get("position");
List<CustomPermissionDTO> users = maps.get("user");
boolean flag=true;
if(CollectionUtils.isNotEmpty(users)){
if(users.stream().noneMatch(x->currentUser.getUid().equals(x.getBizId()))){
flag=false;
}
}
if(CollectionUtils.isNotEmpty(departments) || CollectionUtils.isNotEmpty(positions)) {
R<Map<String, String>> result = setDeptAndRole(currentUser, uri);
Map<String, String> detach = result.detach();
String officeIds = detach.get("deptIds");
String roleIds = detach.get("roleIds");
if (flag) {
if (CollectionUtils.isNotEmpty(departments)) {
if (departments.stream()
.map(CustomPermissionDTO::getBizId)
.anyMatch(officeIds::contains)) {
flag = false;
}
}
}
if (flag) {
if (CollectionUtils.isNotEmpty(positions)) {
if (positions.stream().map(CustomPermissionDTO::getBizId).anyMatch(roleIds::contains)) {
flag = false;
}
}
}
if(flag){
throw new SysException("没有访问权限");
}
}
}
//# todo 准备下发接口
}
}
private R<Map<String,String>> setDeptAndRole(CurrentUser user,String uri){
Map<String,String> heads = Maps.newHashMap();
heads.put("X-Token",user.getToken());
Map<String,String> uriVariables =Maps.newHashMap();
uriVariables.put("appId",user.getAppId());
return RestTemplateUtils.get(uri, heads, new TypeToken<R<Map<String,String>>>() {}.getType(), uriVariables);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment