|
|
@@ -15,11 +15,11 @@ import com.inspur.customer.infrastructure.convertor.SmsbDepartmentConvertor;
|
|
|
import com.inspur.customer.infrastructure.mapper.org.SmsbDepartmentMapper;
|
|
|
import com.inspur.customer.infrastructure.object.org.SmsbDepartmentDO;
|
|
|
import com.inspur.customer.object.org.*;
|
|
|
+import com.inspur.device.client.core.relation.DeviceAllocateService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
-import org.keycloak.representations.idm.UserRepresentation;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
@@ -45,6 +45,8 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
private KeycloakService service;
|
|
|
@DubboReference
|
|
|
private SmsbDepartmentUserService userService;
|
|
|
+ @DubboReference
|
|
|
+ private DeviceAllocateService deviceAllocateService;
|
|
|
|
|
|
@Override
|
|
|
public Response addDepartment(String userId , SmsbDepartmentAdd smsbDepartmentAdd) {
|
|
|
@@ -62,7 +64,17 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void deleteDepartment(String userId, List<Long> ids) {
|
|
|
+ public void deleteDepartment(String userId, Long id) {
|
|
|
+ SmsbDepartmentDO department = super.getById(id);
|
|
|
+ // 1、删除用户
|
|
|
+ userService.removeUserDepartmentRelation(department.getPath());
|
|
|
+ // 2、删除设备关系
|
|
|
+ deviceAllocateService.deleteRelatedOrg(department.getPath());
|
|
|
+ // 3、删除部门
|
|
|
+ removeDepartment(userId , Collections.singletonList(id));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void removeDepartment(String userId, List<Long> ids){
|
|
|
super.update(new LambdaUpdateWrapper<>(SmsbDepartmentDO.class)
|
|
|
.set(SmsbDepartmentDO::getIsDel , 1)
|
|
|
.set(SmsbDepartmentDO::getUpdateBy , userId)
|
|
|
@@ -71,7 +83,7 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
List<SmsbDepartmentDO> nextDepartment = super.list(new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
|
|
|
.in(SmsbDepartmentDO::getParentId, ids));
|
|
|
if(!CollectionUtils.isEmpty(nextDepartment)){
|
|
|
- deleteDepartment(userId , nextDepartment.stream().map(i -> i.getId()).collect(Collectors.toList()));
|
|
|
+ removeDepartment(userId , nextDepartment.stream().map(i -> i.getId()).collect(Collectors.toList()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -119,6 +131,7 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
@Override
|
|
|
public Response queryDepartmentList(String tenant) {
|
|
|
List<SmsbDepartmentDO> departmentList = super.list(new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
|
|
|
+ .eq(SmsbDepartmentDO::getIsDel , 0)
|
|
|
.eq(SmsbDepartmentDO::getTenant, tenant)
|
|
|
.isNull(SmsbDepartmentDO::getParentId));
|
|
|
List<SmsbDepartmentCO> departmentTree = Lists.newArrayList();
|
|
|
@@ -133,21 +146,20 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageResponse<UserRepresentation> queryDepartmentUserList(SmsbDepartmentCmd departmentCmd) {
|
|
|
+ public PageResponse<SmsbSimpleUserCO> queryDepartmentUserList(SmsbDepartmentCmd departmentCmd) {
|
|
|
if(Objects.nonNull(departmentCmd.getDepartmentId())){
|
|
|
- // 不为空返回指定部门用户列表
|
|
|
- PageResponse<String> userIds = departmentUserService.queryUserIdByDeprIds(departmentCmd);
|
|
|
- PageResponse<UserRepresentation> userRepresentation = service.getUserListByIds(departmentCmd, userIds.getData());
|
|
|
- return PageResponse.of(
|
|
|
- userRepresentation.getData(),userIds.getTotalCount() ,userIds.getPageSize() ,userIds.getPageIndex());
|
|
|
+ // 部门id不为空,path过滤
|
|
|
+ departmentCmd.setTenant(super.getById(departmentCmd.getDepartmentId()).getPath());
|
|
|
+ return departmentUserService.queryUserPageByDeprIds(departmentCmd , 1);
|
|
|
}else{
|
|
|
- // 部门id为空,返回全部
|
|
|
- return service.getUserListByIds(departmentCmd, Lists.newArrayList());
|
|
|
+ // 部门id为空,tenant过滤
|
|
|
+ return departmentUserService.queryUserPageByDeprIds(departmentCmd , 2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private List<SmsbDepartmentCO> getChilde(Long id){
|
|
|
List<SmsbDepartmentDO> childList = this.list(new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
|
|
|
+ .eq(SmsbDepartmentDO::getIsDel ,0)
|
|
|
.eq(SmsbDepartmentDO::getParentId, id));
|
|
|
List<SmsbDepartmentCO> finalChilds = Lists.newArrayList();
|
|
|
childList.forEach(child ->{
|
|
|
@@ -193,22 +205,32 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
log.info("new user id:{}",addUserId);
|
|
|
// 2、是否传递所属部门,不传递不做处理
|
|
|
if(Objects.nonNull(smsbUserAdd.getDepartmentId())){
|
|
|
- // 3、保存用户与部门关系
|
|
|
- userService.addUserDepartment(addUserId , smsbUserAdd.getDepartmentId());
|
|
|
- // 4、将部门信息写入keucloak的attibute中
|
|
|
- service.addAttributesByUserId(addUserId , "org" , Collections.singletonList(super.getById(smsbUserAdd.getDepartmentId()).getPath()));
|
|
|
+ // 3、将部门信息写入keucloak的attibute中
|
|
|
+ smsbUserAdd.setPath(super.getById(smsbUserAdd.getDepartmentId()).getPath());
|
|
|
+ service.addAttributesByUserId(addUserId , "org" , Collections.singletonList(smsbUserAdd.getPath()));
|
|
|
}
|
|
|
+ // 4、保存用户与部门关系
|
|
|
+ userService.addUserDepartment(addUserId , smsbUserAdd);
|
|
|
return SingleResponse.of(addUserId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Response regrouping(SmsbRegrouping smsbRegrouping) {
|
|
|
// 1、清空原绑定关系,建立新绑定关系
|
|
|
- Boolean result = departmentUserService.clearAndCreateRelation(smsbRegrouping.getUserId(), smsbRegrouping.getDepartmentId());
|
|
|
+ Boolean result;
|
|
|
+ String path;
|
|
|
+ if(Objects.nonNull(smsbRegrouping.getDepartmentId())){
|
|
|
+ path = super.getById(smsbRegrouping.getDepartmentId()).getPath();
|
|
|
+ result = departmentUserService.updateRelation(smsbRegrouping.getUserId(),
|
|
|
+ smsbRegrouping.getDepartmentId(),path);
|
|
|
+ }else {
|
|
|
+ path = smsbRegrouping.getTenant();
|
|
|
+ result = departmentUserService.updateRelation(smsbRegrouping.getUserId(), null ,null);
|
|
|
+ }
|
|
|
// 2、更新attribute
|
|
|
if(result){
|
|
|
- service.addAttributesByUserId(smsbRegrouping.getUserId() , "org" , Collections.singletonList(
|
|
|
- super.getById(smsbRegrouping.getDepartmentId()).getPath()));
|
|
|
+ service.addAttributesByUserId(smsbRegrouping.getUserId() , "org" ,
|
|
|
+ Collections.singletonList(path));
|
|
|
return Response.buildSuccess();
|
|
|
}else{
|
|
|
return Response.buildFailure("500","用户重分组失败!");
|