独联体公会列表

This commit is contained in:
2025-10-11 16:18:44 +08:00
parent a788956f90
commit 37fc0a79c3
8 changed files with 98 additions and 22 deletions

View File

@@ -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;

View File

@@ -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<GuildDiamond
List<GuildDiamondStatisticsDayVo> listByStatDateGuildIds(@Param("startDate")String startDate, @Param("endDate")String endDate,
@Param("guildIds") List<Integer> guildIds, @Param("partitionId") Integer partitionId);
List<SimpleGuildVo> listRank(@Param("ipage") IPage<SimpleGuildVo> ipage, @Param("partitionId") Integer partitionId, @Param("startDate")String startDate);
}

View File

@@ -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<GuildDiamondS
Map<Integer, Double> mapByStatDate(String statDate, String endDate, int partitionId, List<Integer> guildIds);
RMap<Integer, BigDecimal> guildStatDateDiamondMap(Integer partitionId, String statDate);
List<SimpleGuildVo> listRank(Integer partitionId, String startDate, Integer pageNo, Integer pageSize);
}

View File

@@ -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<GuildDiamo
new TypedJsonJacksonCodec(Integer.class, BigDecimal.class));
}
@Override
public List<SimpleGuildVo> listRank(Integer partitionId, String startDate, Integer pageNo, Integer pageSize) {
IPage<SimpleGuildVo> page = new Page<>(pageNo, pageSize, false);
return baseMapper.listRank(page, partitionId, startDate);
}
}

View File

@@ -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<SimpleGuildVo> listRank(Long uid) {
public List<SimpleGuildVo> 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<Guild> guildList = guildService.listVaildGuildByPartitionId(u.getPartitionId());
Integer partitionId = u.getPartitionId();
List<SimpleGuildVo> 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<Integer> guildIds = simpleGuildVos.stream().map(SimpleGuildVo::getGuildId).collect(Collectors.toList());
Map<Integer, GuildSSRankDetailVo> ssMarkMap = ssGuildService.getSSMarkByGuildId(partitionId, guildIds);
Map<Integer, Integer> memberNumMap = guildService.getGuildMemberNumMapByGuildIds(guildIds);
List<Long> ownerUids = simpleGuildVos.stream().map(SimpleGuildVo::getOwnerUid).collect(Collectors.toList());
Map<Long, SimpleUserVo> 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<SimpleGuildVo> listRank(Integer partitionId) {
List<Guild> guildList = guildService.listVaildGuildByPartitionId(partitionId);
if (CollectionUtils.isEmpty(guildList)){
return Collections.emptyList();
}
PartitionInfo partitionInfo = partitionInfoService.getById(u.getPartitionId());
Map<Integer, Double> weekIncomeMap = guildRankService.getWeekRankScoreMap(u.getPartitionId(),
PartitionInfo partitionInfo = partitionInfoService.getById(partitionId);
Map<Integer, Double> weekIncomeMap = guildRankService.getWeekRankScoreMap(partitionId,
null != partitionInfo? partitionInfo.getZoneId(): ZoneId.systemDefault().getId());
List<SimpleGuildVo> 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);
}

View File

@@ -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<Long, SimpleUserVo> getSimpleUsersByUid(List<Long> uids) {
Map<Long, SimpleUserVo> resultMap = new HashMap<>();
Map<Long, Users> 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);

View File

@@ -160,4 +160,24 @@
</foreach>
group by gd.guild_id
</select>
<select id="listRank" resultType="com.accompany.business.vo.guild.SimpleGuildVo">
SELECT
g.id guildId,
g.`name` guildName,
g.owner_uid ownerUid,
g.member_num_limit memberNumLimit,
a.diamond_num weekIncome
FROM
guild g
LEFT JOIN (select guild_id, sum(diamond_num+lucky_diamond_num) diamond_num
from guild_extra_diamond_day
where partition_id = #{partitionId}
and stat_date &gt;= #{startDate}
group by guild_id) a on a.guild_id = g.id
where g.partition_id = #{partitionId}
and g.`enable` = 1
ORDER BY weekIncome desc
</select>
</mapper>

View File

@@ -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<List<SimpleGuildVo>> listGuild(){
public BusiResult<List<SimpleGuildVo>> listGuild(@RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "20") Integer pageSize){
Long uid = UidContextHolder.get();
List<SimpleGuildVo> guildList = guildManagerService.listRank(uid);
List<SimpleGuildVo> guildList = guildManagerService.listRank(uid, pageNo, pageSize);
return BusiResult.success(guildList);
}