package com.zhangmeng.online.exam.controller; import com.zhangmeng.online.exam.dao.PermissionDao; import com.zhangmeng.online.exam.dao.RoleDao; import com.zhangmeng.online.exam.dao.UserDao; import com.zhangmeng.online.exam.dto.Menu; import com.zhangmeng.online.exam.dto.Result; import com.zhangmeng.online.exam.entity.*; import com.zhangmeng.online.exam.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import java.util.*; /** * @author zm * @date 2025/3/5 15:45 * @version: 1.0 */ @RestController @RequestMapping("/user") public class UserController { @Autowired private UserDao userDao; @Autowired private RoleDao roleDao; @Autowired private PermissionDao permissionDao; @Autowired private EntityManager entityManager; @GetMapping("/list") public Result userList(Integer pageNum,Integer pageSize) { List list = userDao.findAll(); List> resultList = new ArrayList<>(); for (User user : list) { Map map = new HashMap<>(); map.put("id", user.getId()); map.put("username", user.getUsername()); map.put("email", user.getEmail()); map.put("phone", user.getPhone()); resultList.add(map); } return Result.success(resultList); } @GetMapping("/menu") public Result menuList() { List list = new ArrayList<>(); TypedQuery query = entityManager.createQuery("select obj from User obj where obj.id = 1", User.class); User root = query.getResultList().get(0); Set roles = root.getRoles(); for (Role role : roles) { Set permissions = role.getPermissions(); for (Permission permission : permissions) { if (permission.getParent() == null) {//一级菜单 Menu menu = getMenu(permission); list.add(menu); } } if (!list.isEmpty()) { for (Permission permission : permissions) { for (Menu map : list) { if (permission.getParent() != null && map.getId().equals(permission.getParent().getId())) { List children = map.getChildren(); Menu childMap = getMenu(permission); children.add(childMap); } } } } } return Result.success(list); } private static Menu getMenu(Permission permission) { Menu childMap = new Menu(); childMap.setId(permission.getId()); childMap.setName(permission.getName()); childMap.setIcon(permission.getIcon()); childMap.setUrl(permission.getUrl()); childMap.setDescription(permission.getDescription()); childMap.setSort(permission.getSort()); childMap.setChildren(new ArrayList<>()); return childMap; } }