Commit d339e5a6 by guojuxing

权限管理:页面、子页面、操作项接口修改

parent f9c89563
......@@ -2,6 +2,7 @@ package com.gic.auth.dao.mapper;
import com.gic.auth.entity.TabSysMenu;
import com.gic.auth.qo.MenuListQO;
import com.gic.auth.qo.MenuOperationItemListQO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -84,4 +85,23 @@ public interface TabSysMenuMapper {
* @return java.util.List<com.gic.auth.entity.TabSysMenu>


 */
List<TabSysMenu> listMenuRoleByParentId(@Param("parentId") Integer parentId);
/**
* 查询页面下的菜单数据
* @Title: listMenuByParentId

* @Description:

 * @author guojuxing
* @param parentId

* @return java.util.List<com.gic.auth.entity.TabSysMenu>


 */
List<TabSysMenu> listMenuByParentId(@Param("parentId") Integer parentId, @Param("project") String project);
/**
* 分页查询操作项
* @Title: pageMenuOperationItem

* @Description:

 * @author guojuxing
* @param params

* @return java.util.List<com.gic.auth.entity.TabSysMenu>


 */
List<TabSysMenu> pageMenuOperationItem(MenuOperationItemListQO params);
}
\ No newline at end of file
......@@ -91,6 +91,11 @@ public class TabSysMenu {
*/
private Integer menuType;
/**
* 应用版本名称
*/
private String menuVersionName;
public Integer getMenuId() {
return menuId;
}
......@@ -226,4 +231,12 @@ public class TabSysMenu {
public void setMenuType(Integer menuType) {
this.menuType = menuType;
}
public String getMenuVersionName() {
return menuVersionName;
}
public void setMenuVersionName(String menuVersionName) {
this.menuVersionName = menuVersionName;
}
}
\ No newline at end of file
......@@ -4,6 +4,8 @@ package com.gic.auth.service;
import com.gic.auth.dto.MenuDTO;
import com.gic.auth.entity.TabSysMenu;
import com.gic.auth.qo.MenuListQO;
import com.gic.auth.qo.MenuOperationItemListQO;
import com.github.pagehelper.Page;
import java.util.List;
......@@ -51,4 +53,24 @@ public interface MenuService {
* @return java.util.List<com.gic.auth.entity.TabSysMenu>


 */
List<TabSysMenu> listMenuRoleByParentId(Integer parentId);
/**
* 拖拽排序
* @Title: setSort

* @Description:

 * @author guojuxing
* @param record
* @param sortValue

* @return void


 */
void setSort(TabSysMenu record, Integer sortValue);
/**
* 分页查询操作项
* @Title: pageMenuOperationItem

* @Description:

 * @author guojuxing
* @param params

* @return com.github.pagehelper.Page<com.gic.auth.entity.TabSysMenu>


 */
Page<TabSysMenu> pageMenuOperationItem(MenuOperationItemListQO params);
}
......@@ -4,6 +4,9 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.gic.auth.qo.MenuOperationItemListQO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -57,4 +60,45 @@ public class MenuServiceImpl implements MenuService {
}
return new ArrayList<>();
}
@Override
public void setSort(TabSysMenu record, Integer sortValue) {
List<TabSysMenu> list = tabSysMenuMapper.listMenuByParentId(record.getParentId(), record.getProject());
Integer fromSortValue = record.getSort();
if (fromSortValue > sortValue) {
//向上拖拽
for (int i = 0, length = list.size(); i < length; i++) {
TabSysMenu temp = list.get(i);
//如果大于sortValue,都需要降低排序值,往后推
boolean isNeedDown = temp.getSort() >= sortValue && temp.getSort() < fromSortValue;
if (isNeedDown) {
updateSort(list.get(i + 1).getSort(), temp.getMenuId());
}
}
} else if (fromSortValue < sortValue) {
//向下拖拽
for (int i = 0, length = list.size(); i < length; i++) {
TabSysMenu temp = list.get(i);
boolean isNeedUp = temp.getSort() <= sortValue && temp.getSort() > fromSortValue;
if (isNeedUp) {
updateSort(list.get(i - 1).getSort(), temp.getMenuId());
}
}
}
updateSort(sortValue, record.getMenuId());
}
@Override
public Page<TabSysMenu> pageMenuOperationItem(MenuOperationItemListQO params) {
PageHelper.startPage(params.getCurrentPage(), params.getPageSize());
List<TabSysMenu> list = tabSysMenuMapper.pageMenuOperationItem(params);
return (Page<TabSysMenu>) list;
}
private void updateSort(Integer sort, Integer id) {
TabSysMenu record = new TabSysMenu();
record.setMenuId(id);
record.setSort(sort);
tabSysMenuMapper.updateByPrimaryKeySelective(record);
}
}
......@@ -3,6 +3,11 @@ package com.gic.auth.service.outer.impl;
import java.util.ArrayList;
import java.util.List;
import com.gic.api.base.commons.Page;
import com.gic.auth.constant.GicVersionEnum;
import com.gic.auth.qo.MenuOperationItemListQO;
import com.gic.commons.util.PageHelperUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -90,7 +95,7 @@ public class MenuApiServiceImpl implements MenuApiService {
@Override
public ServiceResponse<Void> saveGICChildPage(MenuDTO menuDTO) {
menuDTO.setProject(MenuProjectConstants.DEFAULT_PROJECT);
menuDTO.setMenuType(MenuTypeEnum.PAGE.getCode());
return saveChildPage(menuDTO, MenuDTO.SaveGICChildPageValid.class);
}
......@@ -106,6 +111,7 @@ public class MenuApiServiceImpl implements MenuApiService {
@Override
public ServiceResponse<Void> saveAppChildPage(MenuDTO menuDTO) {
menuDTO.setMenuType(MenuTypeEnum.PAGE.getCode());
return saveChildPage(menuDTO, MenuDTO.SaveAppChildPageValid.class);
}
......@@ -114,13 +120,53 @@ public class MenuApiServiceImpl implements MenuApiService {
return updateChildPage(menuDTO, MenuDTO.EditAppChildPageValid.class);
}
@Override
public ServiceResponse<Void> setSort(Integer id, Integer sort) {
TabSysMenu record = menuService.getMenuById(id);
if (record == null) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "主键参数有误,查无数据");
}
if (sort == null) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "排序值不能为空");
}
menuService.setSort(record, sort);
return ServiceResponse.success();
}
@Override
public ServiceResponse<Void> saveOperationItem(MenuDTO menuDTO) {
menuDTO.setMenuType(MenuTypeEnum.OPERATION.getCode());
return saveChildPage(menuDTO, MenuDTO.SaveOperationItemValid.class);
}
@Override
public ServiceResponse<Void> updateOperationItem(MenuDTO menuDTO) {
return updateChildPage(menuDTO, MenuDTO.SaveOperationItemValid.class);
}
@Override
public ServiceResponse<Page<MenuDTO>> pageMenuOperationItem(MenuOperationItemListQO params) {
com.github.pagehelper.Page page = menuService.pageMenuOperationItem(params);
Page<MenuDTO> resultPage = PageHelperUtils.changePageHelperToCurrentPage(page, MenuDTO.class);
return ServiceResponse.success(resultPage);
}
@Override
public ServiceResponse<MenuDTO> getDetailById(Integer menuId) {
TabSysMenu record = menuService.getMenuById(menuId);
if (record == null) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "主键参数有误,查无数据");
}
return ServiceResponse.success(EntityUtil.changeEntityNew(MenuDTO.class, record));
}
private ServiceResponse<Void> savePage(MenuDTO menuDTO, Class clazz) {
ServiceResponse paramsValid = ValidParamsUtils.allCheckValidate(menuDTO, clazz);
if (!paramsValid.isSuccess()) {
return paramsValid;
}
menuDTO.setMenuVersion("_" + menuDTO.getMenuVersion().replaceAll(",", "_") + "_");
setMenuVersion(menuDTO);
//sort
int maxSort = menuService.getMaxSortByParentId(MenuLevelConstants.FIRST_LEVEL_PARENT_ID, menuDTO.getProject());
menuDTO.setSort(maxSort + 1);
......@@ -134,15 +180,17 @@ public class MenuApiServiceImpl implements MenuApiService {
}
private ServiceResponse<Void> saveChildPage(MenuDTO menuDTO, Class clazz) {
ServiceResponse paramsValid = ValidParamsUtils.allCheckValidate(menuDTO, clazz);
if (!paramsValid.isSuccess()) {
return paramsValid;
}
TabSysMenu record = menuService.getMenuById(menuDTO.getParentId());
if (record == null) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "父级页面不存在");
}
menuDTO.setMenuVersion("_" + menuDTO.getMenuVersion().replaceAll(",", "_") + "_");
ServiceResponse paramsValid = ValidParamsUtils.allCheckValidate(menuDTO, clazz);
if (!paramsValid.isSuccess()) {
return paramsValid;
}
//project
menuDTO.setProject(record.getProject());
setMenuVersion(menuDTO);
//sort
int maxSort = menuService.getMaxSortByParentId(menuDTO.getParentId(), menuDTO.getProject());
menuDTO.setSort(maxSort + 1);
......@@ -151,7 +199,6 @@ public class MenuApiServiceImpl implements MenuApiService {
//父级code
menuDTO.setParentCode(record.getMenuCode());
menuDTO.setMenuType(MenuTypeEnum.PAGE.getCode());
menuService.savePage(menuDTO);
return ServiceResponse.success();
}
......@@ -161,10 +208,16 @@ public class MenuApiServiceImpl implements MenuApiService {
if (record == null) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "主键参数有误,查无数据");
}
if (record.getLevel().intValue() != 1) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "主键参数有误,非第一级页面");
}
ServiceResponse paramsValid = ValidParamsUtils.allCheckValidate(menuDTO, clazz);
if (!paramsValid.isSuccess()) {
return paramsValid;
}
menuDTO.setProject(record.getProject());
setMenuVersion(menuDTO);
menuDTO.setMenuVersion("_" + menuDTO.getMenuVersion().replaceAll(",", "_") + "_");
menuService.updatePage(menuDTO);
return ServiceResponse.success();
......@@ -182,15 +235,38 @@ public class MenuApiServiceImpl implements MenuApiService {
if (parent.getLevel().intValue() >= record.getLevel().intValue()) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "父级ID有误,层级在当前页面之下");
}
if (!parent.getProject().equals(record.getProject())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "父级页面和当前页面不在同一项目应用内");
}
ServiceResponse paramsValid = ValidParamsUtils.allCheckValidate(menuDTO, clazz);
if (!paramsValid.isSuccess()) {
return paramsValid;
}
menuDTO.setMenuVersion("_" + menuDTO.getMenuVersion().replaceAll(",", "_") + "_");
menuDTO.setProject(record.getProject());
setMenuVersion(menuDTO);
menuService.updatePage(menuDTO);
return ServiceResponse.success();
}
private static void setMenuVersion(MenuDTO menuDTO) {
if (MenuProjectConstants.DEFAULT_PROJECT.equals(menuDTO.getProject())) {
menuDTO.setMenuVersion("_" + menuDTO.getMenuVersion().replaceAll(",", "_") + "_");
String[] menuVersionArr = menuDTO.getMenuVersion().split("_");
StringBuilder result = new StringBuilder();
for (String str : menuVersionArr) {
if (StringUtils.isBlank(str)) {
continue;
}
result.append(GicVersionEnum.getMessageByCode(Integer.parseInt(str))).append("/");
}
String menuVersionStr = result.toString();
menuDTO.setMenuVersionName(menuVersionStr.substring(0, menuVersionStr.length() - 1));
} else {
menuDTO.setMenuVersion("_" + menuDTO.getMenuVersion().replaceAll(",", "_") + "_");
menuDTO.setMenuVersionName(menuDTO.getMenuVersionName().replaceAll(",", "/"));
}
}
private List<MenuDTO> treeMenu(List<TabSysMenu> menuList, int level, int parentId) {
List<MenuDTO> list = null;
if (level < 5) {
......
......@@ -19,10 +19,11 @@
<result column="parent_code" jdbcType="VARCHAR" property="parentCode" />
<result column="menu_version" jdbcType="VARCHAR" property="menuVersion" />
<result column="menu_type" jdbcType="INTEGER" property="menuType" />
<result column="menu_version_name" jdbcType="VARCHAR" property="menuVersionName" />
</resultMap>
<sql id="Base_Column_List">
menu_id, menu_name, project, menu_url, parent_id, target, icon_url, sort, status,
create_time, update_time, level, is_show, menu_code, parent_code, menu_version, menu_type
create_time, update_time, level, is_show, menu_code, parent_code, menu_version, menu_type, menu_version_name
</sql>
<sql id="tree_filter">
and menu_type != 2
......@@ -33,6 +34,9 @@
<sql id="page_filter">
and menu_type = 0
</sql>
<sql id="item_filter">
and menu_type = 2
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
......@@ -49,13 +53,13 @@
icon_url, sort, status,
create_time, update_time, level,
is_show, menu_code, parent_code,
menu_version, menu_type)
menu_version, menu_type, menu_version_name)
values (#{menuId,jdbcType=INTEGER}, #{menuName,jdbcType=VARCHAR}, #{project,jdbcType=VARCHAR},
#{menuUrl,jdbcType=VARCHAR}, #{parentId,jdbcType=INTEGER}, #{target,jdbcType=INTEGER},
#{iconUrl,jdbcType=VARCHAR}, #{sort,jdbcType=INTEGER}, #{status,jdbcType=INTEGER},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{level,jdbcType=INTEGER},
#{isShow,jdbcType=INTEGER}, #{menuCode,jdbcType=VARCHAR}, #{parentCode,jdbcType=VARCHAR},
#{menuVersion,jdbcType=VARCHAR}, #{menuType,jdbcType=INTEGER})
#{menuVersion,jdbcType=VARCHAR}, #{menuType,jdbcType=INTEGER}, #{menuVersionName,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.gic.auth.entity.TabSysMenu">
insert into tab_sys_menu
......@@ -111,6 +115,9 @@
<if test="menuType != null">
menu_type,
</if>
<if test="menuVersionName != null">
menu_version_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="menuId != null">
......@@ -164,6 +171,9 @@
<if test="menuType != null">
#{menuType,jdbcType=INTEGER},
</if>
<if test="menuVersionName != null">
#{menuVersionName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.auth.entity.TabSysMenu">
......@@ -217,6 +227,9 @@
<if test="menuType != null">
menu_type = #{menuType,jdbcType=INTEGER},
</if>
<if test="menuVersionName != null">
menu_version_name = #{menuVersionName,jdbcType=VARCHAR},
</if>
</set>
where menu_id = #{menuId,jdbcType=INTEGER}
</update>
......@@ -237,7 +250,8 @@
menu_code = #{menuCode,jdbcType=VARCHAR},
parent_code = #{parentCode,jdbcType=VARCHAR},
menu_version = #{menuVersion,jdbcType=VARCHAR},
menu_type = #{menuType,jdbcType=INTEGER}
menu_type = #{menuType,jdbcType=INTEGER},
menu_version_name = #{menuVersionName,jdbcType=VARCHAR}
where menu_id = #{menuId,jdbcType=INTEGER}
</update>
......@@ -283,4 +297,32 @@
and menu_type = 1
order by sort
</select>
<select id="listMenuByParentId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_sys_menu
where status=1
and parent_id = #{parentId}
and project = #{project}
order by sort
</select>
<select id="pageMenuOperationItem" resultMap="BaseResultMap" parameterType="com.gic.auth.qo.MenuOperationItemListQO">
select
<include refid="Base_Column_List" />
from tab_sys_menu
where status=1
<if test="search != null and search != '' ">
and ( menu_name like concat('%', #{search}, '%') or menu_code like concat('%', #{search}, '%') or parent_code like concat('%', #{search}, '%') )
</if>
<if test="isGIC == 1">
and project = 'gic'
</if>
<if test="isGIC == 2">
and project != 'gic'
</if>
<include refid="item_filter" />
order by create_time desc
</select>
</mapper>
\ No newline at end of file
......@@ -122,6 +122,11 @@ public class MenuController {
return ResultControllerUtils.commonResult(menuApiService.listMenuRoleByParentId(parentId));
}
@RequestMapping("/set-menu-sort")
public RestResponse listMenuRole(Integer id, Integer sort) {
return ResultControllerUtils.commonResult(menuApiService.setSort(id, sort));
}
public static List<Map<String, Object>> changeListToTree(int storeGroupId, List<MenuDTO> list) {
List<Map<String, Object>> result = new ArrayList<>();
if (list != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment