Search in sources :

Example 1 with Team

use of cn.devezhao.bizz.security.member.Team in project rebuild by getrebuild.

the class RelatedListController method buildMainSql.

private String buildMainSql(ID recordOfMain, String relatedExpr, String q, boolean count, ID user) {
    // Entity.Field
    String[] ef = relatedExpr.split("\\.");
    Entity relatedEntity = MetadataHelper.getEntity(ef[0]);
    Set<String> relatedFields = new HashSet<>();
    if (ef.length > 1) {
        relatedFields.add(ef[1]);
    } else {
        // v1.9 之前会把所有相关的查出来
        Entity mainEntity = MetadataHelper.getEntity(recordOfMain.getEntityCode());
        for (Field field : relatedEntity.getFields()) {
            if ((field.getType() == FieldType.REFERENCE || field.getType() == FieldType.ANY_REFERENCE) && ArrayUtils.contains(field.getReferenceEntities(), mainEntity)) {
                relatedFields.add(field.getName());
            }
        }
    }
    if (relatedFields.isEmpty())
        return null;
    String mainWhere = "(" + StringUtils.join(relatedFields, " = ''{0}'' or ") + " = ''{0}'')";
    mainWhere = MessageFormat.format(mainWhere, recordOfMain);
    // @see FeedsListController#fetchFeeds
    if (relatedEntity.getEntityCode() == EntityHelper.Feeds) {
        mainWhere += String.format(" and (type = %d or type = %d)", FeedsType.FOLLOWUP.getMask(), FeedsType.SCHEDULE.getMask());
        List<String> in = new ArrayList<>();
        in.add("scope = 'ALL'");
        for (Team t : Application.getUserStore().getUser(user).getOwningTeams()) {
            in.add(String.format("scope = '%s'", t.getIdentity()));
        }
        mainWhere += " and ( " + StringUtils.join(in, " or ") + " )";
    }
    if (StringUtils.isNotBlank(q)) {
        Set<String> searchFields = ParseHelper.buildQuickFields(relatedEntity, null);
        if (!searchFields.isEmpty()) {
            String like = " like '%" + StringEscapeUtils.escapeSql(q) + "%'";
            String searchWhere = " and ( " + StringUtils.join(searchFields.iterator(), like + " or ") + like + " )";
            mainWhere += searchWhere;
        }
    }
    Field primaryField = relatedEntity.getPrimaryField();
    Field namedField = relatedEntity.getNameField();
    StringBuilder sql = new StringBuilder("select ");
    if (count) {
        sql.append("count(").append(primaryField.getName()).append(")");
    } else {
        sql.append(primaryField.getName()).append(",").append(namedField.getName()).append(",").append(EntityHelper.ModifiedOn);
        if (MetadataHelper.hasApprovalField(relatedEntity)) {
            sql.append(",").append(EntityHelper.ApprovalState);
        }
    }
    sql.append(" from ").append(relatedEntity.getName()).append(" where ").append(mainWhere);
    return sql.toString();
}
Also used : Entity(cn.devezhao.persist4j.Entity) Field(cn.devezhao.persist4j.Field) Team(cn.devezhao.bizz.security.member.Team)

Example 2 with Team

use of cn.devezhao.bizz.security.member.Team in project rebuild by getrebuild.

the class TeamService method createMembers.

/**
 * 添加成员
 *
 * @param teamId
 * @param members
 * @return
 */
public int createMembers(ID teamId, Collection<ID> members) {
    int added = 0;
    Team team = Application.getUserStore().getTeam(teamId);
    for (ID user : members) {
        if (team.isMember(user)) {
            continue;
        }
        Record record = EntityHelper.forNew(EntityHelper.TeamMember, UserContextHolder.getUser());
        record.setID("teamId", teamId);
        record.setID("userId", user);
        super.create(record);
        added++;
    }
    if (added > 0) {
        Application.getUserStore().refreshTeam(teamId);
    }
    return added;
}
Also used : Team(cn.devezhao.bizz.security.member.Team) Record(cn.devezhao.persist4j.Record) ID(cn.devezhao.persist4j.engine.ID)

Example 3 with Team

use of cn.devezhao.bizz.security.member.Team in project rebuild by getrebuild.

the class FeedsGroupController method groupList.

@GetMapping("group-list")
public JSON groupList(HttpServletRequest request) {
    final ID user = getRequestUser(request);
    final String query = getParameter(request, "q");
    JSONArray ret = new JSONArray();
    Set<Member> stars = getStars(user, EntityHelper.Team);
    Set<Serializable> starsId = new HashSet<>();
    for (Member t : UserHelper.sortMembers(stars.toArray(new Member[0]))) {
        if (StringUtils.isEmpty(query) || StringUtils.containsIgnoreCase(t.getName(), query)) {
            ret.add(JSONUtils.toJSONObject(new String[] { "id", "name", "star" }, new Object[] { t.getIdentity(), t.getName(), true }));
            starsId.add(t.getIdentity());
        }
    }
    Team[] teams = Application.getUserStore().getAllTeams();
    for (Member t : UserHelper.sortMembers(teams)) {
        if (StringUtils.isEmpty(query) || StringUtils.containsIgnoreCase(t.getName(), query)) {
            if (starsId.contains(t.getIdentity()))
                continue;
            ret.add(JSONUtils.toJSONObject(new String[] { "id", "name" }, new Object[] { t.getIdentity(), t.getName() }));
            if (ret.size() >= 20)
                break;
        }
    }
    return ret;
}
Also used : Serializable(java.io.Serializable) JSONArray(com.alibaba.fastjson.JSONArray) Team(cn.devezhao.bizz.security.member.Team) ID(cn.devezhao.persist4j.engine.ID) Member(cn.devezhao.bizz.security.member.Member) HashSet(java.util.HashSet) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 4 with Team

use of cn.devezhao.bizz.security.member.Team in project rebuild by getrebuild.

the class FeedsListController method buildItem.

private JSONObject buildItem(Object[] o, ID user) {
    JSONObject item = formatBase(o, user);
    FeedsScope scope = FeedsScope.parse((String) o[7]);
    item.put("scopeRaw", o[7]);
    if (scope == FeedsScope.GROUP) {
        Team team = Application.getUserStore().getTeam(ID.valueOf((String) o[7]));
        item.put("scope", new Object[] { team.getIdentity(), team.getName() });
    } else {
        item.put("scope", Language.L(scope.getName()));
    }
    item.put("type", o[8]);
    item.put("numComments", FeedsHelper.getNumOfComment((ID) o[0]));
    // 相关记录
    ID related = (ID) o[9];
    if (related != null && MetadataHelper.containsEntity(related.getEntityCode())) {
        EasyEntity entity = EasyMetaFactory.valueOf(related.getEntityCode());
        String nameValue = FieldValueHelper.getLabelNotry(related);
        JSONObject mixValue = FieldValueHelper.wrapMixValue(related, nameValue);
        mixValue.put("icon", entity.getIcon());
        mixValue.put("entityLabel", entity.getLabel());
        item.put("relatedRecord", mixValue);
    }
    // 更多内容
    if (o[10] != null) {
        item.put("contentMore", JSON.parse((String) o[10]));
    }
    return item;
}
Also used : EasyEntity(com.rebuild.core.metadata.easymeta.EasyEntity) JSONObject(com.alibaba.fastjson.JSONObject) FeedsScope(com.rebuild.core.service.feeds.FeedsScope) Team(cn.devezhao.bizz.security.member.Team) ID(cn.devezhao.persist4j.engine.ID)

Example 5 with Team

use of cn.devezhao.bizz.security.member.Team in project rebuild by getrebuild.

the class FeedsHelper method checkReadable.

/**
 * 用户对指定动态是否可读
 *
 * @param feedsOrComment
 * @param user
 * @return
 */
public static boolean checkReadable(ID feedsOrComment, ID user) {
    String sql = "select scope,createdBy from Feeds where feedsId = ?";
    if (feedsOrComment.getEntityCode() == EntityHelper.FeedsComment) {
        sql = "select feedsId.scope,feedsId.createdBy from FeedsComment where commentId = ?";
    }
    Object[] o = Application.createQueryNoFilter(sql).setParameter(1, feedsOrComment).unique();
    if (o == null) {
        return false;
    }
    if (o[1].equals(user) || o[0].equals(FeedsScope.ALL.name())) {
        // 自己 & 公开
        return true;
    }
    // 团队
    if (ID.isId(o[0])) {
        Team team = Application.getUserStore().getTeam(ID.valueOf((String) o[0]));
        return team.isMember(user);
    }
    return false;
}
Also used : Team(cn.devezhao.bizz.security.member.Team)

Aggregations

Team (cn.devezhao.bizz.security.member.Team)7 ID (cn.devezhao.persist4j.engine.ID)4 JSONObject (com.alibaba.fastjson.JSONObject)2 GetMapping (org.springframework.web.bind.annotation.GetMapping)2 Member (cn.devezhao.bizz.security.member.Member)1 Entity (cn.devezhao.persist4j.Entity)1 Field (cn.devezhao.persist4j.Field)1 Record (cn.devezhao.persist4j.Record)1 JSON (com.alibaba.fastjson.JSON)1 JSONArray (com.alibaba.fastjson.JSONArray)1 EasyEntity (com.rebuild.core.metadata.easymeta.EasyEntity)1 User (com.rebuild.core.privileges.bizz.User)1 FeedsScope (com.rebuild.core.service.feeds.FeedsScope)1 AdvFilterParser (com.rebuild.core.service.query.AdvFilterParser)1 Serializable (java.io.Serializable)1 Principal (java.security.Principal)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 PostMapping (org.springframework.web.bind.annotation.PostMapping)1