You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

504 lines
19 KiB
Java

package com.manage.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.manage.dao.Power_NoticeMapper;
import com.manage.dao.Power_UserMapper;
import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5;
import com.manage.entity.*;
import com.manage.service.*;
import com.manage.service.cache.Cache;
import com.manage.service.cache.CacheManager;
import com.manage.service.ipml.Power_NoticeServiceImpl;
import com.manage.util.DateUtils;
import com.manage.util.Msg;
import com.manage.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.*;
/**
* @ProjectName:
* @Description:
* @Param 传输参数
* @Return
* @Author: 曾文和
* @CreateDate: 2019/7/9 15:07
* @UpdateUser: 曾文和
* @UpdateDate: 2019/7/9 15:07
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@Controller
@RequestMapping("font/")
public class FontController {
@Autowired
private PowerService powerService;
@Autowired
private User_Dept_MenuService userDeptMenuService;
@Autowired
private Power_NoticeMapper powerNoticeMapper;
@Autowired
private Power_UserMapper userMapper;
@Autowired
private Power_NoticeServiceImpl noticeService;
@Autowired
private Power_UserService userService;
@Value("${TOKEN_EXPIRE_TIME}")
private long TOKEN_EXPIRE_TIME;
@Autowired
private Power_MenuService powerMenuService;
@Autowired
private Power_DeptService power_deptService;
/**
* 2.1
* @ProjectName: getUserPowerTreeBySysFlag
* @Description: 获取菜单通过系统标识
* @Param 无
* @Return getMenusByUserIdAndSysFlag
* @Author: 曾文和
* @CreateDate: 2019/7/9 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/9 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getMenusByUserIdAndSysFlag",method = RequestMethod.GET)
@ResponseBody
public Msg getMenusByUserIdAndSysFlag(String userName,String sysFlag,Integer userId,Integer roleId,
Integer sysId,Integer hospitalId){
try {
if(StringUtils.isNotBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
&& sysId == null && hospitalId == null){
return Msg.fail("查询复杂,数据大,暂不支持只带sysFlag参数查询");
}
if(StringUtils.isBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
&& sysId != null && hospitalId == null){
return Msg.fail("查询复杂,数据大,暂不支持只带sysId参数查询");
}
if(StringUtils.isBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
&& sysId == null && hospitalId != null){
return Msg.fail("查询复杂,数据大,暂不支持只带hospitalId参数查询");
}
if(StringUtils.isNotBlank(userName)){
List<Power_User> power_users = userMapper.checkUserName(userName);
if(null != power_users && !power_users.isEmpty()){
if(power_users.get(0).getRoleId().equals(0) || power_users.get(0).getRoleId().equals(-100)){
roleId = power_users.get(0).getRoleId();
}
}
}
List<User_Dept_Menu> list = userDeptMenuService.selectAll(userName, sysFlag, userId, roleId, sysId, hospitalId);
CacheManager.addExcCount("noExc");
return Msg.success().add("list",list);
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return Msg.fail();
}
}
/**
* 2.2
* @ProjectName: selectAllByUserIdOrRoleIdAndSysIdOrSysFlag
* @Description: 根据用户id或角色id和系统id或系统标识查询通知记录
* @Param 无
* @Return selectAllByUserIdOrRoleIdAndSysIdOrSysFlag
* @Author: 曾文和
* @CreateDate: 2019/7/29 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/29 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "selectAllByUserIdOrRoleIdAndSysIdOrSysFlag")
@ResponseBody
public Msg selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(Integer userId,Integer roleId,Integer sysId,String sysFlag){
try {
List<Power_Notice> list = powerNoticeMapper.selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(userId, roleId, sysId, sysFlag);
CacheManager.addExcCount("noExc");
return Msg.success().add("list",list);
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return Msg.fail();
}
}
/**
* 2.4
* @ProjectName: getUserPowerTreeBySysFlag
* @Description: 获取系统用户树通过系统标识
* @Param 无
* @Return PowerTree
* @Author: 曾文和
* @CreateDate: 2019/7/9 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/9 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getUserPowerTreeBySysFlag",produces = {"text/json;charset=UTF-8"})
@ResponseBody
public String getUserPowerTreeBySysFlag(String sysFlag,Integer userId){
try {
if(null != userId){
//查询该用户
Power_UserVo user = userMapper.selectByPrimaryKey(userId);
List<PowerTree> dicts = powerService.getUserPowerTreeBySysFlag(sysFlag,user);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(dicts);
CacheManager.addExcCount("noExc");
return json;
}else{
return null;
}
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return null;
}
}
/**
* 2.5
* @ProjectName: getRolePowerTreeBySysFlag
* @Description: 获取系统角色树通过系统标识
* @Param 无
* @Return PowerTree
* @Author: 曾文和
* @CreateDate: 2019/7/9 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/9 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getRolePowerTreeBySysFlag",produces = {"text/json;charset=UTF-8"})
@ResponseBody
public String getRolePowerTreeBySysFlag(String sysFlag,Integer userId){
try {
if(null != userId){
Power_UserVo user = userMapper.selectByPrimaryKey(userId);
List<PowerTree> dicts = powerService.getRolePowerTreeBySysFlag(sysFlag,user);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(dicts);
CacheManager.addExcCount("noExc");
return json;
}else{
return null;
}
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return null;
}
}
/**
* 2.6
* @ProjectName: getUserList
* @Description: 获取用户id和用户名
* @Param 无
* @Return userList
* @Author: 曾文和
* @CreateDate: 2019/9/6 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/9/6 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getUserList")
@ResponseBody
public Msg getUserList(String userName){
try {
List<User> list = new ArrayList<>();
if(StringUtils.isNoneBlank(userName)){
List<Power_User> users = userMapper.checkUserName(userName);
if(null != users && !users.isEmpty()){
Integer roleId = users.get(0).getRoleId();
if(roleId == 0){
list = userMapper.selectUserIdAndUserNameList(null);
}else{
list = userMapper.selectUserIdAndUserNameList(users.get(0).getUserId());
}
}
}else{
return Msg.fail("用户名不能为空");
}
CacheManager.addExcCount("noExc");
return Msg.success().add("userList",list);
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return null;
}
}
/**
* 2.7
* @ProjectName: checkToken
* @Description: 验证token是否有效
* @Param 无
* @Return Msg
* @Author: 曾文和
* @CreateDate: 2019/9/24 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/9/24 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "checkToken",method = RequestMethod.POST)
@ResponseBody
public Msg checkToken(String token){
try {
if(StringUtils.isNotBlank(token) && StringUtils.isNotBlank(token) ) {
token = MD5.JM(Base64.decode(token));
Cache cache = CacheManager.getCacheInfo(token);
if (cache == null) {
return Msg.fail("token已过期或不存在");
}
}else{
return Msg.fail("token不能为空");
}
return Msg.success();
}catch(Exception e){
e.printStackTrace();
return Msg.fail(e.getMessage());
}
}
/**
* 2.8
* @ProjectName: getUserByToken
* @Description: 根据token获取用户
* @Param 无
* @Return getMenuListByToken
* @Author: 曾文和
* @CreateDate: 2019/10/31 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/10/31 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getUserByToken",method = RequestMethod.POST)
@ResponseBody
public Msg getMenuListByToken(String token,String sysFlag){
try {
if(StringUtils.isBlank(token)){
return Msg.fail("token不能为空!");
}
if(StringUtils.isBlank(sysFlag)){
return Msg.fail("sysFlag不能为空!");
}
token = MD5.JM(Base64.decode(token));
Cache cacheInfo = CacheManager.getCacheInfo(token);
Power_UserVo user = (Power_UserVo) cacheInfo.getValue();
if(null != user){
List<User_Dept_Menu> menuList = user.getMenuList();
List<User_Dept_Menu> list = new ArrayList<>();
Set<String> menus = new TreeSet<>();
if(null != menuList && !menuList.isEmpty()){
for (int i = 0; i < menuList.size(); i++) {
String menuSysFlag = menuList.get(i).getSysFlag();
if(StringUtils.isNotBlank(menuSysFlag) && menuSysFlag.equals(sysFlag)){
list.add(menuList.get(i));
if(StringUtils.isNotBlank(menuList.get(i).getMethod())){
menus.add(menuList.get(i).getMenuUrl());
}
}
}
}
user.setMenuList(list);
user.setMenus(menus);
UserVo userVo = new UserVo();
BeanUtils.copyProperties(user,userVo);
//查询用户集合
List<User> userList = new ArrayList<>();
Integer roleId = userVo.getRoleId();
if(roleId == 0){
userList = userMapper.selectUserIdAndUserNameList(null);
}else{
userList = userMapper.selectUserIdAndUserNameList(userVo.getUserId());
}
//设置用户集合
userVo.setUserList(userList);
CacheManager.addExcCount("noExc");
return Msg.success().add("user",userVo);
}else{
return Msg.fail("token已失效");
}
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return Msg.fail();
}
}
/**
* 2.9
* @ProjectName: getMenuByToken
* @Description: 根据token获取菜单
* @Param 无
* @Return getMenuListByToken
* @Author: 曾文和
* @CreateDate: 2019/10/31 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/10/31 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getMenuByToken",method = RequestMethod.POST)
@ResponseBody
public Msg getMenuByToken(String token,String sysFlag){
try {
if(StringUtils.isBlank(token)){
return Msg.fail("token不能为空!");
}
if(StringUtils.isBlank(sysFlag)){
return Msg.fail("sysFlag不能为空!");
}
token = MD5.JM(Base64.decode(token));
Cache cacheInfo = CacheManager.getCacheInfo(token);
Power_UserVo user = (Power_UserVo) cacheInfo.getValue();
List<User_Dept_Menu> menuList = user.getMenuList();
List<User_Dept_Menu> list = new ArrayList<>();
if(null != menuList && !menuList.isEmpty()){
for (int i = 0; i < menuList.size(); i++) {
String menuSysFlag = menuList.get(i).getSysFlag();
if(StringUtils.isNotBlank(menuSysFlag) && menuSysFlag.equals(sysFlag)){
list.add(menuList.get(i));
}
}
}
CacheManager.addExcCount("noExc");
return Msg.success().add("list",list);
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return Msg.fail();
}
}
/**
* 2.10
* @ProjectName: getToken
* @Description: 获取token
* @Param 无
* @Return Msg
* @Author: 曾文和
* @CreateDate: 2019/11/06 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/11/06 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getToken",method = RequestMethod.POST)
@ResponseBody
public Msg getToken(String userName,String password){
try {
if(StringUtils.isBlank(userName)){
return Msg.fail("用户名不能为空");
}
if(StringUtils.isBlank(password)){
return Msg.fail("密码不能为空");
}
Power_User user = new Power_User();
user.setUserName(userName);
user.setRemark(password);
Power_UserVo userVo = userService.findPowerUserByUserNameAndRemark(user);
if(null == userVo){
return Msg.fail("用户名或密码不正确");
}
String date = String.valueOf(DateUtils.getDate());
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 (userVo.getRoleId().equals(0) || userVo.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null,userVo.getRoleId());
} else {
list = powerMenuService.selectUserAndRoleMenuListPower(userVo.getUserId(),null);
}
if(null != list && !list.isEmpty()){
for (int i = 0; i < list.size(); i++) {
User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = list.get(i).getMenuUrl();
if(StringUtils.isNotBlank(menuUrl)){
BeanUtils.copyProperties(list.get(i),deptMenu);
deptMenu.setMethodParent(list.get(i).getParentId());
menuList.add(deptMenu);
}
if(StringUtils.isNotBlank(list.get(i).getMethod())){
menus.add(list.get(i).getMenuUrl());
}
}
}
userVo.setMenuList(menuList);
userVo.setMenus(menus);
//设置科室
String power_depts = "";
List<Power_Dept> power_depts1 = power_deptService.selectByPrimaryKeys(userVo.getDeptId());
for(int j=0;j<power_depts1.size();j++){
if(j<power_depts1.size()-1){
power_depts += power_depts1.get(j).getDeptName()+",";
}else{
power_depts += power_depts1.get(j).getDeptName();
}
}
userVo.setRemark(power_depts);
//移除缓存
CacheManager.removeCacheByObject(userVo);
CacheManager.putCache(date,new Cache(date,userVo,TOKEN_EXPIRE_TIME));
return Msg.success().add("token",token);
}catch(Exception e){
e.printStackTrace();
return Msg.fail(e.getMessage());
}
}
/**
* 2.11
* @MethodName getUnReadCount
* @Description: 根据用户获取未读通知数量
* @Param 无
* @Returnt Msg
* @Author: 曾文和
* @CreateDate: 2019-10-17
* @UpdateUser: 曾文和
* @UpdateDate: 2019-10-17
* @UpdateRemark: 更新说明
* @Version: 1.2.2
*/
@RequestMapping("notice/getUnReadCount")
@ResponseBody
public Msg getUnReadCount(Integer userId){
try {
if(null == userId){
return Msg.fail("用户id不能为空");
}
Power_UserVo userVo = userMapper.selectByPrimaryKey(userId);
if(null == userVo){
return Msg.fail("用户id不存在");
}
int unReadCount = noticeService.getUnReadCount(userId);
CacheManager.addExcCount("noExc");
return Msg.success().add("unReadCount",unReadCount);
}catch (Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
return Msg.fail(e.getMessage());
}
}
}