MainController.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.mrxu.admin;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.mrxu.admin.controller.AdminBaseController;
  4. import com.mrxu.base.dto.LoginDto;
  5. import com.mrxu.base.entity.SysMenu;
  6. import com.mrxu.base.enums.MenuForFront;
  7. import com.mrxu.base.model.LoginUserInfo;
  8. import com.mrxu.base.service.SysMenuService;
  9. import com.mrxu.framework.boot.bean.ResponseObj;
  10. import com.mrxu.framework.common.util.MrxuAssert;
  11. import com.wf.captcha.utils.CaptchaUtil;
  12. import io.swagger.annotations.Api;
  13. import lombok.RequiredArgsConstructor;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.apache.shiro.SecurityUtils;
  16. import org.apache.shiro.authc.UsernamePasswordToken;
  17. import org.apache.shiro.authz.annotation.RequiresUser;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.boot.web.servlet.error.ErrorController;
  21. import org.springframework.stereotype.Controller;
  22. import org.springframework.ui.Model;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.io.IOException;
  27. import java.util.List;
  28. @Slf4j
  29. @Api(tags = "商户管理")
  30. @Controller
  31. @RequiredArgsConstructor(onConstructor = @__(@Autowired))
  32. public class MainController extends AdminBaseController implements ErrorController {
  33. @Value("${spring.profiles.active}")
  34. private String profiles;
  35. // 万能验证码
  36. private String rightCode = "0add8f2717b0691442d548f1fd277e4f";
  37. private final SysMenuService menuService;
  38. @ResponseBody
  39. @RequestMapping("/login.json")
  40. public ResponseObj<String> login(String username, String password, String code, @RequestParam(defaultValue="false",required=true)Boolean remember, HttpServletRequest request) {
  41. log.info("登录用户:{}",username);
  42. MrxuAssert.isNotEmpty(username,"请输入账号");
  43. // 为了方便本地dev环境不校验验证码
  44. if(!"dev".equals(profiles)) {
  45. MrxuAssert.isTrue(rightCode.equals(code) || CaptchaUtil.ver(code, request),"验证码不正确");
  46. }
  47. SecurityUtils.getSubject().login(new UsernamePasswordToken(username, password, remember));
  48. log.info("用户:{}登录成功",username);
  49. return success(request.getSession().getId());
  50. }
  51. @ResponseBody
  52. @PostMapping("/login")
  53. public ResponseObj<String> login(@RequestBody LoginDto loginDto, HttpServletRequest request) {
  54. SecurityUtils.getSubject().login(new UsernamePasswordToken(loginDto.getUsername(),
  55. loginDto.getPassword(), loginDto.getRemember()));
  56. return success(request.getSession().getId());
  57. }
  58. @RequiresUser
  59. @ResponseBody
  60. @GetMapping("/getUserInfo.json")
  61. public ResponseObj<LoginUserInfo> getUserInfo() {
  62. LoginUserInfo userInfo = new LoginUserInfo();
  63. return success(userInfo);
  64. }
  65. /**
  66. * 主页
  67. */
  68. @RequestMapping({"/", "/index"})
  69. public String index(Model model) {
  70. List<SysMenu> menus = menuService.getUserMenuTree(getLoginUser(), MenuForFront.oldFront);
  71. model.addAttribute("menus",menus);
  72. JSONObject tenant = new JSONObject();
  73. model.addAttribute("tenant",tenant);
  74. return "index.html";
  75. }
  76. /**
  77. * 登录页
  78. */
  79. @GetMapping("/login.html")
  80. public String login() {
  81. return "login.html";
  82. }
  83. /**
  84. * logout退出
  85. * @return
  86. */
  87. @GetMapping("/logout")
  88. public String logout() {
  89. if(SecurityUtils.getSubject() != null) {
  90. SecurityUtils.getSubject().logout();
  91. }
  92. return "redirect:/login.html";
  93. }
  94. @GetMapping("/home.html")
  95. public String home() {
  96. return "crm/home.html";
  97. }
  98. /**
  99. * 图形验证码
  100. */
  101. @RequestMapping("/assets/captcha")
  102. public void captcha(HttpServletRequest request, HttpServletResponse response) {
  103. try {
  104. CaptchaUtil.out(5, request, response);
  105. } catch (IOException e) {
  106. e.printStackTrace();
  107. }
  108. }
  109. /**
  110. * 主页弹窗页面
  111. */
  112. @RequestMapping("/tpl/{name}")
  113. public String tpl(@PathVariable("name") String name) {
  114. return "index/" + name + ".html";
  115. }
  116. /**
  117. * 错误页
  118. */
  119. @RequestMapping("/error")
  120. public String error(HttpServletRequest request) {
  121. String code = request.getAttribute("javax.servlet.error.status_code").toString();
  122. if("404".equals(code)) {
  123. return "error/404.html";
  124. }
  125. request.setAttribute("message",request.getAttribute("javax.servlet.error.message"));
  126. return "error/500.html";
  127. }
  128. // 1 第一次提交修改
  129. @Override
  130. public String getErrorPath() {
  131. return "/error";
  132. }
  133. }