|
@@ -14,6 +14,7 @@ package vip.xiaonuo.sys.modular.relation.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import jakarta.annotation.Resource;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -21,6 +22,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import vip.xiaonuo.sys.modular.relation.entity.SysRelation;
|
|
import vip.xiaonuo.sys.modular.relation.entity.SysRelation;
|
|
import vip.xiaonuo.sys.modular.relation.mapper.SysRelationMapper;
|
|
import vip.xiaonuo.sys.modular.relation.mapper.SysRelationMapper;
|
|
import vip.xiaonuo.sys.modular.relation.service.SysRelationService;
|
|
import vip.xiaonuo.sys.modular.relation.service.SysRelationService;
|
|
|
|
+import vip.xiaonuo.sys.modular.role.service.SysRoleService;
|
|
|
|
+import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -34,6 +38,9 @@ import java.util.stream.Collectors;
|
|
@Service
|
|
@Service
|
|
public class SysRelationServiceImpl extends ServiceImpl<SysRelationMapper, SysRelation> implements SysRelationService {
|
|
public class SysRelationServiceImpl extends ServiceImpl<SysRelationMapper, SysRelation> implements SysRelationService {
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private SysRoleService sysRoleService;
|
|
|
|
+
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void saveRelation(String objectId, String targetId, String category, String extJson, boolean clear) {
|
|
public void saveRelation(String objectId, String targetId, String category, String extJson, boolean clear) {
|
|
// 是否需要先删除关系
|
|
// 是否需要先删除关系
|
|
@@ -72,6 +79,29 @@ public class SysRelationServiceImpl extends ServiceImpl<SysRelationMapper, SysRe
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void saveRelationType(String objectId, String roleName, String category, boolean clear) {
|
|
|
|
+ // 是否需要先删除关系
|
|
|
|
+ if(clear) {
|
|
|
|
+ this.remove(new LambdaQueryWrapper<SysRelation>().eq(SysRelation::getObjectId, objectId)
|
|
|
|
+ .eq(SysRelation::getCategory, category));
|
|
|
|
+ }
|
|
|
|
+ List<SysRelation> sysRelationList = CollectionUtil.newArrayList();
|
|
|
|
+ QueryWrapper<SysRole> queryWrapper = new QueryWrapper<SysRole>().checkSqlInjection();
|
|
|
|
+ queryWrapper.lambda().like(SysRole::getName, roleName);
|
|
|
|
+ List<SysRole> sysRoleList = this.sysRoleService.list(queryWrapper);
|
|
|
|
+ for(int i = 0; i < sysRoleList.size(); i++) {
|
|
|
|
+ SysRelation sysRelation = new SysRelation();
|
|
|
|
+ sysRelation.setObjectId(objectId);
|
|
|
|
+ sysRelation.setTargetId(sysRoleList.get(i).getId());
|
|
|
|
+ sysRelation.setCategory(category);
|
|
|
|
+ sysRelationList.add(sysRelation);
|
|
|
|
+ }
|
|
|
|
+ if(ObjectUtil.isNotEmpty(sysRelationList)) {
|
|
|
|
+ this.saveBatch(sysRelationList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void saveRelationWithAppend(String objectId, String targetId, String category) {
|
|
public void saveRelationWithAppend(String objectId, String targetId, String category) {
|
|
this.saveRelation(objectId, targetId, category, null, false);
|
|
this.saveRelation(objectId, targetId, category, null, false);
|
|
@@ -107,6 +137,11 @@ public class SysRelationServiceImpl extends ServiceImpl<SysRelationMapper, SysRe
|
|
this.saveRelationBatch(objectId, targetIdList, category, null, true);
|
|
this.saveRelationBatch(objectId, targetIdList, category, null, true);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void saveRelationTypeWithClear(String objectId, String roleName, String category) {
|
|
|
|
+ this.saveRelationType(objectId, roleName, category, true);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void saveRelationBatchWithClear(String objectId, List<String> targetIdList, String category, List<String> extJsonList) {
|
|
public void saveRelationBatchWithClear(String objectId, List<String> targetIdList, String category, List<String> extJsonList) {
|
|
this.saveRelationBatch(objectId, targetIdList, category, extJsonList, true);
|
|
this.saveRelationBatch(objectId, targetIdList, category, extJsonList, true);
|