package com.ruoyi.web.system;
|
|
import java.util.Date;
|
import java.util.List;
|
import javax.servlet.http.Cookie;
|
import javax.servlet.http.HttpServletResponse;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.ModelMap;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import com.ruoyi.common.config.RuoYiConfig;
|
import com.ruoyi.common.constant.ShiroConstants;
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.entity.SysMenu;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.text.Convert;
|
import com.ruoyi.common.utils.CookieUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
import com.ruoyi.web.server.system.ISysConfigService;
|
import com.ruoyi.web.server.system.ISysMenuService;
|
|
/**
|
* 首页 业务处理
|
*
|
* @author ruoyi
|
*/
|
@Controller
|
public class SysIndexController extends BaseController
|
{
|
@Autowired
|
private ISysMenuService menuService;
|
|
@Autowired
|
private ISysConfigService configService;
|
|
@Autowired
|
private SysPasswordService passwordService;
|
|
// 系统首页
|
@GetMapping("/index")
|
public String index(ModelMap mmap)
|
{
|
// 取身份信息
|
SysUser user = getSysUser();
|
// 根据用户id取出菜单
|
List<SysMenu> menus = menuService.selectMenusByUser(user);
|
mmap.put("menus", menus);
|
mmap.put("user", user);
|
mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme"));
|
mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName"));
|
Boolean footer = Convert.toBool(configService.selectConfigByKey("sys.index.footer"), true);
|
Boolean tagsView = Convert.toBool(configService.selectConfigByKey("sys.index.tagsView"), true);
|
mmap.put("footer", footer);
|
mmap.put("tagsView", tagsView);
|
mmap.put("mainClass", contentMainClass(footer, tagsView));
|
mmap.put("copyrightYear", RuoYiConfig.getCopyrightYear());
|
mmap.put("demoEnabled", RuoYiConfig.isDemoEnabled());
|
mmap.put("isDefaultModifyPwd", initPasswordIsModify(user.getPwdUpdateDate()));
|
mmap.put("isPasswordExpired", passwordIsExpiration(user.getPwdUpdateDate()));
|
mmap.put("isMobile", ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")));
|
|
// 菜单导航显示风格
|
String menuStyle = configService.selectConfigByKey("sys.index.menuStyle");
|
// 移动端,默认使左侧导航菜单,否则取默认配置
|
String indexStyle = ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")) ? "index" : menuStyle;
|
|
// 优先Cookie配置导航菜单
|
Cookie[] cookies = ServletUtils.getRequest().getCookies();
|
for (Cookie cookie : cookies)
|
{
|
if (StringUtils.isNotEmpty(cookie.getName()) && "nav-style".equalsIgnoreCase(cookie.getName()))
|
{
|
indexStyle = cookie.getValue();
|
break;
|
}
|
}
|
String webIndex = "topnav".equalsIgnoreCase(indexStyle) ? "index-topnav" : "index";
|
return webIndex;
|
}
|
|
// 锁定屏幕
|
@GetMapping("/lockscreen")
|
public String lockscreen(ModelMap mmap)
|
{
|
mmap.put("user", getSysUser());
|
ServletUtils.getSession().setAttribute(ShiroConstants.LOCK_SCREEN, true);
|
return "lock";
|
}
|
|
// 解锁屏幕
|
@PostMapping("/unlockscreen")
|
@ResponseBody
|
public AjaxResult unlockscreen(String password)
|
{
|
SysUser user = getSysUser();
|
if (StringUtils.isNull(user))
|
{
|
return AjaxResult.error("服务器超时,请重新登录");
|
}
|
if (passwordService.matches(user, password))
|
{
|
ServletUtils.getSession().removeAttribute(ShiroConstants.LOCK_SCREEN);
|
return AjaxResult.success();
|
}
|
return AjaxResult.error("密码不正确,请重新输入。");
|
}
|
|
// 切换主题
|
@GetMapping("/system/switchSkin")
|
public String switchSkin()
|
{
|
return "skin";
|
}
|
|
// 切换菜单
|
@GetMapping("/system/menuStyle/{style}")
|
public void menuStyle(@PathVariable String style, HttpServletResponse response)
|
{
|
CookieUtils.setCookie(response, "nav-style", style);
|
}
|
|
// 系统介绍
|
@GetMapping("/system/main")
|
public String main(ModelMap mmap)
|
{
|
mmap.put("version", RuoYiConfig.getVersion());
|
return "main";
|
}
|
|
// content-main class
|
public String contentMainClass(Boolean footer, Boolean tagsView)
|
{
|
if (!footer && !tagsView)
|
{
|
return "tagsview-footer-hide";
|
}
|
else if (!footer)
|
{
|
return "footer-hide";
|
}
|
else if (!tagsView)
|
{
|
return "tagsview-hide";
|
}
|
return StringUtils.EMPTY;
|
}
|
|
// 检查初始密码是否提醒修改
|
public boolean initPasswordIsModify(Date pwdUpdateDate)
|
{
|
Integer initPasswordModify = Convert.toInt(configService.selectConfigByKey("sys.account.initPasswordModify"));
|
return initPasswordModify != null && initPasswordModify == 1 && pwdUpdateDate == null;
|
}
|
|
// 检查密码是否过期
|
public boolean passwordIsExpiration(Date pwdUpdateDate)
|
{
|
Integer passwordValidateDays = Convert.toInt(configService.selectConfigByKey("sys.account.passwordValidateDays"));
|
if (passwordValidateDays != null && passwordValidateDays > 0)
|
{
|
if (StringUtils.isNull(pwdUpdateDate))
|
{
|
// 如果从未修改过初始密码,直接提醒过期
|
return true;
|
}
|
Date nowDate = DateUtils.getNowDate();
|
return DateUtils.differentDaysByMillisecond(nowDate, pwdUpdateDate) > passwordValidateDays;
|
}
|
return false;
|
}
|
}
|