添加英语2区分区,公会长政策fixed

This commit is contained in:
2025-03-26 18:16:37 +08:00
parent 0f732904d7
commit 545693b8b2
12 changed files with 141 additions and 22 deletions

View File

@@ -82,14 +82,14 @@ public class AnchorSalaryBillController {
@ApiOperation("结算")
@GetMapping("/settle")
public BaseResponseVO<Void> settle(String dateStr) throws Exception {
public BaseResponseVO<Void> settle(String dateStr, Integer partitionId) throws Exception {
//发放奖励逻辑每月1号/16号为结算日沙特时间00:10次月1号结算上月16号-月结束的奖励每月16号结算本月1-15号的奖励
Date date = DateUtil.parseDate(dateStr);
Date agencyCycleBeginDate = CycleTimeUtil.getAgencyCycleBeginDate(date);
String shortDate = DateUtil.formatDate(date);
String cycleDate = DateUtil.formatDate(agencyCycleBeginDate);
if (shortDate.equals(cycleDate)) {
guildSalaryBillDateCycleService.settleAnchorBill(DateTimeUtil.convertDate(DateTimeUtil.addDays(date,-1)));
guildSalaryBillDateCycleService.settleAnchorBill(DateTimeUtil.convertDate(DateTimeUtil.addDays(date,-1)), partitionId);
}
return new BaseResponseVO<>(BusiStatus.SUCCESS);
}

View File

@@ -11,6 +11,7 @@ public enum PartitionEnum {
ARAB(2, "Asia/Riyadh", "阿语区", "ar"),
CHINESS(4, "Asia/Hong_Kong", "中文区", "zh"),
TURKEY(8, "Europe/Istanbul", "土耳其区", "tr"),
ENGLISH2(16, "Asia/Manila", "英语区", "en"),
;
private final int id;

View File

@@ -12,6 +12,7 @@ import com.accompany.business.service.room.RoomService;
import com.accompany.business.service.room.RoomServiceFactory;
import com.accompany.common.constant.Constant;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.model.Room;
import com.alibaba.fastjson.JSONObject;
import lombok.SneakyThrows;
@@ -79,7 +80,10 @@ public class RankListener implements ApplicationListener<GiftMessageEvent> {
//免费礼物特殊处理
boolean isFreeGift = Constant.GiftConsumeType.ROOM_FREE_GIFT == gift.getConsumeType();
Long giftGoldNum = isFreeGift ? Math.abs(gift.getGoldPrice() * giftNum) : goldNum;
roomRankService.updateRoomRank(roomUid, sendUid, recvUid, giftGoldNum.doubleValue(), date, isFreeGift, partitionId);
Double roomDiamond = PartitionEnum.ENGLISH2.getId() == partitionId ? giftMessage.getDiamondNum() : Double.valueOf(giftGoldNum);
roomRankService.updateRoomRank(roomUid, sendUid, recvUid, roomDiamond, date, isFreeGift, partitionId);
//发送榜单更新
if (roomUid != null) {
Room room = roomService.getRoomByUid(roomUid);

View File

@@ -26,7 +26,7 @@ public interface GuildUsdBillRecordMapper extends BaseMapper<GuildUsdBillRecord>
@Param("salaryOperateType") Integer salaryOperateType);
List<GuildSalaryBillDateCycle> settleAnchorBill(@Param("dateCycle") String dateCycle, @Param("endDate") Date endDate);
List<GuildSalaryBillDateCycle> settleAnchorBill(@Param("dateCycle") String dateCycle, @Param("endDate") Date endDate, @Param("partitionId") Integer partitionId);
Page<AnchorSalaryBillAdminVo> anchorSummary(@Param("page") Page<AnchorSalaryBillAdminVo> page,
@Param("dateCycle") String dateCycle, @Param("uid") Long uid, @Param("hallId") Integer hallId, @Param("partitionId") Integer partitionId);

View File

@@ -78,7 +78,7 @@ public class GiftEarnAllotService {
@Autowired
private ApplicationContext applicationContext;
public void allotGiftEarn(GiftSendRecord record, String objId, BillObjTypeEnum inEnum) {
public Double allotGiftEarn(GiftSendRecord record, String objId, BillObjTypeEnum inEnum) {
long uid = record.getReciveUid();
Users u = usersService.getUsersByUid(uid);
if (null == u){
@@ -89,6 +89,7 @@ public class GiftEarnAllotService {
if (null == partitionInfo){
throw new ServiceException(BusiStatus.BUSIERROR);
}
Double diamondNum = 0D;
if (Constant.ClanMode.CLAN_HALL.equals(partitionInfo.getClanMode())){
log.info("[处理礼物mq] giftEarnByClanHall recvUid {} partitionInfo {} clanMode {}",
@@ -101,11 +102,12 @@ public class GiftEarnAllotService {
} else if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) {
log.info("[处理礼物mq] giftEarnByGuild recvUid {} partitionInfo {} clanMode {}",
uid, partitionInfo.getLanguages(), partitionInfo.getClanMode());
allotGiftEarnByGuild(record, partitionInfo.getId(), objId, inEnum);
diamondNum = allotGiftEarnByGuild(record, partitionInfo.getId(), objId, inEnum);
}
return diamondNum;
}
private void allotGiftEarnByGuild(GiftSendRecord record, Integer partitionId, String objId, BillObjTypeEnum inEnum){
private Double allotGiftEarnByGuild(GiftSendRecord record, Integer partitionId, String objId, BillObjTypeEnum inEnum){
Long receiverUid = record.getReciveUid();
Long roomUid = record.getRoomUid();
BigDecimal golds = BigDecimal.valueOf(record.getTotalGoldNum());
@@ -120,7 +122,7 @@ public class GiftEarnAllotService {
guildGiftRecordService.insertGuildGiftRecord(record);
if (Double.compare(amount, 0d) <= 0){
return;
return amount;
}
userPurseService.addGold(receiverUid, amount, inEnum,
@@ -128,6 +130,8 @@ public class GiftEarnAllotService {
record.getGiftId(), record.getGiftNum(), record.getTotalGoldNum(), record.getCreateTime(), userPurse));
log.info("[处理礼物mq] addGuildMemberGoldNum recvUid {} recvRate {} recvAmount {}", receiverUid, rate, amount);
return amount;
}
private void allotGiftEarnByFamily(GiftSendRecord record, Integer partitionId, String objId, BillObjTypeEnum inEnum){

View File

@@ -98,15 +98,16 @@ public class GiftMessageService extends BaseService {
giftMessage.getGiftId(), giftMessage.getGiftNum(), totalGoldNum, giftSendTime,
giftMessage.getAfterPurse());
Double diamondNum = 0D;//钻石流水
//处理逻辑
if (Constant.GiftType.SUPER_LUCKY != giftType
&& Constant.GiftType.LUCKY_24 != giftType
&& Constant.GiftType.BRAVO_GIFT != giftType) {
//按配置比例分配主播、 会长、房主收益
giftEarnAllotService.allotGiftEarn(giftSendRecord, objId, inEnum);
diamondNum = giftEarnAllotService.allotGiftEarn(giftSendRecord, objId, inEnum);
giftMessage.setDiamondNum(diamondNum);
//增加送礼用户和收礼用户的财富或魅力经验
addUserExperience(giftMessage);
addUserExper(giftMessage);
applicationContext.publishEvent(new ActivityOfDayConsumeEvent(ActivityOfDayConsumeMessage.builder()
.sendUid(giftMessage.getSendUid())

View File

@@ -17,5 +17,5 @@ public interface GuildSalaryBillDateCycleService extends IService<GuildSalaryBil
Page<AnchorSalaryBillAdminVo> anchorSummary(Page<AnchorSalaryBillAdminVo> page, String dateCycle, Long uid, Integer hallId, Integer partitionId);
void settleAnchorBill(String date);
void settleAnchorBill(String date, Integer partitionId);
}

View File

@@ -34,10 +34,10 @@ public class GuildSalaryBillDateCycleServiceImpl extends ServiceImpl<GuildSalary
}
@Override
public void settleAnchorBill(String date) {
public void settleAnchorBill(String date, Integer partitionId) {
GuildDateCycleVo dateCycle = agencyMonthSettleService.getDateCycle(date);
this.delAnchorBillByDateCycle(dateCycle.getDateCycle());
List<GuildSalaryBillDateCycle> list = guildUsdBillRecordService.settleAnchorBill(dateCycle.getDateCycle(), dateCycle.getEndDate());
List<GuildSalaryBillDateCycle> list = guildUsdBillRecordService.settleAnchorBill(dateCycle.getDateCycle(), dateCycle.getEndDate(), partitionId);
for (GuildSalaryBillDateCycle anchorSalaryBillDateCycle : list) {
anchorSalaryBillDateCycle.setStatDate(dateCycle.getStartDate());
}

View File

@@ -317,8 +317,8 @@ public class GuildUsdBillRecordService extends ServiceImpl<GuildUsdBillRecordMap
return anchorSalaryBillAdminVos;
}
public List<GuildSalaryBillDateCycle> settleAnchorBill(String dateCycle, Date endDate) {
return this.baseMapper.settleAnchorBill(dateCycle, endDate);
public List<GuildSalaryBillDateCycle> settleAnchorBill(String dateCycle, Date endDate, Integer partitionId) {
return this.baseMapper.settleAnchorBill(dateCycle, endDate, partitionId);
}

View File

@@ -137,6 +137,9 @@
group by uid ,guild_id) a ON hm.uid = a.uid AND hm.guild_id = a.guild_id
left join user_purse up on up.uid = hm.uid
WHERE hm.create_time &lt;= #{endDate}
<if test="partitionId != null">
and hm.partition_id = #{partitionId}
</if>
order by hm.guild_id asc ,up.guild_usd desc
</select>

View File

@@ -0,0 +1,99 @@
package com.accompany.scheduler.task.guild;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.service.guild.AgencyMonthSettleService;
import com.accompany.business.service.guild.GuildSalaryBillDateCycleService;
import com.accompany.business.util.CycleTimeUtil;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component
@Slf4j
public class GuildSettle4EnTask {
@Autowired
private AgencyMonthSettleService agencyMonthSettleService;
@Autowired
private GuildSalaryBillDateCycleService guildSalaryBillDateCycleService;
//zone = "Asia/Riyadh zone = "Etc/GMT-3" 两种方式都支持
/**
* 公户月结算,用户明细
* 每月1号凌晨0点10分执行
*/
@Scheduled(cron = "0 10 0 1 * ?")
public void monthRank4EnTaskAll2() {
Date date = new Date();
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH2);
for (PartitionEnum partitionEnum : partitionEnumList) {
try {
DateTime lastMonth = DateUtil.offsetMonth(date, -1);
DateTime beginTime = DateUtil.offsetDay(lastMonth, 15);
DateTime endTime = DateUtil.beginOfDay(date);
log.info("=-=monthRank4EnTaskAll2=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime), DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskAll(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRank4EnTaskAll2=-= end");
log.info("=-=monthRankTaskDetail2=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime), DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskDetail(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRankTaskDetail2=-= end");
} catch (Exception e) {
log.error("[monthRank4EnTaskAll2] 异常", e);
}
}
}
/**
* 公会月结算
* 每月16号凌晨0点10分执行
*/
@Scheduled(cron = "0 10 0 16 * ?")
public void monthRankTask() {
Date date = new Date();
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH2);
for (PartitionEnum partitionEnum : partitionEnumList) {
try {
DateTime beginTime = DateUtil.beginOfMonth(date);
DateTime endTime = DateUtil.beginOfDay(date);
log.info("=-=monthRankTaskAll1=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime), DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskAll(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRankTaskAll1=-= end");
log.info("=-=monthRankTaskDetail1=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime), DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskDetail(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRankTaskDetail1=-= end");
} catch (Exception e) {
log.error("[monthRankTask异常] {}", e.getMessage());
}
}
}
/**
* 主播薪资操作记录结算
*/
@Scheduled(cron = "0 10 0 * * ?")
public void settleAnchorBill() {
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH2);
for (PartitionEnum partitionEnum : partitionEnumList) {
try {
//发放奖励逻辑每月1号/16号为结算日沙特时间00:10次月1号结算上月16号-月结束的奖励每月16号结算本月1-15号的奖励
Date date = new Date();
Date agencyCycleBeginDate = CycleTimeUtil.getAgencyCycleBeginDate(date);
String shortDate = DateUtil.formatDate(date);
String cycleDate = DateUtil.formatDate(agencyCycleBeginDate);
if (shortDate.equals(cycleDate)) {
guildSalaryBillDateCycleService.settleAnchorBill(DateTimeUtil.convertDate(DateTimeUtil.addDays(date, -1)), partitionEnum.getId());
}
} catch (Exception e) {
log.error("[monthRankTask异常] {}", e.getMessage());
}
}
}
}

View File

@@ -80,12 +80,19 @@ public class GuildSettleTask {
@Scheduled(cron = "0 10 0 * * ?", zone = "Etc/GMT-3")
public void settleAnchorBill() {
//发放奖励逻辑每月1号/16号为结算日沙特时间00:10次月1号结算上月16号-月结束的奖励每月16号结算本月1-15号的奖励
Date date = new Date();
Date agencyCycleBeginDate = CycleTimeUtil.getAgencyCycleBeginDate(date);
String shortDate = DateUtil.formatDate(date);
String cycleDate = DateUtil.formatDate(agencyCycleBeginDate);
if (shortDate.equals(cycleDate)){
guildSalaryBillDateCycleService.settleAnchorBill(DateTimeUtil.convertDate(DateTimeUtil.addDays(date,-1)));
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
for (PartitionEnum partitionEnum : partitionEnumList) {
try {
Date date = new Date();
Date agencyCycleBeginDate = CycleTimeUtil.getAgencyCycleBeginDate(date);
String shortDate = DateUtil.formatDate(date);
String cycleDate = DateUtil.formatDate(agencyCycleBeginDate);
if (shortDate.equals(cycleDate)) {
guildSalaryBillDateCycleService.settleAnchorBill(DateTimeUtil.convertDate(DateTimeUtil.addDays(date, -1)), partitionEnum.getId());
}
} catch (Exception e) {
log.error("[monthRankTask异常] {}", e.getMessage());
}
}
}