独联体1
This commit is contained in:
@@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
}
|
@@ -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);
|
||||||
|
}
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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()
|
|
||||||
)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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>
|
@@ -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>
|
Reference in New Issue
Block a user