Browse Source

Merge remote-tracking branch 'origin/master'

master
CMM 1 year ago
parent
commit
43296219ae
6 changed files with 52 additions and 23 deletions
  1. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml
  2. +10
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/sys/controller/MenuController.java
  3. +13
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java
  4. +12
    -17
      pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java
  5. +13
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java
  6. +3
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java

+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml View File

@@ -111,7 +111,7 @@
and np.project_name like concat('%', #{p.projectName}, '%') and np.project_name like concat('%', #{p.projectName}, '%')
</if> </if>
<if test="p.buildOrgName != null and p.buildOrgName.length > 0"> <if test="p.buildOrgName != null and p.buildOrgName.length > 0">
and np.build_org_name like concat('%', #{buildOrgName}, '%')
and np.build_org_name like concat('%', #{p.buildOrgName}, '%')
</if> </if>
<if test="p.reviewTimeMin != null"> <if test="p.reviewTimeMin != null">
and m.start_time &gt;= #{p.reviewTimeMin} and m.start_time &gt;= #{p.reviewTimeMin}


+ 10
- 1
pmapi/src/main/java/com/ningdatech/pmapi/sys/controller/MenuController.java View File

@@ -1,6 +1,7 @@
package com.ningdatech.pmapi.sys.controller; package com.ningdatech.pmapi.sys.controller;


import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
@@ -24,6 +25,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;


import javax.validation.Valid; import javax.validation.Valid;
import java.util.Collections;
import java.util.List; import java.util.List;


/** /**
@@ -69,7 +71,14 @@ public class MenuController {
@ApiOperation(value = "查询当前登录用户的菜单", notes = "查询当前登录用户的菜单") @ApiOperation(value = "查询当前登录用户的菜单", notes = "查询当前登录用户的菜单")
@GetMapping("/myMenu") @GetMapping("/myMenu")
public List<MenuRoleVO> currentUserMenu() { public List<MenuRoleVO> currentUserMenu() {
List<Menu> list = menuService.list(Wrappers.lambdaQuery(Menu.class).orderByAsc(Menu::getSort));
List<Long> roleIdList = LoginUserUtil.getRoleIdList();
if (CollUtil.isEmpty(roleIdList)) {
return Collections.emptyList();
}
String tmpSql = "(" + CollUtils.joinByComma(roleIdList) + ")";
List<Menu> list = menuService.list(Wrappers.lambdaQuery(Menu.class)
.exists("select 1 from nd_role_menu nur where nur.menu_id = nd_menu.id and nur.role_id in " + tmpSql)
.orderByAsc(Menu::getSort));
return menuManage.buildUserMenu(list); return menuManage.buildUserMenu(list);
} }




+ 13
- 0
pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java View File

@@ -3,6 +3,8 @@ package com.ningdatech.pmapi.sys.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.pmapi.sys.model.entity.UserRole; import com.ningdatech.pmapi.sys.model.entity.UserRole;


import java.util.List;

/** /**
* <p> * <p>
* 业务接口 * 业务接口
@@ -20,4 +22,15 @@ public interface IUserRoleService extends IService<UserRole> {
* @return 是否正确 * @return 是否正确
*/ */
boolean initAdmin(Long userId); boolean initAdmin(Long userId);

/**
* 查询角色关联的用户ID
*
* @param roleId 角色ID
* @return 用户ID集合
* @author WendyYang
**/
List<Long> listUserIdByRoleId(Long roleId);


} }

+ 12
- 17
pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java View File

@@ -12,10 +12,10 @@ import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.exception.code.ExceptionCode; import com.ningdatech.basic.exception.code.ExceptionCode;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.cache.repository.CachePlusOps; import com.ningdatech.cache.repository.CachePlusOps;
import com.ningdatech.pmapi.sys.mapper.RoleMapper;
import com.ningdatech.pmapi.sys.model.dto.MenuDataScopeDTO; import com.ningdatech.pmapi.sys.model.dto.MenuDataScopeDTO;
import com.ningdatech.pmapi.sys.model.dto.RoleSaveDTO; import com.ningdatech.pmapi.sys.model.dto.RoleSaveDTO;
import com.ningdatech.pmapi.sys.model.dto.RoleUpdateDTO; import com.ningdatech.pmapi.sys.model.dto.RoleUpdateDTO;
import com.ningdatech.pmapi.sys.mapper.RoleMapper;
import com.ningdatech.pmapi.sys.model.entity.*; import com.ningdatech.pmapi.sys.model.entity.*;
import com.ningdatech.pmapi.sys.service.*; import com.ningdatech.pmapi.sys.service.*;
import com.ningdatech.pmapi.sys.utils.AuthCacheKeyUtils; import com.ningdatech.pmapi.sys.utils.AuthCacheKeyUtils;
@@ -40,18 +40,12 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor @RequiredArgsConstructor
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService { public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {


private final IUserRoleService IUserRoleService;
private final IUserRoleService userRoleService;
private final RoleMapper roleMapper; private final RoleMapper roleMapper;
private final IRoleMenuDatascopeService roleMenuDatascopeService; private final IRoleMenuDatascopeService roleMenuDatascopeService;

private final CachePlusOps cachePlusOps; private final CachePlusOps cachePlusOps;

private final IRoleMenuService roleMenuService; private final IRoleMenuService roleMenuService;

private final IMenuService IMenuService;

private static final String SUPER_ADMIN = "SUPER_ADMIN";

private final IMenuService menuService;


/** /**
* 删除角色时,需要级联删除跟角色相关的一切资源: * 删除角色时,需要级联删除跟角色相关的一切资源:
@@ -68,7 +62,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
return true; return true;
} }


if (IUserRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId)
if (userRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId)
.in(UserRole::getRoleId, ids)) > 0) { .in(UserRole::getRoleId, ids)) > 0) {
throw new BizException(ExceptionCode.OPERATION_EX.getCode(), "该角色下还有用户 不能随意删除!"); throw new BizException(ExceptionCode.OPERATION_EX.getCode(), "该角色下还有用户 不能随意删除!");
} }
@@ -77,7 +71,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
boolean removeFlag = removeByIds(ids); boolean removeFlag = removeByIds(ids);


//角色拥有的用户 //角色拥有的用户
IUserRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids));
userRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids));
if (removeFlag) { if (removeFlag) {
// 角色绑定了那些用户 // 角色绑定了那些用户
if (roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).in(RoleMenu::getRoleId, ids))) { if (roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).in(RoleMenu::getRoleId, ids))) {
@@ -149,18 +143,19 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
public void updateRole(RoleUpdateDTO data, Long userId) { public void updateRole(RoleUpdateDTO data, Long userId) {
Role roleOld = roleMapper.selectById(data.getId()); Role roleOld = roleMapper.selectById(data.getId());
if (Objects.isNull(roleOld)) { if (Objects.isNull(roleOld)) {
throw new BaseUncheckedException(HttpStatus.HTTP_OK, String.format("修改用户%d 为空", data.getId()));
throw BizException.wrap("修改用户 %d 为空", data.getId());
} }


if (StrUtil.isNotBlank(data.getName()) && check(data.getName(), roleOld.getId())) { if (StrUtil.isNotBlank(data.getName()) && check(data.getName(), roleOld.getId())) {
throw BizException.wrap("角色名{} 已经存在", data.getName());
throw BizException.wrap("角色名 %s 已经存在", data.getName());
} }
Role role = BeanUtil.toBean(data, Role.class); Role role = BeanUtil.toBean(data, Role.class);
role.setUpdateBy(userId); role.setUpdateBy(userId);
updateById(role); updateById(role);
saveRoleMenu(data.getMenuIds(), role.getId()); saveRoleMenu(data.getMenuIds(), role.getId());
saveRoleMenuDatascope(data.getMenuDataScopeList(), role.getId()); saveRoleMenuDatascope(data.getMenuDataScopeList(), role.getId());
cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(userId));
List<Long> userIdList = userRoleService.listUserIdByRoleId(role.getId());
userIdList.forEach(w -> cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(w)));
} }


@Override @Override
@@ -180,11 +175,11 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
} }


private void saveRoleMenu(List<Long> menuIds, Long roleId) { private void saveRoleMenu(List<Long> menuIds, Long roleId) {
roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).eq(RoleMenu::getRoleId, roleId));
if (CollUtil.isNotEmpty(menuIds)) { if (CollUtil.isNotEmpty(menuIds)) {
roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).eq(RoleMenu::getRoleId, roleId));
Set<RoleMenu> toAddMenus = new HashSet<>(); Set<RoleMenu> toAddMenus = new HashSet<>();
for (Long menuId : menuIds) { for (Long menuId : menuIds) {
Menu menu = IMenuService.getById(menuId);
Menu menu = menuService.getById(menuId);
if (Objects.isNull(menu)) { if (Objects.isNull(menu)) {
continue; continue;
} }
@@ -203,7 +198,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
if (Objects.isNull(menu.getPid()) || menu.getPid().equals(0L)) { if (Objects.isNull(menu.getPid()) || menu.getPid().equals(0L)) {
return; return;
} }
Menu parent = IMenuService.getById(menu.getPid());
Menu parent = menuService.getById(menu.getPid());
if (Objects.isNull(parent)) { if (Objects.isNull(parent)) {
return; return;
} }


+ 13
- 2
pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java View File

@@ -4,16 +4,19 @@ import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ningdatech.basic.exception.BaseUncheckedException; import com.ningdatech.basic.exception.BaseUncheckedException;
import com.ningdatech.pmapi.sys.model.entity.Role;
import com.ningdatech.pmapi.sys.model.entity.UserRole;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.pmapi.sys.mapper.RoleMapper; import com.ningdatech.pmapi.sys.mapper.RoleMapper;
import com.ningdatech.pmapi.sys.mapper.UserRoleMapper; import com.ningdatech.pmapi.sys.mapper.UserRoleMapper;
import com.ningdatech.pmapi.sys.model.entity.Role;
import com.ningdatech.pmapi.sys.model.entity.UserRole;
import com.ningdatech.pmapi.sys.service.IUserRoleService; import com.ningdatech.pmapi.sys.service.IUserRoleService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;


import java.util.List;

/** /**
* <p> * <p>
* 业务实现类 * 业务实现类
@@ -46,4 +49,12 @@ public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> i


return super.save(userRole); return super.save(userRole);
} }

@Override
public List<Long> listUserIdByRoleId(Long roleId) {
List<UserRole> userRoles = this.list(Wrappers.<UserRole>lambdaQuery()
.eq(UserRole::getRoleId, roleId));
return CollUtils.fieldList(userRoles, UserRole::getUserId);
}

} }

+ 3
- 2
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java View File

@@ -500,8 +500,9 @@ public class TodoCenterManage {
// 判断当前工作流任务前一个审核人的部门和当前登录用户的部门是否是同一个,如果是同一个才可以撤回,否则抛出异常 // 判断当前工作流任务前一个审核人的部门和当前登录用户的部门是否是同一个,如果是同一个才可以撤回,否则抛出异常
// 获取当前当前工作流任务当前审核人信息 // 获取当前当前工作流任务当前审核人信息
UserFullInfoDTO currentUserInfo = userInfoHelper.getUserFullInfoByEmployeeCode(currentProgressNode.getUserId()); UserFullInfoDTO currentUserInfo = userInfoHelper.getUserFullInfoByEmployeeCode(currentProgressNode.getUserId());
VUtils.isTrue(!currentUserInfo.getOrganizationCode().equals(user.getOrganizationCode()))
.throwMessage("当前审核人和您不是同一个部门,无法撤回!");
if(!currentUserInfo.getOrganizationCode().equals(user.getOrganizationCode())){
return Boolean.FALSE;
}


UserFullInfoDTO beforeUser = null; UserFullInfoDTO beforeUser = null;
Boolean isAndOr = Boolean.FALSE; Boolean isAndOr = Boolean.FALSE;


Loading…
Cancel
Save