|
|
|
@@ -1,15 +1,16 @@
|
|
|
|
|
package com.accompany.business.service.guild;
|
|
|
|
|
|
|
|
|
|
import com.accompany.business.constant.guild.GuildConstant;
|
|
|
|
|
import com.accompany.business.constant.guild.GuildUsdOperateTypeEnum;
|
|
|
|
|
import com.accompany.business.dto.guild.GuildUsdToRechargeUserLimitConfigDto;
|
|
|
|
|
import com.accompany.business.model.guild.GuildMember;
|
|
|
|
|
import com.accompany.business.mybatismapper.guild.GuildUsdBillRecordMapper;
|
|
|
|
|
import com.accompany.common.constant.Constant;
|
|
|
|
|
import com.accompany.common.status.BusiStatus;
|
|
|
|
|
import com.accompany.common.utils.DateTimeUtil;
|
|
|
|
|
import com.accompany.core.enumeration.I18nAlertEnum;
|
|
|
|
|
import com.accompany.core.enumeration.PartitionEnum;
|
|
|
|
|
import com.accompany.core.exception.ServiceException;
|
|
|
|
|
import com.accompany.core.model.Users;
|
|
|
|
|
import com.accompany.core.service.SysConfService;
|
|
|
|
|
import com.accompany.core.util.I18NMessageSourceUtil;
|
|
|
|
|
import com.accompany.payment.service.RechargeUserService;
|
|
|
|
@@ -19,7 +20,10 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.ZoneId;
|
|
|
|
|
import java.time.ZonedDateTime;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@@ -30,6 +34,8 @@ public class GuildUsdToRechargeUserLimitService {
|
|
|
|
|
private SysConfService sysConfService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private RechargeUserService rechargeUserService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private GuildUsdBillRecordMapper guildUsdBillRecordMapper;
|
|
|
|
|
|
|
|
|
|
public String getLimitTIp(GuildMember guildMember) {
|
|
|
|
|
GuildUsdToRechargeUserLimitConfigDto configDto = getConfig().getByPartitionId(guildMember.getPartitionId());
|
|
|
|
@@ -51,7 +57,7 @@ public class GuildUsdToRechargeUserLimitService {
|
|
|
|
|
return I18NMessageSourceUtil.getMessage(I18nAlertEnum.GUILD_USD_TO_RECHARGE_USER_DAY_OF_MONTH_LIMIT, new Object[]{enableDayOfMonthStr}, guildMember.getPartitionId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void valid(GuildMember guildMember, Long targetUid) {
|
|
|
|
|
public void valid(GuildMember guildMember, Long targetUid, BigDecimal guildUsdNum) {
|
|
|
|
|
if (null == targetUid || !rechargeUserService.isRechargeUser(targetUid)){
|
|
|
|
|
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
|
|
|
|
|
}
|
|
|
|
@@ -73,6 +79,28 @@ public class GuildUsdToRechargeUserLimitService {
|
|
|
|
|
String errorMsg = I18NMessageSourceUtil.getMessage(I18nAlertEnum.GUILD_USD_TO_RECHARGE_USER_DAY_OF_MONTH_LIMIT, new Object[]{enableDayOfMonthStr}, guildMember.getPartitionId());
|
|
|
|
|
throw new ServiceException(errorMsg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (null == configDto.getDayNumLimit() || BigDecimal.ZERO.compareTo(configDto.getDayNumLimit()) <= 0){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ZonedDateTime todayStartTime = zdt.withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
|
|
Date systemStartTime = DateTimeUtil.converLocalDateTimeToDate(todayStartTime.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
|
|
String systemStartTimeStr = DateTimeUtil.convertDateTime(systemStartTime);
|
|
|
|
|
|
|
|
|
|
ZonedDateTime todayEndTime = zdt.withHour(23).withMinute(59).withSecond(59).withNano(999999999);
|
|
|
|
|
Date systemEndTime = DateTimeUtil.converLocalDateTimeToDate(todayEndTime.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
|
|
String systemEndTimeStr = DateTimeUtil.convertDateTime(systemEndTime);
|
|
|
|
|
|
|
|
|
|
Double todayNum = guildUsdBillRecordMapper.sum(guildMember.getPartitionId(), guildMember.getUid(), null,
|
|
|
|
|
systemStartTimeStr, systemEndTimeStr, GuildUsdOperateTypeEnum.USD_TO_RECHARGE_USER.getType());
|
|
|
|
|
BigDecimal todayNumB = null == todayNum? BigDecimal.ZERO: BigDecimal.valueOf(todayNum);
|
|
|
|
|
BigDecimal judgeNum = todayNumB.add(guildUsdNum);
|
|
|
|
|
|
|
|
|
|
if (judgeNum.compareTo(configDto.getDayNumLimit()) > 0){
|
|
|
|
|
String errorMsg = I18NMessageSourceUtil.getMessage(I18nAlertEnum.GUILD_USD_TO_RECHARGE_USER_DAY_NUM_LIMIT, null, guildMember.getPartitionId());
|
|
|
|
|
throw new ServiceException(errorMsg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public GuildUsdToRechargeUserLimitConfigDto getConfig(){
|
|
|
|
|