/*
  * (non-Javadoc)
  *
  * @see
  * com.jcin.cms.service.system.IUserGroupRoleService#deleteBatch(List)
  */
 @Override
 @Transactional
 public int deleteBatch(List<String> list) {
   UserGroupRoleCriteria userGroupRoleCriteria = new UserGroupRoleCriteria();
   userGroupRoleCriteria.createCriteria().andIdIn(list);
   int result = userGroupRoleMapper.deleteByExample(userGroupRoleCriteria);
   super.deleteBatch(list);
   return result;
 }
 @Override
 public UserGroupRole getByGroupId(String groupId) {
   UserGroupRoleCriteria userGroupRoleCriteria = new UserGroupRoleCriteria();
   userGroupRoleCriteria.createCriteria().andUserGroupIdEqualTo(groupId);
   List<UserGroupRole> list = userGroupRoleMapper.selectByExample(userGroupRoleCriteria);
   if (list.size() > 0) {
     return list.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;
  }
 /*
  * (non-Javadoc)
  *
  * @see
  * com.jcin.cms.service.system.IUserGroupRoleService#select(com.jcin.cms.utils.Page)
  */
 @Override
 public Page select(Page page) {
   super.select(page);
   // setOrderByClause("SER_NO  asc , ORG_ID desc");
   UserGroupRoleCriteria userGroupRoleCriteria = new UserGroupRoleCriteria();
   userGroupRoleCriteria.setOrderByClause("id desc");
   userGroupRoleCriteria.setPage(page);
   @SuppressWarnings("rawtypes")
   List list = userGroupRoleMapper.selectByExample(userGroupRoleCriteria);
   page.setRows(list);
   int total = userGroupRoleMapper.countByExample(userGroupRoleCriteria);
   page.setTotal(total);
   return page;
 }