公会-土耳其-公会水晶-兑换-记录

This commit is contained in:
2025-08-20 17:28:46 +08:00
parent f37f652aa5
commit 37838aa909
5 changed files with 81 additions and 3 deletions

View File

@@ -0,0 +1,26 @@
package com.accompany.business.model.guildpolicy2;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GuildCrystalExchangeRecord {
@TableId(type = IdType.AUTO)
private Long id;
private String cycleDate;
private Integer partitionId;
private Long guildMemberId;
private Integer guildId;
private Byte roleType;
private Long uid;
private Double crystalNum;
private Double diamondNum;
private BigDecimal rate;
private Date createTime;
}

View File

@@ -0,0 +1,7 @@
package com.accompany.business.mapper;
import com.accompany.business.model.guildpolicy2.GuildCrystalExchangeRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface GuildCrystalExchangeRecordMapper extends BaseMapper<GuildCrystalExchangeRecord> {
}

View File

@@ -0,0 +1,36 @@
package com.accompany.business.service.guildpolicy2;
import com.accompany.business.mapper.GuildCrystalExchangeRecordMapper;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.model.guildpolicy2.GuildCrystalExchangeRecord;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
@Service
public class GuildCrystalExchangeRecordService extends ServiceImpl<GuildCrystalExchangeRecordMapper, GuildCrystalExchangeRecord> {
public void insertRecord(Long uid, GuildMember guildMember,
Double guildCrystalNumD,
Double diamondD,
BigDecimal rate,
String cycleDate, Date now){
GuildCrystalExchangeRecord record = new GuildCrystalExchangeRecord();
record.setCycleDate(cycleDate);
record.setPartitionId(guildMember.getPartitionId());
record.setGuildMemberId(guildMember.getId());
record.setGuildId(guildMember.getGuildId());
record.setRoleType(guildMember.getRoleType());
record.setUid(uid);
record.setCrystalNum(guildCrystalNumD);
record.setDiamondNum(diamondD);
record.setRate(rate);
record.setCreateTime(now);
save(record);
}
}

View File

@@ -5,6 +5,7 @@ import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.purse.UserPurseService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.business.vo.guildpolicy.GuildCrystalExchangeConfigVo;
import com.accompany.common.constant.Constant;
import com.accompany.common.status.BusiStatus;
@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
@Slf4j
@Service
@@ -28,6 +30,8 @@ public class GuildCrystalExchangeService {
private UsersService usersService;
@Autowired
private GuildMemberService guildMemberService;
@Autowired
private GuildCrystalExchangeRecordService recordService;
private final BigDecimal RATE = BigDecimal.ONE;
private final long EXCHANGE_LIMIT = 1000L;
@@ -78,6 +82,7 @@ public class GuildCrystalExchangeService {
throw new ServiceException(BusiStatus.PARTITION_ERROR);
}
Date now = new Date();
Double guildCrystalNumD = guildCrystalNum.doubleValue();
UserPurse userPurse = userPurseService.queryUserPurse(uid);
@@ -90,8 +95,8 @@ public class GuildCrystalExchangeService {
Double diamondD = BigDecimal.valueOf(guildCrystalNum).multiply(RATE).doubleValue();
userPurseService.excGuildCrystalToDiamond(uid, guildCrystalNumD, diamondD, BusiStatus.PURSE_MONEY_NOT_ENOUGH);
// todo
//insertGuildCrystalExchangeRecord(uid, guildMember, guildCrystalNumD, diamondD, RATE);
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(now, partitionEnum.getZoneId());
recordService.insertRecord(uid, guildMember, guildCrystalNumD, diamondD, RATE, cycleDate, now);
log.info("[guild crystal 兑换] {} guild crystal {} 要兑换的金币数 {} 比率 {} 成功", uid, guildCrystalNum, diamondD, RATE);
}

View File

@@ -7,7 +7,9 @@ import com.accompany.business.mybatismapper.UserPurseMapper;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.purse.GuildCrystalSettlementPurseService;
import com.accompany.business.service.record.BillRecordService;
import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import lombok.SneakyThrows;
@@ -37,9 +39,11 @@ public class GuildCrystalSettlementService {
@SneakyThrows
public void settlement(Integer partitionId, Date cycleTime, Integer waitSecond) {
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
//当天零点再前推1秒相当于昨天23:59:59 给客户端周查询
Date now = null == cycleTime? DateTimeUtil.addSeconds(DateTimeUtil.getBeginTimeOfDay(new Date()),-1): DateTimeUtil.getEndTimeOfDay(cycleTime);
String cycleDate = DateTimeUtil.convertDate(now, DateTimeUtil.DEFAULT_DATE_PATTERN);
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(now, partitionEnum.getClanMode());
List<GuildMember> guildMemberList = guildMemberService.listByPartitionId(partitionId);
if (CollectionUtils.isEmpty(guildMemberList)){