@Override
 public User findByUsername(String username) {
   UserCriteria userCriteria = new UserCriteria();
   UserCriteria.Criteria criteria = userCriteria.createCriteria();
   criteria.andUsernameEqualTo(username);
   List<User> users = userMapper.selectByExample(userCriteria);
   if (null != users && users.size() > 0) {
     return users.get(0);
   }
   return null;
 }
  /*
   * (non-Javadoc)
   *
   * @see
   * com.jcin.cms.service.system.IUserServiceShiro#findPermissions(java.lang
   * .String)
   */
  @Override
  public Set<String> findPermissions(String username) {
    // ----------- 此处应该用sql去实现的,现在先用程序实现。
    UserCriteria userCriteria = new UserCriteria();
    UserCriteria.Criteria criteria = userCriteria.createCriteria();
    criteria.andUsernameEqualTo(username);
    List<User> users = userMapper.selectByExample(userCriteria);
    List<UserGroup> userGroups = new ArrayList<UserGroup>(); // 查询用户组
    for (User user : users) {
      UserGroupCriteria userGroupCriteria = new UserGroupCriteria();
      UserGroupCriteria.Criteria cri = userGroupCriteria.createCriteria();
      cri.andIdEqualTo(user.getUserGroupId());
      userGroups.addAll(userGroupMapper.selectByExample(userGroupCriteria));
    }

    List<UserGroupRole> userGroupRoles = new ArrayList<UserGroupRole>(); // 查询中间表
    for (UserGroup userGroup : userGroups) {
      UserGroupRoleCriteria userGroupRoleCriteria = new UserGroupRoleCriteria();
      UserGroupRoleCriteria.Criteria cri = userGroupRoleCriteria.createCriteria();
      cri.andUserGroupIdEqualTo(userGroup.getId());
      userGroupRoles.addAll(userGroupRoleMapper.selectByExample(userGroupRoleCriteria));
    }

    List<Role> roles = new ArrayList<Role>(); // 查询角色表
    for (UserGroupRole userGroupRole : userGroupRoles) {
      RoleCriteria roleCriteria = new RoleCriteria();
      RoleCriteria.Criteria rolecri = roleCriteria.createCriteria();
      rolecri.andIdEqualTo(userGroupRole.getRoleId());
      roles.addAll(roleMapper.selectByExample(roleCriteria));
    }

    List<RoleAuthorization> roleAuthorizations = new ArrayList<RoleAuthorization>();
    for (Role role : roles) {
      RoleAuthorizationCriteria authorizationCriteria = new RoleAuthorizationCriteria();
      RoleAuthorizationCriteria.Criteria roleAuthcri = authorizationCriteria.createCriteria();
      roleAuthcri.andRoleIdEqualTo(role.getId());
      roleAuthorizations.addAll(roleAuthorizationMapper.selectByExample(authorizationCriteria));
    }

    List<Authorization> authorizations = new ArrayList<Authorization>();
    for (RoleAuthorization roleAuthorization : roleAuthorizations) {
      AuthorizationCriteria authorizationCriteria = new AuthorizationCriteria();
      AuthorizationCriteria.Criteria authcri = authorizationCriteria.createCriteria();
      authcri.andIdEqualTo(roleAuthorization.getAuthorizationId());
      authorizations.addAll(authorizationMapper.selectByExample(authorizationCriteria));
    }

    Set<String> set = new HashSet<String>();
    for (Authorization authorization : authorizations) {
      set.add(authorization.getName());
    }
    return set;
  }