BossApplication.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package com.td.WaDa;
  2. import com.td.WaDa.common.service.ComConfigService;
  3. import com.td.WaDa.game.comusers.service.ComUsersService;
  4. import com.td.WaDa.sys.sysmenu.vo.SysMenuVo;
  5. import com.td.WaDa.sys.syssetting.service.SysSettingService;
  6. import com.td.WaDa.sys.syssettinglimit.service.SysSettingLimitService;
  7. import com.td.WaDa.sys.syssettingtask.service.SysSettingTaskService;
  8. import com.td.WaDa.sys.sysshortcutmenu.service.SysShortcutMenuService;
  9. import com.td.WaDa.sys.sysshortcutmenu.vo.SysShortcutMenuVo;
  10. import com.td.WaDa.sys.sysuser.service.SysUserService;
  11. import com.td.WaDa.sys.sysuser.vo.SysUserVo;
  12. import com.td.WaDa.sys.sysusermenu.service.SysUserMenuService;
  13. import com.td.WaDa.util.*;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.beans.factory.annotation.Value;
  17. import org.springframework.boot.ApplicationRunner;
  18. import org.springframework.boot.SpringApplication;
  19. import org.springframework.boot.autoconfigure.SpringBootApplication;
  20. import org.springframework.cache.annotation.EnableCaching;
  21. import org.springframework.context.annotation.Bean;
  22. import org.springframework.context.annotation.Configuration;
  23. import org.springframework.scheduling.annotation.EnableAsync;
  24. import org.springframework.scheduling.annotation.EnableScheduling;
  25. import org.springframework.security.core.session.SessionRegistry;
  26. import org.springframework.security.core.session.SessionRegistryImpl;
  27. import org.springframework.stereotype.Controller;
  28. import org.springframework.web.bind.annotation.GetMapping;
  29. import org.springframework.web.bind.annotation.RequestMapping;
  30. import org.springframework.web.servlet.ModelAndView;
  31. import javax.imageio.ImageIO;
  32. import javax.servlet.http.HttpServletRequest;
  33. import javax.servlet.http.HttpServletResponse;
  34. import java.awt.*;
  35. import java.awt.image.BufferedImage;
  36. import java.io.IOException;
  37. import java.net.InetAddress;
  38. import java.net.UnknownHostException;
  39. import java.util.List;
  40. @EnableAsync//开启异步调用
  41. @EnableCaching// 开启缓存,需要显示的指定
  42. @EnableScheduling
  43. @SpringBootApplication
  44. public class BossApplication {
  45. public static void main(String[] args) {
  46. SpringApplication.run(BossApplication.class, args);
  47. }
  48. /**
  49. * 解决不能注入session注册表问题
  50. */
  51. @Bean
  52. SessionRegistry sessionRegistry() {
  53. return new SessionRegistryImpl();
  54. }
  55. }
  56. @Slf4j
  57. @Controller
  58. @RequestMapping("/")
  59. @Configuration
  60. class IndexController {
  61. @Autowired
  62. private SysUserService sysUserService;
  63. @Autowired
  64. private SysSettingService sysSettingService;
  65. @Autowired
  66. private SysSettingTaskService sysSettingTaskService;
  67. @Autowired
  68. private SysSettingLimitService sysSettingLimitService;
  69. @Autowired
  70. private RedisSettingMap redisSettingMap;
  71. @Autowired
  72. private SysUserMenuService sysUserMenuService;
  73. @Autowired
  74. private SysShortcutMenuService sysShortcutMenuService;
  75. @Autowired
  76. private ComUsersService comUsersService;
  77. @Autowired
  78. private ComConfigService comConfigService;
  79. @Value("${server.servlet.context-path:}")
  80. private String contextPath;
  81. /**
  82. * 端口
  83. */
  84. @Value("${server.port}")
  85. private String port;
  86. /**
  87. * 启动成功
  88. */
  89. @Bean
  90. public ApplicationRunner applicationRunner() {
  91. return applicationArguments -> {
  92. try {
  93. /**
  94. * 当启动时候,向主redis设置一次数据。
  95. */
  96. ////系统启动时获取数据库数据,设置到公用静态集合sysSettingMap
  97. ////SysSettingVo sysSettingVo = sysSettingService.get("1").getData();
  98. ////SysSettingUtil.setSysSettingMap(sysSettingVo);
  99. //redisSettingMap.updateSysSettingMap();
  100. //log.info(redisSettingMap.getSysSettingMap().toString());
  101. ////系统启动时获取数据库数据,设置到公用静态集合sysSettingTaskMap
  102. ////SysSettingTaskVo sysSettingTaskVo = sysSettingTaskService.get("1").getData();
  103. ////SysSettingTaskUtil.setSysSettingTaskMap(sysSettingTaskVo);
  104. //redisSettingMap.updateSysSettingTaskMap();
  105. //log.info(redisSettingMap.getSysSettingTaskMap().toString());
  106. ////限制登录ip
  107. ////SysSettingLimitVo sysSettingLimitVo = sysSettingLimitService.get("1").getData();
  108. ////SysSettingLimitUtil.setSysSettingLimitMap(sysSettingLimitVo);
  109. //redisSettingMap.updateSysSettingLimitMap();
  110. //log.info(redisSettingMap.getSysSettingLimitMap().toString());
  111. ////更新com config 的 Redis数据
  112. //comConfigService.updateList();
  113. ////更新com setting 的redis数据
  114. //redisSettingMap.updateComSettingMap();
  115. //获取本机内网IP
  116. log.info("启动成功:" + "http://" + InetAddress.getLocalHost().getHostAddress() + ":" + port + contextPath);
  117. } catch (UnknownHostException e) {
  118. //输出到日志文件中
  119. log.error(ErrorUtil.errorInfoToString(e));
  120. }
  121. };
  122. }
  123. /**
  124. * 跳转登录页面
  125. */
  126. @GetMapping("loginPage")
  127. public ModelAndView login(){
  128. ModelAndView modelAndView = new ModelAndView("login");
  129. //系统信息 SysSettingUtil.getSysSetting()
  130. modelAndView.addObject("sys",redisSettingMap.getSysSettingMap());
  131. //系统审查信息 SysSettingTaskUtil.getSysSettingTask()
  132. modelAndView.addObject("sysSettingTask", redisSettingMap.getSysSettingTaskMap());
  133. //系统限制信息 SysSettingLimitUtil.getSysSettingLimit()
  134. modelAndView.addObject("sysSettingLimit", redisSettingMap.getSysSettingLimitMap());
  135. //后端公钥
  136. String publicKey = RsaUtil.getPublicKey();
  137. log.info("login后端公钥:" + publicKey);
  138. modelAndView.addObject("publicKey", publicKey);
  139. return modelAndView;
  140. }
  141. /**
  142. * 跳转首页
  143. */
  144. @GetMapping("")
  145. public void index1(HttpServletResponse response){
  146. //内部重定向
  147. try {
  148. response.sendRedirect(contextPath+"/index");
  149. } catch (IOException e) {
  150. //输出到日志文件中
  151. log.error(ErrorUtil.errorInfoToString(e));
  152. }
  153. }
  154. @GetMapping("index")
  155. public ModelAndView index(){
  156. ModelAndView modelAndView = new ModelAndView("index");
  157. //系统信息 SysSettingUtil.getSysSetting()
  158. modelAndView.addObject("sys",redisSettingMap.getSysSettingMap());
  159. //系统审查信息 SysSettingTaskUtil.getSysSettingTask()
  160. modelAndView.addObject("sysSettingTask", redisSettingMap.getSysSettingTaskMap());
  161. //系统限制信息 SysSettingLimitUtil.getSysSettingLimit()
  162. modelAndView.addObject("sysSettingLimit", redisSettingMap.getSysSettingLimitMap());
  163. //登录用户
  164. SysUserVo sysUserVo = sysUserService.findByLoginName(SecurityUtil.getLoginUser().getUsername()).getData();
  165. sysUserVo.setPassword(null);//隐藏部分属性
  166. modelAndView.addObject( "loginUser", sysUserVo);
  167. //登录用户系统菜单
  168. List<SysMenuVo> menuVoList = sysUserMenuService.findByUserId(sysUserVo.getUserId()).getData();
  169. modelAndView.addObject("menuList",menuVoList);
  170. //登录用户快捷菜单
  171. List<SysShortcutMenuVo> shortcutMenuVoList= sysShortcutMenuService.findByUserId(sysUserVo.getUserId()).getData();
  172. modelAndView.addObject("shortcutMenuList",shortcutMenuVoList);
  173. //后端公钥
  174. String publicKey = RsaUtil.getPublicKey();
  175. log.info("index后端公钥:" + publicKey);
  176. modelAndView.addObject("publicKey", publicKey);
  177. //获取一个全平台的用户数据
  178. Long allComUserCount = comUsersService.findAllCount();
  179. modelAndView.addObject("allComUserCount", allComUserCount);
  180. Long todayComUserCount = comUsersService.newToday();
  181. modelAndView.addObject("todayComUserCount", todayComUserCount);
  182. return modelAndView;
  183. }
  184. /**
  185. * 获取验证码图片和文本(验证码文本会保存在HttpSession中)
  186. */
  187. @RequestMapping("getVerifyCodeImage")
  188. public void getVerifyCodeImage(HttpServletRequest request, HttpServletResponse response) throws IOException {
  189. //设置页面不缓存
  190. response.setHeader("Pragma", "no-cache");
  191. response.setHeader("Cache-Control", "no-cache");
  192. response.setDateHeader("Expires", 0);
  193. response.getOutputStream();
  194. String verifyCode = VerifyCodeImageUtil.generateTextCode(VerifyCodeImageUtil.TYPE_NUM_UPPER, 4, null);
  195. //将验证码放到HttpSession里面
  196. request.getSession().setAttribute("verifyCode", verifyCode);
  197. log.info("本次生成的验证码为:" + verifyCode + ",已存放到HttpSession中");
  198. //设置输出的内容的类型为JPEG图像
  199. response.setContentType("image/jpeg");
  200. BufferedImage bufferedImage = VerifyCodeImageUtil.generateImageCode(verifyCode, 90, 30, 3, true, Color.WHITE, Color.BLACK, null);
  201. //写给浏览器
  202. ImageIO.write(bufferedImage, "JPEG", response.getOutputStream());
  203. }
  204. /**
  205. * 跳转实时系统硬件监控
  206. */
  207. @GetMapping("monitor")
  208. public ModelAndView monitor() {
  209. return new ModelAndView("monitor.html","port",port);
  210. }
  211. /**
  212. * 跳转实时日志
  213. */
  214. @GetMapping("logging")
  215. public ModelAndView logging() {
  216. return new ModelAndView("logging.html","port",port);
  217. }
  218. }