|
|
@@ -2,71 +2,83 @@ package cn.reghao.autodop.dmaster.view.controller;
|
|
|
|
|
|
import cn.reghao.autodop.dmaster.auth.UserContext;
|
|
|
import cn.reghao.autodop.dmaster.auth.model.po.Menu;
|
|
|
-import cn.reghao.autodop.dmaster.auth.model.po.Role;
|
|
|
import cn.reghao.autodop.dmaster.auth.model.po.User;
|
|
|
-import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
|
|
|
-import cn.reghao.autodop.dmaster.auth.db.repository.MenuRepository;
|
|
|
+import cn.reghao.autodop.dmaster.view.service.HomeService;
|
|
|
import io.swagger.annotations.Api;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.boot.web.servlet.error.ErrorController;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.ui.Model;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author reghao
|
|
|
* @date 2021-04-04 21:24:18
|
|
|
*/
|
|
|
-@Api("首页页面")
|
|
|
+@Slf4j
|
|
|
+@Api("登录页和首页")
|
|
|
@Controller
|
|
|
-public class HomePageController {
|
|
|
- private final MenuRepository menuRepository;
|
|
|
- private final RoleRepository roleRepository;
|
|
|
+public class HomePageController implements ErrorController {
|
|
|
+ private final HomeService homeService;
|
|
|
|
|
|
- public HomePageController(MenuRepository menuRepository, RoleRepository roleRepository) {
|
|
|
- this.menuRepository = menuRepository;
|
|
|
- this.roleRepository = roleRepository;
|
|
|
+ public HomePageController(HomeService homeService) {
|
|
|
+ this.homeService = homeService;
|
|
|
}
|
|
|
|
|
|
@GetMapping("/")
|
|
|
public String index(Model model) {
|
|
|
User user = UserContext.currentUser();
|
|
|
- List<Menu> menus = new ArrayList<>();
|
|
|
- user.getAuthorities().forEach(auth -> {
|
|
|
- Role role = roleRepository.findByTitle(auth.getAuthority());
|
|
|
- menus.addAll(role.getMenus());
|
|
|
- });
|
|
|
- // TODO 根据用户角色获取相应的 menu
|
|
|
- //List<Menu> menus = menuRepository.findAll();
|
|
|
-
|
|
|
- Map<Integer, List<Menu>> map = menus.stream()
|
|
|
- .collect(Collectors.groupingBy(Menu::getPid));
|
|
|
- map.forEach((pid, menuList) -> {
|
|
|
- });
|
|
|
-
|
|
|
- // id -> menu
|
|
|
- Map<Integer, Menu> keyMenu = new HashMap<>(16);
|
|
|
- menus.forEach(menu -> keyMenu.put(menu.getId(), menu));
|
|
|
-
|
|
|
- // 封装菜单树形数据
|
|
|
- Map<Integer, Menu> treeMenu = new HashMap<>(16);
|
|
|
- keyMenu.forEach((id, menu) -> {
|
|
|
- Menu parentMenu = keyMenu.get(menu.getPid());
|
|
|
- if (parentMenu != null) {
|
|
|
- parentMenu.getChildren().put(menu.getPos(), menu);
|
|
|
- } else {
|
|
|
- treeMenu.put(menu.getPos(), menu);
|
|
|
- }
|
|
|
- });
|
|
|
+ List<Menu> menus = homeService.userMenus(user.getRoles());
|
|
|
+ Map<Integer, Menu> treeMenu = homeService.treeMenu(menus);
|
|
|
|
|
|
model.addAttribute("user", user);
|
|
|
model.addAttribute("treeMenu", treeMenu);
|
|
|
return "/main";
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("/login")
|
|
|
+ public String toLogin(Model model) {
|
|
|
+ model.addAttribute("isCaptcha", false);
|
|
|
+ return "/login";
|
|
|
+ }
|
|
|
+
|
|
|
@GetMapping("/home")
|
|
|
public String home(Model model) {
|
|
|
return "/home/index";
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getErrorPath() {
|
|
|
+ return "/error";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理错误页面
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @date 2021-05-19 下午2:35
|
|
|
+ */
|
|
|
+ @RequestMapping("/error")
|
|
|
+ @ResponseBody
|
|
|
+ public String handleError(Model model, HttpServletRequest request) {
|
|
|
+ Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
|
|
|
+ if (statusCode == 404) {
|
|
|
+ return "接口不存在";
|
|
|
+ } else if (statusCode == 400) {
|
|
|
+ return "参数错误";
|
|
|
+ } else if (statusCode == 500) {
|
|
|
+ return "服务器内部错误";
|
|
|
+ }
|
|
|
+ log.error("http status code: " + statusCode);
|
|
|
+
|
|
|
+ model.addAttribute("statusCode", statusCode);
|
|
|
+ model.addAttribute("msg", "页面去火星啦~");
|
|
|
+ return "/404";
|
|
|
+ }
|
|
|
}
|