diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java index f14c61fd..3488b6dd 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java @@ -106,13 +106,15 @@ public class OnlineController extends BaseController{ map.put("startTimestamp", DateUtils.formatDateTime(session.getStartTimestamp())); map.put("lastAccessTime", DateUtils.formatDateTime(session.getLastAccessTime())); map.put("timeout", TimeUtils.formatDateAgo(session.getTimeout()-(currentTime-session.getLastAccessTime().getTime()))); - PrincipalCollection pc = (PrincipalCollection)session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); - LoginInfo principal = (pc != null ? (LoginInfo)pc.getPrimaryPrincipal() : null); - if (principal != null){ - map.put("userCode", session.getAttribute("userCode"));// principal.getId()); - map.put("userName", session.getAttribute("userName"));// principal.getName()); - map.put("userType", session.getAttribute("userType"));// ObjectUtils.toString(principal.getParam("userType"))); - map.put("deviceType", ObjectUtils.toString(principal.getParam("deviceType"))); + Object pc = session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); + if (pc != null && pc instanceof PrincipalCollection){ + LoginInfo loginInfo = (LoginInfo)((PrincipalCollection)pc).getPrimaryPrincipal(); + if (loginInfo != null){ + map.put("userCode", session.getAttribute("userCode"));// principal.getId()); + map.put("userName", session.getAttribute("userName"));// principal.getName()); + map.put("userType", session.getAttribute("userType"));// ObjectUtils.toString(principal.getParam("userType"))); + map.put("deviceType", ObjectUtils.toString(loginInfo.getParam("deviceType"))); + } } map.put("host", session.getHost()); list.add(map); diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/user/CorpAdminController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/user/CorpAdminController.java index a90c2bcc..ea8d0f88 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/user/CorpAdminController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/user/CorpAdminController.java @@ -4,21 +4,26 @@ package com.jeesite.modules.sys.web.user; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.apache.shiro.session.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.collect.MapUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.StringUtils; @@ -216,5 +221,55 @@ public class CorpAdminController extends BaseController { return renderResult(Global.TRUE, "取消用户'" + user.getUserName() + "'管理员身份成功!"); } } + + /** + * 查询租户数据树格式 + * @param pId 父级编码,默认 -1 + * @param isShowCode 是否显示编码(true or 1:显示在左侧;2:显示在右侧;false or null:不显示) + * @return + */ + @RequiresPermissions("user") + @RequestMapping(value = "treeData") + @ResponseBody + public List> treeData(String pId, String isShowCode) { + List> mapList = ListUtils.newArrayList(); + User where = new User(); + List list = userService.findCorpList(where); + for (int i = 0; i < list.size(); i++) { + User e = list.get(i); + Map map = MapUtils.newHashMap(); + map.put("id", e.getCorpCode_()); + map.put("pId", StringUtils.defaultIfBlank(pId, "-1")); + map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getCorpCode_(), e.getCorpName_())); + mapList.add(map); + } + return mapList; + } + + /** + * 切换租户 + * @param user + * @return + */ + @RequiresPermissions("sys:corpAdmin:edit") + @RequestMapping(value = "switch/{corpCode}") + @ResponseBody + public String switchCorp(@PathVariable String corpCode) { + if (UserUtils.getUser().isSuperAdmin()){ + User where = new User(); + where.setCorpCode_(corpCode); + List list = userService.findCorpList(where); + if (list.size() > 0){ + Session session = UserUtils.getSession(); + User user = list.get(0); + session.setAttribute("corpCode", user.getCorpCode_()); + session.setAttribute("corpName", user.getCorpName_()); + return renderResult(Global.TRUE, "租户切换成功!"); + }else{ + return renderResult(Global.TRUE, "租户切换失败,没有这个租户!"); + } + } + return renderResult(Global.FALSE, "租户切换失败,只有超级管理员才可以操作!"); + } } diff --git a/modules/core/src/main/resources/views/themes/default/modules/sys/sysIndex/topMenuCorp.html b/modules/core/src/main/resources/views/themes/default/modules/sys/sysIndex/topMenuCorp.html new file mode 100644 index 00000000..4e7bfe20 --- /dev/null +++ b/modules/core/src/main/resources/views/themes/default/modules/sys/sysIndex/topMenuCorp.html @@ -0,0 +1,28 @@ +<% if(@Global.getConfigToBoolean('user.useCorpModel', 'false') && user.superAdmin){ %> +
  • + + 当前租户:(${session.corpCode}) ${session.corpName} + +
    <#form:treeselect id="switchCorpSelect" title="${text('租户切换')}" allowClear="false" + url="${ctx}/sys/corpAdmin/treeData?isShowCode=true" callbackFuncName="switchCorpSelectCallback"/> +
    + +
  • +<% }else if(__info_type == '0'){ %> +
  • 官方网站
  • +<% } %> diff --git a/modules/core/src/test/resource/config/application.yml b/modules/core/src/test/resource/config/application.yml index a69293eb..138cc767 100644 --- a/modules/core/src/test/resource/config/application.yml +++ b/modules/core/src/test/resource/config/application.yml @@ -13,7 +13,7 @@ jdbc: # Mysql 数据库配置 type: mysql driver: com.mysql.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull username: root password: 123456 testSql: SELECT 1 diff --git a/web/src/main/resources/config/application.yml b/web/src/main/resources/config/application.yml index 9f6abd80..648731f1 100644 --- a/web/src/main/resources/config/application.yml +++ b/web/src/main/resources/config/application.yml @@ -36,7 +36,7 @@ jdbc: # Mysql 数据库配置 type: mysql driver: com.mysql.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull username: root password: 123456 testSql: SELECT 1 @@ -107,7 +107,7 @@ jdbc: # ds2: # type: mysql # driver: com.mysql.jdbc.Driver -# url: jdbc:mysql://127.0.0.1:3306/jeesite2?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +# url: jdbc:mysql://127.0.0.1:3306/jeesite2?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull # username: root # password: 123456 # testSql: SELECT 1 @@ -173,10 +173,10 @@ spring: # 管理基础路径 #adminPath: /a -# + # 前端基础路径 #frontPath: /f -# + # 分页配置 #page: #