Procházet zdrojové kódy

fix:用户角色部门编辑问题修复

xiwa před 2 roky
rodič
revize
b2295bdd4c

+ 3 - 6
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/config/id/SnowflakeIdGenerator.java

@@ -1,19 +1,16 @@
 package cc.iotkit.data.config.id;
 
-import cc.iotkit.common.utils.SnowflakeIdGeneratorUtil;
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.util.Objects;
-
 import com.github.yitter.contract.IdGeneratorOptions;
 import com.github.yitter.idgen.YitIdHelper;
 import org.hibernate.HibernateException;
 import org.hibernate.engine.spi.SharedSessionContractImplementor;
 import org.hibernate.id.IdentifierGenerator;
-import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.util.Objects;
 
 /**
  * @author: Longjun.Tu

+ 10 - 10
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysDeptDataImpl.java

@@ -62,14 +62,14 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
                 .and(ObjectUtil.isNotNull(dept.getParentId()), () -> tbSysDept.parentId.eq(dept.getParentId()))
                 .and(StringUtils.isNotEmpty(dept.getDeptName()), () -> tbSysDept.deptName.like(dept.getDeptName()))
                 .and(StringUtils.isNotEmpty(dept.getStatus()), () -> tbSysDept.status.eq(dept.getStatus()));
-        return MapstructUtils.convert(StreamSupport.stream(deptRepository.findAll(predicateBuilder.build()).spliterator(),false).collect(Collectors.toList()),SysDept.class);
+        return MapstructUtils.convert(StreamSupport.stream(deptRepository.findAll(predicateBuilder.build()).spliterator(), false).collect(Collectors.toList()), SysDept.class);
     }
 
     @Override
     public List<SysDept> findByRoleId(Long roleId) {
         List<TbSysDept> list = jpaQueryFactory.select(tbSysDept).from(tbSysDept).leftJoin(tbSysRoleDept).on(tbSysDept.id.eq(tbSysRoleDept.deptId))
                 .where(tbSysRoleDept.roleId.eq(roleId)).orderBy(tbSysDept.parentId.desc(), tbSysDept.orderNum.desc()).fetch();
-        return MapstructUtils.convert(list,SysDept.class);
+        return MapstructUtils.convert(list, SysDept.class);
 
     }
 
@@ -80,8 +80,8 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
 
     @Override
     public List<SysDept> findByDeptId(Long deptId) {
-        return MapstructUtils.convert(deptRepository.findAll().stream().filter(o->o.getAncestors().indexOf(deptId.toString())!=-1)
-                .collect(Collectors.toList()),SysDept.class);
+        return MapstructUtils.convert(deptRepository.findAll().stream().filter(o -> o.getAncestors().indexOf(deptId.toString()) != -1)
+                .collect(Collectors.toList()), SysDept.class);
     }
 
     @Override
@@ -91,18 +91,18 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
         if (ObjectUtil.isNotNull(deptId)) {
             predicateBuilder.and(tbSysDept.id.ne(deptId));
         }
-        Long aLong = jpaQueryFactory.select(tbSysDept.id.count()).where(predicateBuilder.build()).fetchOne();
-        if (aLong > 0) {
-            return true;
-        }
-        return false;
+        Long count = jpaQueryFactory.select(tbSysDept.id.count())
+                .from(tbSysDept)
+                .where(predicateBuilder.build())
+                .fetchOne();
+        return count==0;
     }
 
     @Override
     public long selectNormalChildrenDeptById(Long deptId) {
 
         PredicateBuilder predicateBuilder = PredicateBuilder.instance().and(tbSysDept.status.eq(UserConstants.DEPT_NORMAL));
-         return jpaQueryFactory.select(tbSysDept.ancestors).where(predicateBuilder.build()).fetch().stream().filter(o->o.indexOf(deptId.toString())!=-1).count();
+        return jpaQueryFactory.select(tbSysDept.ancestors).where(predicateBuilder.build()).fetch().stream().filter(o -> o.indexOf(deptId.toString()) != -1).count();
 
 
     }

+ 7 - 2
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysUserDataImpl.java

@@ -106,12 +106,17 @@ public class SysUserDataImpl implements ISysUserData, IJPACommData<SysUser, Long
         SysUser convert = MapstructUtils.convert(sysUser, SysUser.class);
         List<SysRole> sysRoles = sysRoleData.findByUserId(id);
         convert.setRoles(sysRoles);
-        SysDept dept = sysDeptData.findById(convert.getDeptId());
+
+        Long deptId = convert.getDeptId();
+        if(deptId==null){
+            return convert;
+        }
+
+        SysDept dept = sysDeptData.findById(deptId);
         if (ObjectUtil.isNotNull(dept)) {
             convert.setDept(dept);
         }
         return convert;
-
     }
 
     @Override

+ 0 - 4
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysUserRoleDataImpl.java

@@ -9,16 +9,12 @@ import cc.iotkit.data.util.PredicateBuilder;
 import cc.iotkit.model.system.SysUserRole;
 import com.querydsl.jpa.impl.JPAQueryFactory;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.Objects;
 
-import static cc.iotkit.data.model.QTbSysRole.tbSysRole;
-import static cc.iotkit.data.model.QTbSysRoleMenu.tbSysRoleMenu;
 import static cc.iotkit.data.model.QTbSysUserRole.tbSysUserRole;
 
 /**

+ 3 - 8
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysDeptController.java

@@ -44,7 +44,6 @@ public class SysDeptController extends BaseController {
 
     /**
      * 查询部门列表(排除节点)
-     *
      */
     @ApiOperation("查询部门列表(排除节点)")
     @SaCheckPermission("system:dept:list")
@@ -59,12 +58,11 @@ public class SysDeptController extends BaseController {
 
     /**
      * 根据部门编号获取详细信息
-     *
      */
     @SaCheckPermission("system:dept:query")
     @ApiOperation("根据部门编号获取详细信息")
     @PostMapping(value = "/getInfo")
-    public SysDeptVo getInfo(@Validated @RequestBody  Request<Long> bo) {
+    public SysDeptVo getInfo(@Validated @RequestBody Request<Long> bo) {
         Long deptId = bo.getData();
         deptService.checkDeptDataScope(deptId);
         return deptService.selectDeptById(deptId);
@@ -94,11 +92,9 @@ public class SysDeptController extends BaseController {
     @PostMapping("/edit")
     public void edit(@Validated @RequestBody Request<SysDeptBo> bo) {
         SysDeptBo dept = bo.getData();
-        Long deptId = dept.getDeptId();
+        Long deptId = dept.getId();
         deptService.checkDeptDataScope(deptId);
-        if (!deptService.checkDeptNameUnique(dept)) {
-            fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
-        } else if (dept.getParentId().equals(deptId)) {
+        if (dept.getParentId().equals(deptId)) {
             fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
         } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
                 && deptService.selectNormalChildrenDeptById(deptId) > 0) {
@@ -109,7 +105,6 @@ public class SysDeptController extends BaseController {
 
     /**
      * 删除部门
-     *
      */
     @SaCheckPermission("system:dept:remove")
     @ApiOperation("删除部门")

+ 0 - 5
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysPostController.java

@@ -95,11 +95,6 @@ public class SysPostController extends BaseController {
     @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     public void edit(@RequestBody @Validated(EditGroup.class) Request<SysPostBo> post) {
-        if (!postService.checkPostNameUnique(post.getData())) {
-            fail("修改岗位'" + post.getData().getPostName() + "'失败,岗位名称已存在");
-        } else if (!postService.checkPostCodeUnique(post.getData())) {
-            fail("修改岗位'" + post.getData().getPostName() + "'失败,岗位编码已存在");
-        }
         postService.updatePost(post.getData());
     }
 

+ 6 - 6
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysUserController.java

@@ -18,6 +18,7 @@ import cc.iotkit.common.validate.QueryGroup;
 import cc.iotkit.common.web.core.BaseController;
 import cc.iotkit.system.dto.bo.SysDeptBo;
 import cc.iotkit.system.dto.bo.SysUserBo;
+import cc.iotkit.system.dto.bo.SysUserRolesBo;
 import cc.iotkit.system.dto.vo.*;
 import cc.iotkit.system.listener.SysUserImportListener;
 import cc.iotkit.system.service.*;
@@ -236,7 +237,6 @@ public class SysUserController extends BaseController {
 
     /**
      * 根据用户编号获取授权角色
-     *
      */
     @ApiOperation("根据用户编号获取授权角色")
     @SaCheckPermission("system:user:query")
@@ -254,17 +254,17 @@ public class SysUserController extends BaseController {
     /**
      * 用户授权角色
      *
-     * @param reqUserId 用户Id
-     * @param roleIds   角色ID串
+     * @param userRole 用户角色
      */
     @ApiOperation("用户授权角色")
     @SaCheckPermission("system:user:edit")
     @Log(title = "用户管理", businessType = BusinessType.GRANT)
     @PostMapping("/authRole")
-    public void insertAuthRole(Request<Long> reqUserId, List<Long> roleIds) {
-        Long userId = reqUserId.getData();
+    public void insertAuthRole(@RequestBody @Validated Request<SysUserRolesBo> userRole) {
+        SysUserRolesBo data = userRole.getData();
+        Long userId = data.getUserId();
         userService.checkUserDataScope(userId);
-        userService.insertUserAuth(userId, roleIds);
+        userService.insertUserAuth(userId, data.getRoleIds());
     }
 
     /**

+ 1 - 1
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/bo/SysDeptBo.java

@@ -27,7 +27,7 @@ public class SysDeptBo extends BaseDto {
      * 部门id
      */
     @NotNull(message = "部门id不能为空", groups = { EditGroup.class })
-    private Long deptId;
+    private Long id;
 
     /**
      * 父部门ID

+ 1 - 1
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/bo/SysPostBo.java

@@ -26,7 +26,7 @@ public class SysPostBo extends BaseDto {
      * 岗位ID
      */
     @NotNull(message = "岗位ID不能为空", groups = { EditGroup.class })
-    private Long postId;
+    private Long id;
 
     /**
      * 岗位编码

+ 35 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/bo/SysUserRolesBo.java

@@ -0,0 +1,35 @@
+package cc.iotkit.system.dto.bo;
+
+import cc.iotkit.common.api.BaseDto;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 用户权限设置
+ *
+ * @author sjg
+ */
+
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class SysUserRolesBo extends BaseDto {
+
+    /**
+     * 用户ID
+     */
+    @NotNull(message = "用户ID不能为空")
+    private Long userId;
+
+    /**
+     * 角色组
+     */
+    @Size(min = 1, message = "用户角色不能为空")
+    private List<Long> roleIds;
+
+}

+ 26 - 25
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysDeptServiceImpl.java

@@ -1,6 +1,7 @@
 package cc.iotkit.system.service.impl;
 
 import cc.iotkit.common.constant.UserConstants;
+import cc.iotkit.common.enums.ErrCode;
 import cc.iotkit.common.exception.BizException;
 import cc.iotkit.common.satoken.utils.LoginHelper;
 import cc.iotkit.common.service.DeptService;
@@ -11,9 +12,7 @@ import cc.iotkit.common.utils.TreeBuildUtils;
 import cc.iotkit.data.system.ISysDeptData;
 import cc.iotkit.data.system.ISysRoleData;
 import cc.iotkit.data.system.ISysUserData;
-import cc.iotkit.data.util.PredicateBuilder;
 import cc.iotkit.model.system.SysDept;
-import cc.iotkit.model.system.SysRole;
 import cc.iotkit.system.dto.bo.SysDeptBo;
 import cc.iotkit.system.dto.vo.SysDeptVo;
 import cc.iotkit.system.service.ISysDeptService;
@@ -28,8 +27,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static cc.iotkit.data.model.QTbSysDept.tbSysDept;
-
 /**
  * 部门管理 服务实现
  *
@@ -178,7 +175,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
      */
     @Override
     public boolean checkDeptNameUnique(SysDeptBo dept) {
-        return sysDeptData.checkDeptNameUnique( dept.getDeptName(), dept.getParentId(), dept.getDeptId());
+        return sysDeptData.checkDeptNameUnique( dept.getDeptName(), dept.getParentId(), dept.getId());
     }
 
     /**
@@ -226,26 +223,30 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
 //    @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#bo.deptId")
     @Override
     public void updateDept(SysDeptBo bo) {
-//        SysDept dept = MapstructUtils.convert(bo, SysDept.class);
-//        SysDept oldDept = baseMapper.selectById(dept.getDeptId());
-//        if (!oldDept.getParentId().equals(dept.getParentId())) {
-//            // 如果是新父部门 则校验是否具有新父部门权限 避免越权
-//            this.checkDeptDataScope(dept.getParentId());
-//            SysDept newParentDept = baseMapper.selectById(dept.getParentId());
-//            if (ObjectUtil.isNotNull(newParentDept) && ObjectUtil.isNotNull(oldDept)) {
-//                String newAncestors = newParentDept.getAncestors() + StringUtils.SEPARATOR + newParentDept.getDeptId();
-//                String oldAncestors = oldDept.getAncestors();
-//                dept.setAncestors(newAncestors);
-//                updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
-//            }
-//        }
-//        int result = baseMapper.updateById(dept);
-//        if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
-//                && !StringUtils.equals(UserConstants.DEPT_NORMAL, dept.getAncestors())) {
-//            // 如果该部门是启用状态,则启用该部门的所有上级部门
-//            updateParentDeptStatusNormal(dept);
-//        }
-//        return result;
+        SysDept dept = MapstructUtils.convert(bo, SysDept.class);
+        SysDept oldDept = sysDeptData.findById(bo.getId());
+        if(oldDept==null){
+            throw new BizException(ErrCode.DATA_NOT_EXIST);
+        }
+
+        if (!oldDept.getParentId().equals(dept.getParentId())) {
+            // 如果是新父部门 则校验是否具有新父部门权限 避免越权
+            this.checkDeptDataScope(dept.getParentId());
+            SysDept newParentDept = sysDeptData.findById(dept.getParentId());
+            if (ObjectUtil.isNotNull(newParentDept) && ObjectUtil.isNotNull(oldDept)) {
+                String newAncestors = newParentDept.getAncestors() + StringUtils.SEPARATOR + newParentDept.getId();
+                String oldAncestors = oldDept.getAncestors();
+                dept.setAncestors(newAncestors);
+                updateDeptChildren(dept.getId(), newAncestors, oldAncestors);
+            }
+        }
+
+        sysDeptData.save(dept);
+        if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
+                && !StringUtils.equals(UserConstants.DEPT_NORMAL, dept.getAncestors())) {
+            // 如果该部门是启用状态,则启用该部门的所有上级部门
+            updateParentDeptStatusNormal(dept);
+        }
     }
 
     /**