薪资转赠统一国家代理

This commit is contained in:
2025-09-10 16:02:18 +08:00
parent 187059a3ce
commit c28a93e0c3
2 changed files with 34 additions and 3 deletions

View File

@@ -13,9 +13,11 @@ import com.accompany.business.vo.guild.*;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.PartitionInfo;
import com.accompany.core.model.RegionInfo;
import com.accompany.core.model.Users;
import com.accompany.core.service.SysConfService;
import com.accompany.core.service.partition.PartitionInfoService;
import com.accompany.core.service.region.RegionInfoService;
import com.accompany.payment.service.RechargeUserService;
import com.accompany.payment.vo.RechargeUserVo;
import com.alibaba.fastjson.JSONObject;
@@ -32,6 +34,7 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.accompany.common.constant.Constant.GLOBAL_CODE;
import static com.accompany.common.constant.Constant.SysConfId.GUILD_USD_PROD_TAB_SHOW_CONFIG;
@Slf4j
@@ -62,6 +65,8 @@ public class GuildUsdChannelService {
private GuildUsdToRechargeUserLimitService guildUsdToRechargeUserLimitService;
@Autowired
private SysConfService sysConfService;
@Autowired
private RegionInfoService regionInfoService;
public GuildMemberDiamondWithdrawVo getDiamondWithDrawVo(Long uid) {
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
@@ -201,8 +206,10 @@ public class GuildUsdChannelService {
if (null == partitionInfo){
return Collections.emptyList();
}
RegionInfo regionInfo = regionInfoService.getById(u.getRegionId());
String regionCode = regionInfo == null ? GLOBAL_CODE : regionInfo.getCode();
List<RechargeUserVo> rechargeUserVoList = rechargeUserService.listByPartitionIdByGuildTab(u.getPartitionId());
List<RechargeUserVo> rechargeUserVoList = rechargeUserService.listByPartitionIdByGuildTab(u.getPartitionId(), regionCode);
if (CollectionUtils.isEmpty(rechargeUserVoList)){
return rechargeUserVoList;
}

View File

@@ -25,11 +25,14 @@ import com.accompany.core.enumeration.I18nAlertEnum;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.PartitionInfo;
import com.accompany.core.model.RegionInfo;
import com.accompany.core.model.Users;
import com.accompany.core.service.partition.PartitionInfoService;
import com.accompany.core.service.region.RegionInfoService;
import com.accompany.core.util.I18NMessageSourceUtil;
import com.accompany.payment.service.RechargeUserService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RBucket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -38,9 +41,11 @@ import java.math.BigDecimal;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import static com.accompany.common.constant.Constant.ClanMode.GUILD_POLICY2;
import static com.accompany.common.constant.Constant.GLOBAL_CODE;
@Service
public class GuildUsdOperateService {
@@ -67,6 +72,10 @@ public class GuildUsdOperateService {
private PartitionInfoService partitionInfoService;
@Autowired
private EnvComponent envComponent;
@Autowired
private RechargeUserService rechargeUserService;
@Autowired
private RegionInfoService regionInfoService;
public void withdrawDiamond(Long uid, BigDecimal guildUsdNum) {
GuildMemberDiamondWithdrawVo vo = guildUsdChannelService.getDiamondWithDrawVo(uid);
@@ -118,7 +127,22 @@ public class GuildUsdOperateService {
if (GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED);
}
RBucket<Integer> guildUsdWithdrawLimit = null;
if (GuildUsdOperateTypeEnum.USD_TO_RECHARGE_USER.getType() == type) {
List<String> regionCodeList = rechargeUserService.regionCodeList(targetUid);
if (CollectionUtils.isEmpty(regionCodeList)) {
throw new ServiceException(BusiStatus.RECHARGE_REGION_SALARY_LIMIT);
}
Optional.ofNullable(u.getRegionId())
.map(regionInfoService::getById)
.map(RegionInfo::getCode)
.ifPresent(regionCode -> {
if (!regionCodeList.contains(GLOBAL_CODE) && !regionCodeList.contains(regionCode)) {
throw new ServiceException(BusiStatus.RECHARGE_REGION_SALARY_LIMIT);
}
});
}
if ((GuildUsdOperateTypeEnum.OWNER_USD_WITHDRAW.equals(typeEnum) || GuildUsdOperateTypeEnum.MEMBER_USD_WITHDRAW.equals(typeEnum))
&& !envComponent.getDevOrNativeEnv()){
ZonedDateTime now = ZonedDateTime.now(ZoneId.of(partitionInfo.getZoneId()));