private void attachBasicInfo(Context ctx, Record pageRec) { long pageId = pageRec.getInt("page_id", 0); // viewer_can_update if (ctx.getViewerId() >= 0 && pageRec.getInt("creator") == ctx.getViewerId()) { pageRec.put("viewer_can_update", true); } else { pageRec.put("viewer_can_update", false); } // logo & cover url prefix addImagePrefix(imagePattern, pageRec); // followers count int followersCount = GlobalLogics.getFriendship().getFollowersCount(ctx, Long.toString(pageId)); pageRec.put("followers_count", followersCount); // followed long[] followedIds = GlobalLogics.getFriendship().isFollowedPages(ctx, ctx.getViewerId(), new long[] {pageId}); pageRec.put("followed", ArrayUtils.isNotEmpty(followedIds)); }
private void attachDetailInfo(Context ctx, Record pageRec) { long associatedId = pageRec.getInt("associated_id", 0L); Record rec = Commons.getUnifiedUser(ctx, associatedId); rec.copyColumn(GRP_COL_ID, "circle_id"); rec.copyColumn(GRP_COL_NAME, "circle_name"); String freeCircleIds = pageRec.getString("free_circle_ids"); RecordSet freeCircleRecs; if (StringUtils.isBlank(freeCircleIds)) { freeCircleRecs = new RecordSet(); } else { freeCircleRecs = GlobalLogics.getGroup() .getGroups( ctx, Constants.PUBLIC_CIRCLE_ID_BEGIN, Constants.PUBLIC_CIRCLE_ID_END, ctx.getViewerIdString(), freeCircleIds, Constants.GROUP_LIGHT_COLS, false); } freeCircleRecs.copyColumn(GRP_COL_ID, "circle_id"); freeCircleRecs.copyColumn(GRP_COL_NAME, "circle_name"); pageRec.put("associated", rec); pageRec.put("free_circles", freeCircleRecs); long[] followerIds = GlobalLogics.getFriendship() .getFollowerIds(ctx, ctx.getViewerId(), 0, Constants.GROUP_ID_BEGIN, 0, 15); RecordSet followerUserRecs = GlobalLogics.getAccount() .getUsers( ctx, ctx.getViewerIdString(), StringUtils2.join(followerIds, ","), AccountLogic.USER_LIGHT_COLUMNS, true); followerUserRecs.retainsCount(5); pageRec.put("followers", followerUserRecs); int objType = Constants.getUserTypeById(associatedId); if (objType == Constants.PUBLIC_CIRCLE_OBJECT) { boolean b = GlobalLogics.getGroup() .hasRight(ctx, associatedId, ctx.getViewerId(), Constants.ROLE_MEMBER); pageRec.put("in_associated_circle", b); } else { pageRec.put("in_associated_circle", false); } // shared count String viewerId = ctx.getViewerIdString(); String pageId = pageRec.getString("page_id"); StreamLogic stream = GlobalLogics.getStream(); Record sharedCount = new Record(); int sharedText = stream.getSharedCount(ctx, viewerId, pageId, TEXT_POST); sharedCount.put("shared_text", sharedText); int sharedPhoto = stream.getSharedCount(ctx, viewerId, pageId, PHOTO_POST); sharedCount.put("shared_photo", sharedPhoto); int sharedBook = stream.getSharedCount(ctx, viewerId, pageId, BOOK_POST); sharedCount.put("shared_book", sharedBook); int sharedApk = stream.getSharedCount(ctx, viewerId, pageId, APK_POST); sharedCount.put("shared_apk", sharedApk); int sharedLink = stream.getSharedCount(ctx, viewerId, pageId, LINK_POST); sharedCount.put("shared_link", sharedLink); int shared_static_file = stream.getSharedCount(ctx, viewerId, pageId, FILE_POST); sharedCount.put("shared_static_file", shared_static_file); int shared_audio = stream.getSharedCount(ctx, viewerId, pageId, AUDIO_POST); sharedCount.put("shared_audio", shared_audio); int shared_video = stream.getSharedCount(ctx, viewerId, pageId, VIDEO_POST); sharedCount.put("shared_video", shared_video); sharedCount.put( "shared_poll", GlobalLogics.getPoll().getRelatedPollCount(ctx, viewerId, pageId)); String eventIds = GlobalLogics.getGroup().getPageEvents(ctx, Long.parseLong(pageId)); Set<String> set = StringUtils2.splitSet(eventIds, ",", true); sharedCount.put("shared_event", set.size()); pageRec.put("shared_count", sharedCount); }
@TraceCall @Override public Record createPage(Context ctx, Record pageRec) { long viewerId = ctx.getViewerId(); GlobalLogics.getAccount().checkUserIds(ctx, Long.toString(viewerId)); long associatedId = pageRec.checkGetInt("associated_id"); // if (associatedId > 0) { // int userType = Constants.getUserTypeById(associatedId); // if (userType == Constants.PUBLIC_CIRCLE_OBJECT || userType == // Constants.EVENT_OBJECT) { // // TODO: group exists? // } else if (userType == Constants.USER_OBJECT) { // // TODO: user exists? // } else { // throw new ServerException(WutongErrors.PAGE_ILLEGAL_ASSOCIATED_ID); // } // } long now = DateUtils.nowMillis(); String sql = new SQLBuilder.Insert() .insertIgnoreInto(pageTable) .values( new Record() .set("created_time", now) .set("updated_time", now) .set("destroyed_time", 0L) .set("email_domain1", pageRec.getString("email_domain1")) .set("email_domain2", pageRec.getString("email_domain2")) .set("email_domain3", pageRec.getString("email_domain3")) .set("email_domain4", pageRec.getString("email_domain4")) .set("type", pageRec.getString("type")) .set("name", pageRec.getString("name")) .set("name_en", pageRec.getString("name_en")) .set("email", pageRec.getString("email")) .set("website", pageRec.getString("website")) .set("tel", pageRec.getString("tel")) .set("fax", pageRec.getString("fax")) .set("zip_code", pageRec.getString("zip_code")) .set("small_logo_url", pageRec.getString("small_logo_url")) .set("logo_url", pageRec.getString("logo_url")) .set("large_logo_url", pageRec.getString("large_logo_url")) .set("small_cover_url", pageRec.getString("small_cover_url")) .set("cover_url", pageRec.getString("cover_url")) .set("large_cover_url", pageRec.getString("large_cover_url")) .set("description", pageRec.getString("description")) .set("description_en", pageRec.getString("description_en")) .set("creator", viewerId) .set("associated_id", associatedId) .set("free_circle_ids", pageRec.getString("free_circle_ids"))) .toString(); SQLExecutor se = getSqlExecutor(); ObjectHolder<Long> idHolder = new ObjectHolder<Long>(0L); se.executeUpdate(sql, idHolder); if (idHolder.value == 0L) throw new ServerException(WutongErrors.PAGE_SERVICE_ERROR_CODE, "Create page error"); GlobalLogics.getFriendship().followPage(ctx, ctx.getViewerId(), idHolder.value); return getPage(ctx, idHolder.value); }