|
@@ -428,6 +428,9 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
ticket.setIsComplete(orderDon.getStatus() == OrderDon.Status.complete ? true : false);
|
|
ticket.setIsComplete(orderDon.getStatus() == OrderDon.Status.complete ? true : false);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ if (isGptApiQuotaSourceTicket(ticket.getGoodsId(), ticket.getSkuNum())) {
|
|
|
|
|
+ markGptApiQuotaReceiveStatus(userIds, ticket);
|
|
|
|
|
+ }
|
|
|
if (lang != null && !StrUtil.equals(UserPageLanguage.Language.zh_CN.name(), lang)) {
|
|
if (lang != null && !StrUtil.equals(UserPageLanguage.Language.zh_CN.name(), lang)) {
|
|
|
String languageSpecVal = backInfoTranslationsFrontService.getLanguageSpecVal(zhSkuId, lang);
|
|
String languageSpecVal = backInfoTranslationsFrontService.getLanguageSpecVal(zhSkuId, lang);
|
|
|
if (StrUtil.isNotBlank(languageSpecVal)) {
|
|
if (StrUtil.isNotBlank(languageSpecVal)) {
|
|
@@ -580,6 +583,16 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void markGptApiQuotaReceiveStatus(List<Long> userIds, RenewalView ticket) {
|
|
|
|
|
+ Integer successCount = ticketRedemptionCodeRecordMapper.selectCount(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
|
|
|
+ .in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSourceGoodsId, ticket.getGoodsId())
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSkuId, Constant.GPT_ACTIVITY_GIFT_SKU_ID)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getStatus, "success"));
|
|
|
|
|
+ ticket.setCanReceiveGptApiQuota(successCount == 0);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public GroupsRelation getSimilarExpiredGroupRelation(GoodsDonSku sku, List<Long> errorsRelationIds, String ip) {
|
|
public GroupsRelation getSimilarExpiredGroupRelation(GoodsDonSku sku, List<Long> errorsRelationIds, String ip) {
|
|
|
Long skuId = sku.getId();
|
|
Long skuId = sku.getId();
|
|
@@ -2762,8 +2775,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
if (sourceSku == null) {
|
|
if (sourceSku == null) {
|
|
|
throw BusinessRuntimeException.getInstance("车票规格不存在");
|
|
throw BusinessRuntimeException.getInstance("车票规格不存在");
|
|
|
}
|
|
}
|
|
|
- if (!Constant.GPT_RECHARGE_GOODS_ID.equals(sourceRelation.getGoodsId())
|
|
|
|
|
- && !(Constant.GPT_PLUS_GID.equals(sourceRelation.getGoodsId()) && Objects.equals(sourceSku.getNum(), 1))) {
|
|
|
|
|
|
|
+ Long sourceGoodsId = sourceRelation.getGoodsId();
|
|
|
|
|
+ if (!isGptApiQuotaSourceTicket(sourceGoodsId, sourceSku.getNum())) {
|
|
|
throw BusinessRuntimeException.getInstance("当前车票不符合领取条件");
|
|
throw BusinessRuntimeException.getInstance("当前车票不符合领取条件");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2778,11 +2791,12 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
if (sourceOrder == null) {
|
|
if (sourceOrder == null) {
|
|
|
throw BusinessRuntimeException.getInstance("不符合领取要求");
|
|
throw BusinessRuntimeException.getInstance("不符合领取要求");
|
|
|
}
|
|
}
|
|
|
- Integer receivedCount = ticketRedemptionCodeRecordMapper.selectCount(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
|
|
|
- .in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
|
|
|
- .eq(TicketRedemptionCodeRecord::getSkuId, Constant.GPT_ACTIVITY_GIFT_SKU_ID)
|
|
|
|
|
- .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY)
|
|
|
|
|
- .eq(TicketRedemptionCodeRecord::getStatus, "success"));
|
|
|
|
|
|
|
+ Integer receivedCount = ticketRedemptionCodeRecordMapper.selectCount(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
|
|
|
+ .in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSkuId, Constant.GPT_ACTIVITY_GIFT_SKU_ID)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSourceGoodsId, sourceGoodsId)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getStatus, "success"));
|
|
|
if (receivedCount > 0) {
|
|
if (receivedCount > 0) {
|
|
|
throw BusinessRuntimeException.getInstance("您已领取");
|
|
throw BusinessRuntimeException.getInstance("您已领取");
|
|
|
}
|
|
}
|
|
@@ -2791,6 +2805,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
record.setUserId(userId);
|
|
record.setUserId(userId);
|
|
|
record.setRelationId(sourceRelationId);
|
|
record.setRelationId(sourceRelationId);
|
|
|
record.setGoodsId(sourceRelation.getGoodsId());
|
|
record.setGoodsId(sourceRelation.getGoodsId());
|
|
|
|
|
+ record.setSourceGoodsId(sourceGoodsId);
|
|
|
record.setSkuId(Constant.GPT_ACTIVITY_GIFT_SKU_ID);
|
|
record.setSkuId(Constant.GPT_ACTIVITY_GIFT_SKU_ID);
|
|
|
record.setSourceType(RedisKey.GPT_API_QUOTA_KEY);
|
|
record.setSourceType(RedisKey.GPT_API_QUOTA_KEY);
|
|
|
record.setRedeemName("GPT代充/独立赠送");
|
|
record.setRedeemName("GPT代充/独立赠送");
|
|
@@ -2815,6 +2830,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
GptActivityRedeemResult redeemResult = requestGptActivityRedeemCode(Constant.AI_API_SVC_DOMAIN, giftRelation, giftSku);
|
|
GptActivityRedeemResult redeemResult = requestGptActivityRedeemCode(Constant.AI_API_SVC_DOMAIN, giftRelation, giftSku);
|
|
|
record.setRelationId(giftRelation.getId());
|
|
record.setRelationId(giftRelation.getId());
|
|
|
record.setGoodsId(giftSku.getGoodsId());
|
|
record.setGoodsId(giftSku.getGoodsId());
|
|
|
|
|
+ record.setSourceGoodsId(sourceGoodsId);
|
|
|
record.setRedeemCode(redeemResult.getRedeemCode());
|
|
record.setRedeemCode(redeemResult.getRedeemCode());
|
|
|
record.setQuota(redeemResult.getQuota());
|
|
record.setQuota(redeemResult.getQuota());
|
|
|
record.setRedeemCount(0);
|
|
record.setRedeemCount(0);
|
|
@@ -2830,7 +2846,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
return resp;
|
|
return resp;
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
record.setGoodsId(giftSku.getGoodsId());
|
|
record.setGoodsId(giftSku.getGoodsId());
|
|
|
- record.setStatus("error");
|
|
|
|
|
|
|
+ record.setSourceGoodsId(sourceGoodsId);
|
|
|
|
|
+ record.setStatus("error");
|
|
|
record.setErrorMsg(StringUtil.getErrorText(e));
|
|
record.setErrorMsg(StringUtil.getErrorText(e));
|
|
|
if (giftRelation != null) {
|
|
if (giftRelation != null) {
|
|
|
record.setRelationId(giftRelation.getId());
|
|
record.setRelationId(giftRelation.getId());
|
|
@@ -2844,21 +2861,25 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private GroupsRelation getReusableGptActivityGiftRelation(List<Long> userIds, Long giftSkuId) {
|
|
|
|
|
- TicketRedemptionCodeRecord retryRecord = ticketRedemptionCodeRecordMapper.selectOne(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
|
|
|
- .in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
|
|
|
- .eq(TicketRedemptionCodeRecord::getSkuId, giftSkuId)
|
|
|
|
|
- .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY)
|
|
|
|
|
- .eq(TicketRedemptionCodeRecord::getStatus, "error")
|
|
|
|
|
- .isNotNull(TicketRedemptionCodeRecord::getRelationId)
|
|
|
|
|
- .orderByDesc(TicketRedemptionCodeRecord::getId)
|
|
|
|
|
- .last("limit 1"));
|
|
|
|
|
- if (retryRecord != null) {
|
|
|
|
|
- return groupsRelationMapper.selectById(retryRecord.getRelationId());
|
|
|
|
|
- }
|
|
|
|
|
- return null;
|
|
|
|
|
|
|
+ private boolean isGptApiQuotaSourceTicket(Long goodsId, Integer skuNum) {
|
|
|
|
|
+ return Constant.GPT_RECHARGE_GOODS_ID.equals(goodsId)
|
|
|
|
|
+ || (Constant.GPT_PLUS_GID.equals(goodsId) && Objects.equals(skuNum, 1));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private GroupsRelation getReusableGptActivityGiftRelation(List<Long> userIds, Long giftSkuId) {
|
|
|
|
|
+ TicketRedemptionCodeRecord retryRecord = ticketRedemptionCodeRecordMapper.selectOne(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
|
|
|
+ .in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSkuId, giftSkuId)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getStatus, "error")
|
|
|
|
|
+ .isNotNull(TicketRedemptionCodeRecord::getRelationId)
|
|
|
|
|
+ .orderByDesc(TicketRedemptionCodeRecord::getId)
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (retryRecord != null) {
|
|
|
|
|
+ return groupsRelationMapper.selectById(retryRecord.getRelationId());
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
private GptActivityRedeemResult requestGptActivityRedeemCode(String apiDomain, GroupsRelation giftRelation, GoodsDonSku giftSku) throws Exception {
|
|
private GptActivityRedeemResult requestGptActivityRedeemCode(String apiDomain, GroupsRelation giftRelation, GoodsDonSku giftSku) throws Exception {
|
|
|
//默认5刀额度
|
|
//默认5刀额度
|
|
|
Integer quota = 2500000;
|
|
Integer quota = 2500000;
|