|
@@ -5,21 +5,29 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.boot.api.exception.ApiException;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.SysRole;
|
|
|
+import com.qmth.teachcloud.common.entity.SysRolePrivilege;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.entity.SysUserRole;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
|
|
|
import com.qmth.teachcloud.common.mapper.SysRoleMapper;
|
|
|
import com.qmth.teachcloud.common.service.CacheService;
|
|
|
import com.qmth.teachcloud.common.service.SysRolePrivilegeService;
|
|
|
import com.qmth.teachcloud.common.service.SysRoleService;
|
|
|
import com.qmth.teachcloud.common.service.SysUserRoleService;
|
|
|
+import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import sun.misc.Request;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -44,6 +52,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
@Autowired
|
|
|
private CacheService cacheService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ SysRoleService sysRoleService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
@@ -53,6 +64,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
+ @Deprecated
|
|
|
public boolean saveRole(SysRole role) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
role.setSchoolId(schoolId);
|
|
@@ -104,6 +116,49 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
return isSuccess;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增角色
|
|
|
+ *
|
|
|
+ * @param role
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public boolean saveRoleNew(SysRole role) {
|
|
|
+ try {
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
+ if (Objects.nonNull(role.getId())) {//编辑
|
|
|
+ QueryWrapper<SysRolePrivilege> sysRolePrivilegeQueryWrapper = new QueryWrapper<>();
|
|
|
+ sysRolePrivilegeQueryWrapper.lambda().eq(SysRolePrivilege::getRoleId, role.getId())
|
|
|
+ .eq(SysRolePrivilege::getEnable, true);
|
|
|
+ List<SysRolePrivilege> sysRolePrivilegeList = sysRolePrivilegeService.list(sysRolePrivilegeQueryWrapper);
|
|
|
+ int count = (int) sysRolePrivilegeList.stream().filter(s -> Arrays.asList(role.getPrivilegeIds()).contains(s.getPrivilegeId())).count();
|
|
|
+ role.setUpdateId(sysUser.getId());
|
|
|
+ sysRoleService.updateById(role);
|
|
|
+ if (count != sysRolePrivilegeList.size()) {
|
|
|
+ sysRolePrivilegeService.removeByRoleId(role.getId());
|
|
|
+ //角色权限
|
|
|
+ sysRolePrivilegeService.saveBatch(role);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ role.setCreateId(sysUser.getId());
|
|
|
+ sysRoleService.save(role);
|
|
|
+ sysRolePrivilegeService.saveBatch(role);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ if (e instanceof DuplicateKeyException) {
|
|
|
+ String errorColumn = e.getCause().toString();
|
|
|
+ String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
|
|
|
+ throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
|
|
|
+ } else if (e instanceof ApiException) {
|
|
|
+ ResultUtil.error((ApiException) e, e.getMessage());
|
|
|
+ } else {
|
|
|
+ ResultUtil.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean enable(SysRole role) {
|
|
|
UpdateWrapper<SysRole> updateWrapper = new UpdateWrapper<>();
|