独联体-有效主播奖励

This commit is contained in:
2025-09-18 10:34:37 +08:00
parent 32c3616052
commit e57ecad216
2 changed files with 28 additions and 39 deletions

View File

@@ -5,6 +5,7 @@ import com.accompany.business.model.extradiamond.GuildExtraDiamondDay;
import com.accompany.business.model.extradiamond.RoomExtraDiamondDay; import com.accompany.business.model.extradiamond.RoomExtraDiamondDay;
import com.accompany.business.model.guild.Guild; import com.accompany.business.model.guild.Guild;
import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.purse.UserPurseService; import com.accompany.business.service.purse.UserPurseService;
import com.accompany.common.status.BusiStatus; import com.accompany.common.status.BusiStatus;
@@ -21,7 +22,9 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static com.accompany.common.constant.Constant.SysConfId.EXTRA_DIAMOND_RATE_CONFIG; import static com.accompany.common.constant.Constant.SysConfId.EXTRA_DIAMOND_RATE_CONFIG;
@@ -42,6 +45,8 @@ public class ExtraDiamondDayService {
private UserPurseService userPurseService; private UserPurseService userPurseService;
@Autowired @Autowired
private RedissonClient redissonClient; private RedissonClient redissonClient;
@Autowired
private GuildMemberService guildMemberService;
public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate, public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate,
Double normalDiamondNum, Double luckyDiamondNum, Date time) { Double normalDiamondNum, Double luckyDiamondNum, Date time) {
@@ -102,16 +107,29 @@ public class ExtraDiamondDayService {
if (!locked){ if (!locked){
throw new ServiceException(BusiStatus.SERVERBUSY); throw new ServiceException(BusiStatus.SERVERBUSY);
} }
//主播额外奖励 Map<Long, GuildMember> guildMemberMap = guildMemberService.mapByPartitionId(partitionId);
if (guildMemberMap.isEmpty()) {
log.info("empty guildMember partitionId:" + partitionId + " partitionId:" + statDate + " no guildMember");
return;
}
List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listByPartitionStatDate(partitionId, statDate); List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listByPartitionStatDate(partitionId, statDate);
if (CollectionUtils.isNotEmpty(guildExtraDiamondDays)) { if (CollectionUtils.isNotEmpty(guildExtraDiamondDays)) {
for (GuildExtraDiamondDay diamondDay : guildExtraDiamondDays) { Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
while (iterator.hasNext()) {
GuildExtraDiamondDay diamondDay = iterator.next();
if (guildMemberMap.get(diamondDay.getGuildMemberId()) == null) {
iterator.remove();
continue;
}
BigDecimal anchorExtraNum = diamondDay.getDiamondNum().multiply(diamondRateConfig.getAnchorExtraRate()); BigDecimal anchorExtraNum = diamondDay.getDiamondNum().multiply(diamondRateConfig.getAnchorExtraRate());
BigDecimal anchorExtraLuckyNum = diamondDay.getLuckyDiamondNum().multiply(diamondRateConfig.getAnchorExtraLuckyRate()); BigDecimal anchorExtraLuckyNum = diamondDay.getLuckyDiamondNum().multiply(diamondRateConfig.getAnchorExtraLuckyRate());
diamondDay.setAnchorExtraNum(anchorExtraNum); diamondDay.setAnchorExtraNum(anchorExtraNum);
diamondDay.setAnchorExtraLuckyNum(anchorExtraLuckyNum); diamondDay.setAnchorExtraLuckyNum(anchorExtraLuckyNum);
diamondDay.setUpdateTime(updateTime); diamondDay.setUpdateTime(updateTime);
} }
if (CollectionUtils.isEmpty(guildExtraDiamondDays)) {
return;
}
boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays); boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays);
if (updateBatchById) { if (updateBatchById) {
for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) { for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) {
@@ -131,43 +149,6 @@ public class ExtraDiamondDayService {
lock.unlock(); lock.unlock();
} }
} }
//房间额外奖励
lockKey = "sendLastDayDiamondtask_room_" + partitionId + "_" + statDate;
lock = redissonClient.getLock(lockKey);
locked = false;
try {
locked = lock.tryLock(20, TimeUnit.SECONDS);
if (!locked){
throw new ServiceException(BusiStatus.SERVERBUSY);
}
List<RoomExtraDiamondDay> roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionStatDate(partitionId, statDate);
if (CollectionUtils.isNotEmpty(roomExtraDiamondDays)) {
for (RoomExtraDiamondDay roomExtraDiamondDay : roomExtraDiamondDays) {
BigDecimal anchorExtraNum = roomExtraDiamondDay.getDiamondNum().multiply(diamondRateConfig.getRoomExtraRate());
BigDecimal anchorExtraLuckyNum = roomExtraDiamondDay.getLuckyDiamondNum().multiply(diamondRateConfig.getRoomExtraLuckyRate());
roomExtraDiamondDay.setRoomExtraNum(anchorExtraNum);
roomExtraDiamondDay.setRoomExtraLuckyNum(anchorExtraLuckyNum);
roomExtraDiamondDay.setUpdateTime(updateTime);
}
boolean updateBatchById = roomExtraDiamondDayService.updateBatchById(roomExtraDiamondDays);
if (updateBatchById) {
for (RoomExtraDiamondDay extraDiamondDay : roomExtraDiamondDays) {
BigDecimal addGold = extraDiamondDay.getRoomExtraNum().add(extraDiamondDay.getRoomExtraLuckyNum());
if (addGold.compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(extraDiamondDay.getUid(), addGold.doubleValue(), ROOM_EXTRA_GOLD);
}
}
}
}
} catch (Exception e) {
log.error("sendLastDayDiamondtask room error" , e);
} finally {
if (locked){
lock.unlock();
}
}
} }
public void sendRoomExtraDiamondTask(Integer partitionId, String statDate) { public void sendRoomExtraDiamondTask(Integer partitionId, String statDate) {

View File

@@ -127,4 +127,12 @@ public class GuildMemberService extends ServiceImpl<GuildMemberMapper, GuildMemb
} }
return guildMembers; return guildMembers;
} }
public Map<Long, GuildMember> mapByPartitionId(Integer partitionId) {
return this.lambdaQuery()
.eq(GuildMember::getPartitionId, partitionId)
.eq(GuildMember::getEnable, Boolean.TRUE)
.list().stream()
.collect(Collectors.toMap(GuildMember::getUid, fm->fm));
}
} }