|
@@ -0,0 +1,71 @@
|
|
|
+package com.qmth.distributed.print.business.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
|
|
|
+import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
|
|
|
+import com.qmth.distributed.print.business.mapper.BasicRoleDataPermissionMapper;
|
|
|
+import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
|
|
|
+import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
+import com.qmth.teachcloud.common.entity.SysPrivilege;
|
|
|
+import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.PrivilegeEnum;
|
|
|
+import com.qmth.teachcloud.common.service.SysPrivilegeService;
|
|
|
+import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description: 数据权限服务实现类
|
|
|
+ * @Author: CaoZixuan
|
|
|
+ * @Date: 2022-12-06
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDataPermissionMapper, BasicRoleDataPermission> implements BasicRoleDataPermissionService {
|
|
|
+ @Resource
|
|
|
+ SysPrivilegeService sysPrivilegeService;
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void saveRoleDataPermission(Long roleId, List<DataPermissionInfo> dataPermissionInfoList) {
|
|
|
+ SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
+ Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
|
|
|
+
|
|
|
+ List<Long> privilegeIdList = dataPermissionInfoList.stream()
|
|
|
+ .map(DataPermissionInfo::getId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (privilegeIdList.size() > 0) {
|
|
|
+ int count = sysPrivilegeService.count(new QueryWrapper<SysPrivilege>()
|
|
|
+ .lambda()
|
|
|
+ .ne(SysPrivilege::getType, PrivilegeEnum.MENU)
|
|
|
+ .in(SysPrivilege::getId, privilegeIdList));
|
|
|
+
|
|
|
+ if (count > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("角色数据权限要绑在菜单级权限上");
|
|
|
+ }
|
|
|
+ this.remove(new QueryWrapper<BasicRoleDataPermission>().lambda()
|
|
|
+ .eq(BasicRoleDataPermission::getSchoolId, requestUser.getSchoolId())
|
|
|
+ .eq(BasicRoleDataPermission::getRoleId, roleId));
|
|
|
+
|
|
|
+ List<BasicRoleDataPermission> basicRoleDataPermissionList = dataPermissionInfoList.stream().flatMap(e -> {
|
|
|
+ BasicRoleDataPermission basicRoleDataPermission = new BasicRoleDataPermission();
|
|
|
+ basicRoleDataPermission.insertInfo(requestUser.getId());
|
|
|
+ basicRoleDataPermission.setSchoolId(schoolId);
|
|
|
+ basicRoleDataPermission.setRoleId(roleId);
|
|
|
+ basicRoleDataPermission.setPrivilegeId(e.getId());
|
|
|
+ basicRoleDataPermission.setDataPermissionType(e.getDataPermissionType());
|
|
|
+ return Stream.of(basicRoleDataPermission);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ this.saveBatch(basicRoleDataPermissionList);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|