package com.td.WaDa; import com.td.WaDa.common.service.ComConfigService; import com.td.WaDa.game.comusers.service.ComUsersService; import com.td.WaDa.sys.sysmenu.vo.SysMenuVo; import com.td.WaDa.sys.syssetting.service.SysSettingService; import com.td.WaDa.sys.syssettinglimit.service.SysSettingLimitService; import com.td.WaDa.sys.syssettingtask.service.SysSettingTaskService; import com.td.WaDa.sys.sysshortcutmenu.service.SysShortcutMenuService; import com.td.WaDa.sys.sysshortcutmenu.vo.SysShortcutMenuVo; import com.td.WaDa.sys.sysuser.service.SysUserService; import com.td.WaDa.sys.sysuser.vo.SysUserVo; import com.td.WaDa.sys.sysusermenu.service.SysUserMenuService; import com.td.WaDa.util.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.security.core.session.SessionRegistry; import org.springframework.security.core.session.SessionRegistryImpl; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; @EnableAsync//开启异步调用 @EnableCaching// 开启缓存,需要显示的指定 @EnableScheduling @SpringBootApplication public class BossApplication { public static void main(String[] args) { SpringApplication.run(BossApplication.class, args); } /** * 解决不能注入session注册表问题 */ @Bean SessionRegistry sessionRegistry() { return new SessionRegistryImpl(); } } @Slf4j @Controller @RequestMapping("/") @Configuration class IndexController { @Autowired private SysUserService sysUserService; @Autowired private SysSettingService sysSettingService; @Autowired private SysSettingTaskService sysSettingTaskService; @Autowired private SysSettingLimitService sysSettingLimitService; @Autowired private RedisSettingMap redisSettingMap; @Autowired private SysUserMenuService sysUserMenuService; @Autowired private SysShortcutMenuService sysShortcutMenuService; @Autowired private ComUsersService comUsersService; @Autowired private ComConfigService comConfigService; @Value("${server.servlet.context-path:}") private String contextPath; /** * 端口 */ @Value("${server.port}") private String port; /** * 启动成功 */ @Bean public ApplicationRunner applicationRunner() { return applicationArguments -> { try { /** * 当启动时候,向主redis设置一次数据。 */ ////系统启动时获取数据库数据,设置到公用静态集合sysSettingMap ////SysSettingVo sysSettingVo = sysSettingService.get("1").getData(); ////SysSettingUtil.setSysSettingMap(sysSettingVo); //redisSettingMap.updateSysSettingMap(); //log.info(redisSettingMap.getSysSettingMap().toString()); ////系统启动时获取数据库数据,设置到公用静态集合sysSettingTaskMap ////SysSettingTaskVo sysSettingTaskVo = sysSettingTaskService.get("1").getData(); ////SysSettingTaskUtil.setSysSettingTaskMap(sysSettingTaskVo); //redisSettingMap.updateSysSettingTaskMap(); //log.info(redisSettingMap.getSysSettingTaskMap().toString()); ////限制登录ip ////SysSettingLimitVo sysSettingLimitVo = sysSettingLimitService.get("1").getData(); ////SysSettingLimitUtil.setSysSettingLimitMap(sysSettingLimitVo); //redisSettingMap.updateSysSettingLimitMap(); //log.info(redisSettingMap.getSysSettingLimitMap().toString()); ////更新com config 的 Redis数据 //comConfigService.updateList(); ////更新com setting 的redis数据 //redisSettingMap.updateComSettingMap(); //获取本机内网IP log.info("启动成功:" + "http://" + InetAddress.getLocalHost().getHostAddress() + ":" + port + contextPath); } catch (UnknownHostException e) { //输出到日志文件中 log.error(ErrorUtil.errorInfoToString(e)); } }; } /** * 跳转登录页面 */ @GetMapping("loginPage") public ModelAndView login(){ ModelAndView modelAndView = new ModelAndView("login"); //系统信息 SysSettingUtil.getSysSetting() modelAndView.addObject("sys",redisSettingMap.getSysSettingMap()); //系统审查信息 SysSettingTaskUtil.getSysSettingTask() modelAndView.addObject("sysSettingTask", redisSettingMap.getSysSettingTaskMap()); //系统限制信息 SysSettingLimitUtil.getSysSettingLimit() modelAndView.addObject("sysSettingLimit", redisSettingMap.getSysSettingLimitMap()); //后端公钥 String publicKey = RsaUtil.getPublicKey(); log.info("login后端公钥:" + publicKey); modelAndView.addObject("publicKey", publicKey); return modelAndView; } /** * 跳转首页 */ @GetMapping("") public void index1(HttpServletResponse response){ //内部重定向 try { response.sendRedirect(contextPath+"/index"); } catch (IOException e) { //输出到日志文件中 log.error(ErrorUtil.errorInfoToString(e)); } } @GetMapping("index") public ModelAndView index(){ ModelAndView modelAndView = new ModelAndView("index"); //系统信息 SysSettingUtil.getSysSetting() modelAndView.addObject("sys",redisSettingMap.getSysSettingMap()); //系统审查信息 SysSettingTaskUtil.getSysSettingTask() modelAndView.addObject("sysSettingTask", redisSettingMap.getSysSettingTaskMap()); //系统限制信息 SysSettingLimitUtil.getSysSettingLimit() modelAndView.addObject("sysSettingLimit", redisSettingMap.getSysSettingLimitMap()); //登录用户 SysUserVo sysUserVo = sysUserService.findByLoginName(SecurityUtil.getLoginUser().getUsername()).getData(); sysUserVo.setPassword(null);//隐藏部分属性 modelAndView.addObject( "loginUser", sysUserVo); //登录用户系统菜单 List menuVoList = sysUserMenuService.findByUserId(sysUserVo.getUserId()).getData(); modelAndView.addObject("menuList",menuVoList); //登录用户快捷菜单 List shortcutMenuVoList= sysShortcutMenuService.findByUserId(sysUserVo.getUserId()).getData(); modelAndView.addObject("shortcutMenuList",shortcutMenuVoList); //后端公钥 String publicKey = RsaUtil.getPublicKey(); log.info("index后端公钥:" + publicKey); modelAndView.addObject("publicKey", publicKey); //获取一个全平台的用户数据 Long allComUserCount = comUsersService.findAllCount(); modelAndView.addObject("allComUserCount", allComUserCount); Long todayComUserCount = comUsersService.newToday(); modelAndView.addObject("todayComUserCount", todayComUserCount); return modelAndView; } /** * 获取验证码图片和文本(验证码文本会保存在HttpSession中) */ @RequestMapping("getVerifyCodeImage") public void getVerifyCodeImage(HttpServletRequest request, HttpServletResponse response) throws IOException { //设置页面不缓存 response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.getOutputStream(); String verifyCode = VerifyCodeImageUtil.generateTextCode(VerifyCodeImageUtil.TYPE_NUM_UPPER, 4, null); //将验证码放到HttpSession里面 request.getSession().setAttribute("verifyCode", verifyCode); log.info("本次生成的验证码为:" + verifyCode + ",已存放到HttpSession中"); //设置输出的内容的类型为JPEG图像 response.setContentType("image/jpeg"); BufferedImage bufferedImage = VerifyCodeImageUtil.generateImageCode(verifyCode, 90, 30, 3, true, Color.WHITE, Color.BLACK, null); //写给浏览器 ImageIO.write(bufferedImage, "JPEG", response.getOutputStream()); } /** * 跳转实时系统硬件监控 */ @GetMapping("monitor") public ModelAndView monitor() { return new ModelAndView("monitor.html","port",port); } /** * 跳转实时日志 */ @GetMapping("logging") public ModelAndView logging() { return new ModelAndView("logging.html","port",port); } }