ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/EmbeddedPageController.java
@@ -11,6 +11,7 @@ import com.stylefeng.guns.modular.system.service.IUserService; import com.stylefeng.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,8 +30,12 @@ public class EmbeddedPageController { private static final String EMBEDDED_IFRAME_VIEW = "/system/embedded/iframe.html"; private static final String ROUTE_SWITCH_URL = "http://192.168.110.22:8087/#/?token="; private static final String STATISTICAL_TABLE_URL = "http://192.168.110.22:8087/#/statistical-table?token="; @Value("${embedded.route-switch-url}") private String routeSwitchUrl; @Value("${embedded.statistical-table-url}") private String statisticalTableUrl; @Autowired private IMenuEntryConfigService menuEntryConfigService; @@ -41,14 +46,14 @@ @RequestMapping("/embedded/route-switch") public String routeSwitch(Model model) throws UnsupportedEncodingException { model.addAttribute("title", "路由切换页"); model.addAttribute("iframeSrc", ROUTE_SWITCH_URL + generateCurrentUserToken()); model.addAttribute("iframeSrc", buildTokenUrl(routeSwitchUrl)); return EMBEDDED_IFRAME_VIEW; } @RequestMapping("/embedded/statistical-table") public String statisticalTable(Model model) throws UnsupportedEncodingException { model.addAttribute("title", "统计板"); model.addAttribute("iframeSrc", STATISTICAL_TABLE_URL + generateCurrentUserToken()); model.addAttribute("iframeSrc", buildTokenUrl(statisticalTableUrl)); return EMBEDDED_IFRAME_VIEW; } @@ -85,6 +90,10 @@ return null; } private String buildTokenUrl(String baseUrl) throws UnsupportedEncodingException { return baseUrl + generateCurrentUserToken(); } private String generateCurrentUserToken() throws UnsupportedEncodingException { ShiroUser user = ShiroKit.getUser(); if (user == null || user.getId() == null) { ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -2,6 +2,7 @@ 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.common.exception.InvalidKaptchaException; @@ -13,11 +14,13 @@ import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.shiro.factory.IShiro; import com.stylefeng.guns.core.util.ApiMenuFilter; import com.stylefeng.guns.core.util.JwtTokenUtil; import com.stylefeng.guns.core.util.KaptchaUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.dao.TCompanyMapper; import com.stylefeng.guns.modular.system.dao.UserMapper; import com.stylefeng.guns.modular.system.model.Menu; import com.stylefeng.guns.modular.system.model.SysUserCompanyScope; import com.stylefeng.guns.modular.system.model.TCompany; import com.stylefeng.guns.modular.system.model.User; @@ -32,6 +35,7 @@ import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -41,6 +45,7 @@ import javax.annotation.Resource; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.*; import static com.stylefeng.guns.core.support.HttpKit.getIp; @@ -54,6 +59,10 @@ @Slf4j @Controller public class LoginController extends BaseController { @Value("${embedded.route-switch-url}") private String routeSwitchUrl; // 快车相关菜单(isSpe=2时过滤) private static final List<String> SPE_MENUS = Arrays.asList( @@ -110,7 +119,7 @@ * 跳转到主页 */ @RequestMapping(value = "/", method = RequestMethod.GET) public String index(Model model) throws UnsupportedEncodingException { public String index(Model model, String routeRedirect) throws UnsupportedEncodingException { ShiroUser shiroUser = ShiroKit.getUser(); if (Objects.isNull(shiroUser)) { ShiroKit.getSubject().logout(); @@ -154,9 +163,37 @@ model.addAttribute("avatar", avatar); model.addAttribute("userName", user.getName()); model.addAttribute("type", 0); addDefaultPageModel(model, routeRedirect); return "/index.html"; } private void addDefaultPageModel(Model model, String routeRedirect) { String defaultPageUrl = getValidRouteRedirect(routeRedirect); String defaultPageTitle = "首页"; if (!"/blackboard".equals(defaultPageUrl)) { Menu menu = menuService.selectOne( new EntityWrapper<Menu>().eq("url", defaultPageUrl).eq("status", 1).eq("ismenu", 1)); if (menu != null && ToolUtil.isNotEmpty(menu.getName())) { defaultPageTitle = menu.getName(); } } model.addAttribute("defaultPageUrl", defaultPageUrl); model.addAttribute("defaultPageTitle", defaultPageTitle); } private String getValidRouteRedirect(String routeRedirect) { if (ToolUtil.isEmpty(routeRedirect)) { return "/blackboard"; } String url = routeRedirect.trim(); String lowerUrl = url.toLowerCase(); if (!url.startsWith("/") || url.startsWith("//") || lowerUrl.contains("http:") || lowerUrl.contains("https:") || lowerUrl.contains("javascript:")) { return "/blackboard"; } return url; } /** @@ -252,7 +289,20 @@ ShiroKit.getSession().setAttribute("sessionFlag", true); return REDIRECT + "/"; return redirectToRouteSwitchPage(shiroUser); } private String redirectToRouteSwitchPage(ShiroUser shiroUser) { if (shiroUser == null || shiroUser.getId() == null) { return REDIRECT + "/"; } try { String token = JwtTokenUtil.generateToken(shiroUser.getId().toString()); return REDIRECT + routeSwitchUrl + URLEncoder.encode(token, "UTF-8"); } catch (UnsupportedEncodingException e) { log.error("生成路由切换页token失败", e); return REDIRECT + "/"; } } @ResponseBody ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_right.html
@@ -46,7 +46,7 @@ </button> <nav class="page-tabs J_menuTabs"> <div class="page-tabs-content"> <a href="javascript:;" class="active J_menuTab" data-id="${ctxPath}/blackboard">首页</a> <a href="javascript:;" class="active J_menuTab" data-id="${ctxPath}${defaultPageUrl}">${defaultPageTitle}</a> </div> </nav> <!--<nav class="page-tabs J_menuTabs"> @@ -73,7 +73,7 @@ <a href="logout" class="roll-nav roll-right J_tabExit"><i class="fa fa fa-sign-out"></i> 退出</a> </div> <div class="row J_mainContent" id="content-main"> <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="${ctxPath}/blackboard?type=${type}" frameborder="0" data-id="${ctxPath}/blackboard" seamless></iframe> <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="${ctxPath}${defaultPageUrl}" frameborder="0" data-id="${ctxPath}${defaultPageUrl}" seamless></iframe> </div> <div class="footer"> <div class="pull-right">© 2019-2021 <a href="#" onclick="return false" target="_blank">约客多出行</a> MessagePushTravel/src/main/java/com/sinata/push/util/applets/NettyWebSocketController.java
@@ -159,6 +159,7 @@ HttpRequest post = HttpUtil.createPost(qytConfig.getChuxingUrl() + "/user/base/passenger/location/push"); post.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE); post.form(params); System.out.println("user-server推送乘客:{}" + params); HttpResponse execute = post.execute(); if (200 != execute.getStatus()) { System.err.println("调用user-server推送乘客定位出错"); UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -171,6 +171,7 @@ if (jsonObject1.getIntValue("code") != 200) { return ResultUtil.error(jsonObject1.getString("msg")); } System.err.println("乘客定位上报成功!"); return ResultUtil.success(); }