diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/SimpleGuildVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/SimpleGuildVo.java index 36d6f6f82..fafc18eda 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/SimpleGuildVo.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/SimpleGuildVo.java @@ -10,6 +10,7 @@ public class SimpleGuildVo { private Integer guildId; private String guildName; + private Long ownerUid; private SimpleUserVo owner; private Double weekIncome; private String markScore; diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guild/GuildDiamondStatisticsDayMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guild/GuildDiamondStatisticsDayMapper.java index 128788ba2..fe03557ba 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guild/GuildDiamondStatisticsDayMapper.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guild/GuildDiamondStatisticsDayMapper.java @@ -4,6 +4,7 @@ import com.accompany.business.model.guild.GuildDiamondStatisticsDay; import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo; import com.accompany.business.vo.guild.GuildInfoVo; import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo; +import com.accompany.business.vo.guild.SimpleGuildVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -49,4 +50,6 @@ public interface GuildDiamondStatisticsDayMapper extends BaseMapper listByStatDateGuildIds(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("guildIds") List guildIds, @Param("partitionId") Integer partitionId); + + List listRank(@Param("ipage") IPage ipage, @Param("partitionId") Integer partitionId, @Param("startDate")String startDate); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayService.java index 3514a50a5..58761ed13 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayService.java @@ -5,6 +5,7 @@ import com.accompany.business.model.guild.GuildMember; import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo; import com.accompany.business.vo.guild.GuildInfoVo; import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo; +import com.accompany.business.vo.guild.SimpleGuildVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -40,4 +41,6 @@ public interface GuildDiamondStatisticsDayService extends IService mapByStatDate(String statDate, String endDate, int partitionId, List guildIds); RMap guildStatDateDiamondMap(Integer partitionId, String statDate); + + List listRank(Integer partitionId, String startDate, Integer pageNo, Integer pageSize); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayServiceImpl.java index 5a7b33ca8..fd9c58914 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildDiamondStatisticsDayServiceImpl.java @@ -7,6 +7,7 @@ import com.accompany.business.mybatismapper.guild.GuildDiamondStatisticsDayMappe import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo; import com.accompany.business.vo.guild.GuildInfoVo; import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo; +import com.accompany.business.vo.guild.SimpleGuildVo; import com.accompany.core.enumeration.PartitionEnum; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -100,4 +101,10 @@ public class GuildDiamondStatisticsDayServiceImpl extends ServiceImpl listRank(Integer partitionId, String startDate, Integer pageNo, Integer pageSize) { + IPage page = new Page<>(pageNo, pageSize, false); + return baseMapper.listRank(page, partitionId, startDate); + } + } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildManagerService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildManagerService.java index e35488a76..5f5624e1b 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildManagerService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildManagerService.java @@ -1,5 +1,6 @@ package com.accompany.business.service.guild; +import cn.hutool.core.date.DateUtil; import com.accompany.business.constant.guild.GuildConstant; import com.accompany.business.event.GuildMemberStatusChangeEvent; import com.accompany.business.model.UserPurse; @@ -93,6 +94,8 @@ public class GuildManagerService { private UserPurseService userPurseService; @Autowired private UploadAvatarService uploadAvatarService; + @Autowired + private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService; @SneakyThrows public GuildVo getGuildVo(Long uid) { @@ -484,7 +487,7 @@ public class GuildManagerService { return listGuildMember(guildMember.getGuildId(), GuildConstant.RoleType.MANAGER); } - public List listRank(Long uid) { + public List listRank(Long uid, Integer pageNo, Integer pageSize) { GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid); if (null != guildMember){ throw new ServiceException(BusiStatus.HAS_ONE_HALL); @@ -495,12 +498,48 @@ public class GuildManagerService { throw new ServiceException(BusiStatus.USERNOTEXISTS); } - List guildList = guildService.listVaildGuildByPartitionId(u.getPartitionId()); + Integer partitionId = u.getPartitionId(); + List simpleGuildVos; + if (PartitionEnum.SOVIET.getId() == partitionId) { + Date offsetDay = DateUtil.offsetDay(new Date(), -60); + simpleGuildVos = guildDiamondStatisticsDayService.listRank(partitionId, DateUtil.formatDate(offsetDay), pageNo, pageSize); + } else { + simpleGuildVos = this.listRank(partitionId); + } + if (CollectionUtils.isEmpty(simpleGuildVos)) { + return Collections.emptyList(); + } + + List guildIds = simpleGuildVos.stream().map(SimpleGuildVo::getGuildId).collect(Collectors.toList()); + Map ssMarkMap = ssGuildService.getSSMarkByGuildId(partitionId, guildIds); + Map memberNumMap = guildService.getGuildMemberNumMapByGuildIds(guildIds); + List ownerUids = simpleGuildVos.stream().map(SimpleGuildVo::getOwnerUid).collect(Collectors.toList()); + Map ownerErbanNoMap = usersService.getSimpleUsersByUid(ownerUids); + for (SimpleGuildVo simpleGuildVo : simpleGuildVos) { + Integer guildId = simpleGuildVo.getGuildId(); + simpleGuildVo.setOwner(ownerErbanNoMap.get(simpleGuildVo.getOwnerUid())); + + GuildSSRankDetailVo guildSSRankDetailVo = ssMarkMap.get(guildId); + if (guildSSRankDetailVo != null) { + simpleGuildVo.setMarkScore(guildSSRankDetailVo.getMarkScore()); + simpleGuildVo.setSsLevel(guildSSRankDetailVo.getSsLevel()); + } + Integer memberNum = memberNumMap.get(guildId); + memberNum = memberNum == null ? 0 : memberNum; + simpleGuildVo.setMemberNum(memberNum); + } + + return simpleGuildVos; + } + + public List listRank(Integer partitionId) { + + List guildList = guildService.listVaildGuildByPartitionId(partitionId); if (CollectionUtils.isEmpty(guildList)){ return Collections.emptyList(); } - PartitionInfo partitionInfo = partitionInfoService.getById(u.getPartitionId()); - Map weekIncomeMap = guildRankService.getWeekRankScoreMap(u.getPartitionId(), + PartitionInfo partitionInfo = partitionInfoService.getById(partitionId); + Map weekIncomeMap = guildRankService.getWeekRankScoreMap(partitionId, null != partitionInfo? partitionInfo.getZoneId(): ZoneId.systemDefault().getId()); List voList = new ArrayList<>(); @@ -516,18 +555,8 @@ public class GuildManagerService { vo.setGuildId(guild.getId()); vo.setGuildName(guild.getName()); vo.setMemberNumLimit(guild.getMemberNumLimit()); - SimpleUserVo ownerVo = usersService.getSimpleUserByUid(guild.getOwnerUid()); - vo.setOwner(ownerVo); vo.setWeekIncome(weekIncomeMap.getOrDefault(guild.getId(), 0D)); - GuildSSRankDetailVo guildSSRankDetailVo = ssMarkMap.get(guild.getId()); - if (guildSSRankDetailVo != null) { - vo.setMarkScore(guildSSRankDetailVo.getMarkScore()); - vo.setSsLevel(guildSSRankDetailVo.getSsLevel()); - } - Integer memberNum = memberNumMap.get(guild.getId()); - memberNum = memberNum == null ? 0 : memberNum; - vo.setMemberNum(memberNum); voList.add(vo); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java index 3a6bb7011..671a66da8 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java @@ -26,7 +26,6 @@ import com.accompany.business.service.headwear.HeadwearService; import com.accompany.business.service.level.LevelService; import com.accompany.business.service.live.LiveAttestationService; import com.accompany.business.service.nameplate.UserNameplateService; -import com.accompany.business.service.netease.YidunCheckUtil; import com.accompany.business.service.purse.UserPurseService; import com.accompany.business.service.room.QueryRoomService; import com.accompany.business.service.room.RoomService; @@ -77,7 +76,6 @@ import com.accompany.email.service.EmailService; import com.accompany.payment.service.RechargeUserService; import com.accompany.sms.service.SmsService; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; @@ -845,6 +843,24 @@ public class UsersService extends BaseService { return simpleUserVo; } + public Map getSimpleUsersByUid(List uids) { + Map resultMap = new HashMap<>(); + Map usersMap = getUsersMapByUids(uids); + if (usersMap == null || usersMap.isEmpty()) { + return null; + } + usersMap.forEach((uid, user) -> { + SimpleUserVo simpleUserVo = new SimpleUserVo(); + simpleUserVo.setAvatar(user.getAvatar()); + simpleUserVo.setErbanNo(user.getErbanNo()); + simpleUserVo.setGender(user.getGender()); + simpleUserVo.setNick(user.getNick()); + simpleUserVo.setUid(user.getUid()); + resultMap.put(uid, simpleUserVo); + }); + return resultMap; + } + public BusiResult isBindPhone(Long uid) { BusiResult busiResult = new BusiResult(BusiStatus.SUCCESS); Users users = getUsersByUid(uid); diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildDiamondStatisticsDayMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildDiamondStatisticsDayMapper.xml index 39040fc47..19ada6b69 100644 --- a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildDiamondStatisticsDayMapper.xml +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildDiamondStatisticsDayMapper.xml @@ -160,4 +160,24 @@ group by gd.guild_id + + + diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildController.java index e188da138..3cc57f44d 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildController.java @@ -14,10 +14,7 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -111,9 +108,9 @@ public class GuildController { @ApiOperation("公会排行列表") @Authorization @GetMapping("/listRank") - public BusiResult> listGuild(){ + public BusiResult> listGuild(@RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "20") Integer pageSize){ Long uid = UidContextHolder.get(); - List guildList = guildManagerService.listRank(uid); + List guildList = guildManagerService.listRank(uid, pageNo, pageSize); return BusiResult.success(guildList); }