mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-18 19:16:37 +08:00
同步到1.7版本
This commit is contained in:
@@ -74,7 +74,7 @@ public class LoginUserController {
|
||||
public ResponseResult<Void> delete(@MyRequestBody String sessionId) {
|
||||
// 为了保证被剔除用户正在进行的操作不被干扰,这里只是删除sessionIdKey即可,这样可以使强制下线操作更加平滑。
|
||||
// 比如,如果删除操作权限或数据权限的redis session key,那么正在请求数据的操作就会报错。
|
||||
redissonClient.getBucket(RedisKeyUtil.makeSessionIdKeyForRedis(sessionId)).delete();
|
||||
redissonClient.getBucket(RedisKeyUtil.makeSessionIdKey(sessionId)).delete();
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.orange.demo.upmsservice.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -11,6 +12,7 @@ import com.orange.demo.common.core.annotation.MyRequestBody;
|
||||
import com.orange.demo.common.core.validator.UpdateGroup;
|
||||
import com.orange.demo.upmsapi.dto.SysMenuDto;
|
||||
import com.orange.demo.upmsapi.vo.SysMenuVo;
|
||||
import com.orange.demo.upmsapi.constant.SysMenuType;
|
||||
import com.orange.demo.upmsservice.model.SysMenu;
|
||||
import com.orange.demo.upmsservice.service.SysMenuService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -42,15 +44,26 @@ public class SysMenuController {
|
||||
* @return 应答结果对象,包含新增菜单的主键Id。
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@ApiOperationSupport(ignoreParameters = {"sysMenu.menuId"})
|
||||
@ApiOperationSupport(ignoreParameters = {"sysMenuDto.menuId"})
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Long> add(
|
||||
@MyRequestBody("sysMenu") SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) {
|
||||
@MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysMenuDto);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
SysMenu sysMenu = MyModelUtil.copyTo(sysMenuDto, SysMenu.class);
|
||||
if (sysMenu.getParentId() != null) {
|
||||
SysMenu parentSysMenu = sysMenuService.getById(sysMenu.getParentId());
|
||||
if (parentSysMenu == null) {
|
||||
errorMessage = "数据验证失败,关联的父菜单不存在!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
if (parentSysMenu.getOnlineFormId() != null) {
|
||||
errorMessage = "数据验证失败,不能动态表单菜单添加父菜单!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
}
|
||||
CallResult result = sysMenuService.verifyRelatedData(sysMenu, null, permCodeIdListString);
|
||||
if (!result.isSuccess()) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage());
|
||||
@@ -73,7 +86,7 @@ public class SysMenuController {
|
||||
@SuppressWarnings("unchecked")
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Void> update(
|
||||
@MyRequestBody("sysMenu") SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) {
|
||||
@MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysMenuDto, Default.class, UpdateGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -84,6 +97,21 @@ public class SysMenuController {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
|
||||
}
|
||||
SysMenu sysMenu = MyModelUtil.copyTo(sysMenuDto, SysMenu.class);
|
||||
if (ObjectUtil.notEqual(originalSysMenu.getOnlineFormId(), sysMenu.getOnlineFormId())) {
|
||||
if (originalSysMenu.getOnlineFormId() == null) {
|
||||
errorMessage = "数据验证失败,不能为当前菜单添加在线表单Id属性!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
if (sysMenu.getOnlineFormId() == null) {
|
||||
errorMessage = "数据验证失败,不能去掉当前菜单的在线表单Id属性!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
}
|
||||
if (originalSysMenu.getOnlineFormId() != null
|
||||
&& originalSysMenu.getMenuType().equals(SysMenuType.TYPE_BUTTON)) {
|
||||
errorMessage = "数据验证失败,在线表单的内置菜单不能编辑!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
CallResult result = sysMenuService.verifyRelatedData(sysMenu, originalSysMenu, permCodeIdListString);
|
||||
if (!result.isSuccess()) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage());
|
||||
@@ -111,11 +139,20 @@ public class SysMenuController {
|
||||
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
|
||||
}
|
||||
String errorMessage;
|
||||
if (sysMenuService.hasChildren(menuId)) {
|
||||
SysMenu menu = sysMenuService.getById(menuId);
|
||||
if (menu == null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
|
||||
}
|
||||
if (menu.getOnlineFormId() != null && menu.getMenuType().equals(SysMenuType.TYPE_BUTTON)) {
|
||||
errorMessage = "数据验证失败,在线表单的内置菜单不能删除!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
}
|
||||
// 对于在线表单,无需进行子菜单的验证,而是在删除的时候,连同子菜单一起删除。
|
||||
if (menu.getOnlineFormId() == null && sysMenuService.hasChildren(menuId)) {
|
||||
errorMessage = "数据验证失败,当前菜单存在下级菜单!";
|
||||
return ResponseResult.error(ErrorCodeEnum.HAS_CHILDREN_DATA, errorMessage);
|
||||
}
|
||||
if (!sysMenuService.remove(menuId)) {
|
||||
if (!sysMenuService.remove(menu)) {
|
||||
errorMessage = "数据操作失败,菜单不存在,请刷新后重试!";
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
|
||||
}
|
||||
|
||||
@@ -43,10 +43,10 @@ public class SysPermCodeController {
|
||||
* @return 应答结果对象,包含新增权限字的主键Id。
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@ApiOperationSupport(ignoreParameters = {"sysPermCode.permCodeId"})
|
||||
@ApiOperationSupport(ignoreParameters = {"sysPermCodeDto.permCodeId"})
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Long> add(
|
||||
@MyRequestBody("sysPermCode") SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) {
|
||||
@MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysPermCodeDto);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED);
|
||||
@@ -74,7 +74,7 @@ public class SysPermCodeController {
|
||||
@SuppressWarnings("unchecked")
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Void> update(
|
||||
@MyRequestBody("sysPermCode") SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) {
|
||||
@MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysPermCodeDto, Default.class, UpdateGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
|
||||
@@ -44,9 +44,9 @@ public class SysPermController {
|
||||
* @param sysPermDto 新增权限资源对象。
|
||||
* @return 应答结果对象,包含新增权限资源的主键Id。
|
||||
*/
|
||||
@ApiOperationSupport(ignoreParameters = {"sysPerm.permId"})
|
||||
@ApiOperationSupport(ignoreParameters = {"sysPermDto.permId"})
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Long> add(@MyRequestBody("sysPerm") SysPermDto sysPermDto) {
|
||||
public ResponseResult<Long> add(@MyRequestBody SysPermDto sysPermDto) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -67,7 +67,7 @@ public class SysPermController {
|
||||
* @return 应答结果对象,包含更新权限资源的主键Id。
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Void> update(@MyRequestBody("sysPerm") SysPermDto sysPermDto) {
|
||||
public ResponseResult<Void> update(@MyRequestBody SysPermDto sysPermDto) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto, Default.class, UpdateGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -126,17 +126,17 @@ public class SysPermController {
|
||||
/**
|
||||
* 查看权限资源列表。
|
||||
*
|
||||
* @param sysPermDtoFiltter 过滤对象。
|
||||
* @param sysPermDtoFilter 过滤对象。
|
||||
* @param pageParam 分页参数。
|
||||
* @return 应答结果对象,包含权限资源列表。
|
||||
*/
|
||||
@PostMapping("/list")
|
||||
public ResponseResult<MyPageData<SysPermVo>> list(
|
||||
@MyRequestBody("sysPermFilter") SysPermDto sysPermDtoFiltter, @MyRequestBody MyPageParam pageParam) {
|
||||
@MyRequestBody SysPermDto sysPermDtoFilter, @MyRequestBody MyPageParam pageParam) {
|
||||
if (pageParam != null) {
|
||||
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
|
||||
}
|
||||
SysPerm filter = MyModelUtil.copyTo(sysPermDtoFiltter, SysPerm.class);
|
||||
SysPerm filter = MyModelUtil.copyTo(sysPermDtoFilter, SysPerm.class);
|
||||
List<SysPerm> permList = sysPermService.getPermListWithRelation(filter);
|
||||
List<SysPermVo> permVoList = MyModelUtil.copyCollectionTo(permList, SysPermVo.class);
|
||||
long totalCount = 0L;
|
||||
|
||||
@@ -45,9 +45,9 @@ public class SysPermModuleController {
|
||||
* @param sysPermModuleDto 新增权限资源模块对象。
|
||||
* @return 应答结果对象,包含新增权限资源模块的主键Id。
|
||||
*/
|
||||
@ApiOperationSupport(ignoreParameters = {"sysPermModule.moduleId"})
|
||||
@ApiOperationSupport(ignoreParameters = {"sysPermModuleDto.moduleId"})
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Long> add(@MyRequestBody("sysPermModule") SysPermModuleDto sysPermModuleDto) {
|
||||
public ResponseResult<Long> add(@MyRequestBody SysPermModuleDto sysPermModuleDto) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -69,7 +69,7 @@ public class SysPermModuleController {
|
||||
* @return 应答结果对象,包含新增权限资源模块的主键Id。
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Void> update(@MyRequestBody("sysPermModule") SysPermModuleDto sysPermModuleDto) {
|
||||
public ResponseResult<Void> update(@MyRequestBody SysPermModuleDto sysPermModuleDto) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto, Default.class, UpdateGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
|
||||
@@ -53,10 +53,10 @@ public class SysRoleController {
|
||||
* @return 应答结果对象,包含新增角色的主键Id。
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@ApiOperationSupport(ignoreParameters = {"sysRole.roleId", "sysRole.createTimeStart", "sysRole.createTimeEnd"})
|
||||
@ApiOperationSupport(ignoreParameters = {"sysRoleDto.roleId", "sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"})
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Long> add(
|
||||
@MyRequestBody("sysRole") SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) {
|
||||
@MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysRoleDto);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -82,10 +82,10 @@ public class SysRoleController {
|
||||
* @return 应答结果对象。
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@ApiOperationSupport(ignoreParameters = {"sysRole.createTimeStart", "sysRole.createTimeEnd"})
|
||||
@ApiOperationSupport(ignoreParameters = {"sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"})
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Void> update(
|
||||
@MyRequestBody("sysRole") SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) {
|
||||
@MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysRoleDto, Default.class, UpdateGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -139,7 +139,7 @@ public class SysRoleController {
|
||||
*/
|
||||
@PostMapping("/list")
|
||||
public ResponseResult<MyPageData<SysRoleVo>> list(
|
||||
@MyRequestBody("sysRoleFilter") SysRoleDto sysRoleDtoFilter,
|
||||
@MyRequestBody SysRoleDto sysRoleDtoFilter,
|
||||
@MyRequestBody MyOrderParam orderParam,
|
||||
@MyRequestBody MyPageParam pageParam) {
|
||||
if (pageParam != null) {
|
||||
@@ -188,7 +188,7 @@ public class SysRoleController {
|
||||
@PostMapping("/listNotInUserRole")
|
||||
public ResponseResult<MyPageData<SysUserVo>> listNotInUserRole(
|
||||
@MyRequestBody Long roleId,
|
||||
@MyRequestBody("sysUserFilter") SysUserDto sysUserDtoFilter,
|
||||
@MyRequestBody SysUserDto sysUserDtoFilter,
|
||||
@MyRequestBody MyOrderParam orderParam,
|
||||
@MyRequestBody MyPageParam pageParam) {
|
||||
ResponseResult<Void> verifyResult = this.doRoleUserVerify(roleId);
|
||||
@@ -217,7 +217,7 @@ public class SysRoleController {
|
||||
@PostMapping("/listUserRole")
|
||||
public ResponseResult<MyPageData<SysUserVo>> listUserRole(
|
||||
@MyRequestBody Long roleId,
|
||||
@MyRequestBody("sysUserFilter") SysUserDto sysUserDtoFilter,
|
||||
@MyRequestBody SysUserDto sysUserDtoFilter,
|
||||
@MyRequestBody MyOrderParam orderParam,
|
||||
@MyRequestBody MyPageParam pageParam) {
|
||||
ResponseResult<Void> verifyResult = this.doRoleUserVerify(roleId);
|
||||
|
||||
@@ -54,12 +54,12 @@ public class SysUserController extends BaseController<SysUser, SysUserVo, Long>
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@ApiOperationSupport(ignoreParameters = {
|
||||
"sysUser.userId",
|
||||
"sysUser.createTimeStart",
|
||||
"sysUser.createTimeEnd"})
|
||||
"sysUserDto.userId",
|
||||
"sysUserDto.createTimeStart",
|
||||
"sysUserDto.createTimeEnd"})
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Long> add(
|
||||
@MyRequestBody("sysUser") SysUserDto sysUserDto, @MyRequestBody String roleIdListString) {
|
||||
@MyRequestBody SysUserDto sysUserDto, @MyRequestBody String roleIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, Default.class, AddGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -83,11 +83,11 @@ public class SysUserController extends BaseController<SysUser, SysUserVo, Long>
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@ApiOperationSupport(ignoreParameters = {
|
||||
"sysUser.createTimeStart",
|
||||
"sysUser.createTimeEnd"})
|
||||
"sysUserDto.createTimeStart",
|
||||
"sysUserDto.createTimeEnd"})
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Void> update(
|
||||
@MyRequestBody("sysUser") SysUserDto sysUserDto, @MyRequestBody String roleIdListString) {
|
||||
@MyRequestBody SysUserDto sysUserDto, @MyRequestBody String roleIdListString) {
|
||||
String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, Default.class, UpdateGroup.class);
|
||||
if (errorMessage != null) {
|
||||
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
|
||||
@@ -161,7 +161,7 @@ public class SysUserController extends BaseController<SysUser, SysUserVo, Long>
|
||||
*/
|
||||
@PostMapping("/list")
|
||||
public ResponseResult<MyPageData<SysUserVo>> list(
|
||||
@MyRequestBody("sysUserFilter") SysUserDto sysUserDtoFilter,
|
||||
@MyRequestBody SysUserDto sysUserDtoFilter,
|
||||
@MyRequestBody MyOrderParam orderParam,
|
||||
@MyRequestBody MyPageParam pageParam) {
|
||||
if (pageParam != null) {
|
||||
|
||||
@@ -22,6 +22,16 @@ public interface SysMenuMapper extends BaseDaoMapper<SysMenu> {
|
||||
*/
|
||||
List<SysMenu> getMenuListByUserId(@Param("userId") Long userId);
|
||||
|
||||
/**
|
||||
* 获取当前用户有权访问的在线表单菜单,仅返回类型为BUTTON的菜单。
|
||||
*
|
||||
* @param userId 指定的用户。
|
||||
* @param menuType 菜单类型,NULL则返回全部类型。
|
||||
* @return 在线表单关联的菜单列表。
|
||||
*/
|
||||
List<SysMenu> getOnlineMenuListByUserId(
|
||||
@Param("userId") Long userId, @Param("menuType") Integer menuType);
|
||||
|
||||
/**
|
||||
* 查询菜单的权限资源地址列表。同时返回详细的分配路径。
|
||||
*
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
<result column="menu_name" jdbcType="VARCHAR" property="menuName"/>
|
||||
<result column="menu_type" jdbcType="INTEGER" property="menuType"/>
|
||||
<result column="form_router_name" jdbcType="VARCHAR" property="formRouterName"/>
|
||||
<result column="online_form_id" jdbcType="BIGINT" property="onlineFormId"/>
|
||||
<result column="online_menu_perm_type" jdbcType="INTEGER" property="onlineMenuPermType"/>
|
||||
<result column="show_order" jdbcType="INTEGER" property="showOrder"/>
|
||||
<result column="icon" jdbcType="VARCHAR" property="icon"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
@@ -32,6 +34,25 @@
|
||||
ORDER BY m.show_order
|
||||
</select>
|
||||
|
||||
<select id="getOnlineMenuListByUserId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
m.*
|
||||
FROM
|
||||
zz_sys_user_role ur,
|
||||
zz_sys_role_menu rm,
|
||||
zz_sys_menu m
|
||||
<where>
|
||||
AND ur.user_id = #{userId}
|
||||
AND ur.role_id = rm.role_id
|
||||
AND rm.menu_id = m.menu_id
|
||||
AND m.online_form_id IS NOT NULL
|
||||
<if test="menuType != null">
|
||||
AND m.menu_type = #{menuType}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY m.show_order
|
||||
</select>
|
||||
|
||||
<!-- 以下查询仅用于权限分配的问题定位,由于关联表较多,可能会给系统运行带来性能影响 -->
|
||||
<select id="getSysPermListWithDetail" resultType="map">
|
||||
SELECT
|
||||
|
||||
@@ -56,6 +56,18 @@ public class SysMenu extends BaseModel {
|
||||
@Column(name = "form_router_name")
|
||||
private String formRouterName;
|
||||
|
||||
/**
|
||||
* 在线表单主键Id,仅用于在线表单绑定的菜单。
|
||||
*/
|
||||
@Column(name = "online_form_id")
|
||||
private Long onlineFormId;
|
||||
|
||||
/**
|
||||
* 在线表单菜单的权限控制类型,具体值可参考SysOnlineMenuPermType常量对象。
|
||||
*/
|
||||
@Column(name = "online_menu_perm_type")
|
||||
private Integer onlineMenuPermType;
|
||||
|
||||
/**
|
||||
* 菜单显示顺序 (值越小,排序越靠前)。
|
||||
*/
|
||||
|
||||
@@ -36,10 +36,10 @@ public interface SysMenuService extends IBaseService<SysMenu, Long> {
|
||||
/**
|
||||
* 删除指定的菜单。
|
||||
*
|
||||
* @param menuId 菜单主键Id。
|
||||
* @param menu 菜单对象。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
boolean remove(Long menuId);
|
||||
boolean remove(SysMenu menu);
|
||||
|
||||
/**
|
||||
* 获取全部菜单列表。
|
||||
@@ -91,4 +91,21 @@ public interface SysMenuService extends IBaseService<SysMenu, Long> {
|
||||
* @return 包含从菜单到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
List<Map<String, Object>> getSysUserListWithDetail(Long menuId, String loginName);
|
||||
|
||||
/**
|
||||
* 获取指定类型的所有在线表单的菜单。
|
||||
*
|
||||
* @param menuType 菜单类型,NULL则返回全部类型。
|
||||
* @return 在线表单关联的菜单列表。
|
||||
*/
|
||||
List<SysMenu> getAllOnlineMenuList(Integer menuType);
|
||||
|
||||
/**
|
||||
* 获取当前用户有权访问的在线表单菜单,仅返回类型为BUTTON的菜单。
|
||||
*
|
||||
* @param userId 指定的用户。
|
||||
* @param menuType 菜单类型,NULL则返回全部类型。
|
||||
* @return 在线表单关联的菜单列表。
|
||||
*/
|
||||
List<SysMenu> getOnlineMenuListByUserId(Long userId, Integer menuType);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
@@ -8,6 +9,7 @@ import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsapi.constant.SysMenuType;
|
||||
import com.orange.demo.upmsapi.constant.SysOnlineMenuPermType;
|
||||
import com.orange.demo.upmsservice.service.SysMenuService;
|
||||
import com.orange.demo.upmsservice.service.SysPermCodeService;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuPermCodeMapper;
|
||||
@@ -16,7 +18,7 @@ import com.orange.demo.upmsservice.dao.SysMenuMapper;
|
||||
import com.orange.demo.upmsservice.model.SysMenu;
|
||||
import com.orange.demo.upmsservice.model.SysMenuPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysRoleMenu;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -32,6 +34,7 @@ import java.util.stream.Collectors;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysMenuService")
|
||||
public class SysMenuServiceImpl extends BaseService<SysMenu, Long> implements SysMenuService {
|
||||
|
||||
@@ -80,6 +83,29 @@ public class SysMenuServiceImpl extends BaseService<SysMenu, Long> implements Sy
|
||||
}
|
||||
sysMenuPermCodeMapper.insertList(sysMenuPermCodeList);
|
||||
}
|
||||
// 判断当前菜单是否为指向在线表单的菜单,并将根据约定,动态插入两个子菜单。
|
||||
if (sysMenu.getOnlineFormId() != null) {
|
||||
SysMenu viewSubMenu = new SysMenu();
|
||||
viewSubMenu.setMenuId(idGenerator.nextLongId());
|
||||
viewSubMenu.setParentId(sysMenu.getMenuId());
|
||||
viewSubMenu.setMenuType(SysMenuType.TYPE_BUTTON);
|
||||
viewSubMenu.setMenuName("查看");
|
||||
viewSubMenu.setShowOrder(0);
|
||||
viewSubMenu.setOnlineFormId(sysMenu.getOnlineFormId());
|
||||
viewSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_VIEW);
|
||||
MyModelUtil.fillCommonsForInsert(viewSubMenu);
|
||||
sysMenuMapper.insert(viewSubMenu);
|
||||
SysMenu editSubMenu = new SysMenu();
|
||||
editSubMenu.setMenuId(idGenerator.nextLongId());
|
||||
editSubMenu.setParentId(sysMenu.getMenuId());
|
||||
editSubMenu.setMenuType(SysMenuType.TYPE_BUTTON);
|
||||
editSubMenu.setMenuName("编辑");
|
||||
editSubMenu.setShowOrder(1);
|
||||
editSubMenu.setOnlineFormId(sysMenu.getOnlineFormId());
|
||||
editSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_EDIT);
|
||||
MyModelUtil.fillCommonsForInsert(editSubMenu);
|
||||
sysMenuMapper.insert(editSubMenu);
|
||||
}
|
||||
return sysMenu;
|
||||
}
|
||||
|
||||
@@ -113,18 +139,27 @@ public class SysMenuServiceImpl extends BaseService<SysMenu, Long> implements Sy
|
||||
}
|
||||
sysMenuPermCodeMapper.insertList(sysMenuPermCodeList);
|
||||
}
|
||||
// 如果当前菜单的在线表单Id变化了,就需要同步更新他的内置子菜单也同步更新。
|
||||
if (ObjectUtil.notEqual(originalSysMenu.getOnlineFormId(), sysMenu.getOnlineFormId())) {
|
||||
SysMenu onlineSubMenu = new SysMenu();
|
||||
onlineSubMenu.setOnlineFormId(sysMenu.getOnlineFormId());
|
||||
Example e = new Example(SysMenu.class);
|
||||
e.createCriteria().andEqualTo("parentId", sysMenu.getMenuId());
|
||||
sysMenuMapper.updateByExampleSelective(onlineSubMenu, e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定的菜单。
|
||||
*
|
||||
* @param menuId 菜单主键Id。
|
||||
* @param menu 菜单对象。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long menuId) {
|
||||
public boolean remove(SysMenu menu) {
|
||||
Long menuId = menu.getMenuId();
|
||||
if (!this.removeById(menuId)) {
|
||||
return false;
|
||||
}
|
||||
@@ -134,6 +169,12 @@ public class SysMenuServiceImpl extends BaseService<SysMenu, Long> implements Sy
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(menuId);
|
||||
sysMenuPermCodeMapper.delete(menuPermCode);
|
||||
// 如果为指向在线表单的菜单,则连同删除子菜单
|
||||
if (menu.getOnlineFormId() != null) {
|
||||
Example e = new Example(SysMenu.class);
|
||||
e.createCriteria().andEqualTo("parentId", menuId);
|
||||
sysMenuMapper.deleteByExample(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -240,6 +281,34 @@ public class SysMenuServiceImpl extends BaseService<SysMenu, Long> implements Sy
|
||||
return sysMenuMapper.getSysUserListWithDetail(menuId, loginName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定类型的所有在线表单的菜单。
|
||||
*
|
||||
* @param menuType 菜单类型,NULL则返回全部类型。
|
||||
* @return 在线表单关联的菜单列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysMenu> getAllOnlineMenuList(Integer menuType) {
|
||||
Example e = new Example(SysMenu.class);
|
||||
Example.Criteria c = e.createCriteria().andIsNotNull("onlineFormId");
|
||||
if (menuType != null) {
|
||||
c.andEqualTo("menuType", menuType);
|
||||
}
|
||||
return sysMenuMapper.selectByExample(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户有权访问的在线表单菜单,仅返回类型为BUTTON的菜单。
|
||||
*
|
||||
* @param userId 指定的用户。
|
||||
* @param menuType 菜单类型,NULL则返回全部类型。
|
||||
* @return 在线表单关联的菜单列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysMenu> getOnlineMenuListByUserId(Long userId, Integer menuType) {
|
||||
return sysMenuMapper.getOnlineMenuListByUserId(userId, menuType);
|
||||
}
|
||||
|
||||
private String checkErrorOfNonDirectoryMenu(SysMenu sysMenu) {
|
||||
// 判断父节点是否存在
|
||||
SysMenu parentSysMenu = getById(sysMenu.getParentId());
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.orange.demo.upmsservice.model.SysPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysPermCodePerm;
|
||||
import com.orange.demo.upmsservice.service.SysPermCodeService;
|
||||
import com.orange.demo.upmsservice.service.SysPermService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -29,6 +30,7 @@ import java.util.stream.Collectors;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysPermCodeService")
|
||||
public class SysPermCodeServiceImpl extends BaseService<SysPermCode, Long> implements SysPermCodeService {
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.orange.demo.upmsservice.model.SysPerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermModule;
|
||||
import com.orange.demo.upmsservice.service.SysPermModuleService;
|
||||
import com.orange.demo.upmsservice.service.SysPermService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -22,6 +23,7 @@ import java.util.List;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysPermModuleService")
|
||||
public class SysPermModuleServiceImpl extends BaseService<SysPermModule, Long> implements SysPermModuleService {
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.orange.demo.upmsservice.model.SysPerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermCodePerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermModule;
|
||||
import com.orange.demo.upmsservice.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -27,6 +28,7 @@ import java.util.*;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysPermService")
|
||||
public class SysPermServiceImpl extends BaseService<SysPerm, Long> implements SysPermService {
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermWhitelistMapper;
|
||||
import com.orange.demo.upmsservice.model.SysPermWhitelist;
|
||||
import com.orange.demo.upmsservice.service.SysPermWhitelistService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -18,6 +19,7 @@ import java.util.stream.Collectors;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysPermWhitelistService")
|
||||
public class SysPermWhitelistServiceImpl extends BaseService<SysPermWhitelist, String> implements SysPermWhitelistService {
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.orange.demo.upmsservice.model.SysRoleMenu;
|
||||
import com.orange.demo.upmsservice.model.SysUserRole;
|
||||
import com.orange.demo.upmsservice.service.SysMenuService;
|
||||
import com.orange.demo.upmsservice.service.SysRoleService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -29,6 +30,7 @@ import java.util.stream.Collectors;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysRoleService")
|
||||
public class SysRoleServiceImpl extends BaseService<SysRole, Long> implements SysRoleService {
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.orange.demo.upmsapi.constant.SysUserStatus;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -29,6 +30,7 @@ import java.util.stream.Collectors;
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("sysUserService")
|
||||
public class SysUserServiceImpl extends BaseService<SysUser, Long> implements SysUserService {
|
||||
|
||||
@@ -211,6 +213,8 @@ public class SysUserServiceImpl extends BaseService<SysUser, Long> implements Sy
|
||||
@Override
|
||||
public List<SysUser> getSysUserListWithRelation(SysUser filter, String orderBy) {
|
||||
List<SysUser> resultList = sysUserMapper.getSysUserList(null, null, filter, orderBy);
|
||||
// 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。
|
||||
// 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。
|
||||
int batchSize = resultList instanceof Page ? 0 : 1000;
|
||||
this.buildRelationForDataList(resultList, MyRelationParam.normal(), batchSize);
|
||||
return resultList;
|
||||
@@ -232,6 +236,8 @@ public class SysUserServiceImpl extends BaseService<SysUser, Long> implements Sy
|
||||
String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy) {
|
||||
List<SysUser> resultList =
|
||||
sysUserMapper.getSysUserList(inFilterField, inFilterValues, filter, orderBy);
|
||||
// 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。
|
||||
// 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。
|
||||
int batchSize = resultList instanceof Page ? 0 : 1000;
|
||||
this.buildRelationForDataList(resultList, MyRelationParam.dictOnly(), batchSize);
|
||||
return resultList;
|
||||
|
||||
Reference in New Issue
Block a user