package cc.mrbird.febs.system.controller; 
 | 
  
 | 
import cc.mrbird.febs.common.authentication.ShiroHelper; 
 | 
import cc.mrbird.febs.common.controller.BaseController; 
 | 
import cc.mrbird.febs.common.entity.FebsConstant; 
 | 
import cc.mrbird.febs.common.utils.DateUtil; 
 | 
import cc.mrbird.febs.common.utils.FebsUtil; 
 | 
import cc.mrbird.febs.system.entity.User; 
 | 
import cc.mrbird.febs.system.service.IUserDataPermissionService; 
 | 
import cc.mrbird.febs.system.service.IUserService; 
 | 
import lombok.RequiredArgsConstructor; 
 | 
import org.apache.shiro.authz.AuthorizationInfo; 
 | 
import org.apache.shiro.authz.annotation.RequiresPermissions; 
 | 
import org.apache.shiro.session.ExpiredSessionException; 
 | 
import org.springframework.stereotype.Controller; 
 | 
import org.springframework.ui.Model; 
 | 
import org.springframework.web.bind.annotation.GetMapping; 
 | 
import org.springframework.web.bind.annotation.PathVariable; 
 | 
import org.springframework.web.bind.annotation.RequestMapping; 
 | 
import org.springframework.web.bind.annotation.ResponseBody; 
 | 
import org.springframework.web.servlet.ModelAndView; 
 | 
  
 | 
import javax.servlet.http.HttpServletRequest; 
 | 
  
 | 
/** 
 | 
 * @author MrBird 
 | 
 */ 
 | 
@Controller("systemView") 
 | 
@RequiredArgsConstructor 
 | 
public class ViewController extends BaseController { 
 | 
  
 | 
    private final IUserService userService; 
 | 
    private final ShiroHelper shiroHelper; 
 | 
    private final IUserDataPermissionService userDataPermissionService; 
 | 
  
 | 
    @GetMapping("login") 
 | 
    @ResponseBody 
 | 
    public Object login(HttpServletRequest request) { 
 | 
        if (FebsUtil.isAjaxRequest(request)) { 
 | 
            throw new ExpiredSessionException(); 
 | 
        } else { 
 | 
            ModelAndView mav = new ModelAndView(); 
 | 
            mav.setViewName(FebsUtil.view("login")); 
 | 
            return mav; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @GetMapping("unauthorized") 
 | 
    public String unauthorized() { 
 | 
        return FebsUtil.view("error/403"); 
 | 
    } 
 | 
  
 | 
  
 | 
    @GetMapping("/") 
 | 
    public String redirectIndex() { 
 | 
        return "redirect:/index"; 
 | 
    } 
 | 
  
 | 
    @GetMapping("index") 
 | 
    public String index(Model model) { 
 | 
        AuthorizationInfo authorizationInfo = shiroHelper.getCurrentUserAuthorizationInfo(); 
 | 
        User user = super.getCurrentUser(); 
 | 
        User currentUserDetail = userService.findByName(user.getUsername()); 
 | 
        currentUserDetail.setPassword("It's a secret"); 
 | 
        model.addAttribute("user", currentUserDetail); 
 | 
        model.addAttribute("permissions", authorizationInfo.getStringPermissions()); 
 | 
        model.addAttribute("roles", authorizationInfo.getRoles()); 
 | 
        return "index"; 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "layout") 
 | 
    public String layout() { 
 | 
        return FebsUtil.view("layout"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "password/update") 
 | 
    public String passwordUpdate() { 
 | 
        return FebsUtil.view("system/user/passwordUpdate"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "user/profile") 
 | 
    public String userProfile() { 
 | 
        return FebsUtil.view("system/user/userProfile"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "user/avatar") 
 | 
    public String userAvatar() { 
 | 
        return FebsUtil.view("system/user/avatar"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "user/profile/update") 
 | 
    public String profileUpdate() { 
 | 
        return FebsUtil.view("system/user/profileUpdate"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/user") 
 | 
    @RequiresPermissions("user:view") 
 | 
    public String systemUser() { 
 | 
        return FebsUtil.view("system/user/user"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/user/add") 
 | 
    @RequiresPermissions("user:add") 
 | 
    public String systemUserAdd() { 
 | 
        return FebsUtil.view("system/user/userAdd"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/user/detail/{username}") 
 | 
    @RequiresPermissions("user:view") 
 | 
    public String systemUserDetail(@PathVariable String username, Model model) { 
 | 
        resolveUserModel(username, model, true); 
 | 
        return FebsUtil.view("system/user/userDetail"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/user/update/{username}") 
 | 
    @RequiresPermissions("user:update") 
 | 
    public String systemUserUpdate(@PathVariable String username, Model model) { 
 | 
        resolveUserModel(username, model, false); 
 | 
        return FebsUtil.view("system/user/userUpdate"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/role") 
 | 
    @RequiresPermissions("role:view") 
 | 
    public String systemRole() { 
 | 
        return FebsUtil.view("system/role/role"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/menu") 
 | 
    @RequiresPermissions("menu:view") 
 | 
    public String systemMenu() { 
 | 
        return FebsUtil.view("system/menu/menu"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "system/dept") 
 | 
    @RequiresPermissions("dept:view") 
 | 
    public String systemDept() { 
 | 
        return FebsUtil.view("system/dept/dept"); 
 | 
    } 
 | 
  
 | 
    @RequestMapping(FebsConstant.VIEW_PREFIX + "index") 
 | 
    public String pageIndex() { 
 | 
        return FebsUtil.view("index"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "404") 
 | 
    public String error404() { 
 | 
        return FebsUtil.view("error/404"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "403") 
 | 
    public String error403() { 
 | 
        return FebsUtil.view("error/403"); 
 | 
    } 
 | 
  
 | 
    @GetMapping(FebsConstant.VIEW_PREFIX + "500") 
 | 
    public String error500() { 
 | 
        return FebsUtil.view("error/500"); 
 | 
    } 
 | 
  
 | 
    private void resolveUserModel(String username, Model model, Boolean transform) { 
 | 
        User user = userService.findByName(username); 
 | 
        String deptIds = userDataPermissionService.findByUserId(String.valueOf(user.getUserId())); 
 | 
        user.setDeptIds(deptIds); 
 | 
        model.addAttribute("user", user); 
 | 
        if (transform) { 
 | 
            String sex = user.getSex(); 
 | 
            if (User.SEX_MALE.equals(sex)) { 
 | 
                user.setSex("男"); 
 | 
            } else if (User.SEX_FEMALE.equals(sex)) { 
 | 
                user.setSex("女"); 
 | 
            } else { 
 | 
                user.setSex("保密"); 
 | 
            } 
 | 
        } 
 | 
        if (user.getLastLoginTime() != null) { 
 | 
            model.addAttribute("lastLoginTime", DateUtil.getDateFormat(user.getLastLoginTime(), DateUtil.FULL_TIME_SPLIT_PATTERN)); 
 | 
        } 
 | 
    } 
 | 
} 
 |