diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/purse/DiamondGiveHistoryService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/purse/DiamondGiveHistoryService.java index 62e086bc8..7e54297dd 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/purse/DiamondGiveHistoryService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/purse/DiamondGiveHistoryService.java @@ -34,11 +34,13 @@ 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.SysConfService; import com.accompany.core.service.common.JedisLockService; import com.accompany.core.service.common.JedisService; 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.PartitionUtil; import com.accompany.core.vo.UserLevelVo; @@ -66,6 +68,8 @@ import java.time.ZonedDateTime; import java.util.*; import java.util.stream.Collectors; +import static com.accompany.common.constant.Constant.GLOBAL_CODE; + /** * 用户转赠钻石记录表 * @@ -118,6 +122,9 @@ public class DiamondGiveHistoryService extends ServiceImpl regionCodeList = rechargeUserService.regionCodeList(uid); + Users toUser = usersService.getUsersByUid(toUid); + if (partitionLimit && CollectionUtils.isEmpty(regionCodeList)) { + throw new ServiceException(BusiStatus.RECHARGE_REGION_GIVE_LIMIT); + }else if (partitionLimit && toUser.getRegionId() != null && !regionCodeList.contains(GLOBAL_CODE)) { + RegionInfo regionInfo = regionInfoService.getById(toUser.getRegionId()); + if (regionInfo == null || !regionCodeList.contains(regionInfo.getCode())) { + throw new ServiceException(BusiStatus.RECHARGE_REGION_GIVE_LIMIT); + } + } // 條件限制檢測2 giveCheck(uid, toUid, diamondNum, realSpendDiamondNum); }