Commit c0fdc077 authored by 赵啸非's avatar 赵啸非

更新菜单树列表

parent 2163e7c2
......@@ -13,6 +13,7 @@ import com.mortals.framework.util.HttpUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.module.menu.model.MenuEntity;
import com.mortals.xhx.module.menu.service.MenuService;
import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.service.UserService;
......@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -69,6 +71,10 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
// List<ModelEntity> modelList = this.service.findModelList(userEntity.getId());
// userEntity.setModelList(modelList);
List<MenuEntity> menuList =menuService.findTreeMenuByUser(userEntity);
userEntity.setMenuList(menuList);
userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime());
......
package com.mortals.xhx.module.menu.service.impl;
import com.mortals.framework.common.code.YesNo;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
......@@ -16,12 +17,12 @@ import com.mortals.xhx.module.menu.service.MenuService;
import java.util.*;
/**
* MenuService
* 菜单信息业务 service实现
*
* @author zxfei
* @date 2022-05-25
*/
* MenuService
* 菜单信息业务 service实现
*
* @author zxfei
* @date 2022-05-25
*/
@Service("menuService")
public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity, Long> implements MenuService {
@Override
......@@ -84,7 +85,10 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
@Override
public List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException {
return dao.selectMenuTreeByUserId(user.getId());
List<MenuEntity> menuList = dao.selectMenuTreeByUserId(user.getId());
//转换为树结构
List<MenuEntity> menuTreeList = getChildPerms(menuList, -1);
return menuTreeList;
}
public List<MenuEntity> findTreeMenu() throws AppException {
......@@ -168,11 +172,71 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
MenuQuery query = new MenuQuery();
query.setParentId(entity.getParentId());
Comparator<Integer> comparator = Comparator.comparing(Integer::intValue);
Optional<Integer> maxOptional = this.find(query).stream().map(MenuEntity::getOrderId).filter(f->f!=9999).max(comparator);
Optional<Integer> maxOptional = this.find(query).stream().map(MenuEntity::getOrderId).filter(f -> f != 9999).max(comparator);
maxOptional.ifPresent(e -> {
e=e+1;
e = e + 1;
entity.setOrderId(e);
});
super.saveBefore(entity, context);
}
/**
* 根据父节点的ID获取所有子节点
*
* @param list 分类表
* @param parentId 传入的父节点ID
* @return String
*/
public List<MenuEntity> getChildPerms(List<MenuEntity> list, int parentId) {
List<MenuEntity> returnList = new ArrayList<MenuEntity>();
for (Iterator<MenuEntity> iterator = list.iterator(); iterator.hasNext(); ) {
MenuEntity t =iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId() == parentId) {
recursionFn(list, t);
returnList.add(t);
}
}
return returnList;
}
/**
* 递归列表
*
* @param list
* @param t
*/
private void recursionFn(List<MenuEntity> list, MenuEntity t) {
// 得到子节点列表
List<MenuEntity> childList = getChildList(list, t);
t.setChildList(childList);
for (MenuEntity tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
* 得到子节点列表
*/
private List<MenuEntity> getChildList(List<MenuEntity> list, MenuEntity t) {
List<MenuEntity> tlist = new ArrayList<>();
Iterator<MenuEntity> it = list.iterator();
while (it.hasNext()) {
MenuEntity n =it.next();
if (n.getParentId().longValue() == t.getId().longValue()) {
tlist.add(n);
}
}
return tlist;
}
/**
* 判断是否有子节点
*/
private boolean hasChild(List<MenuEntity> list, MenuEntity t) {
return getChildList(list, t).size() > 0 ? true : false;
}
}
\ No newline at end of file
......@@ -15,13 +15,13 @@
<select id="selectMenuTreeByUserId" parameterType="paramDto" resultMap="MenuEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_menu m
left join mortals_xhx_role_auth rm on m.id = rm.menuId
from mortals_xhx_menu a
left join mortals_xhx_role_auth rm on a.id = rm.menuId
left join mortals_xhx_role_user ur on rm.roleId = ur.roleId
left join mortals_xhx_role ro on ur.roleId = ro.id
left join mortals_xhx_user u on ur.userId = u.id
where u.id = #{condition.userId} and m.menuType in ('0','1','2') and m.status = 1 AND ro.status = 1
order by m.parentId, m.orderId
where u.id = #{condition.userId} and a.menuType in ('0','1','2') and a.status = 1 AND ro.status = 1
order by a.parentId, a.orderId
</select>
</mapper>
\ No newline at end of file
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