ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-druid.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-hn.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-ls.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-sltd.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-xh.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-ywry.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -1,21 +1,23 @@ package com.ruoyi.web.controller.system; import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.dx.MessageSend; import com.ruoyi.common.utils.RSAPublicKeyExample; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysMenuService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletResponse; @@ -38,7 +40,17 @@ private ISysMenuService menuService; @Autowired private ISysDeptService sysDeptService; @Autowired private SysPermissionService permissionService; @Value("${pri_key}") private String pri_key; @Value("${isEncryp}") private Integer isEncryp; /** * 登录方法 @@ -65,11 +77,22 @@ public AjaxResult SSOLogin(@RequestBody LoginBody loginBody) { AjaxResult ajax = AjaxResult.success(); // 生成令牌 if (StringUtils.isEmpty(loginBody.getUsername()) || StringUtils.isEmpty(loginBody.getOrgid()) || StringUtils.isEmpty(loginBody.getDeptId())) { if (StringUtils.isEmpty(loginBody.getUsername()) || StringUtils.isEmpty(loginBody.getOrgid())) { return AjaxResult.error("用户名或组织机构或部门不能为空"); } String token = loginService.loginByUserName(loginBody.getUsername() + "&" + loginBody.getOrgid() + "&" + loginBody.getDeptId()); if (StringUtils.isEmpty(loginBody.getDeptId())) { loginBody.setDeptId(null); } String userName = loginBody.getUsername(); if (isEncryp == 1) { RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); userName = rsaPublicKeyExample.decryptedData(loginBody.getUsername(), pri_key); } String token = loginService.loginByUserName(userName + "&" + loginBody.getOrgid() + "&" + loginBody.getDeptId()); if (StringUtils.isEmpty(token)) { return AjaxResult.error("登陆失败"); } ajax.put(Constants.TOKEN, token); return ajax; } @@ -117,4 +140,9 @@ List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); return AjaxResult.success(menuService.buildMenus(menus)); } @GetMapping("/getDept/{orgid}") public AjaxResult getDept(@PathVariable String orgid) { return AjaxResult.success(sysDeptService.selectDept(orgid)); } } ruoyi-admin/src/main/resources/application-druid.yml
@@ -23,21 +23,25 @@ # password: 123456 # driverClassName: com.mysql.cj.jdbc.Driver # # 新华 # url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # url: jdbc:mysql://192.168.100.10:3306/smartor_xinhua?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: smartor # password: Smartor.2023 # driverClassName: com.mysql.cj.jdbc.Driver # 公司云 url: jdbc:mysql://116.62.18.175:6002/smartor_lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://116.62.18.175:6002/smartor_sltd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: hxsoft password: Hxerp2000 driverClassName: com.mysql.cj.jdbc.Driver password: Smartor.2023 # ob数据库存 # url: jdbc:mysql://127.0.0.1:2881/smartor-lisui?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai # username: root@sys # password: # driverClassName: com.mysql.cj.jdbc.Driver # 公司本地 # url: jdbc:mysql://192.168.100.10:3306/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: smartor # password: Smartor.2023 # driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver # # 高斯数据库配置 # url: jdbc:postgresql://127.0.0.1:5432/smartorlishui @@ -47,15 +51,16 @@ # 从库数据源 slave: # url: jdbc:oracle:thin:@//192.168.88.46:1521/orcl # username: qebemr # password: qebsoft # driver-class-name: oracle.jdbc.OracleDriver enabled: true url: jdbc:mysql://192.168.100.10:3306/emr?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: smartor password: Smartor.2023 driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:oracle:thin:@//192.168.100.10:1521/orcl username: healthy password: healthy driver-class-name: oracle.jdbc.OracleDriver # enabled: true # url: jdbc:mysql://192.168.100.10:3306/emr?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: smartor # password: Smartor.2023 # driverClassName: com.mysql.cj.jdbc.Driver # 从数据源开关/默认关闭(公司) # enabled: true # url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor @@ -113,12 +118,12 @@ # redis 配置 redis: host: 127.0.0.1 port: 6379 port: 6020 # 数据库索引 database: 0 # 密码 password: password: Smartor # 连接超时时间 timeout: 10s lettuce: @@ -270,3 +275,9 @@ #随访医院:1新华 2丽水 visitHosp: 2 #处理投诉建议的部门编码 dealDeptCode: 40003024 #是否加密 0不加 1加密 isEncryp: 0 ruoyi-admin/src/main/resources/application-hn.yml
@@ -254,5 +254,11 @@ #admin管理员userId isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13 #随访医院:1新华 2丽水 visitHosp: 2 #随访医院:1新华 2丽水 3省立同德 visitHosp: 0 #处理投诉建议的部门编码 dealDeptCode: #是否加密 0不加 1加密 isEncryp: 0 ruoyi-admin/src/main/resources/application-ls.yml
@@ -243,8 +243,11 @@ #admin管理员userId isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13 #随访医院:1新华 2丽水 #随访医院:1新华 2丽水 3省立同德 visitHosp: 2 #处理投诉建议的部门编码 dealDeptCode: #是否加密 0不加 1加密 isEncryp: 0 ruoyi-admin/src/main/resources/application-sltd.yml
@@ -167,15 +167,11 @@ #二维码路径 qrpath: D:\qrcode #公司内外链请求IP和端口号 #req_path: 8095 #localIP: 192.168.2.13 #新华医院外链请求IP和端口号 req_path: 8093 #localIP: https://wx.lihusmart.com #丽水外链请求IP和端口号 localIP: http://221.12.19.26 #外链请求IP和端口号 req_path: 13871 localIP: http://m.zjtongde.com #获取患者信息URL(华卓提供) hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange @@ -197,16 +193,14 @@ #fs所使用的阿里的app_key(新华) app_key_yq: ZurNHpaQLq6P55YS #本 地 短信请求地址(这个服务是我们自己写的) #xhsmsPath: http://192.168.2.13:8092/sendSms #新华短信请求地址(这个服务是我们自己写的) xhsmsPath: http://192.16.4.220:8092/sendSms #短信请求地址(这里为空,同德提供的是ws) xhsmsPath: #帐号 xhsmsAccount: 911124 xhsmsAccount: #接口密码 xhsmsPwd: zW5eXe xhsmsPwd: #虚拟接入码 xhsmsjrm: 1069055 xhsmsjrm: ##本地FTP连接 #FTP_SERVER: "192.168.2.13" @@ -237,6 +231,16 @@ #admin管理员userId isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13 #随访医院:1新华 2丽水 visitHosp: 2 #随访医院:1新华 2丽水 3省立同德 visitHosp: 3 #用户默认密码 userPwd: sltd@0230 #处理投诉建议的部门编码 dealDeptCode: 40003024 #是否加密 0不加 1加密 isEncryp: 0 ruoyi-admin/src/main/resources/application-xh.yml
@@ -229,5 +229,11 @@ #admin管理员userId isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13 #随访医院:1新华 2丽水 #随访医院:1新华 2丽水 3省立同德 visitHosp: 1 #处理投诉建议的部门编码 dealDeptCode: #是否加密 0不加 1加密 isEncryp: 0 ruoyi-admin/src/main/resources/application-ywry.yml
@@ -217,3 +217,9 @@ #随访医院:1新华 2丽水 visitHosp: 2 #处理投诉建议的部门编码 dealDeptCode: #是否加密 0不加 1加密 isEncryp: 0 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -1,6 +1,8 @@ package com.ruoyi.system.service; import java.util.List; import java.util.Map; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; @@ -20,6 +22,12 @@ public List<SysDept> selectDeptList(SysDept dept); /** * 获取所有的部门信息 * @return */ public Map<String,String> selectDept(String orgid); /** * 查询部门树结构信息 * * @param dept 部门信息 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -1,9 +1,8 @@ package com.ruoyi.system.service.impl; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.*; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -28,8 +27,7 @@ * @author ruoyi */ @Service public class SysDeptServiceImpl implements ISysDeptService { public class SysDeptServiceImpl implements ISysDeptService { @Autowired private SysDeptMapper deptMapper; @@ -47,9 +45,20 @@ */ @Override @DataScope(deptAlias = "d") public List<SysDept> selectDeptList(SysDept dept) { public List<SysDept> selectDeptList(SysDept dept) { return deptMapper.selectDeptList(dept); } @Override public Map<String, String> selectDept(String orgid) { SysDept sysDept = new SysDept(); sysDept.setOrgid(orgid); List<SysDept> sysDepts = deptMapper.selectDeptList(sysDept); Map<String, String> map = new HashMap<>(); for (SysDept sd : sysDepts) { map.put(sd.getDeptCode(), sd.getDeptName()); } return map; } /** @@ -59,8 +68,7 @@ * @return 部门树信息集合 */ @Override public List<TreeSelect> selectDeptTreeList(SysDept dept) { public List<TreeSelect> selectDeptTreeList(SysDept dept) { List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); return buildDeptTreeSelect(depts); } @@ -72,21 +80,17 @@ * @return 树结构列表 */ @Override public List<SysDept> buildDeptTree(List<SysDept> depts) { public List<SysDept> buildDeptTree(List<SysDept> depts) { List<SysDept> returnList = new ArrayList<SysDept>(); List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList()); for (SysDept dept : depts) { for (SysDept dept : depts) { // 如果是顶级节点, 遍历该父节点的所有子节点 if (!tempList.contains(dept.getParentId())) { if (!tempList.contains(dept.getParentId())) { recursionFn(depts, dept); returnList.add(dept); } } if (returnList.isEmpty()) { if (returnList.isEmpty()) { returnList = depts; } return returnList; @@ -99,8 +103,7 @@ * @return 下拉树结构列表 */ @Override public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts) { public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts) { List<SysDept> deptTrees = buildDeptTree(depts); return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } @@ -112,8 +115,7 @@ * @return 选中部门列表 */ @Override public List<Long> selectDeptListByRoleId(Long roleId) { public List<Long> selectDeptListByRoleId(Long roleId) { SysRole role = roleMapper.selectRoleById(roleId); return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); } @@ -125,8 +127,7 @@ * @return 部门信息 */ @Override public SysDept selectDeptById(Long deptId) { public SysDept selectDeptById(Long deptId) { return deptMapper.selectDeptById(deptId); } @@ -137,8 +138,7 @@ * @return 子部门数 */ @Override public int selectNormalChildrenDeptById(Long deptId) { public int selectNormalChildrenDeptById(Long deptId) { return deptMapper.selectNormalChildrenDeptById(deptId); } @@ -149,8 +149,7 @@ * @return 结果 */ @Override public boolean hasChildByDeptId(Long deptId) { public boolean hasChildByDeptId(Long deptId) { int result = deptMapper.hasChildByDeptId(deptId); return result > 0; } @@ -162,8 +161,7 @@ * @return 结果 true 存在 false 不存在 */ @Override public boolean checkDeptExistUser(Long deptId) { public boolean checkDeptExistUser(Long deptId) { int result = deptMapper.checkDeptExistUser(deptId); return result > 0; } @@ -175,12 +173,10 @@ * @return 结果 */ @Override public String checkDeptNameUnique(SysDept dept) { public String checkDeptNameUnique(SysDept dept) { Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId()); if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) { if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -192,16 +188,13 @@ * @param deptId 部门id */ @Override public void checkDeptDataScope(Long deptId) { public void checkDeptDataScope(Long deptId) { // if (!SysUser.isAdmin(SecurityUtils.getUserId())) if (!isAdmin.contains(SecurityUtils.getUserId())) { if (!isAdmin.contains(SecurityUtils.getUserId())) { SysDept dept = new SysDept(); dept.setDeptId(deptId); List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); if (StringUtils.isEmpty(depts)) { if (StringUtils.isEmpty(depts)) { throw new ServiceException("没有权限访问部门数据!"); } } @@ -214,12 +207,10 @@ * @return 结果 */ @Override public int insertDept(SysDept dept) { public int insertDept(SysDept dept) { SysDept info = deptMapper.selectDeptById(dept.getParentId()); // 如果父节点不为正常状态,则不允许新增子节点 if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { throw new ServiceException("部门停用,不允许新增"); } dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); @@ -233,21 +224,17 @@ * @return 结果 */ @Override public int updateDept(SysDept dept) { public int updateDept(SysDept dept) { SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); String oldAncestors = oldDept.getAncestors(); dept.setAncestors(newAncestors); updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); } int result = deptMapper.updateDept(dept); if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) && !StringUtils.equals("0", dept.getAncestors())) { if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) && !StringUtils.equals("0", dept.getAncestors())) { // 如果该部门是启用状态,则启用该部门的所有上级部门 updateParentDeptStatusNormal(dept); } @@ -259,8 +246,7 @@ * * @param dept 当前部门 */ private void updateParentDeptStatusNormal(SysDept dept) { private void updateParentDeptStatusNormal(SysDept dept) { String ancestors = dept.getAncestors(); Long[] deptIds = Convert.toLongArray(ancestors); deptMapper.updateDeptStatusNormal(deptIds); @@ -273,15 +259,12 @@ * @param newAncestors 新的父ID集合 * @param oldAncestors 旧的父ID集合 */ public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) { public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) { List<SysDept> children = deptMapper.selectChildrenDeptById(deptId); for (SysDept child : children) { for (SysDept child : children) { child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); } if (children.size() > 0) { if (children.size() > 0) { deptMapper.updateDeptChildren(children); } } @@ -293,23 +276,19 @@ * @return 结果 */ @Override public int deleteDeptById(Long deptId) { public int deleteDeptById(Long deptId) { return deptMapper.deleteDeptById(deptId); } /** * 递归列表 */ private void recursionFn(List<SysDept> list, SysDept t) { private void recursionFn(List<SysDept> list, SysDept t) { // 得到子节点列表 List<SysDept> childList = getChildList(list, t); t.setChildren(childList); for (SysDept tChild : childList) { if (hasChild(list, tChild)) { for (SysDept tChild : childList) { if (hasChild(list, tChild)) { recursionFn(list, tChild); } } @@ -318,15 +297,12 @@ /** * 得到子节点列表 */ private List<SysDept> getChildList(List<SysDept> list, SysDept t) { private List<SysDept> getChildList(List<SysDept> list, SysDept t) { List<SysDept> tlist = new ArrayList<SysDept>(); Iterator<SysDept> it = list.iterator(); while (it.hasNext()) { while (it.hasNext()) { SysDept n = (SysDept) it.next(); if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) { if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) { tlist.add(n); } } @@ -336,8 +312,7 @@ /** * 判断是否有子节点 */ private boolean hasChild(List<SysDept> list, SysDept t) { private boolean hasChild(List<SysDept> list, SysDept t) { return getChildList(list, t).size() > 0; } }