BossApplication.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  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. //更新sys_setting
  100. redisSettingMap.updateSysSettingMap();
  101. //log.info(redisSettingMap.getSysSettingMap().toString());
  102. ////系统启动时获取数据库数据,设置到公用静态集合sysSettingTaskMap
  103. ////SysSettingTaskVo sysSettingTaskVo = sysSettingTaskService.get("1").getData();
  104. ////SysSettingTaskUtil.setSysSettingTaskMap(sysSettingTaskVo);
  105. //redisSettingMap.updateSysSettingTaskMap();
  106. //log.info(redisSettingMap.getSysSettingTaskMap().toString());
  107. ////限制登录ip
  108. ////SysSettingLimitVo sysSettingLimitVo = sysSettingLimitService.get("1").getData();
  109. ////SysSettingLimitUtil.setSysSettingLimitMap(sysSettingLimitVo);
  110. //redisSettingMap.updateSysSettingLimitMap();
  111. //log.info(redisSettingMap.getSysSettingLimitMap().toString());
  112. ////更新com config 的 Redis数据
  113. //comConfigService.updateList();
  114. ////更新com setting 的redis数据
  115. //redisSettingMap.updateComSettingMap();
  116. //获取本机内网IP
  117. log.info("启动成功:" + "http://" + InetAddress.getLocalHost().getHostAddress() + ":" + port + contextPath);
  118. } catch (UnknownHostException e) {
  119. //输出到日志文件中
  120. log.error(ErrorUtil.errorInfoToString(e));
  121. }
  122. };
  123. }
  124. /**
  125. * 跳转登录页面
  126. */
  127. @GetMapping("loginPage")
  128. public ModelAndView login() {
  129. ModelAndView modelAndView = new ModelAndView("login");
  130. //系统信息 SysSettingUtil.getSysSetting()
  131. modelAndView.addObject("sys", redisSettingMap.getSysSettingMap());
  132. //系统审查信息 SysSettingTaskUtil.getSysSettingTask()
  133. modelAndView.addObject("sysSettingTask", redisSettingMap.getSysSettingTaskMap());
  134. //系统限制信息 SysSettingLimitUtil.getSysSettingLimit()
  135. modelAndView.addObject("sysSettingLimit", redisSettingMap.getSysSettingLimitMap());
  136. //后端公钥
  137. String publicKey = redisSettingMap.getRSAPublicKeyBase64(); //RsaUtil.getPublicKey();
  138. log.info("login后端公钥:" + publicKey);
  139. modelAndView.addObject("publicKey", publicKey);
  140. return modelAndView;
  141. }
  142. /**
  143. * 跳转首页
  144. */
  145. @GetMapping("")
  146. public void index1(HttpServletResponse response) {
  147. //内部重定向
  148. try {
  149. response.sendRedirect(contextPath + "/index");
  150. } catch (IOException e) {
  151. //输出到日志文件中
  152. log.error(ErrorUtil.errorInfoToString(e));
  153. }
  154. }
  155. @GetMapping("index")
  156. public ModelAndView index() {
  157. ModelAndView modelAndView = new ModelAndView("index");
  158. //系统信息 SysSettingUtil.getSysSetting()
  159. modelAndView.addObject("sys", redisSettingMap.getSysSettingMap());
  160. //系统审查信息 SysSettingTaskUtil.getSysSettingTask()
  161. modelAndView.addObject("sysSettingTask", redisSettingMap.getSysSettingTaskMap());
  162. //系统限制信息 SysSettingLimitUtil.getSysSettingLimit()
  163. modelAndView.addObject("sysSettingLimit", redisSettingMap.getSysSettingLimitMap());
  164. //登录用户
  165. SysUserVo sysUserVo = sysUserService.findByLoginName(SecurityUtil.getLoginUser().getUsername()).getData();
  166. sysUserVo.setPassword(null);//隐藏部分属性
  167. modelAndView.addObject("loginUser", sysUserVo);
  168. //登录用户系统菜单
  169. List<SysMenuVo> menuVoList = sysUserMenuService.findByUserId(sysUserVo.getUserId()).getData();
  170. modelAndView.addObject("menuList", menuVoList);
  171. //登录用户快捷菜单
  172. List<SysShortcutMenuVo> shortcutMenuVoList = sysShortcutMenuService.findByUserId(sysUserVo.getUserId()).getData();
  173. modelAndView.addObject("shortcutMenuList", shortcutMenuVoList);
  174. //后端公钥
  175. String publicKey = redisSettingMap.getRSAPublicKeyBase64(); // RsaUtil.getPublicKey();
  176. log.info("index后端公钥:" + publicKey);
  177. modelAndView.addObject("publicKey", publicKey);
  178. //获取一个全平台的用户数据
  179. Long allComUserCount = comUsersService.findAllCount();
  180. modelAndView.addObject("allComUserCount", allComUserCount);
  181. Long todayComUserCount = comUsersService.newToday();
  182. modelAndView.addObject("todayComUserCount", todayComUserCount);
  183. return modelAndView;
  184. }
  185. /**
  186. * 获取验证码图片和文本(验证码文本会保存在HttpSession中)
  187. */
  188. @RequestMapping("getVerifyCodeImage")
  189. public void getVerifyCodeImage(HttpServletRequest request, HttpServletResponse response) throws IOException {
  190. //设置页面不缓存
  191. response.setHeader("Pragma", "no-cache");
  192. response.setHeader("Cache-Control", "no-cache");
  193. response.setDateHeader("Expires", 0);
  194. response.getOutputStream();
  195. String verifyCode = VerifyCodeImageUtil.generateTextCode(VerifyCodeImageUtil.TYPE_NUM_UPPER, 4, null);
  196. //将验证码放到HttpSession里面
  197. request.getSession().setAttribute("verifyCode", verifyCode);
  198. log.info("本次生成的验证码为:" + verifyCode + ",已存放到HttpSession中");
  199. //设置输出的内容的类型为JPEG图像
  200. response.setContentType("image/jpeg");
  201. BufferedImage bufferedImage = VerifyCodeImageUtil.generateImageCode(verifyCode, 90, 30, 3, true, Color.WHITE, Color.BLACK, null);
  202. //写给浏览器
  203. ImageIO.write(bufferedImage, "JPEG", response.getOutputStream());
  204. }
  205. /**
  206. * 跳转实时系统硬件监控
  207. */
  208. @GetMapping("monitor")
  209. public ModelAndView monitor() {
  210. return new ModelAndView("monitor.html", "port", port);
  211. }
  212. /**
  213. * 跳转实时日志
  214. */
  215. @GetMapping("logging")
  216. public ModelAndView logging() {
  217. return new ModelAndView("logging.html", "port", port);
  218. }
  219. }