From c28a93e0c34bd3b670f2e46675101f7c4917f2cf Mon Sep 17 00:00:00 2001 From: hokli <2629910752@qq.com> Date: Wed, 10 Sep 2025 16:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=BD=AC=E8=B5=A0=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=9B=BD=E5=AE=B6=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/guild/GuildUsdChannelService.java | 9 +++++- .../service/guild/GuildUsdOperateService.java | 28 +++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdChannelService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdChannelService.java index 9806c164f..81bd27bd1 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdChannelService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdChannelService.java @@ -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 rechargeUserVoList = rechargeUserService.listByPartitionIdByGuildTab(u.getPartitionId()); + List rechargeUserVoList = rechargeUserService.listByPartitionIdByGuildTab(u.getPartitionId(), regionCode); if (CollectionUtils.isEmpty(rechargeUserVoList)){ return rechargeUserVoList; } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdOperateService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdOperateService.java index 469055bd8..c2f2c1d00 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdOperateService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildUsdOperateService.java @@ -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 guildUsdWithdrawLimit = null; + + if (GuildUsdOperateTypeEnum.USD_TO_RECHARGE_USER.getType() == type) { + List 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()));