|
@@ -2,6 +2,7 @@ package com.fdkankan.jp.xspace.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.fdkankan.common.constant.RecStatus;
|
|
import com.fdkankan.common.constant.RecStatus;
|
|
@@ -10,6 +11,7 @@ import com.fdkankan.jp.xspace.common.PageInfo;
|
|
import com.fdkankan.jp.xspace.common.Result;
|
|
import com.fdkankan.jp.xspace.common.Result;
|
|
import com.fdkankan.jp.xspace.common.ResultCode;
|
|
import com.fdkankan.jp.xspace.common.ResultCode;
|
|
import com.fdkankan.jp.xspace.common.constant.OSSPathConstant;
|
|
import com.fdkankan.jp.xspace.common.constant.OSSPathConstant;
|
|
|
|
+import com.fdkankan.jp.xspace.common.exception.BusinessException;
|
|
import com.fdkankan.jp.xspace.common.rabbitmq.RabbitmqConstant;
|
|
import com.fdkankan.jp.xspace.common.rabbitmq.RabbitmqConstant;
|
|
import com.fdkankan.jp.xspace.common.rabbitmq.dto.SceneXspaceMqDTO;
|
|
import com.fdkankan.jp.xspace.common.rabbitmq.dto.SceneXspaceMqDTO;
|
|
import com.fdkankan.jp.xspace.dto.XspacePageDTO;
|
|
import com.fdkankan.jp.xspace.dto.XspacePageDTO;
|
|
@@ -31,6 +33,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
@@ -118,24 +121,38 @@ public class SceneXspaceServiceImpl extends ServiceImpl<ISceneXspaceMapper, Scen
|
|
@Override
|
|
@Override
|
|
public Result sync(List<String> nums, User user) {
|
|
public Result sync(List<String> nums, User user) {
|
|
|
|
|
|
- List<SceneXspace> syncList = this.list(new LambdaQueryWrapper<SceneXspace>().in(SceneXspace::getNum, nums).eq(SceneXspace::getUserId, user.getId()));
|
|
|
|
- List<String> canSyncList = nums;
|
|
|
|
|
|
+
|
|
|
|
+ //过滤掉已同步的场景,防止前端传参错误
|
|
|
|
+ List<SceneXspace> syncList = this.list(new LambdaQueryWrapper<SceneXspace>().in(SceneXspace::getNum, nums));//.eq(SceneXspace::getUserId, user.getId()));
|
|
|
|
+ List<String> canSyncList = nums;//实际需要同步的场景集合
|
|
if(CollUtil.isNotEmpty(syncList)){
|
|
if(CollUtil.isNotEmpty(syncList)){
|
|
List<String> doneNumsList = syncList.stream().map(v -> v.getNum()).collect(Collectors.toList());
|
|
List<String> doneNumsList = syncList.stream().map(v -> v.getNum()).collect(Collectors.toList());
|
|
canSyncList = nums.stream().filter(v->!doneNumsList.contains(v)).collect(Collectors.toList());
|
|
canSyncList = nums.stream().filter(v->!doneNumsList.contains(v)).collect(Collectors.toList());
|
|
}
|
|
}
|
|
|
|
|
|
- List<ScenePlus> scenePlusList = scenePlusService.list(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getUserId, user.getId()).in(ScenePlus::getNum, canSyncList));
|
|
|
|
|
|
+ List<ScenePlus> scenePlusList = scenePlusService.list(new LambdaQueryWrapper<ScenePlus>().in(ScenePlus::getNum, canSyncList));//.eq(ScenePlus::getUserId, user.getId());
|
|
if(CollUtil.isEmpty(scenePlusList)){
|
|
if(CollUtil.isEmpty(scenePlusList)){
|
|
return Result.success();
|
|
return Result.success();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //平台管理员:能查看全部场景数据并且支持同步全部得数据 (平台管理员同步后的场景还是归属于之前这个场景的归属者)
|
|
|
|
+ //公司管理员:仅能看到自己的场景并且同步自己的场景数据
|
|
|
|
+ //公司员工:仅能看到自己的场景并且同步自己的场景数据
|
|
|
|
+ Set<Long> roleIds = userRoleService.getByUser(user);
|
|
|
|
+ if(!roleIds.contains(5L)){
|
|
|
|
+ List<String> notPermisionNums = scenePlusList.stream().filter(p->!p.getUserId().equals(user.getId())).map(p->p.getNum()).collect(Collectors.toList());
|
|
|
|
+ if(CollUtil.isNotEmpty(notPermisionNums)){
|
|
|
|
+ throw new BusinessException(ResultCode.NOT_PERMISSION.code(), JSON.toJSONString(notPermisionNums));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
List<SceneXspace> sceneXspaceList = scenePlusList.stream().map(p -> {
|
|
List<SceneXspace> sceneXspaceList = scenePlusList.stream().map(p -> {
|
|
SceneXspace sceneXspace = new SceneXspace();
|
|
SceneXspace sceneXspace = new SceneXspace();
|
|
sceneXspace.setNum(p.getNum());
|
|
sceneXspace.setNum(p.getNum());
|
|
sceneXspace.setUserId(p.getUserId());
|
|
sceneXspace.setUserId(p.getUserId());
|
|
sceneXspace.setSerial(UniqueStringGenerator.getUniqueString());
|
|
sceneXspace.setSerial(UniqueStringGenerator.getUniqueString());
|
|
|
|
+ sceneXspace.setCreator(user.getId());
|
|
return sceneXspace;
|
|
return sceneXspace;
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
|
|