独联体1

This commit is contained in:
2025-09-16 18:48:59 +08:00
parent 711c4fccc5
commit 36708c0a4b
15 changed files with 457 additions and 54 deletions

View File

@@ -1393,6 +1393,8 @@ public class Constant {
public static final String GUILD_MEMBER_NEW_UP_ACCEPT_REGION = "guild_member_new_up_accept_region"; public static final String GUILD_MEMBER_NEW_UP_ACCEPT_REGION = "guild_member_new_up_accept_region";
public static final String EXTRA_DIAMOND_RATE_CONFIG = "extra_diamond_rate_config";
public static final String CP_MIC_SVGA_URL = "cp_mic_svga_url"; public static final String CP_MIC_SVGA_URL = "cp_mic_svga_url";
} }

View File

@@ -33,6 +33,7 @@ public enum BillDomainTypeEnum {
GUILD_POLICY2(26, "土耳其公会政策2"), GUILD_POLICY2(26, "土耳其公会政策2"),
DAILY_TASK(27, "日任务奖励"), DAILY_TASK(27, "日任务奖励"),
GUILD_TASK(28, "公会开业奖励"), GUILD_TASK(28, "公会开业奖励"),
EXTRA_GOLD(29, "公会额外奖励"),
; ;
private int value; private int value;

View File

@@ -292,6 +292,9 @@ public enum BillObjTypeEnum {
DAILY_TASK_NEW_ANCHOR_DIAOMND( 196, "新公会主播金币", BillTypeEnum.IN, CurrencyEnum.DIAMOND, BillDomainTypeEnum.DAILY_TASK), DAILY_TASK_NEW_ANCHOR_DIAOMND( 196, "新公会主播金币", BillTypeEnum.IN, CurrencyEnum.DIAMOND, BillDomainTypeEnum.DAILY_TASK),
DAILY_TASK_NEW_ANCHOR_GOLD( 197, "新公会主播钻石", BillTypeEnum.IN, CurrencyEnum.GOLD, BillDomainTypeEnum.DAILY_TASK), DAILY_TASK_NEW_ANCHOR_GOLD( 197, "新公会主播钻石", BillTypeEnum.IN, CurrencyEnum.GOLD, BillDomainTypeEnum.DAILY_TASK),
DAILY_SHOP_BUY_DIAMOND( 198, "金豆兑换金币收入", BillTypeEnum.IN, CurrencyEnum.DIAMOND, BillDomainTypeEnum.DAILY_TASK), DAILY_SHOP_BUY_DIAMOND( 198, "金豆兑换金币收入", BillTypeEnum.IN, CurrencyEnum.DIAMOND, BillDomainTypeEnum.DAILY_TASK),
ANCHOR_EXTRA_GOLD( 199, "主播额外钻石收入", BillTypeEnum.IN, CurrencyEnum.GOLD, BillDomainTypeEnum.EXTRA_GOLD),
OWNER_EXTRA_GOLD( 200, "公会长额外钻石收入", BillTypeEnum.IN, CurrencyEnum.GOLD, BillDomainTypeEnum.EXTRA_GOLD),
ROOM_EXTRA_GOLD( 201, "房间额外钻石收入", BillTypeEnum.IN, CurrencyEnum.GOLD, BillDomainTypeEnum.EXTRA_GOLD),
; ;
BillObjTypeEnum(int value, String desc, BillTypeEnum type, CurrencyEnum currency, BillDomainTypeEnum domain) { BillObjTypeEnum(int value, String desc, BillTypeEnum type, CurrencyEnum currency, BillDomainTypeEnum domain) {

View File

@@ -0,0 +1,29 @@
package com.accompany.business.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
@Data
public class ExtraDiamondRateConfigDto {
private BigDecimal anchorExtraRate = BigDecimal.valueOf(0.0);
private BigDecimal anchorExtraLuckyRate = BigDecimal.valueOf(0.0);
private BigDecimal ownerExtraRate = BigDecimal.valueOf(0.0);
private BigDecimal ownerExtraLuckyRate = BigDecimal.valueOf(0.0);
private BigDecimal roomExtraRate = BigDecimal.valueOf(0.0);
private BigDecimal roomExtraLuckyRate = BigDecimal.valueOf(0.0);
private Map<Integer, ExtraDiamondRateConfigDto> partitionMap = new HashMap<>();
public ExtraDiamondRateConfigDto getConfigByPartitionId(Integer partitionId){
if (partitionMap == null) {
partitionMap = new HashMap<>();
}
return partitionMap.getOrDefault(partitionId, new ExtraDiamondRateConfigDto());
}
}

View File

@@ -0,0 +1,74 @@
package com.accompany.business.model.extradiamond;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公会钻石流水额外收入记录实体类
*
* @author
* @since 2025-09-16
*/
@Data
public class GuildExtraDiamondDay implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id" , type = IdType.AUTO)
private Long id;
private String cycleDate;
private Integer partitionId;
/**
* 统计日期
*/
private String statDate;
private Long guildMemberId;
/**
* 公会id
*/
private Integer guildId;
/**
* 主播ID
*/
private Long uid;
/**
* 公会长UID
*/
private Integer ownerUid;
/**
* 普通礼物钻石流水
*/
private BigDecimal diamondNum;
/**
* 幸运礼物钻石流水
*/
private BigDecimal luckyDiamondNum;
/**
* 主播普通额外奖励
*/
private BigDecimal anchorExtraNum;
/**
* 主播lucky额外奖励
*/
private BigDecimal anchorExtraLuckyNum;
/**
* 公会长普通额外奖励
*/
private BigDecimal ownerExtraNum;
/**
* 公会长lucky额外奖励
*/
private BigDecimal ownerExtraLuckyNum;
/**
* 创建时间
*/
private Date createTime;
private Date updateTime;
}

View File

@@ -0,0 +1,65 @@
package com.accompany.business.model.extradiamond;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 房间钻石流水额外收入记录实体类
*
* @author
* @since 2025-09-16
*/
@Data
public class RoomExtraDiamondDay implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id" , type = IdType.AUTO)
private Long id;
private Integer partitionId;
/**
* 统计日期
*/
private String statDate;
private Long guildMemberId;
/**
* 所属厅id
*/
private Integer guildId;
/**
* 主播ID
*/
private Long uid;
/**
* 房间UID
*/
private Integer roomUid;
/**
* 普通礼物钻石流水
*/
private BigDecimal diamondNum;
/**
* 幸运礼物钻石流水
*/
private BigDecimal luckyDiamondNum;
/**
* 房间普通额外奖励
*/
private BigDecimal roomExtraNum;
/**
* 房间lucky额外奖励
*/
private BigDecimal roomExtraLuckyNum;
/**
* 创建时间
*/
private Date createTime;
private Date updateTime;
}

View File

@@ -3,16 +3,17 @@ package com.accompany.business.event.listener;
import com.accompany.business.event.SuperLuckyGiftDiamondIncomeMessageEvent; import com.accompany.business.event.SuperLuckyGiftDiamondIncomeMessageEvent;
import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage; import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage;
import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.extradiamond.ExtraDiamondDayService;
import com.accompany.business.service.guild.GuildDiamondStatisticsDayService; import com.accompany.business.service.guild.GuildDiamondStatisticsDayService;
import com.accompany.business.service.guild.GuildMemberDiamondStatisticsService; import com.accompany.business.service.guild.GuildMemberDiamondStatisticsService;
import com.accompany.business.service.guild.GuildMemberService; import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildRankService; import com.accompany.business.service.guild.GuildRankService;
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service; import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
import com.accompany.business.service.room.RoomDayDiamondNumService;
import com.accompany.business.service.user.UsersService; import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.CycleTimeUtil; import com.accompany.business.util.CycleTimeUtil;
import com.accompany.business.util.FullMonthCycleTimeUtil; import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.common.constant.Constant; import com.accompany.common.constant.Constant;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.model.PartitionInfo; import com.accompany.core.model.PartitionInfo;
import com.accompany.core.model.Users; import com.accompany.core.model.Users;
import com.accompany.core.service.partition.PartitionInfoService; import com.accompany.core.service.partition.PartitionInfoService;
@@ -39,9 +40,9 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
@Autowired @Autowired
private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService; private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService;
@Autowired @Autowired
private RoomDayDiamondNumService roomDayDiamondNumService;
@Autowired
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service; private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
@Autowired
private ExtraDiamondDayService extraDiamondDayService;
@Async @Async
@Override @Override
@@ -57,23 +58,29 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
return; return;
} }
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(receiverUid); String cycleDate = null, statDate = null;
if (null == guildMember) {
return;
}
Date time = message.getCreateTime(); Date time = message.getCreateTime();
Double totalDiamondNum = message.getTotalDiamondNum(); GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(receiverUid);
if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) { if (null != guildMember) {
String cycleDate = CycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId()); Double totalDiamondNum = message.getTotalDiamondNum();
String statDate = CycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId()); if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) {
guildMemberDiamondStatisticsService.update(cycleDate, guildMember, totalDiamondNum); cycleDate = CycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId());
guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum); statDate = CycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId());
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) { guildMemberDiamondStatisticsService.update(cycleDate, guildMember, totalDiamondNum);
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId()); guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
String statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId()); } else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum); cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId());
statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
}
//todo 时区 zoneId
guildRankService.updateRank(guildMember.getGuildId(), guildMember.getUid(), totalDiamondNum, receiver.getPartitionId());
}
if (partitionInfo.getId() == PartitionEnum.SOVIET.getId()) {
extraDiamondDayService.updateGuildExtraDiamond(guildMember, cycleDate, statDate, 0D, message.getTotalDiamondNum(), time);
extraDiamondDayService.updateRoomExtraDiamond(guildMember, receiverUid, partitionInfo.getId(), statDate,
message.getRoomUid(),0D, message.getTotalDiamondNum(), time);
} }
//todo 时区 zoneId
guildRankService.updateRank(guildMember.getGuildId(), guildMember.getUid(), totalDiamondNum, receiver.getPartitionId());
} }
} }

View File

@@ -0,0 +1,23 @@
package com.accompany.business.mybatismapper.extradiamond;
import com.accompany.business.model.extradiamond.GuildExtraDiamondDay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公会钻石流水额外收入记录 Mapper 接口
*
* @author
* @since 2025-09-16
*/
public interface GuildExtraDiamondDayMapper extends BaseMapper<GuildExtraDiamondDay> {
int updateExtraDiamond(@Param("cycleDate") String cycleDate, @Param("statDate") String statDate, @Param("partitionId") Integer partitionId,
@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId,
@Param("ownerUid") Long ownerUid, @Param("uid") Long uid, @Param("diamondNum") BigDecimal diamondNum,
@Param("luckyDiamondNum") BigDecimal luckyDiamondNum, @Param("ownerDiamondNum") BigDecimal ownerDiamondNum,
@Param("ownerLuckyDiamond") BigDecimal ownerLuckyDiamond, @Param("time") Date time);
}

View File

@@ -0,0 +1,22 @@
package com.accompany.business.mybatismapper.extradiamond;
import com.accompany.business.model.extradiamond.RoomExtraDiamondDay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
/**
* 房间钻石流水额外收入记录 Mapper 接口
*
* @author
* @since 2025-09-16
*/
public interface RoomExtraDiamondDayMapper extends BaseMapper<RoomExtraDiamondDay> {
int updateExtraDiamond(@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId,
@Param("uid") Long uid, @Param("partitionId") Integer partitionId,
@Param("statDate") String statDate, @Param("roomUid") Long roomUid,
@Param("normalDiamondNum") Double normalDiamondNum, @Param("luckyDiamondNum") Double luckyDiamondNum,
@Param("time") Date time);
}

View File

@@ -0,0 +1,80 @@
package com.accompany.business.service.extradiamond;
import com.accompany.business.dto.ExtraDiamondRateConfigDto;
import com.accompany.business.model.guild.Guild;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.purse.UserPurseService;
import com.accompany.core.service.SysConfService;
import com.accompany.core.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import static com.accompany.common.constant.Constant.SysConfId.EXTRA_DIAMOND_RATE_CONFIG;
import static com.accompany.core.enumeration.BillObjTypeEnum.OWNER_EXTRA_GOLD;
@Service
public class ExtraDiamondDayService {
@Autowired
private GuildExtraDiamondDayService guildExtraDiamondDayService;
@Autowired
private RoomExtraDiamondDayService roomExtraDiamondDayService;
@Autowired
private GuildService guildService;
@Autowired
private SysConfService sysConfService;
@Autowired
private UserPurseService userPurseService;
public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate,
Double normalDiamondNum, Double luckyDiamondNum, Date time) {
if (guildMember == null) {
return;
}
Long guildMemberId = guildMember.getId();
Integer guildId = guildMember.getGuildId();
Integer partitionId = guildMember.getPartitionId();
ExtraDiamondRateConfigDto diamondRateConfig = this.getExtraDiamondRateConfig(guildMember.getPartitionId());
BigDecimal decimalNormal = BigDecimal.valueOf(normalDiamondNum);
BigDecimal decimalLucky = BigDecimal.valueOf(luckyDiamondNum);
BigDecimal ownerDiamondNum = diamondRateConfig.getOwnerExtraRate().multiply(decimalNormal);
BigDecimal ownerLuckyDiamond =diamondRateConfig.getOwnerExtraLuckyRate().multiply(decimalLucky);
Guild guild = guildService.getVaildGuildById(guildId);
Long ownerUid = guild.getOwnerUid();
guildExtraDiamondDayService.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, guildMember.getUid(),
decimalNormal, decimalLucky, ownerDiamondNum, ownerLuckyDiamond, time);
if (ownerDiamondNum.compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(ownerUid, ownerDiamondNum.doubleValue(), OWNER_EXTRA_GOLD);
}
if (ownerLuckyDiamond.compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(ownerUid, ownerDiamondNum.doubleValue(), OWNER_EXTRA_GOLD);
}
}
public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, Integer partitionId, String statDate, Long roomUid,
Double normalDiamondNum, Double luckyDiamondNum, Date time) {
if (roomUid == null) {
return;
}
Long guildMemberId = 0L;
Integer guildId = 0;
if (guildMember != null) {
guildMemberId = guildMember.getId();
guildId = guildMember.getGuildId();
}
roomExtraDiamondDayService.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid, normalDiamondNum, luckyDiamondNum, time);
}
private ExtraDiamondRateConfigDto getExtraDiamondRateConfig(Integer partitionId) {
String valueById = sysConfService.getSysConfValueById(EXTRA_DIAMOND_RATE_CONFIG);
if (StringUtils.isEmpty(valueById)) {
return new ExtraDiamondRateConfigDto();
}
ExtraDiamondRateConfigDto configDto = JSONObject.parseObject(valueById, ExtraDiamondRateConfigDto.class);
return configDto.getConfigByPartitionId(partitionId);
}
}

View File

@@ -0,0 +1,26 @@
package com.accompany.business.service.extradiamond;
import com.accompany.business.model.extradiamond.GuildExtraDiamondDay;
import com.accompany.business.mybatismapper.extradiamond.GuildExtraDiamondDayMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公会钻石流水额外收入记录 服务实现类
*
* @author
* @since 2025-09-16
*/
@Service
public class GuildExtraDiamondDayService extends ServiceImpl<GuildExtraDiamondDayMapper, GuildExtraDiamondDay> {
public int updateExtraDiamond(String cycleDate, String statDate, Integer partitionId, Long guildMemberId,
Integer guildId, Long ownerUid, Long uid, BigDecimal diamondNum,
BigDecimal luckyDiamond, BigDecimal ownerDiamondNum, BigDecimal ownerLuckyDiamond, Date time) {
return baseMapper.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, uid,
diamondNum, luckyDiamond, ownerDiamondNum, ownerLuckyDiamond, time);
}
}

View File

@@ -0,0 +1,23 @@
package com.accompany.business.service.extradiamond;
import com.accompany.business.model.extradiamond.RoomExtraDiamondDay;
import com.accompany.business.mybatismapper.extradiamond.RoomExtraDiamondDayMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 房间钻石流水额外收入记录 服务实现类
*
* @author
* @since 2025-09-16
*/
@Service
public class RoomExtraDiamondDayService extends ServiceImpl<RoomExtraDiamondDayMapper, RoomExtraDiamondDay> {
public int updateExtraDiamond(Long guildMemberId, Integer guildId, Long uid, Integer partitionId,
String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum, Date time) {
return baseMapper.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid, normalDiamondNum, luckyDiamondNum, time);
}
}

View File

@@ -5,6 +5,7 @@ import com.accompany.business.message.GuildMemberIncreaseFlowMessage;
import com.accompany.business.model.guild.GuildGiftRecord; import com.accompany.business.model.guild.GuildGiftRecord;
import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.mybatismapper.guild.GuildGiftRecordMapper; import com.accompany.business.mybatismapper.guild.GuildGiftRecordMapper;
import com.accompany.business.service.extradiamond.ExtraDiamondDayService;
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service; import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
import com.accompany.business.service.user.UsersService; import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.CycleTimeUtil; import com.accompany.business.util.CycleTimeUtil;
@@ -12,6 +13,7 @@ import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.common.constant.Constant; import com.accompany.common.constant.Constant;
import com.accompany.common.status.BusiStatus; import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil; import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException; import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.PartitionInfo; import com.accompany.core.model.PartitionInfo;
import com.accompany.core.model.Users; import com.accompany.core.model.Users;
@@ -26,6 +28,8 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import static com.accompany.common.utils.DateTimeUtil.dateFormatter;
@Service @Service
public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, GuildGiftRecord> { public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, GuildGiftRecord> {
@@ -47,6 +51,8 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
@Autowired @Autowired
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service; private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
@Autowired
private ExtraDiamondDayService extraDiamondDayService;
@Async @Async
public void insertGuildGiftRecord(GiftSendRecord giftSendRecord) { public void insertGuildGiftRecord(GiftSendRecord giftSendRecord) {
@@ -55,51 +61,61 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
} }
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(giftSendRecord.getReciveUid()); GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(giftSendRecord.getReciveUid());
if (null == guildMember) {
return;
}
GuildGiftRecord guildGiftRecord = new GuildGiftRecord();
guildGiftRecord.setPartitionId(guildMember.getPartitionId());
guildGiftRecord.setGiftSendRecordId(giftSendRecord.getSendRecordId());
guildGiftRecord.setCreateTime(giftSendRecord.getCreateTime());
guildGiftRecord.setGuildId(guildMember.getGuildId());
guildGiftRecord.setSenderUid(giftSendRecord.getUid());
guildGiftRecord.setReceiverUid(giftSendRecord.getReciveUid());
guildGiftRecord.setTotalGoldNum(giftSendRecord.getTotalGoldNum());
guildGiftRecord.setTotalDiamondNum(giftSendRecord.getTotalDiamondNum());
save(guildGiftRecord);
Users receiver = usersService.getNotNullUsersByUid(giftSendRecord.getReciveUid()); Users receiver = usersService.getNotNullUsersByUid(giftSendRecord.getReciveUid());
PartitionInfo partitionInfo = partitionInfoService.getById(receiver.getPartitionId()); PartitionInfo partitionInfo = partitionInfoService.getById(receiver.getPartitionId());
if (null == partitionInfo) { if (null == partitionInfo) {
return; return;
} }
String cycleDate = null, statDate = null;
Date createTime = giftSendRecord.getCreateTime(); Date createTime = giftSendRecord.getCreateTime();
if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) { Double totalDiamondNum = giftSendRecord.getTotalDiamondNum();
String cycleDate = CycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId());
guildMemberDiamondStatisticsService.update(cycleDate, guildMember, giftSendRecord.getTotalDiamondNum()); if (null != guildMember) {
String statDate = CycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId()); GuildGiftRecord guildGiftRecord = new GuildGiftRecord();
guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, giftSendRecord.getTotalDiamondNum()); guildGiftRecord.setPartitionId(guildMember.getPartitionId());
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) { guildGiftRecord.setGiftSendRecordId(giftSendRecord.getSendRecordId());
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId()); guildGiftRecord.setCreateTime(giftSendRecord.getCreateTime());
String statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId()); guildGiftRecord.setGuildId(guildMember.getGuildId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, giftSendRecord.getTotalDiamondNum()); guildGiftRecord.setSenderUid(giftSendRecord.getUid());
guildGiftRecord.setReceiverUid(giftSendRecord.getReciveUid());
guildGiftRecord.setTotalGoldNum(giftSendRecord.getTotalGoldNum());
guildGiftRecord.setTotalDiamondNum(giftSendRecord.getTotalDiamondNum());
save(guildGiftRecord);
if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) {
cycleDate = CycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId());
guildMemberDiamondStatisticsService.update(cycleDate, guildMember, totalDiamondNum);
statDate = CycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId());
statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
}
guildRankService.updateRank(guildGiftRecord);
Date zoneTime = DateTimeUtil.withZoneSameInstant(giftSendRecord.getCreateTime(), partitionInfo.getZoneId());
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
guildMemberWeekLevelRewardSelectService.addProcess(guildMember.getId(), guildMember.getPartitionId(), monday, giftSendRecord.getTotalDiamondNum());
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(
giftSendRecord.getPartitionId(), guildMember.getGuildId(), guildMember.getUid(),
BigDecimal.valueOf(giftSendRecord.getTotalGoldNum()),
BigDecimal.valueOf(giftSendRecord.getTotalDiamondNum()),
giftSendRecord.getCreateTime()
)));
} }
guildRankService.updateRank(guildGiftRecord); if (partitionInfo.getId() == PartitionEnum.SOVIET.getId()) {
extraDiamondDayService.updateGuildExtraDiamond(guildMember, cycleDate, statDate, 0D, totalDiamondNum, createTime);
statDate = DateTimeUtil.convertWithZoneId(createTime, partitionInfo.getZoneId()).format(dateFormatter);
extraDiamondDayService.updateRoomExtraDiamond(guildMember, giftSendRecord.getReciveUid(), partitionInfo.getId(),
statDate, giftSendRecord.getRoomUid(), 0D, totalDiamondNum, createTime);
}
Date zoneTime = DateTimeUtil.withZoneSameInstant(giftSendRecord.getCreateTime(), partitionInfo.getZoneId());
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
guildMemberWeekLevelRewardSelectService.addProcess(guildMember.getId(), guildMember.getPartitionId(), monday, giftSendRecord.getTotalDiamondNum());
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(
giftSendRecord.getPartitionId(), guildMember.getGuildId(), guildMember.getUid(),
BigDecimal.valueOf(giftSendRecord.getTotalGoldNum()),
BigDecimal.valueOf(giftSendRecord.getTotalDiamondNum()),
giftSendRecord.getCreateTime()
)));
} }
} }

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.extradiamond.GuildExtraDiamondDayMapper">
<update id="updateExtraDiamond">
INSERT INTO `guild_extra_diamond_day` (`cycle_date`, `partition_id`, `stat_date`,
`guild_member_id`, `guild_id`, `uid`, `owner_uid`, `diamond_num`, `lucky_diamond_num`,
`owner_extra_num`, `owner_extra_lucky_num`, `create_time`, `update_time`)
VALUES (#{cycleDate}, #{partitionId}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{ownerUid}, #{diamondNum}, #{luckyDiamondNum},
#{ownerDiamondNum}, #{ownerLuckyDiamond},#{time} ,#{time})
ON DUPLICATE KEY UPDATE
diamond_num = diamond_num + values (diamond_num),
lucky_diamond_num = lucky_diamond_num + values (lucky_diamond_num),
owner_extra_num = owner_extra_num + values (owner_extra_num),
owner_extra_lucky_num = owner_extra_lucky_num + values (owner_extra_lucky_num),
update_time = values (update_time)
</update>
</mapper>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.extradiamond.RoomExtraDiamondDayMapper">
<update id="updateExtraDiamond">
INSERT INTO `room_extra_diamond_day` (`partition_id`, `stat_date`, `guild_member_id`, `guild_id`, `uid`,
`room_uid`, `diamond_num`, `lucky_diamond_num`, `create_time`, `update_time`)
VALUES (#{partitionId}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{roomUid}, #{normalDiamondNum},
#{luckyDiamondNum}, #{luckyDiamondNum},#{time} ,#{time})
ON DUPLICATE KEY UPDATE
diamond_num = diamond_num + values (diamond_num),
lucky_diamond_num = lucky_diamond_num + values (lucky_diamond_num),
update_time = values (update_time)
</update>
</mapper>