薪资转赠统一国家代理

This commit is contained in:
2025-09-10 16:02:18 +08:00
parent d6acdd65c1
commit 779b19c26a
2 changed files with 35 additions and 1 deletions

View File

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

View File

@@ -24,9 +24,13 @@ import com.accompany.core.enumeration.CurrencyEnum;
import com.accompany.core.enumeration.I18nAlertEnum; import com.accompany.core.enumeration.I18nAlertEnum;
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.RegionInfo;
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;
import com.accompany.core.service.region.RegionInfoService;
import com.accompany.core.util.I18NMessageSourceUtil; 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.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -36,9 +40,11 @@ import java.math.BigDecimal;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import static com.accompany.common.constant.Constant.ClanMode.GUILD_POLICY2; import static com.accompany.common.constant.Constant.ClanMode.GUILD_POLICY2;
import static com.accompany.common.constant.Constant.GLOBAL_CODE;
@Service @Service
public class GuildUsdOperateService { public class GuildUsdOperateService {
@@ -65,6 +71,10 @@ public class GuildUsdOperateService {
private PartitionInfoService partitionInfoService; private PartitionInfoService partitionInfoService;
@Autowired @Autowired
private EnvComponent envComponent; private EnvComponent envComponent;
@Autowired
private RechargeUserService rechargeUserService;
@Autowired
private RegionInfoService regionInfoService;
public void withdrawDiamond(Long uid, BigDecimal guildUsdNum) { public void withdrawDiamond(Long uid, BigDecimal guildUsdNum) {
GuildMemberDiamondWithdrawVo vo = guildUsdChannelService.getDiamondWithDrawVo(uid); GuildMemberDiamondWithdrawVo vo = guildUsdChannelService.getDiamondWithDrawVo(uid);
@@ -116,6 +126,11 @@ public class GuildUsdOperateService {
if (GUILD_POLICY2.equals(partitionInfo.getClanMode())) { if (GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED); throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED);
} }
if (GuildUsdOperateTypeEnum.USD_TO_RECHARGE_USER.getType() == type) {
}
if ((GuildUsdOperateTypeEnum.OWNER_USD_WITHDRAW.equals(typeEnum) || GuildUsdOperateTypeEnum.MEMBER_USD_WITHDRAW.equals(typeEnum)) if ((GuildUsdOperateTypeEnum.OWNER_USD_WITHDRAW.equals(typeEnum) || GuildUsdOperateTypeEnum.MEMBER_USD_WITHDRAW.equals(typeEnum))
&& !envComponent.getDevOrNativeEnv()){ && !envComponent.getDevOrNativeEnv()){
ZonedDateTime now = ZonedDateTime.now(ZoneId.of(partitionInfo.getZoneId())); ZonedDateTime now = ZonedDateTime.now(ZoneId.of(partitionInfo.getZoneId()));
@@ -153,6 +168,18 @@ public class GuildUsdOperateService {
throw new ServiceException(BusiStatus.PARAMETERILLEGAL); throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
} }
} else if (GuildUsdOperateTypeEnum.USD_TO_RECHARGE_USER.equals(typeEnum)) { } else if (GuildUsdOperateTypeEnum.USD_TO_RECHARGE_USER.equals(typeEnum)) {
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);
}
});
guildUsdToRechargeUserLimitService.validUsdToRechargeUser(guildMember, targetUid, guildUsdNum); guildUsdToRechargeUserLimitService.validUsdToRechargeUser(guildMember, targetUid, guildUsdNum);
} else if (GuildUsdOperateTypeEnum.OWNER_USD_WITHDRAW.equals(typeEnum) || GuildUsdOperateTypeEnum.MEMBER_USD_WITHDRAW.equals(typeEnum)) { } else if (GuildUsdOperateTypeEnum.OWNER_USD_WITHDRAW.equals(typeEnum) || GuildUsdOperateTypeEnum.MEMBER_USD_WITHDRAW.equals(typeEnum)) {
guildUsdToRechargeUserLimitService.validUsdWithdraw(guildMember); guildUsdToRechargeUserLimitService.validUsdWithdraw(guildMember);