日常任务-主播周奖励英语2区
This commit is contained in:
@@ -2,38 +2,64 @@ package com.accompany.admin.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel("家族成员周等级奖励统计")
|
||||
public class FamilyMemberWeekLevelRewardStatAdminVo {
|
||||
|
||||
@ExcelProperty("周期")
|
||||
@ApiModelProperty("周期")
|
||||
private String cycleDate;
|
||||
@ExcelIgnore
|
||||
@ApiModelProperty("家族成员ID")
|
||||
private Long familyMemberId;
|
||||
@ExcelProperty("公会id")
|
||||
@ApiModelProperty("公会ID")
|
||||
private Integer familyId;
|
||||
@ExcelProperty("公会名")
|
||||
@ApiModelProperty("公会名称")
|
||||
private String familyName;
|
||||
@ExcelProperty("会长id")
|
||||
@ApiModelProperty("会长ID")
|
||||
private Long familyOwnerId;
|
||||
@ExcelProperty("会长昵称")
|
||||
@ApiModelProperty("会长昵称")
|
||||
private String familyOwnerNick;
|
||||
@ExcelIgnore
|
||||
@ApiModelProperty("用户UID")
|
||||
private Long uid;
|
||||
@ExcelProperty("主播id")
|
||||
@ApiModelProperty("主播ID")
|
||||
private Long erbanNo;
|
||||
@ExcelProperty("主播昵称")
|
||||
@ApiModelProperty("主播昵称")
|
||||
private String nick;
|
||||
@ExcelProperty("周奖励等级")
|
||||
private Integer level;
|
||||
@ExcelProperty("周奖励等级")
|
||||
private Integer levelName;
|
||||
@ExcelProperty("钻石流水")
|
||||
@ApiModelProperty("钻石流水")
|
||||
private BigDecimal processNum;
|
||||
@ExcelProperty("已获得金币")
|
||||
@ExcelProperty("钻石奖励")
|
||||
@ApiModelProperty("钻石奖励")
|
||||
private BigDecimal rewardNum;
|
||||
@ExcelProperty("在麦有效天数")
|
||||
@ApiModelProperty("在麦有效天数")
|
||||
private Integer micValidDay;
|
||||
@ExcelProperty("时长奖励")
|
||||
@ApiModelProperty("时长奖励")
|
||||
private BigDecimal bonusRewardNum;
|
||||
@ExcelProperty("目标领取金币")
|
||||
@ApiModelProperty("目标领取金币")
|
||||
private BigDecimal totalRewardNum;
|
||||
@ExcelProperty("已领取金币")
|
||||
@ApiModelProperty("已领取金币")
|
||||
private BigDecimal receivedNum;
|
||||
|
||||
}
|
||||
}
|
@@ -61,7 +61,7 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
PartitionInfo partitionInfo = partitionInfoService.getById(partitionId);
|
||||
if (null == partitionInfo
|
||||
|| (!Constant.ClanMode.FAMILY.equals(partitionInfo.getClanMode()) && !Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())
|
||||
&& !Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode()))){
|
||||
&& !Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode()))) {
|
||||
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||
} else if (!StringUtils.hasText(cycleDate)) {
|
||||
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||
@@ -70,42 +70,42 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
Page<FamilyMemberWeekLevelRewardStatAdminVo> voPage = new Page<>(pageNo, pageSize);
|
||||
|
||||
Long uid = null;
|
||||
if (null != erbanNo){
|
||||
if (null != erbanNo) {
|
||||
Users u = usersService.getUserByErbanNo(erbanNo);
|
||||
if (null == u){
|
||||
if (null == u) {
|
||||
return voPage;
|
||||
}
|
||||
uid = u.getUid();
|
||||
}
|
||||
|
||||
if (Constant.ClanMode.FAMILY.equals(partitionInfo.getClanMode())){
|
||||
if (Constant.ClanMode.FAMILY.equals(partitionInfo.getClanMode())) {
|
||||
Page<FamilyMember> poPage = new Page<>(pageNo, pageSize);
|
||||
LambdaQueryWrapper<FamilyMember> queryWrapper = Wrappers.<FamilyMember>lambdaQuery()
|
||||
.eq(null != uid, FamilyMember::getUid, uid);
|
||||
.eq(null != uid, FamilyMember::getUid, uid);
|
||||
familyMemberMapper.selectPage(poPage, queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(poPage.getRecords())){
|
||||
if (CollectionUtils.isEmpty(poPage.getRecords())) {
|
||||
return voPage;
|
||||
}
|
||||
|
||||
Set<Long> uidSet = poPage.getRecords().stream().map(FamilyMember::getUid).collect(Collectors.toSet());
|
||||
List<Long> familyMemberIdList = poPage.getRecords().stream().map(FamilyMember::getId).collect(Collectors.toList());
|
||||
Map<Long, FamilyMember> familyMemberMap = poPage.getRecords().stream().collect(Collectors.toMap(FamilyMember::getId, f->f));
|
||||
Map<Long, FamilyMember> familyMemberMap = poPage.getRecords().stream().collect(Collectors.toMap(FamilyMember::getId, f -> f));
|
||||
List<Integer> familyIdList = familyMemberMap.values().stream().map(FamilyMember::getFamilyId).distinct().collect(Collectors.toList());
|
||||
Map<Integer, Family> familyMap = familyMapper.selectByIds(familyIdList).stream().collect(Collectors.toMap(Family::getId, f->f));
|
||||
Map<Integer, Family> familyMap = familyMapper.selectByIds(familyIdList).stream().collect(Collectors.toMap(Family::getId, f -> f));
|
||||
List<Long> familyOwnerUid = familyMap.values().stream().map(Family::getOwnerUid).distinct().collect(Collectors.toList());
|
||||
|
||||
List<FamilyMemberWeekLevelReward> weekLevelRewardList = familyMemberWeekLevelRewardService.lambdaQuery()
|
||||
.orderByAsc(FamilyMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
Set<String> mapKeySet = familyMemberIdList.stream().map(familyMemberId->{
|
||||
Set<String> mapKeySet = familyMemberIdList.stream().map(familyMemberId -> {
|
||||
List<String> keyList = new ArrayList<>();
|
||||
for (FamilyMemberWeekLevelReward levelReward: weekLevelRewardList){
|
||||
keyList.add(String.join("_", familyMemberId.toString(), levelReward.getLevel().toString()));
|
||||
for (FamilyMemberWeekLevelReward levelReward : weekLevelRewardList) {
|
||||
keyList.add(String.join("_" , familyMemberId.toString(), levelReward.getLevel().toString()));
|
||||
}
|
||||
keyList.add(String.join("_", familyMemberId.toString(), "process"));
|
||||
keyList.add(String.join("_" , familyMemberId.toString(), "process"));
|
||||
return keyList;
|
||||
}).flatMap(List::stream).collect(Collectors.toSet());
|
||||
}).flatMap(List::stream).collect(Collectors.toSet());
|
||||
Map<String, Number> weekMap = familyMemberWeekLevelRewardService.getWeekMap(cycleDate, partitionId).getAll(mapKeySet);
|
||||
|
||||
uidSet.addAll(familyOwnerUid);
|
||||
@@ -117,16 +117,16 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
vo.setCycleDate(cycleDate);
|
||||
vo.setFamilyMemberId(po.getId());
|
||||
|
||||
String processKey = String.join("_", po.getId().toString(), "process");
|
||||
String processKey = String.join("_" , po.getId().toString(), "process");
|
||||
vo.setProcessNum(BigDecimal.valueOf(weekMap.getOrDefault(processKey, 0d).doubleValue()));
|
||||
|
||||
int level = 0;
|
||||
BigDecimal rewardNum = BigDecimal.ZERO;
|
||||
BigDecimal receiverdNum = BigDecimal.ZERO;
|
||||
for (FamilyMemberWeekLevelReward rewardItem: weekLevelRewardList){
|
||||
String key = String.join("_", po.getId().toString(), rewardItem.getLevel().toString());
|
||||
for (FamilyMemberWeekLevelReward rewardItem : weekLevelRewardList) {
|
||||
String key = String.join("_" , po.getId().toString(), rewardItem.getLevel().toString());
|
||||
Byte status = weekMap.getOrDefault(key, Constant.status.delete).byteValue();
|
||||
if (Constant.status.valid.equals(status)){
|
||||
if (Constant.status.valid.equals(status)) {
|
||||
level = rewardItem.getLevel();
|
||||
rewardNum = rewardNum.add(rewardItem.getRewardNum());
|
||||
} else if (Constant.status.invalid.equals(status)) {
|
||||
@@ -143,21 +143,21 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
vo.setUid(po.getUid());
|
||||
|
||||
Users u = usersMap.get(po.getUid());
|
||||
if (null != u){
|
||||
if (null != u) {
|
||||
vo.setErbanNo(u.getErbanNo());
|
||||
vo.setNick(u.getNick());
|
||||
}
|
||||
|
||||
FamilyMember familyMember = familyMemberMap.get(po.getId());
|
||||
if (null != familyMember){
|
||||
if (null != familyMember) {
|
||||
vo.setFamilyId(familyMember.getFamilyId());
|
||||
|
||||
Family family = familyMap.get(familyMember.getFamilyId());
|
||||
if (null != family){
|
||||
if (null != family) {
|
||||
vo.setFamilyName(family.getName());
|
||||
|
||||
Users owner = usersMap.get(family.getOwnerUid());
|
||||
if (null != owner){
|
||||
if (null != owner) {
|
||||
vo.setFamilyOwnerId(owner.getErbanNo());
|
||||
vo.setFamilyOwnerNick(owner.getNick());
|
||||
}
|
||||
@@ -176,26 +176,26 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
.eq(null != uid, GuildMember::getUid, uid);
|
||||
guildMemberMapper.selectPage(poPage, queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(poPage.getRecords())){
|
||||
if (CollectionUtils.isEmpty(poPage.getRecords())) {
|
||||
return voPage;
|
||||
}
|
||||
|
||||
Set<Long> uidSet = poPage.getRecords().stream().map(GuildMember::getUid).collect(Collectors.toSet());
|
||||
List<Long> guildMemberIdList = poPage.getRecords().stream().map(GuildMember::getId).collect(Collectors.toList());
|
||||
Map<Long, GuildMember> guildMemberMap = poPage.getRecords().stream().collect(Collectors.toMap(GuildMember::getId, f->f));
|
||||
Map<Long, GuildMember> guildMemberMap = poPage.getRecords().stream().collect(Collectors.toMap(GuildMember::getId, f -> f));
|
||||
List<Integer> guildIdList = guildMemberMap.values().stream().map(GuildMember::getGuildId).distinct().collect(Collectors.toList());
|
||||
Map<Integer, Guild> guildMap = guildMapper.selectByIds(guildIdList).stream().collect(Collectors.toMap(Guild::getId, f->f));
|
||||
Map<Integer, Guild> guildMap = guildMapper.selectByIds(guildIdList).stream().collect(Collectors.toMap(Guild::getId, f -> f));
|
||||
List<Long> guildOwnerUid = guildMap.values().stream().map(Guild::getOwnerUid).distinct().collect(Collectors.toList());
|
||||
|
||||
List<GuildMemberWeekLevelReward> weekLevelRewardList = guildMemberWeekLevelRewardService.lambdaQuery()
|
||||
.orderByAsc(GuildMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
Set<String> mapKeySet = guildMemberIdList.stream().map(guildMemberId->{
|
||||
Set<String> mapKeySet = guildMemberIdList.stream().map(guildMemberId -> {
|
||||
List<String> keyList = new ArrayList<>();
|
||||
for (GuildMemberWeekLevelReward levelReward: weekLevelRewardList){
|
||||
keyList.add(String.join("_", guildMemberId.toString(), levelReward.getLevel().toString()));
|
||||
for (GuildMemberWeekLevelReward levelReward : weekLevelRewardList) {
|
||||
keyList.add(String.join("_" , guildMemberId.toString(), levelReward.getLevel().toString()));
|
||||
}
|
||||
keyList.add(String.join("_", guildMemberId.toString(), "process"));
|
||||
keyList.add(String.join("_" , guildMemberId.toString(), "process"));
|
||||
return keyList;
|
||||
}).flatMap(List::stream).collect(Collectors.toSet());
|
||||
Map<String, Number> weekMap = guildMemberWeekLevelRewardService.getWeekMap(cycleDate, partitionId).getAll(mapKeySet);
|
||||
@@ -209,16 +209,16 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
vo.setCycleDate(cycleDate);
|
||||
vo.setFamilyMemberId(po.getId());
|
||||
|
||||
String processKey = String.join("_", po.getId().toString(), "process");
|
||||
String processKey = String.join("_" , po.getId().toString(), "process");
|
||||
vo.setProcessNum(BigDecimal.valueOf(weekMap.getOrDefault(processKey, 0d).doubleValue()));
|
||||
|
||||
int level = 0;
|
||||
BigDecimal rewardNum = BigDecimal.ZERO;
|
||||
BigDecimal receiverdNum = BigDecimal.ZERO;
|
||||
for (GuildMemberWeekLevelReward rewardItem: weekLevelRewardList){
|
||||
String key = String.join("_", po.getId().toString(), rewardItem.getLevel().toString());
|
||||
for (GuildMemberWeekLevelReward rewardItem : weekLevelRewardList) {
|
||||
String key = String.join("_" , po.getId().toString(), rewardItem.getLevel().toString());
|
||||
Byte status = weekMap.getOrDefault(key, Constant.status.delete).byteValue();
|
||||
if (Constant.status.valid.equals(status)){
|
||||
if (Constant.status.valid.equals(status)) {
|
||||
level = rewardItem.getLevel();
|
||||
rewardNum = rewardNum.add(rewardItem.getRewardNum());
|
||||
} else if (Constant.status.invalid.equals(status)) {
|
||||
@@ -235,21 +235,21 @@ public class FamilyMemberWeekLevelRewardRecordAdminService {
|
||||
vo.setUid(po.getUid());
|
||||
|
||||
Users u = usersMap.get(po.getUid());
|
||||
if (null != u){
|
||||
if (null != u) {
|
||||
vo.setErbanNo(u.getErbanNo());
|
||||
vo.setNick(u.getNick());
|
||||
}
|
||||
|
||||
GuildMember guildMember = guildMemberMap.get(po.getId());
|
||||
if (null != guildMember){
|
||||
if (null != guildMember) {
|
||||
vo.setFamilyId(guildMember.getGuildId());
|
||||
|
||||
Guild guild = guildMap.get(guildMember.getGuildId());
|
||||
if (null != guild){
|
||||
if (null != guild) {
|
||||
vo.setFamilyName(guild.getName());
|
||||
|
||||
Users owner = usersMap.get(guild.getOwnerUid());
|
||||
if (null != owner){
|
||||
if (null != owner) {
|
||||
vo.setFamilyOwnerId(owner.getErbanNo());
|
||||
vo.setFamilyOwnerNick(owner.getNick());
|
||||
}
|
||||
|
@@ -0,0 +1,208 @@
|
||||
package com.accompany.admin.service;
|
||||
|
||||
import com.accompany.admin.vo.FamilyMemberWeekLevelRewardStatAdminVo;
|
||||
import com.accompany.business.model.guild.Guild;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.model.guild.GuildMemberWeekLevelReward;
|
||||
import com.accompany.business.mybatismapper.guild.GuildMapper;
|
||||
import com.accompany.business.mybatismapper.guild.GuildMemberMapper;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardService;
|
||||
import com.accompany.business.service.guild.GuildService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.model.PartitionInfo;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.service.partition.PartitionInfoService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class GuildMemberWeekLevelRewardRecordAdminService {
|
||||
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekLevelRewardService;
|
||||
@Autowired
|
||||
private GuildMemberMapper guildMemberMapper;
|
||||
@Autowired
|
||||
private GuildMapper guildMapper;
|
||||
@Autowired
|
||||
private GuildService guildService;
|
||||
@Autowired
|
||||
private PartitionInfoService partitionInfoService;
|
||||
|
||||
public Page<FamilyMemberWeekLevelRewardStatAdminVo> page(int partitionId,
|
||||
String cycleDate,
|
||||
Integer guildId,
|
||||
Long guildOwnerErbanNo,
|
||||
Long erbanNo,
|
||||
int pageNo, int pageSize) {
|
||||
PartitionInfo partitionInfo = partitionInfoService.getById(partitionId);
|
||||
if (null == partitionInfo
|
||||
|| (!Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())
|
||||
&& !Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode()))){
|
||||
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||
} else if (!StringUtils.hasText(cycleDate)) {
|
||||
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
|
||||
Page<FamilyMemberWeekLevelRewardStatAdminVo> voPage = new Page<>(pageNo, pageSize);
|
||||
|
||||
if (null != guildOwnerErbanNo){
|
||||
Users owner = usersService.getUserByErbanNo(guildOwnerErbanNo);
|
||||
if (null == owner){
|
||||
return voPage;
|
||||
}
|
||||
Guild g = guildService.getVaildGuildByOwnerUid(owner.getUid());
|
||||
if (null == g){
|
||||
return voPage;
|
||||
}
|
||||
guildId = g.getId();
|
||||
}
|
||||
|
||||
Long uid = null;
|
||||
if (null != erbanNo){
|
||||
Users u = usersService.getUserByErbanNo(erbanNo);
|
||||
if (null == u){
|
||||
return voPage;
|
||||
}
|
||||
uid = u.getUid();
|
||||
}
|
||||
|
||||
Page<GuildMember> poPage = new Page<>(pageNo, pageSize);
|
||||
LambdaQueryWrapper<GuildMember> queryWrapper = Wrappers.<GuildMember>lambdaQuery()
|
||||
.eq(null != guildId, GuildMember::getGuildId, guildId)
|
||||
.eq(null != uid, GuildMember::getUid, uid);
|
||||
guildMemberMapper.selectPage(poPage, queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(poPage.getRecords())){
|
||||
return voPage;
|
||||
}
|
||||
|
||||
Set<Long> uidSet = poPage.getRecords().stream().map(GuildMember::getUid).collect(Collectors.toSet());
|
||||
List<Long> guildMemberIdList = poPage.getRecords().stream().map(GuildMember::getId).toList();
|
||||
Map<Long, GuildMember> guildMemberMap = poPage.getRecords().stream().collect(Collectors.toMap(GuildMember::getId, f->f));
|
||||
List<Integer> guildIdList = guildMemberMap.values().stream().map(GuildMember::getGuildId).distinct().collect(Collectors.toList());
|
||||
Map<Integer, Guild> guildMap = guildMapper.selectByIds(guildIdList).stream().collect(Collectors.toMap(Guild::getId, f->f));
|
||||
List<Long> guildOwnerUid = guildMap.values().stream().map(Guild::getOwnerUid).distinct().toList();
|
||||
|
||||
List<GuildMemberWeekLevelReward> weekLevelRewardList = guildMemberWeekLevelRewardService.lambdaQuery()
|
||||
.orderByAsc(GuildMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
Set<String> mapKeySet = guildMemberIdList.stream().map(guildMemberId->{
|
||||
List<String> keyList = new ArrayList<>();
|
||||
for (GuildMemberWeekLevelReward levelReward: weekLevelRewardList){
|
||||
String levelId = levelReward.getLevel().toString();
|
||||
keyList.add(String.join("_", guildMemberId.toString(), levelId));
|
||||
keyList.add(String.join("_", guildMemberId.toString(), levelId, "bonus"));
|
||||
}
|
||||
keyList.add(String.join("_", guildMemberId.toString(), "process"));
|
||||
keyList.add(String.join("_", guildMemberId.toString(), "bonus", "process"));
|
||||
return keyList;
|
||||
}).flatMap(List::stream).collect(Collectors.toSet());
|
||||
|
||||
Map<String, Number> weekMap = guildMemberWeekLevelRewardService.getWeekMap(cycleDate, partitionId).getAll(mapKeySet);
|
||||
|
||||
uidSet.addAll(guildOwnerUid);
|
||||
|
||||
Map<Long, Users> usersMap = usersService.getUsersMapByUids(new ArrayList<>(uidSet));
|
||||
|
||||
List<FamilyMemberWeekLevelRewardStatAdminVo> voList = poPage.getRecords().stream().map(po -> {
|
||||
FamilyMemberWeekLevelRewardStatAdminVo vo = new FamilyMemberWeekLevelRewardStatAdminVo();
|
||||
vo.setCycleDate(cycleDate);
|
||||
vo.setFamilyMemberId(po.getId());
|
||||
|
||||
String processKey = String.join("_", po.getId().toString(), "process");
|
||||
BigDecimal processNum = BigDecimal.valueOf(weekMap.getOrDefault(processKey, 0d).doubleValue());
|
||||
vo.setProcessNum(processNum);
|
||||
|
||||
String bonusProcessKey = String.join("_", po.getId().toString(), "bonus", "process");
|
||||
Integer bonusProcessNum = weekMap.getOrDefault(bonusProcessKey, 0).intValue();
|
||||
vo.setMicValidDay(bonusProcessNum);
|
||||
|
||||
Integer level = null;
|
||||
String levelName = "-";
|
||||
BigDecimal rewardNum = BigDecimal.ZERO;
|
||||
BigDecimal bonusRewardNum = BigDecimal.ZERO;
|
||||
BigDecimal receiverdNum = BigDecimal.ZERO;
|
||||
for (GuildMemberWeekLevelReward rewardItem: weekLevelRewardList){
|
||||
String key = String.join("_", po.getId().toString(), rewardItem.getLevel().toString());
|
||||
Byte status = weekMap.getOrDefault(key, Constant.status.delete).byteValue();
|
||||
if (Constant.status.invalid.equals(status)) {
|
||||
level = rewardItem.getLevel();
|
||||
levelName = rewardItem.getLevelName();
|
||||
rewardNum = rewardNum.add(rewardItem.getRewardNum());
|
||||
receiverdNum = receiverdNum.add(rewardItem.getRewardNum());
|
||||
} else if (Constant.status.valid.equals(status)) {
|
||||
level = rewardItem.getLevel();
|
||||
levelName = rewardItem.getLevelName();
|
||||
rewardNum = rewardNum.add(rewardItem.getRewardNum());
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
String bonusKey = String.join("_", po.getId().toString(), rewardItem.getLevel().toString(), "bonus");
|
||||
Byte bonusStatus = weekMap.getOrDefault(bonusKey, Constant.status.delete).byteValue();
|
||||
if (Constant.status.invalid.equals(bonusStatus)) {
|
||||
bonusRewardNum = rewardNum.add(rewardItem.getBonusNum());
|
||||
receiverdNum = receiverdNum.add(rewardItem.getBonusNum());
|
||||
} else if (Constant.status.valid.equals(bonusStatus)) {
|
||||
bonusRewardNum = rewardNum.add(rewardItem.getBonusNum());
|
||||
}
|
||||
}
|
||||
|
||||
vo.setLevel(level);
|
||||
vo.setRewardNum(rewardNum);
|
||||
vo.setBonusRewardNum(bonusRewardNum);
|
||||
vo.setTotalRewardNum(rewardNum.add(bonusRewardNum));
|
||||
vo.setReceivedNum(receiverdNum);
|
||||
|
||||
vo.setUid(po.getUid());
|
||||
|
||||
Users u = usersMap.get(po.getUid());
|
||||
if (null != u){
|
||||
vo.setErbanNo(u.getErbanNo());
|
||||
vo.setNick(u.getNick());
|
||||
}
|
||||
|
||||
GuildMember guildMember = guildMemberMap.get(po.getId());
|
||||
if (null != guildMember){
|
||||
vo.setFamilyId(guildMember.getGuildId());
|
||||
|
||||
Guild guild = guildMap.get(guildMember.getGuildId());
|
||||
if (null != guild){
|
||||
vo.setFamilyName(guild.getName());
|
||||
|
||||
Users owner = usersMap.get(guild.getOwnerUid());
|
||||
if (null != owner){
|
||||
vo.setFamilyOwnerId(owner.getErbanNo());
|
||||
vo.setFamilyOwnerNick(owner.getNick());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
voPage.setRecords(voList);
|
||||
voPage.setTotal(poPage.getTotal());
|
||||
|
||||
return voPage;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
package com.accompany.admin.controller;
|
||||
|
||||
import com.accompany.admin.service.GuildMemberWeekLevelRewardRecordAdminService;
|
||||
import com.accompany.admin.vo.FamilyMemberWeekLevelRewardStatAdminVo;
|
||||
import com.accompany.business.vo.guild.GuildDateCycleVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.result.PageResult;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Api(tags = "主播周奖励", value = "主播周奖励")
|
||||
@RequestMapping("/admin/guildMemberWeekLevelReward")
|
||||
@RestController
|
||||
public class GuildMemberWeekLevelRewardAdminController {
|
||||
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardRecordAdminService service;
|
||||
|
||||
@ApiOperation("获取周期")
|
||||
@GetMapping("/listCycleDate")
|
||||
public BusiResult<List<GuildDateCycleVo>> listDateCycle(){
|
||||
List<GuildDateCycleVo> voList = new ArrayList<>();
|
||||
Date now = new Date();
|
||||
for (int i = 0; i < 8; i++) {
|
||||
Date date = DateTimeUtil.addDays(now, i * -7);
|
||||
Date monday = DateTimeUtil.getMonday(date, 0, 0, 0);
|
||||
Date sunday = DateTimeUtil.getSunday(date, 23, 59, 59);
|
||||
String mondayStr = DateTimeUtil.convertDate(monday);
|
||||
|
||||
GuildDateCycleVo vo = new GuildDateCycleVo();
|
||||
vo.setDateCycle(mondayStr);
|
||||
vo.setStartDate(monday);
|
||||
vo.setStartDateStr(mondayStr);
|
||||
vo.setEndDate(sunday);
|
||||
vo.setEndDateStr(DateTimeUtil.convertDate(sunday));
|
||||
vo.setCurrentCycle(i==0);
|
||||
voList.add(vo);
|
||||
}
|
||||
return BusiResult.success(voList);
|
||||
}
|
||||
|
||||
@ApiOperation("查询")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "partitionId", value = "分区id", required = true),
|
||||
@ApiImplicitParam(name = "cycleDate", value = "周期", required = true),
|
||||
@ApiImplicitParam(name = "guildId", value = "公会id"),
|
||||
@ApiImplicitParam(name = "guildOwnerErbanNo", value = "公会长id"),
|
||||
@ApiImplicitParam(name = "erbanNo", value = "id"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "页码"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "页长"),
|
||||
})
|
||||
@GetMapping("/page")
|
||||
public BusiResult<PageResult<FamilyMemberWeekLevelRewardStatAdminVo>> page(int partitionId,
|
||||
String cycleDate,
|
||||
Integer guildId,
|
||||
Long guildOwnerErbanNo,
|
||||
Long erbanNo,
|
||||
int pageNo, int pageSize){
|
||||
Page<FamilyMemberWeekLevelRewardStatAdminVo> page = service.page(partitionId, cycleDate, guildId, guildOwnerErbanNo, erbanNo, pageNo, pageSize);
|
||||
return BusiResult.success(new PageResult<>(page));
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@ApiOperation("导出")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "partitionId", value = "分区id", required = true),
|
||||
@ApiImplicitParam(name = "cycleDate", value = "周期"),
|
||||
@ApiImplicitParam(name = "guildId", value = "公会id"),
|
||||
@ApiImplicitParam(name = "guildOwnerErbanNo", value = "公会长id"),
|
||||
@ApiImplicitParam(name = "erbanNo", value = "id"),
|
||||
})
|
||||
@GetMapping("/export")
|
||||
public void export(HttpServletResponse response,
|
||||
int partitionId,
|
||||
String cycleDate,
|
||||
Integer guildId,
|
||||
Long guildOwnerErbanNo,
|
||||
Long erbanNo){
|
||||
Page<FamilyMemberWeekLevelRewardStatAdminVo> page = service.page(partitionId, cycleDate, guildId, guildOwnerErbanNo, erbanNo, -1, -1);
|
||||
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
// 这里URLEncoder.encode可以防止中文乱码
|
||||
String excelName = URLEncoder.encode("主播周奖励记录", StandardCharsets.UTF_8);
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
|
||||
EasyExcel.write(response.getOutputStream(), FamilyMemberWeekLevelRewardStatAdminVo.class).sheet("主播周奖励记录").doWrite(page.getRecords());
|
||||
}
|
||||
|
||||
}
|
@@ -1362,6 +1362,8 @@ public enum RedisKey {
|
||||
family_member_week_level_reward,
|
||||
guild_member_week_level_reward,
|
||||
|
||||
guild_member_room_mic_day_duration,
|
||||
|
||||
partition_info,
|
||||
|
||||
app_ui_setting,//app UI设置
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package com.accompany.common.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
@@ -63,6 +62,7 @@ public class DateTimeUtil {
|
||||
public static final DateTimeFormatter datetimeFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATETIME_PATTERN);
|
||||
public static final DateTimeFormatter dateHourFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_MINUTE_PATTERN);
|
||||
public static final DateTimeFormatter hoursFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DATE_HOUR_PATTERN);
|
||||
public static final DateTimeFormatter monthWithoutZeroDateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.MONTH_WITHOUT_ZERO_DATE_PATTERN);
|
||||
|
||||
public static final DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
|
||||
|
@@ -8,8 +8,11 @@ import java.math.BigDecimal;
|
||||
public class GuildMemberWeekLevelReward {
|
||||
|
||||
private Integer level;
|
||||
private String levelName;
|
||||
private Integer partitionId;
|
||||
private BigDecimal processNum;
|
||||
private BigDecimal rewardNum;
|
||||
private Integer micValidDay;
|
||||
private BigDecimal bonusNum;
|
||||
|
||||
}
|
||||
|
@@ -15,6 +15,8 @@ public class GuildMemberWeekLevelRewardRecord {
|
||||
private Integer level;
|
||||
private BigDecimal processNum;
|
||||
private BigDecimal rewardNum;
|
||||
private Integer micValidDay;
|
||||
private BigDecimal bonusNum;
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
|
@@ -14,6 +14,13 @@ public class GuildMemberWeekLevelRewardItemVo {
|
||||
private String id;
|
||||
@ApiModelProperty("等级")
|
||||
private Integer level;
|
||||
@ApiModelProperty("等级")
|
||||
private String levelName;
|
||||
@ApiModelProperty("上一级等级")
|
||||
private Integer preLevel;
|
||||
@ApiModelProperty("上一级等级")
|
||||
private String preLevelName;
|
||||
|
||||
@ApiModelProperty("进度")
|
||||
private BigDecimal processNum;
|
||||
@ApiModelProperty("长度")
|
||||
@@ -25,4 +32,14 @@ public class GuildMemberWeekLevelRewardItemVo {
|
||||
@ApiModelProperty("状态012")
|
||||
private Byte status;
|
||||
|
||||
@ApiModelProperty("在麦时长进度")
|
||||
private Integer bonusProcessNum;
|
||||
@ApiModelProperty("在麦时长上限")
|
||||
private Integer bonusMaxNum;
|
||||
@ApiModelProperty("在麦时长上限")
|
||||
private Integer bonusPreMaxNum;
|
||||
@ApiModelProperty("在麦时长奖励")
|
||||
private BigDecimal bonusRewardNum;
|
||||
@ApiModelProperty("状态012")
|
||||
private Byte bonusStatus;
|
||||
}
|
||||
|
@@ -13,8 +13,36 @@ public class GuildMemberWeekLevelRewardVo {
|
||||
|
||||
@ApiModelProperty("日期范围")
|
||||
private String dateRange;
|
||||
|
||||
@ApiModelProperty("倒计时秒")
|
||||
private Long countDownSecond;
|
||||
|
||||
@ApiModelProperty
|
||||
private Integer curLevel;
|
||||
@ApiModelProperty
|
||||
private String curLevelName;
|
||||
@ApiModelProperty("当前周进度")
|
||||
private BigDecimal processNum;
|
||||
@ApiModelProperty("当前周进度上限")
|
||||
private BigDecimal maxNum;
|
||||
|
||||
@ApiModelProperty("当前周进度上限")
|
||||
private Integer preLevel;
|
||||
@ApiModelProperty("当前周进度上限")
|
||||
private String preLevelName;
|
||||
@ApiModelProperty("当前周进度上一级上限")
|
||||
private BigDecimal preMaxNum;
|
||||
|
||||
@ApiModelProperty("当前周额外奖励上一级上限")
|
||||
private Integer bonusPreMaxNum;
|
||||
@ApiModelProperty("当前周额外奖励进度")
|
||||
private Integer bonusProcessNum;
|
||||
@ApiModelProperty("当前周额外奖励上线")
|
||||
private Integer bonusMaxNum;
|
||||
|
||||
@ApiModelProperty("最多奖励")
|
||||
private BigDecimal totalReward = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty("每级奖励")
|
||||
private List<GuildMemberWeekLevelRewardItemVo> itemList;
|
||||
|
||||
|
@@ -6,7 +6,7 @@ import com.accompany.business.message.GuildMemberIncreaseFlowMessage;
|
||||
import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardService;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardSelectService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
@@ -32,7 +32,7 @@ public class GuildMemberWeekLevelRewardDiamondListener implements ApplicationLis
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekDiamondLevelRewardService;
|
||||
private GuildMemberWeekLevelRewardSelectService guildMemberWeekLevelRewardSelectService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@@ -61,7 +61,7 @@ public class GuildMemberWeekLevelRewardDiamondListener implements ApplicationLis
|
||||
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
Double totalDiamondNum = message.getTotalDiamondNum();
|
||||
|
||||
guildMemberWeekDiamondLevelRewardService.addProcess(guildMember.getId(), receiver.getPartitionId(), monday, totalDiamondNum);
|
||||
guildMemberWeekLevelRewardSelectService.addProcess(guildMember.getId(), receiver.getPartitionId(), monday, totalDiamondNum);
|
||||
|
||||
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(receiver.getPartitionId(),
|
||||
guildMember.getGuildId(), guildMember.getUid(), BigDecimal.ZERO, BigDecimal.valueOf(totalDiamondNum), time)));
|
||||
|
@@ -44,7 +44,7 @@ public class GuildWeekRewardHandler extends AbstractDailyTaskHandler {
|
||||
}
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
List<GuildMemberWeekLevelRewardVo> guildMemberWeekLevelRewardVos =
|
||||
guildMemberWeekLevelRewardService.listHistory(guildMember.getId(), partitionId, partitionEnum.getZoneId(), 1);
|
||||
guildMemberWeekLevelRewardService.listHistory(guildMember.getId(), partitionId, 1);
|
||||
if (CollectionUtils.isEmpty(guildMemberWeekLevelRewardVos)) {
|
||||
dailyTaskVo.setGuildWeekRewardItems(Collections.emptyList());
|
||||
return null;
|
||||
|
@@ -42,7 +42,7 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
|
||||
@Autowired
|
||||
private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekLevelRewardService;
|
||||
private GuildMemberWeekLevelRewardSelectService guildMemberWeekLevelRewardSelectService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
@Autowired
|
||||
@@ -92,7 +92,7 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
|
||||
|
||||
Date zoneTime = DateTimeUtil.withZoneSameInstant(giftSendRecord.getCreateTime(), partitionInfo.getZoneId());
|
||||
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
guildMemberWeekLevelRewardService.addProcess(guildMember.getId(), guildMember.getPartitionId(), monday, giftSendRecord.getTotalDiamondNum());
|
||||
guildMemberWeekLevelRewardSelectService.addProcess(guildMember.getId(), guildMember.getPartitionId(), monday, giftSendRecord.getTotalDiamondNum());
|
||||
|
||||
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(
|
||||
giftSendRecord.getPartitionId(), guildMember.getGuildId(), guildMember.getUid(),
|
||||
|
@@ -79,7 +79,7 @@ public class GuildManagerService {
|
||||
@Autowired
|
||||
private JedisService jedisService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekLevelRewardService;
|
||||
private GuildMemberWeekLevelRewardSelectService guildMemberWeekLevelRewardSelectService;
|
||||
@Autowired
|
||||
private SSGuildService ssGuildService;
|
||||
@Autowired
|
||||
@@ -164,7 +164,7 @@ public class GuildManagerService {
|
||||
vo.setCycleDiamondWageLevel(cycleDiamondWageLevelVo);
|
||||
|
||||
//主播周奖励
|
||||
GuildMemberWeekLevelRewardVo thisWeekVo = guildMemberWeekLevelRewardService.getThisWeekLevelRewardVo(guildMember.getId(),
|
||||
GuildMemberWeekLevelRewardVo thisWeekVo = guildMemberWeekLevelRewardSelectService.getThisWeekLevelRewardVo(guildMember.getId(),
|
||||
u.getPartitionId());
|
||||
vo.setWeekLevelReward(thisWeekVo);
|
||||
} catch (Exception e){
|
||||
|
@@ -0,0 +1,67 @@
|
||||
package com.accompany.business.service.guild;
|
||||
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.model.guild.GuildMemberWeekLevelReward;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardVo;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class GuildMemberWeekLevelRewardSelectService {
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekLevelRewardService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardV2Service guildMemberWeekLevelRewardV2Service;
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
|
||||
public GuildMemberWeekLevelRewardVo getThisWeekLevelRewardVo(Long uid, Integer partitionId) {
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
return guildMemberWeekLevelRewardV2Service.getThisWeekLevelRewardVo(uid, partitionId);
|
||||
}
|
||||
return guildMemberWeekLevelRewardService.getThisWeekLevelRewardVo(uid, partitionId);
|
||||
}
|
||||
|
||||
public void getReward(Long guildMemberId, Long uid, Integer partitionId, String id, Boolean isBonus) {
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
if (StringUtils.isBlank(id) || null == isBonus){
|
||||
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
|
||||
}
|
||||
guildMemberWeekLevelRewardV2Service.getReward(guildMemberId, uid, partitionId, id, isBonus);
|
||||
} else {
|
||||
guildMemberWeekLevelRewardService.getReward(guildMemberId, uid, partitionId, id);
|
||||
}
|
||||
}
|
||||
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId) {
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
return guildMemberWeekLevelRewardV2Service.listHistory(familyMemberId, partitionId);
|
||||
} else {
|
||||
return guildMemberWeekLevelRewardService.listHistory(familyMemberId, partitionId, 4);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendReward(Long uid, GuildMemberWeekLevelReward levelReward){
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
Integer partitionId = guildMember.getPartitionId();
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
guildMemberWeekLevelRewardV2Service.sendReward(uid, levelReward, true);
|
||||
} else {
|
||||
guildMemberWeekLevelRewardService.sendReward(uid, levelReward);
|
||||
}
|
||||
}
|
||||
|
||||
public void addProcess(Long uid, Integer partitionId, String monday, Number totalNum) {
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
guildMemberWeekLevelRewardV2Service.addProcess(uid, partitionId, monday, totalNum);
|
||||
} else {
|
||||
guildMemberWeekLevelRewardService.addProcess(uid, partitionId, monday, totalNum);
|
||||
}
|
||||
}
|
||||
}
|
@@ -197,11 +197,7 @@ public class GuildMemberWeekLevelRewardService extends ServiceImpl<GuildMemberWe
|
||||
processMap.expireAsync(30L, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId, String zoneId) {
|
||||
return listHistory(familyMemberId, partitionId, zoneId, 4);
|
||||
}
|
||||
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId, String zoneId, int weekSize) {
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId, int weekSize) {
|
||||
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
@@ -210,9 +206,9 @@ public class GuildMemberWeekLevelRewardService extends ServiceImpl<GuildMemberWe
|
||||
if (CollectionUtils.isEmpty(levelRewardList)){
|
||||
return null;
|
||||
}
|
||||
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
Date time = new Date();
|
||||
Date zoneTime = DateTimeUtil.withZoneSameInstant(time, zoneId);
|
||||
Date zoneTime = DateTimeUtil.withZoneSameInstant(time, partitionEnum.getZoneId());
|
||||
Date thisMonday = DateTimeUtil.getMondayDate(zoneTime);
|
||||
List<String> dateRangeList = new ArrayList<>();
|
||||
List<Date> mondayList = new ArrayList<>();
|
||||
|
@@ -0,0 +1,424 @@
|
||||
|
||||
package com.accompany.business.service.guild;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.accompany.business.model.guild.GuildMemberWeekLevelReward;
|
||||
import com.accompany.business.model.guild.GuildMemberWeekLevelRewardRecord;
|
||||
import com.accompany.business.mybatismapper.guild.GuildMemberWeekLevelRewardMapper;
|
||||
import com.accompany.business.mybatismapper.guild.GuildMemberWeekLevelRewardRecordMapper;
|
||||
import com.accompany.business.service.SendSysMsgService;
|
||||
import com.accompany.business.service.purse.UserPurseService;
|
||||
import com.accompany.business.service.record.BillRecordService;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardItemVo;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardVo;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.BillObjTypeEnum;
|
||||
import com.accompany.core.enumeration.I18nAlertEnum;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.util.I18NMessageSourceUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.redisson.api.RMap;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.Duration;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMemberWeekLevelRewardMapper, GuildMemberWeekLevelReward> {
|
||||
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
@Autowired
|
||||
private UserPurseService userPurseService;
|
||||
@Autowired
|
||||
private BillRecordService billRecordService;
|
||||
@Autowired
|
||||
private SendSysMsgService sendSysMsgService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardRecordMapper recordMapper;
|
||||
|
||||
private final String startMonday = "2025-09-01";
|
||||
|
||||
private int micDurationDayMax = 5;
|
||||
private int micDurationMax = 180 * 60;
|
||||
|
||||
|
||||
public GuildMemberWeekLevelRewardVo getThisWeekLevelRewardVo(Long uid, Integer partitionId) {
|
||||
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
.orderByAsc(GuildMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(levelRewardList)){
|
||||
return null;
|
||||
}
|
||||
|
||||
ZonedDateTime zdt = DateTimeUtil.getDateTimeByZoneId(partitionEnum.getZoneId());
|
||||
return getVo(uid, partitionId, zdt, levelRewardList, true, true);
|
||||
}
|
||||
|
||||
private GuildMemberWeekLevelRewardVo getVo(Long guildMemberId, Integer partitionId, ZonedDateTime zdt,
|
||||
List<GuildMemberWeekLevelReward> levelRewardList, boolean needFilter, boolean thisWeek) {
|
||||
|
||||
GuildMemberWeekLevelRewardVo vo = new GuildMemberWeekLevelRewardVo();
|
||||
vo.setCurLevel(null);
|
||||
vo.setCurLevelName("-");
|
||||
vo.setPreLevel(null);
|
||||
vo.setPreLevelName("-");
|
||||
vo.setPreMaxNum(BigDecimal.ZERO);
|
||||
vo.setProcessNum(BigDecimal.ZERO);
|
||||
vo.setMaxNum(BigDecimal.ZERO);
|
||||
|
||||
ZonedDateTime mondayTime = zdt.with(DayOfWeek.MONDAY).withHour(0).withMinute(0).withSecond(0);
|
||||
ZonedDateTime sundayTime = zdt.with(DayOfWeek.SUNDAY).withHour(23).withMinute(59).withSecond(59);
|
||||
String dateRange = String.join("-",
|
||||
mondayTime.format(DateTimeUtil.monthWithoutZeroDateFormatter),
|
||||
sundayTime.format(DateTimeUtil.monthWithoutZeroDateFormatter));
|
||||
vo.setDateRange(dateRange);
|
||||
|
||||
BigDecimal totalRewardNum = levelRewardList.stream()
|
||||
.map(reward -> reward.getRewardNum().add(reward.getBonusNum()))
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setTotalReward(totalRewardNum);
|
||||
|
||||
// 如果是本周,计算当前时间到本周日结束时间之间的秒数差
|
||||
if (thisWeek) {
|
||||
long secondsDiff = Duration.between(zdt, sundayTime).getSeconds();
|
||||
vo.setCountDownSecond(secondsDiff);
|
||||
}
|
||||
|
||||
String key = String.join("_", guildMemberId.toString(), "process");
|
||||
Set<String> keySet = levelRewardList.stream()
|
||||
.map(GuildMemberWeekLevelReward::getLevel)
|
||||
.map(level->String.join("_", guildMemberId.toString(), level.toString()))
|
||||
.collect(Collectors.toSet());
|
||||
keySet.add(key);
|
||||
Set<String> bonusKeySet = levelRewardList.stream()
|
||||
.map(GuildMemberWeekLevelReward::getLevel)
|
||||
.map(level->String.join("_", guildMemberId.toString(), level.toString(), "bonus"))
|
||||
.collect(Collectors.toSet());
|
||||
keySet.addAll(bonusKeySet);
|
||||
String bonusKey = String.join("_", guildMemberId.toString(), "bonus", "process");
|
||||
keySet.add(bonusKey);
|
||||
|
||||
String mondayDateStr = mondayTime.format(DateTimeUtil.dateFormatter);
|
||||
Map<String, Number> userProcessMap = getWeekMap(mondayDateStr, partitionId).getAll(keySet);
|
||||
BigDecimal userProcess = new BigDecimal(userProcessMap.getOrDefault(key, BigDecimal.ZERO).toString());
|
||||
int userBonusProcess = Math.min(userProcessMap.getOrDefault(bonusKey, 0).intValue(), micDurationDayMax);
|
||||
|
||||
vo.setBonusPreMaxNum(0);
|
||||
vo.setBonusProcessNum(userBonusProcess);
|
||||
vo.setBonusMaxNum(micDurationDayMax);
|
||||
|
||||
List<GuildMemberWeekLevelRewardItemVo> itemVoList = new ArrayList<>();
|
||||
vo.setItemList(itemVoList);
|
||||
|
||||
Integer curLevel = null, preLevel = null;
|
||||
String curLevelName = "-", preLevelName = "-";
|
||||
|
||||
BigDecimal preLevelMaxNum = BigDecimal.ZERO;
|
||||
BigDecimal remainUserProcess = userProcess;
|
||||
|
||||
for (GuildMemberWeekLevelReward levelReward: levelRewardList) {
|
||||
String levelId = levelReward.getLevel().toString();
|
||||
String id = String.join("_", guildMemberId.toString(), mondayDateStr, levelId);
|
||||
String statusId = String.join("_", guildMemberId.toString(), levelId);
|
||||
|
||||
BigDecimal processNum = remainUserProcess.compareTo(levelReward.getProcessNum()) >= 0?
|
||||
levelReward.getProcessNum() : remainUserProcess.compareTo(BigDecimal.ZERO) < 0?
|
||||
BigDecimal.ZERO: remainUserProcess;
|
||||
Byte status = userProcessMap.containsKey(statusId)?
|
||||
userProcessMap.get(statusId).byteValue():
|
||||
processNum.compareTo(levelReward.getProcessNum()) >= 0? Constant.status.valid: Constant.status.delete;
|
||||
|
||||
String bonusStatusId = String.join("_", guildMemberId.toString(), levelId, "bonus");
|
||||
Byte bonusStatus = userProcessMap.containsKey(bonusStatusId)?
|
||||
userProcessMap.get(bonusStatusId).byteValue():
|
||||
userBonusProcess >= levelReward.getMicValidDay() && !status.equals(Constant.status.delete)?
|
||||
Constant.status.valid: Constant.status.delete;
|
||||
|
||||
if (!needFilter && !thisWeek
|
||||
&& !CollectionUtils.isEmpty(itemVoList)
|
||||
&& !Constant.status.valid.equals(status)
|
||||
&& !Constant.status.invalid.equals(status)){
|
||||
break;
|
||||
}
|
||||
|
||||
if (remainUserProcess.compareTo(BigDecimal.ZERO) >= 0){
|
||||
curLevel = levelReward.getLevel();
|
||||
curLevelName = levelReward.getLevelName();
|
||||
} else if (needFilter) {
|
||||
break;
|
||||
}
|
||||
|
||||
GuildMemberWeekLevelRewardItemVo itemVo = new GuildMemberWeekLevelRewardItemVo();
|
||||
itemVo.setId(id);
|
||||
itemVo.setLevel(levelReward.getLevel());
|
||||
itemVo.setLevelName(levelReward.getLevelName());
|
||||
itemVo.setPreLevel(preLevel);
|
||||
itemVo.setPreLevelName(preLevelName);
|
||||
itemVo.setProcessNum(processNum);
|
||||
itemVo.setMaxNum(levelReward.getProcessNum());
|
||||
itemVo.setPreMaxNum(preLevelMaxNum);
|
||||
itemVo.setRewardNum(levelReward.getRewardNum());
|
||||
itemVo.setStatus(status);
|
||||
|
||||
itemVo.setBonusProcessNum(userBonusProcess);
|
||||
itemVo.setBonusMaxNum(levelReward.getMicValidDay());
|
||||
itemVo.setBonusPreMaxNum(0);
|
||||
itemVo.setBonusRewardNum(levelReward.getBonusNum());
|
||||
itemVo.setBonusStatus(bonusStatus);
|
||||
|
||||
itemVoList.add(itemVo);
|
||||
|
||||
remainUserProcess = remainUserProcess.subtract(levelReward.getProcessNum());
|
||||
|
||||
preLevelName = levelReward.getLevelName();
|
||||
preLevel = levelReward.getLevel();
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(vo.getItemList())){
|
||||
return vo;
|
||||
}
|
||||
|
||||
GuildMemberWeekLevelRewardItemVo curLevelReward = null;
|
||||
vo.setCurLevel(curLevel);
|
||||
vo.setCurLevelName(curLevelName);
|
||||
for (GuildMemberWeekLevelRewardItemVo voItem: vo.getItemList()){
|
||||
if (!voItem.getLevel().equals(curLevel)){
|
||||
continue;
|
||||
}
|
||||
curLevelReward = voItem;
|
||||
}
|
||||
|
||||
if (null == curLevelReward){
|
||||
curLevelReward = itemVoList.get(0);
|
||||
}
|
||||
|
||||
vo.setPreLevel(curLevelReward.getPreLevel());
|
||||
vo.setPreMaxNum(curLevelReward.getPreMaxNum());
|
||||
vo.setCurLevel(curLevelReward.getLevel());
|
||||
vo.setProcessNum(curLevelReward.getProcessNum());
|
||||
vo.setMaxNum(curLevelReward.getMaxNum());
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
public void getReward(Long guildMemberId, Long uid, Integer partitionId, String id, Boolean isBonus) {
|
||||
String[] keyArray = id.split("_");
|
||||
if (keyArray.length != 3 || !guildMemberId.equals(Long.parseLong(keyArray[0]))) {
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
|
||||
String monday = keyArray[1];
|
||||
|
||||
Integer level = Integer.parseInt(keyArray[2]);
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
.le(GuildMemberWeekLevelReward::getLevel, level)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(levelRewardList)) {
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
|
||||
GuildMemberWeekLevelReward levelReward = levelRewardList.stream().filter(item -> item.getLevel().equals(level)).findFirst().orElse(null);
|
||||
if (null == levelReward){
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
|
||||
BigDecimal needProcessNum = levelRewardList.stream().map(GuildMemberWeekLevelReward::getProcessNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
String levelId = levelReward.getLevel().toString();
|
||||
String userProcessKey = String.join("_", guildMemberId.toString(), "process");
|
||||
String statusId = String.join("_", guildMemberId.toString(), levelId);
|
||||
String bonusStatusId = String.join("_", guildMemberId.toString(), levelId, "bonus");
|
||||
|
||||
Set<String> keySet = Set.of(userProcessKey, statusId, bonusStatusId);
|
||||
|
||||
RMap<String, Number> processMap = getWeekMap(monday, partitionId);
|
||||
Map<String, Number> userProcessMap = processMap.getAll(keySet);
|
||||
BigDecimal userProcess = new BigDecimal(userProcessMap.getOrDefault(userProcessKey, BigDecimal.ZERO).toString());
|
||||
if (needProcessNum.compareTo(userProcess) > 0){
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
Byte status = userProcessMap.getOrDefault(statusId, Constant.status.delete).byteValue();
|
||||
if (!isBonus){
|
||||
if (!Constant.status.delete.equals(status) || !processMap.fastPutIfAbsent(statusId, Constant.status.invalid)){
|
||||
throw new ServiceException(BusiStatus.CHARGE_RECEICVE_REPEAT);
|
||||
}
|
||||
} else {
|
||||
Byte bonusStatus = userProcessMap.getOrDefault(bonusStatusId, Constant.status.delete).byteValue();
|
||||
if (Constant.status.delete.equals(status) || !Constant.status.delete.equals(bonusStatus) || !processMap.fastPutIfAbsent(bonusStatusId, Constant.status.invalid)){
|
||||
throw new ServiceException(BusiStatus.CHARGE_RECEICVE_REPEAT);
|
||||
}
|
||||
}
|
||||
|
||||
this.sendReward(uid, levelReward, isBonus);
|
||||
|
||||
boolean isInsert = false;
|
||||
GuildMemberWeekLevelRewardRecord record = recordMapper.selectOne(Wrappers.<GuildMemberWeekLevelRewardRecord>lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getGuildMemberId, guildMemberId)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getMonday, monday)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getLevel, levelReward.getLevel()));
|
||||
if (null == record){
|
||||
record = new GuildMemberWeekLevelRewardRecord();
|
||||
record.setGuildMemberId(guildMemberId);
|
||||
record.setUid(uid);
|
||||
record.setMonday(monday);
|
||||
record.setLevel(levelReward.getLevel());
|
||||
record.setProcessNum(BigDecimal.ZERO);
|
||||
record.setRewardNum(BigDecimal.ZERO);
|
||||
record.setMicValidDay(0);
|
||||
record.setBonusNum(BigDecimal.ZERO);
|
||||
isInsert = true;
|
||||
}
|
||||
|
||||
if (isBonus){
|
||||
record.setMicValidDay(levelReward.getMicValidDay());
|
||||
record.setBonusNum(levelReward.getBonusNum());
|
||||
} else {
|
||||
record.setProcessNum(levelReward.getProcessNum());
|
||||
record.setRewardNum(levelReward.getRewardNum());
|
||||
}
|
||||
|
||||
if (isInsert){
|
||||
record.setCreateTime(new Date());
|
||||
recordMapper.insert(record);
|
||||
} else {
|
||||
recordMapper.update(record, Wrappers.<GuildMemberWeekLevelRewardRecord>lambdaUpdate()
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getGuildMemberId, guildMemberId)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getMonday, monday)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getLevel, levelReward.getLevel()));
|
||||
}
|
||||
|
||||
String tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.FAMILY_MEMBER_WEEK_LEVEL_REWARD,
|
||||
new Object[]{levelReward.getLevel(), levelReward.getRewardNum()}, partitionId);
|
||||
sendSysMsgService.sendPersonTextMsg(uid, tip);
|
||||
|
||||
processMap.expireAsync(30L, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId) {
|
||||
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
.orderByAsc(GuildMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(levelRewardList)){
|
||||
return null;
|
||||
}
|
||||
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
ZonedDateTime zdt = DateTimeUtil.getDateTimeByZoneId(partitionEnum.getZoneId());
|
||||
|
||||
List<String> dateRangeList = new ArrayList<>();
|
||||
List<ZonedDateTime> timeList = new ArrayList<>();
|
||||
for (int i = 0; i < 4; i++) {
|
||||
ZonedDateTime t = zdt.minusWeeks(i);
|
||||
timeList.add(t);
|
||||
|
||||
|
||||
String mondayDate = t.with(DayOfWeek.MONDAY).format(DateTimeUtil.dateFormatter);
|
||||
if (mondayDate.compareTo(startMonday) < 0){
|
||||
continue;
|
||||
}
|
||||
|
||||
String monday = t.with(DayOfWeek.MONDAY).format(DateTimeUtil.monthWithoutZeroDateFormatter);
|
||||
String sunday = t.with(DayOfWeek.SUNDAY).format(DateTimeUtil.monthWithoutZeroDateFormatter);
|
||||
String dateRange = String.join("-", monday, sunday);
|
||||
dateRangeList.add(dateRange);
|
||||
}
|
||||
|
||||
Map<String, GuildMemberWeekLevelRewardVo> map = timeList.parallelStream().map(t->
|
||||
getVo(familyMemberId, partitionId, t, levelRewardList, false, t.equals(zdt)))
|
||||
.collect(Collectors.toMap(GuildMemberWeekLevelRewardVo::getDateRange, t->t));
|
||||
|
||||
return dateRangeList.stream()
|
||||
.map(map::get).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void sendReward(Long uid, GuildMemberWeekLevelReward levelReward, Boolean isBonus){
|
||||
double rewardNum = !isBonus? levelReward.getRewardNum().doubleValue(): levelReward.getBonusNum().doubleValue();
|
||||
String objId = !isBonus? levelReward.getLevel().toString(): String.join("_", levelReward.getLevel().toString(), "bonus");
|
||||
userPurseService.addDiamond(uid, levelReward.getRewardNum().doubleValue(), BillObjTypeEnum.GUILD_MEMBER_WEEK_LEVEL_REWARD,
|
||||
(userPurse -> billRecordService.insertGeneralBillRecord(uid, objId, BillObjTypeEnum.GUILD_MEMBER_WEEK_LEVEL_REWARD, rewardNum, userPurse)));
|
||||
}
|
||||
|
||||
public void addProcess(Long guildMemberId, Integer partitionId, String monday, Number totalNum) {
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
.orderByAsc(GuildMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(levelRewardList)){
|
||||
return;
|
||||
}
|
||||
|
||||
String key = String.join("_", guildMemberId.toString(), "process");
|
||||
RMap<String, Number> processMap = getWeekMap(monday, partitionId);
|
||||
BigDecimal num = new BigDecimal(totalNum.toString());
|
||||
BigDecimal after = new BigDecimal(processMap.addAndGet(key, num).toString());
|
||||
|
||||
//todo log
|
||||
|
||||
processMap.expireAsync(Duration.ofDays(45L));
|
||||
}
|
||||
|
||||
public RMap<String, Number> getWeekMap(String monday, Integer partitionId){
|
||||
return redissonClient.getMap(RedisKey.guild_member_week_level_reward.getKey(monday, partitionId.toString()));
|
||||
}
|
||||
|
||||
public void addBonusProcess(String monday, Integer partitionId, Long guildMemberId, Integer before, Integer after) {
|
||||
if (before >= micDurationMax || after < micDurationMax){
|
||||
return;
|
||||
}
|
||||
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
.orderByAsc(GuildMemberWeekLevelReward::getLevel)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(levelRewardList)){
|
||||
return;
|
||||
}
|
||||
|
||||
String key = String.join("_", guildMemberId.toString(), "bonus", "process");
|
||||
RMap<String, Number> processMap = getWeekMap(monday, partitionId);
|
||||
Integer bonusAfter = processMap.addAndGet(key, 1).intValue();
|
||||
Integer bonusBefore = bonusAfter - 1;
|
||||
|
||||
//todo log
|
||||
|
||||
processMap.expireAsync(Duration.ofDays(45L));
|
||||
}
|
||||
|
||||
|
||||
public void addDayDuration(Integer partitionId, String date, Long guildMemberId, Integer seconds) {
|
||||
String monday = DateUtil.formatDate(DateUtil.beginOfWeek(DateUtil.parseDate(date)));
|
||||
String cacheKey = RedisKey.guild_member_room_mic_day_duration.getKey(monday, partitionId.toString());
|
||||
RMap<String, Integer> countMap = redissonClient.getMap(cacheKey);
|
||||
|
||||
String key = String.join("_", guildMemberId.toString(), date);
|
||||
Integer after = countMap.addAndGet(key, seconds);
|
||||
Integer before = after - seconds;
|
||||
|
||||
this.addBonusProcess(monday, partitionId, guildMemberId, before, after);
|
||||
|
||||
//todo log
|
||||
countMap.expireAsync(Duration.ofDays(14));
|
||||
}
|
||||
|
||||
}
|
@@ -7,6 +7,7 @@ import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.model.guildpolicy2.GuildDiamondClearPolicy2;
|
||||
import com.accompany.business.service.guild.GuildAuthService;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardV2Service;
|
||||
import com.accompany.business.service.purse.UserPurseService;
|
||||
import com.accompany.business.service.room.RoomMicService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
@@ -63,6 +64,8 @@ public class GuildPolicy2Service {
|
||||
private ThreadPoolExecutor bizExecutor;
|
||||
@Autowired
|
||||
private GuildCrystalSettlementService guildCrystalSettlementService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardV2Service guildMemberWeekLevelRewardV2Service;
|
||||
|
||||
public BusiResult<GuildPolicy2Vo> getGuildPolicy2(Long uid, String cycleBeginDate) {
|
||||
GuildPolicy2Vo guildPolicy2Vo = new GuildPolicy2Vo();
|
||||
@@ -183,12 +186,17 @@ public class GuildPolicy2Service {
|
||||
String statDate = entry.getKey();
|
||||
Date date = DateUtil.parseDate(statDate);
|
||||
String cycleDate;
|
||||
if (PartitionEnum.getByPartitionId(guildMember.getPartitionId()).getClanMode().equals(Constant.ClanMode.GUILD)) {
|
||||
Integer partitionId = guildMember.getPartitionId();
|
||||
if (PartitionEnum.getByPartitionId(partitionId).getClanMode().equals(Constant.ClanMode.GUILD)) {
|
||||
cycleDate = CycleTimeUtil.getAgencyCycleBeginDateStr(date);
|
||||
} else {
|
||||
cycleDate = FullMonthCycleTimeUtil.getAgencyCycleBeginDateStr(date);
|
||||
}
|
||||
guildMicStatisticsPolicy2Service.updateDayMicStatistics(cycleDate, statDate, guildMember, micMinutes);
|
||||
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
guildMemberWeekLevelRewardV2Service.addDayDuration(partitionId, statDate, guildMember.getId(), micMinutes * 60);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -2,14 +2,13 @@ package com.accompany.business.controller.guild;
|
||||
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardService;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardSelectService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardVo;
|
||||
import com.accompany.common.annotation.Authorization;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.base.UidContextHolder;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Users;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -35,7 +34,7 @@ public class GuildMemberWeekLevelRewardController {
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekLevelRewardService;
|
||||
private GuildMemberWeekLevelRewardSelectService guildMemberWeekLevelRewardSelectService;
|
||||
|
||||
@ApiOperation("主页")
|
||||
@Authorization
|
||||
@@ -49,18 +48,18 @@ public class GuildMemberWeekLevelRewardController {
|
||||
throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED);
|
||||
}
|
||||
|
||||
List<GuildMemberWeekLevelRewardVo> list = guildMemberWeekLevelRewardService.listHistory(guildMember.getId(), u.getPartitionId(),
|
||||
PartitionEnum.getByPartitionId(u.getPartitionId()).getZoneId());
|
||||
List<GuildMemberWeekLevelRewardVo> list = guildMemberWeekLevelRewardSelectService.listHistory(guildMember.getId(), u.getPartitionId());
|
||||
return BusiResult.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation("领奖")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "id"),
|
||||
@ApiImplicitParam(name = "id", value = "id", required = true),
|
||||
@ApiImplicitParam(name = "isBonus", value = "isBonus", required = true),
|
||||
})
|
||||
@Authorization
|
||||
@PostMapping("/getReward")
|
||||
public BusiResult<Void> getReward(String id){
|
||||
public BusiResult<Void> getReward(String id, Boolean isBonus){
|
||||
if (StringUtils.isBlank(id)){
|
||||
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
|
||||
}
|
||||
@@ -73,7 +72,7 @@ public class GuildMemberWeekLevelRewardController {
|
||||
throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED);
|
||||
}
|
||||
|
||||
guildMemberWeekLevelRewardService.getReward(guildMember.getId(), uid, u.getPartitionId(), id);
|
||||
guildMemberWeekLevelRewardSelectService.getReward(guildMember.getId(), uid, u.getPartitionId(), id, isBonus);
|
||||
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
Reference in New Issue
Block a user