增加档案管理、病案归档系统的单点登录功能,传入参数为userName(工号)

master
xm 4 years ago
parent 2df678463c
commit 967b59ac33

@ -5,7 +5,6 @@ import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5;
import com.manage.entity.Power_Dept;
import com.manage.entity.Power_Menu;
import com.manage.entity.Power_User;
import com.manage.service.Power_DeptService;
import com.manage.service.Power_MenuService;
import com.manage.service.Power_UserService;
@ -59,13 +58,16 @@ public class methodForEmrMedical {
@Value("${EMRMEDICALRECORD_PORT}")
private String port;
@Value("8081")
private String port2;
@Value("${TOKEN_EXPIRE_TIME}")
private long TOKEN_EXPIRE_TIME;
/**
* 2.1
*
* @ProjectName: getUserByUserName
* @Description:
* @Param
@ -86,6 +88,7 @@ public class methodForEmrMedical {
}
}
/*
*
* author xuhx
@ -180,4 +183,155 @@ public class methodForEmrMedical {
}
return result;
}
/*
* ,
* author xm
* userName
* */
@RequestMapping(value = "loginToEmrMedicalRecord", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
@ResponseBody
public String loginToEmrMedicalRecord(String userName, HttpServletRequest request, HttpServletResponse response) throws Exception {
String result = "";
if (userName != null && !"".equals(userName)) {
//根据登录名获取用户(需要确保用户登录名唯一)
Power_UserVo user = powerUserService.selectByUserName(userName);
if (user != null) {
String password = MD5.JM(Base64.decode(user.getUserPwd()));
if (password != null && !"".equals(password)) {
String date = String.valueOf(DateUtils.getDate());
//加密此部分代码来自FontController的getToken方法用来获取token及相关操作
String token = Base64.encode(MD5.KL(date));
List<Power_Menu> list = null;
List<User_Dept_Menu> menuList = new ArrayList<>();
Set<String> menus = new TreeSet<>();
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null, user.getRoleId());
} else {
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(), null);
}
if (null != list && !list.isEmpty()) {
for (Power_Menu power_menu : list) {
User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = power_menu.getMenuUrl();
if (StringUtils.isNotBlank(menuUrl)) {
BeanUtils.copyProperties(power_menu, deptMenu);
deptMenu.setMethodParent(power_menu.getParentId());
menuList.add(deptMenu);
}
if (StringUtils.isNotBlank(power_menu.getMethod())) {
menus.add(power_menu.getMenuUrl());
}
}
}
user.setMenuList(menuList);
user.setMenus(menus);
//设置科室
StringBuilder power_depts = new StringBuilder();
List<Power_Dept> power_depts1 = power_deptService.selectByPrimaryKeys(user.getDeptId());
for (int j = 0; j < power_depts1.size(); j++) {
if (j < power_depts1.size() - 1) {
power_depts.append(power_depts1.get(j).getDeptName()).append(",");
} else {
power_depts.append(power_depts1.get(j).getDeptName());
}
}
user.setRemark(power_depts.toString());
//移除缓存
CacheManager.removeCacheByObject(user);
CacheManager.putCache(date, new Cache(date, user, TOKEN_EXPIRE_TIME));
if (!"".equals(token) && token != null) {
//返回跳转url
result = "http://" + ip + ":" + port + "/emr_medical_record/login?token=" + token + "&userName=" + userName;
response.sendRedirect(result);
} else {
result = "获取登录token失败请检查数据!!";
}
} else {
result = "无法获取用户密码!!";
}
} else {
result = "登录用户不存在!!";
}
} else {
result = "请传入工号!!";
}
return result;
}
/*
* ,
* author xm
* userName
* */
@RequestMapping(value = "loginToEmrRecord", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
@ResponseBody
public String loginToEmrRecord(String userName, HttpServletRequest request, HttpServletResponse response) throws Exception {
String result = "";
if (userName != null && !"".equals(userName)) {
//根据登录名获取用户(需要确保用户登录名唯一)
Power_UserVo user = powerUserService.selectByUserName(userName);
if (user != null) {
String password = MD5.JM(Base64.decode(user.getUserPwd()));
if (password != null && !"".equals(password)) {
String date = String.valueOf(DateUtils.getDate());
//加密此部分代码来自FontController的getToken方法用来获取token及相关操作
String token = Base64.encode(MD5.KL(date));
List<Power_Menu> list = null;
List<User_Dept_Menu> menuList = new ArrayList<>();
Set<String> menus = new TreeSet<>();
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null, user.getRoleId());
} else {
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(), null);
}
if (null != list && !list.isEmpty()) {
for (Power_Menu power_menu : list) {
User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = power_menu.getMenuUrl();
if (StringUtils.isNotBlank(menuUrl)) {
BeanUtils.copyProperties(power_menu, deptMenu);
deptMenu.setMethodParent(power_menu.getParentId());
menuList.add(deptMenu);
}
if (StringUtils.isNotBlank(power_menu.getMethod())) {
menus.add(power_menu.getMenuUrl());
}
}
}
user.setMenuList(menuList);
user.setMenus(menus);
//设置科室
StringBuilder power_depts = new StringBuilder();
List<Power_Dept> power_depts1 = power_deptService.selectByPrimaryKeys(user.getDeptId());
for (int j = 0; j < power_depts1.size(); j++) {
if (j < power_depts1.size() - 1) {
power_depts.append(power_depts1.get(j).getDeptName()).append(",");
} else {
power_depts.append(power_depts1.get(j).getDeptName());
}
}
user.setRemark(power_depts.toString());
//移除缓存
CacheManager.removeCacheByObject(user);
CacheManager.putCache(date, new Cache(date, user, TOKEN_EXPIRE_TIME));
if (!"".equals(token) && token != null) {
//返回跳转url
result = "http://" + ip + ":" + port2 + "/emr_record/login?token=" + token + "&userName=" + userName;
response.sendRedirect(result);
} else {
result = "获取登录token失败请检查数据!!";
}
} else {
result = "无法获取用户密码!!";
}
} else {
result = "登录用户不存在!!";
}
} else {
result = "请传入工号!!";
}
return result;
}
}
Loading…
Cancel
Save