// 对外提供的登录接口 这个方法暂时不用
  public LoginVo login(
      String username, String password, String companyId, String ip, String systemSn)
      throws Exception {
    LoginVo vo = new LoginVo();
    SessionMap sessionMap = new SessionMap();
    // 1:查询到用户对象
    User user = login(username, password);
    if (user != null) {
      vo.setLoginUser(user);
      vo.setSid(user.getId());
      sessionMap.put(PrivilegeConstant.LOGIN_USER, JsonUtils.toJson(user));
      Set<ACL> acls = (Set<ACL>) aclService.getAclsByUserId(user.getId());
      sessionMap.put(PrivilegeConstant.LOGIN_USER_ACLS, JsonUtils.toJson(acls));
      ICSystem icSystem = icSystemDao.getICSystemBySn(systemSn);
      if (icSystem != null) {
        List<Module> modules = moduleService.getTreeModuleBySystemIdAndAcls(acls, icSystem.getId());
        vo.setModules(modules);
      } else {
        throw new PrivilegeException("系统标示找不到");
      }
      // 插入登录日志
      LoginLog loginLog =
          new LoginLog(ip, user.getId(), user.getUsername(), user.getRealName(), "登录");
      loginLogService.insertLoginLog(loginLog);

      CacheEntity ce =
          new CacheEntity(user.getId(), sessionMap, PrivilegeConstant.SESSION_OUT_TIME);
      CacheListHandler.addCache(user.getId(), ce);
      // redisClientTemplate.setex(user.getId(),
      // PrivilegeConstant.SESSION_OUT_TIME,
      // JsonUtils.toJson(sessionMap));
    }
    return vo;
  }
  /**
   * @param oldpwd
   * @param newpwd
   * @param request
   * @return @Description:重置密码
   */
  @ResponseBody
  @RequestMapping("/rePassword")
  public String rePassword(String oldpwd, String newpwd, HttpServletRequest request) {
    SimpleReturnVo vo;
    User user = WebUtils.getLoginUser(request);
    String password = MD5Util.getMD5String(PrivilegeConstant.USER_PASSWORD_FRONT + oldpwd);
    if (!password.equals(user.getPassword())) {
      vo = new SimpleReturnVo(this.FAIL, "原密码不正确!");
      return JsonUtils.toJson(vo);
    }
    try {
      User newUser = new User();
      newUser.setId(user.getId());
      password = MD5Util.getMD5String(PrivilegeConstant.USER_PASSWORD_FRONT + newpwd);
      newUser.setPassword(password);
      this.userService.singleUpdateUser(newUser);
      vo = new SimpleReturnVo(this.SUCCESS, "成功");
    } catch (Exception e) {
      e.printStackTrace();
      logger.debug("UserController-rePassword:"******"异常错误!");
    }

    return JsonUtils.toJson(vo);
  }
 @ResponseBody
 @RequestMapping("/getUserSystemIds")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.R)
 public String getUserSystemIds(String userId) {
   List<ICSystem> sy = null;
   UserSystem userSystem = new UserSystem();
   userSystem.setUserId(userId);
   List<UserSystem> list;
   try {
     sy = this.iICSystemService.getAllIcSystem(null);
     if (sy != null && sy.size() > 0) {
       list = this.userSystemDao.getAll(userSystem);
       if (list != null && list.size() > 0) {
         for (UserSystem us : list) {
           for (ICSystem ic : sy) {
             if (us.getSystemId().equals(ic.getId())) {
               ic.setChecked(true);
               break;
             }
           }
         }
       }
     }
   } catch (Exception e) {
     logger.error(e);
   }
   return JsonUtils.toJson(sy);
 }
 /**
  * @param userId
  * @return @Description:查询所有角色。标记用户已经拥有的角色
  */
 @ResponseBody
 @RequestMapping("/getRoles")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.R)
 public String getRoles(String userId, Role role, Query query) {
   PagerModel<Role> pm = null;
   List<Role> roles = null;
   List<Role> uroles = null;
   try {
     pm = this.roleService.getPagerModel(role, query);
     if (pm != null && CollectionUtils.isNotEmpty(pm.getDatas())) {
       roles = pm.getDatas();
       uroles = this.userRoleService.getRolesByUserId(userId);
       if (uroles != null && uroles.size() > 0) {
         for (Role ur : uroles) {
           for (Role r : roles) {
             if (ur.getId().equals(r.getId())) {
               r.setChecked(true);
               break;
             }
           }
         }
       }
     }
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-getRoles:" + e.getMessage());
   }
   return JsonUtils.toJson(roles);
 }
 /**
  * @param userId
  * @return @Description:根据用户id获取该用户的所有角色
  */
 @ResponseBody
 @RequestMapping("/getRoleByUserId")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.R)
 public String getRoleByUserId(String userId) {
   List<Role> roles = null;
   try {
     roles = this.userRoleService.getRolesByUserId(userId);
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-getRoleByUserId:" + e.getMessage());
   }
   return JsonUtils.toJson(roles);
 }
 /** @return @Description:获取所有系统列表 */
 @ResponseBody
 @RequestMapping("/getAllSystems")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.R)
 public String getAllSystems() {
   List<ICSystem> sy = null;
   try {
     sy = this.iICSystemService.getAllIcSystem(null);
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-getAllSystems:" + e.getMessage());
   }
   return JsonUtils.toJson(sy);
 }
 /**
  * @param id
  * @return @Description:根据id获取用户信息
  */
 @ResponseBody
 @RequestMapping("/ajaxUpdate")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.U)
 public String ajaxUpdate(String id) {
   User user = null;
   try {
     user = this.userService.getUserById(id);
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-ajaxUpdate:" + e.getMessage());
   }
   return JsonUtils.toJson(user);
 }
 /**
  * @param user
  * @return @Description:更新用户
  */
 @ResponseBody
 @RequestMapping("/update")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.U)
 public String update(User user) {
   SimpleReturnVo vo;
   try {
     this.userService.updateUser(user);
     vo = new SimpleReturnVo(this.SUCCESS, "成功");
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-update:" + e.getMessage());
     vo = new SimpleReturnVo(this.FAIL, "异常");
   }
   return JsonUtils.toJson(vo);
 }
 /**
  * @param request
  * @return @Description:修改密码
  */
 @ResponseBody
 @RequestMapping("/updatePassowrd")
 public String updatePassowrd(User user) {
   SimpleReturnVo vo;
   String password =
       MD5Util.getMD5String(PrivilegeConstant.USER_PASSWORD_FRONT + user.getPassword());
   try {
     user.setPassword(password);
     this.userService.singleUpdateUser(user);
     vo = new SimpleReturnVo(this.SUCCESS, "成功");
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-updatePassowrd:" + e.getMessage());
     vo = new SimpleReturnVo(this.FAIL, "异常错误!");
   }
   return JsonUtils.toJson(vo);
 }
 /**
  * @param ids id,id,id
  * @return @Description:根据用户id批量删除用户
  */
 @ResponseBody
 @RequestMapping("/delete")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.D)
 public String delete(String ids) {
   SimpleReturnVo vo;
   try {
     if (StringUtils.isNotBlank(ids)) {
       String[] id = ids.split(",");
       this.userService.delUsers(id);
     }
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-delete:" + e.getMessage());
     vo = new SimpleReturnVo(this.FAIL, "异常");
   }
   vo = new SimpleReturnVo(this.SUCCESS, "成功");
   return JsonUtils.toJson(vo);
 }
 /**
  * @param userId
  * @param roleIds
  * @return @Description:添加用户角色
  */
 @ResponseBody
 @RequestMapping("/saveUserRole")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.C)
 public String saveUserRole(String userId, String roleIds) {
   SimpleReturnVo vo;
   try {
     if (StringUtils.isNotBlank(roleIds)) {
       this.userRoleService.insertUserRoles(roleIds.split(","), userId);
     } else {
       this.userRoleService.insertUserRoles(userId);
     }
     vo = new SimpleReturnVo(this.SUCCESS, "成功");
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-saveUserRole:" + e.getMessage());
     vo = new SimpleReturnVo(this.FAIL, "异常");
   }
   return JsonUtils.toJson(vo);
 }
 /**
  * @param user
  * @param query
  * @return @Description:用户分页数据
  */
 @ResponseBody
 @RequestMapping("ajaxlist")
 @Permission(systemSn = "privilege", moduleSn = "user", value = PermissionConatant.R)
 public String ajaxlist(User user, Query query) {
   PagerModel<User> Users = null;
   try {
     if ("0".equals(user.getDepartmentId())) {
       user.setDepartmentId(null);
     } else {
       String deptIds = departmentService.getChildrenIdsByPid(user.getDepartmentId());
       user.setDepartmentId(deptIds);
     }
     Users = this.userService.getPagerModel(user, query);
   } catch (Exception e) {
     e.printStackTrace();
     logger.debug("UserController-ajaxlist:" + e.getMessage());
   }
   return JsonUtils.getPmJson(Users);
 }