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<SysMenu> 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<SysMenu> getMenusByBizType(SysUser user, String bizType1) {
|
List<SysMenu> menusList = new ArrayList<>();
|
List<SysMenu> 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;
|
}
|
}
|