package com.fzzy.sys.controller; import com.fzzy.igds.dzhwk.constant.Constant; import com.ruoyi.common.config.FrameworkConfig; 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.system.service.ISysConfigService; import com.ruoyi.system.service.ISysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 首页 业务处理 * * @author ruoyi */ @Controller public class SysIndexController extends BaseController { @Autowired private ISysMenuService menuService; @Autowired private ISysConfigService configService; @Autowired private SysPasswordService passwordService; /** * 后台管理主页 * @param mmap * @return */ @GetMapping("/home") public String home(@RequestParam(value = "bizType", required = false) String bizType, ModelMap mmap) { // 取身份信息 SysUser user = getSysUser(); mmap.put("user", user); //根据bizType获取菜单 List menus = this.getMenusByBizType(user, bizType); mmap.put("menus", menus); String welcomeUrl = "/welcome?t=" + bizType; mmap.put("welcomeUrl", welcomeUrl); mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme", user.getCompanyId())); mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName", user.getCompanyId())); Boolean footer = Convert.toBool(configService.selectConfigByKey("sys.index.footer", user.getCompanyId()), true); Boolean tagsView = Convert.toBool(configService.selectConfigByKey("sys.index.tagsView", user.getCompanyId()), true); mmap.put("footer", footer); mmap.put("tagsView", tagsView); mmap.put("mainClass", contentMainClass(footer, tagsView)); mmap.put("copyrightYear", FrameworkConfig.getCopyrightYear()); mmap.put("support", FrameworkConfig.getSupport()); mmap.put("demoEnabled", FrameworkConfig.isDemoEnabled()); mmap.put("isDefaultModifyPwd", initPasswordIsModify(user.getPwdUpdateDate(), user.getCompanyId())); mmap.put("isPasswordExpired", passwordIsExpiration(user.getPwdUpdateDate(), user.getCompanyId())); mmap.put("isMobile", ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent"))); // 菜单导航显示风格 String menuStyle = configService.selectConfigByKey("sys.index.menuStyle", user.getCompanyId()); // 移动端,默认使左侧导航菜单,否则取默认配置 String indexStyle = ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")) ? "home" : 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) ? "home-topnav" : "home"; return webIndex; } @GetMapping("/welcome") public String welcome(@RequestParam(value = "t", required = true) String model, ModelMap mmap) { mmap.put("version", FrameworkConfig.getVersion()); // 用户信息 SysUser user = getSysUser(); mmap.put(Constant.MODEL_KEY_LOGIN_USER, user); //默认粮情欢迎页面 String view = "dzhwk/welcome"; if (Constant.MODEL_SYS.equals(model)) { //系统管理模块欢迎页面 view = "dzhwk/welcome"; } return view; } /** * 根据bizType获取菜单 * * @param user * @param bizType1 * @return */ public List getMenusByBizType(SysUser user, String bizType1) { List menusList = new ArrayList<>(); List menus = menuService.selectMenusByUser(user); for (SysMenu menu : menus) { if (bizType1.equals(menu.getBizType())) { menusList.add(menu); } } return menusList; } // 锁定屏幕 @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", FrameworkConfig.getVersion()); return "main_v2"; } // 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, String companyId) { Integer initPasswordModify = Convert.toInt(configService.selectConfigByKey("sys.account.initPasswordModify", companyId)); return initPasswordModify != null && initPasswordModify == 1 && pwdUpdateDate == null; } // 检查密码是否过期 public boolean passwordIsExpiration(Date pwdUpdateDate, String companyId) { Integer passwordValidateDays = Convert.toInt(configService.selectConfigByKey("sys.account.passwordValidateDays", companyId)); if (passwordValidateDays != null && passwordValidateDays > 0) { if (StringUtils.isNull(pwdUpdateDate)) { // 如果从未修改过初始密码,直接提醒过期 return true; } Date nowDate = DateUtils.getNowDate(); return DateUtils.differentDaysByMillisecond(nowDate, pwdUpdateDate) > passwordValidateDays; } return false; } }