Pu Zhibing
2025-07-04 c8638df756d5c56f2d0c3ed35522fc5a340122c8
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -1,10 +1,11 @@
package com.stylefeng.guns.modular.system.controller.system;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.google.code.kaptcha.Constants;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.beetl.ShiroExtUtil;
import com.stylefeng.guns.core.common.exception.InvalidKaptchaException;
import com.stylefeng.guns.core.log.LogManager;
import com.stylefeng.guns.core.log.factory.LogTaskFactory;
@@ -16,8 +17,11 @@
import com.stylefeng.guns.core.util.KaptchaUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.dao.UserMapper;
import com.stylefeng.guns.modular.system.model.Menu;
import com.stylefeng.guns.modular.system.model.Relation;
import com.stylefeng.guns.modular.system.model.User;
import com.stylefeng.guns.modular.system.service.IMenuService;
import com.stylefeng.guns.modular.system.service.IRelationService;
import com.stylefeng.guns.modular.system.service.IUserService;
import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
@@ -34,7 +38,6 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestContextHolder;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -43,6 +46,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.stylefeng.guns.core.support.HttpKit.getIp;
@@ -64,7 +69,7 @@
   private IUserService userService;
   
   @Resource
   private RedisTemplate<String, Object> redisTemplate;
   private RedisTemplate<String, String> redisTemplate;
   
   @Autowired
   private IShiro shiro;
@@ -76,6 +81,9 @@
   private Map<String, Long> loginTime = new HashMap<>();
   
   private Map<String, Integer> loginFailures = new HashMap<>();
   @Autowired
   private IRelationService relationService;
   
   
   /**
@@ -101,11 +109,13 @@
      if (roleList == null || roleList.size() == 0) {
         roleList.add(0);
      }
      List<Relation> relations = relationService.selectList(new EntityWrapper<Relation>().in("roleid", roleList));
      Set<Long> collect = relations.stream().map(Relation::getMenuid).collect(Collectors.toSet());
      List<Menu> menuList = menuService.selectBatchIds(collect);
      List<MenuNode> menus = menuService.getMenusByRoleIds(roleList);
      List<MenuNode> titles = MenuNode.buildTitle(menus);
      titles = ApiMenuFilter.build(titles);
      shiroUser.setMenuIds(titles.stream().map(MenuNode::getUrl).collect(Collectors.toList()));
      shiroUser.setMenuIds(menuList.stream().map(Menu::getUrl).collect(Collectors.toList()));
      
      
      model.addAttribute("titles", titles);
@@ -114,8 +124,7 @@
      model.addAttribute("avatar", avatar);
      model.addAttribute("userName", user.getName());
      model.addAttribute("type", 0);
      String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId();
      ShiroExtUtil.map.put(sessionId, shiroUser);
      redisTemplate.opsForValue().set(loginUser.getOnconUUID(), JSON.toJSONString(shiroUser), 10, TimeUnit.HOURS);
      return "/index.html";
   }
   
@@ -125,7 +134,7 @@
   @RequestMapping(value = "/logout", method = RequestMethod.GET)
   public String logOut(HttpServletRequest request) {
      request.getSession().invalidate();
//      HttpUtil.get("https://testsso1.teamshub.com/logout?logouturl=https%3A%2F%2Fsso.teamshub.com%2Flogout%3Flogoutat%3Dhttps%3A%2F%2Ftraffic.qytzt.cn%2F");
      HttpUtil.get("https://passport.teamshub.com/logout?logouturl=https%3A%2F%2Fsso.teamshub.com%2Flogout%3F%0Alogoutat%3Dhttps%253A%252F%252Ftraffic.qytzt.cn%253A443%252F");
      return REDIRECT + "/";
   }