diff --git a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/room/ActivityLeaderboardRestController.java b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/room/ActivityLeaderboardRestController.java index ac39586e..0e6b23c2 100644 --- a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/room/ActivityLeaderboardRestController.java +++ b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/room/ActivityLeaderboardRestController.java @@ -88,4 +88,19 @@ public class ActivityLeaderboardRestController { return activityLeaderboardService.getAppLeaderboard(cmd); } + /** + * 我的排名. + * + * @eo.name 我的排名. + * @eo.url /my-rank + * @eo.method get + * @eo.request-type formdata + * @eo.param type 类型 (ROOM_GIFTS:房间礼物, GIFTS_SEND:礼物赠送, GIFTS_RECEIVED:礼物接收) + * @eo.param dateType 时间类型 (HOUR:小时, DAY:天, WEEK:周, MONTH:月) + */ + @GetMapping("/my-rank") + public ActivityLeaderboardCO.LeaderboardUserCO myRank(AppExtCommand cmd, String type, String dateType) { + return activityLeaderboardService.myRank(cmd, type, dateType); + } + } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardServiceImpl.java index 608fb582..09a3b21a 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardServiceImpl.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardServiceImpl.java @@ -182,4 +182,61 @@ public class ActivityLeaderboardServiceImpl implements ActivityLeaderboardServic co.setRechargeLeaderboard(rechargeLeaderboardQryExe.executeApp(cmd)); return co; } + + @Override + public ActivityLeaderboardCO.LeaderboardUserCO myRank(AppExtCommand cmd, String type, String dateType) { + if (Objects.isNull(type) || Objects.isNull(dateType)) { + return null; + } + + ActivityLeaderboardCO leaderboard; + switch (type) { + case "ROOM_GIFTS": + leaderboard = roomGiftsLeaderboard(cmd); + break; + case "GIFTS_SEND": + leaderboard = giftsSendLeaderboard(cmd); + break; + case "GIFTS_RECEIVED": + leaderboard = giftsReceivedLeaderboard(cmd); + break; + default: + return null; + } + + Long userId = cmd.getReqUserId(); + java.util.List rankList; + + switch (dateType) { + case "HOUR": + rankList = leaderboard.getHourly(); + break; + case "DAY": + rankList = leaderboard.getDaily(); + break; + case "WEEK": + rankList = leaderboard.getWeekly(); + break; + case "MONTH": + rankList = leaderboard.getMonthly(); + break; + default: + return null; + } + + if (Objects.isNull(rankList) || rankList.isEmpty()) { + return null; + } + + // 查找用户排名 + for (int i = 0; i < rankList.size(); i++) { + ActivityLeaderboardCO.LeaderboardUserCO userCO = rankList.get(i); + if (Objects.equals(userCO.getId(), userId)) { + userCO.setRank(i + 1); + return userCO; + } + } + + return null; + } } diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/activity/ActivityLeaderboardCO.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/activity/ActivityLeaderboardCO.java index c199b6d9..bb23e33f 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/activity/ActivityLeaderboardCO.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/activity/ActivityLeaderboardCO.java @@ -88,6 +88,11 @@ public class ActivityLeaderboardCO extends ClientObject { */ private String quantityFormat; + /** + * 排名. + */ + private Integer rank; + } } diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardService.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardService.java index d35dec5e..2858bf8a 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardService.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/activity/ActivityLeaderboardService.java @@ -21,4 +21,6 @@ public interface ActivityLeaderboardService { ActivityLeaderboardListCO getAppLeaderboard(AppExtCommand cmd); + ActivityLeaderboardCO.LeaderboardUserCO myRank(AppExtCommand cmd, String type, String dateType); + }