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();
}
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;
}
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;
}
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;
}
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;
}
Aggregations