|
@@ -54,7 +54,6 @@ import com.cyksj.service.chatgpt.ChatGptAuthService;
|
|
|
import com.cyksj.service.claude.ClaudeCodeService;
|
|
import com.cyksj.service.claude.ClaudeCodeService;
|
|
|
import com.cyksj.service.claude.ClaudeService;
|
|
import com.cyksj.service.claude.ClaudeService;
|
|
|
import com.cyksj.service.codex.CodexService;
|
|
import com.cyksj.service.codex.CodexService;
|
|
|
-import com.cyksj.service.exchange.ExchangeCodeService;
|
|
|
|
|
import com.cyksj.service.groups.GroupsFuncService;
|
|
import com.cyksj.service.groups.GroupsFuncService;
|
|
|
import com.cyksj.service.luma.LumaService;
|
|
import com.cyksj.service.luma.LumaService;
|
|
|
import com.cyksj.service.mail.CommonMailService;
|
|
import com.cyksj.service.mail.CommonMailService;
|
|
@@ -79,7 +78,6 @@ import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.github.rholder.retry.*;
|
|
import com.github.rholder.retry.*;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.factory.ObjectProvider;
|
|
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -244,8 +242,6 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
|
|
|
|
|
private final TicketRedemptionCodeRecordMapper ticketRedemptionCodeRecordMapper;
|
|
private final TicketRedemptionCodeRecordMapper ticketRedemptionCodeRecordMapper;
|
|
|
|
|
|
|
|
- private final ObjectProvider<ExchangeCodeService> exchangeCodeServiceProvider;
|
|
|
|
|
-
|
|
|
|
|
private static final Date GPT_ACTIVITY_PAY_TIME_BEGIN = DateUtil.parse("2026-05-03 00:00:00");
|
|
private static final Date GPT_ACTIVITY_PAY_TIME_BEGIN = DateUtil.parse("2026-05-03 00:00:00");
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -2785,7 +2781,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
Integer receivedCount = ticketRedemptionCodeRecordMapper.selectCount(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
Integer receivedCount = ticketRedemptionCodeRecordMapper.selectCount(Wrappers.lambdaQuery(TicketRedemptionCodeRecord.class)
|
|
|
.in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
.in(TicketRedemptionCodeRecord::getUserId, userIds)
|
|
|
.eq(TicketRedemptionCodeRecord::getSkuId, Constant.GPT_ACTIVITY_GIFT_SKU_ID)
|
|
.eq(TicketRedemptionCodeRecord::getSkuId, Constant.GPT_ACTIVITY_GIFT_SKU_ID)
|
|
|
- .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY));
|
|
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getSourceType, RedisKey.GPT_API_QUOTA_KEY)
|
|
|
|
|
+ .eq(TicketRedemptionCodeRecord::getStatus, "success"));
|
|
|
if (receivedCount > 0) {
|
|
if (receivedCount > 0) {
|
|
|
throw BusinessRuntimeException.getInstance("您已领取");
|
|
throw BusinessRuntimeException.getInstance("您已领取");
|
|
|
}
|
|
}
|
|
@@ -2804,7 +2801,14 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
GoodsDonSku giftSku = goodsDonSkuMapper.selectById(Constant.GPT_ACTIVITY_GIFT_SKU_ID);
|
|
GoodsDonSku giftSku = goodsDonSkuMapper.selectById(Constant.GPT_ACTIVITY_GIFT_SKU_ID);
|
|
|
GroupsRelation giftRelation = null;
|
|
GroupsRelation giftRelation = null;
|
|
|
try {
|
|
try {
|
|
|
- giftRelation = exchangeCodeServiceProvider.getObject().getGroupTripsTicket(null, giftSku, userId, null, OrderDon.Type.EX_CODE, null);
|
|
|
|
|
|
|
+ Long giftRelationId = getTicket(userId, giftSku.getId(), Boolean.FALSE);
|
|
|
|
|
+ if (giftRelationId == null) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("系统繁忙,请重新领取");
|
|
|
|
|
+ }
|
|
|
|
|
+ giftRelation = groupsRelationMapper.selectById(giftRelationId);
|
|
|
|
|
+ if (giftRelation == null) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("系统繁忙,请重新领取");
|
|
|
|
|
+ }
|
|
|
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());
|
|
@@ -2855,16 +2859,16 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
.execute()
|
|
.execute()
|
|
|
.body();
|
|
.body();
|
|
|
if (StrUtil.isBlank(response)) {
|
|
if (StrUtil.isBlank(response)) {
|
|
|
- throw BusinessRuntimeException.getInstance("第三方兑换码接口返回为空");
|
|
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("系统异常,请重新兑换");
|
|
|
}
|
|
}
|
|
|
JsonNode responseNode = Jsons.parser().readTree(response);
|
|
JsonNode responseNode = Jsons.parser().readTree(response);
|
|
|
if (!responseNode.path("success").asBoolean(false)) {
|
|
if (!responseNode.path("success").asBoolean(false)) {
|
|
|
- String message = responseNode.path("message").asText("第三方兑换码接口调用失败");
|
|
|
|
|
|
|
+ String message = responseNode.path("message").asText("系统异常,请重新兑换");
|
|
|
throw BusinessRuntimeException.getInstance(message);
|
|
throw BusinessRuntimeException.getInstance(message);
|
|
|
}
|
|
}
|
|
|
JsonNode dataNode = responseNode.path("data");
|
|
JsonNode dataNode = responseNode.path("data");
|
|
|
if (!dataNode.isArray() || dataNode.size() == 0 || StrUtil.isBlank(dataNode.get(0).asText())) {
|
|
if (!dataNode.isArray() || dataNode.size() == 0 || StrUtil.isBlank(dataNode.get(0).asText())) {
|
|
|
- throw BusinessRuntimeException.getInstance("第三方兑换码接口未返回兑换码");
|
|
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("系统异常,请重新兑换");
|
|
|
}
|
|
}
|
|
|
GptActivityRedeemResult result = new GptActivityRedeemResult();
|
|
GptActivityRedeemResult result = new GptActivityRedeemResult();
|
|
|
result.setRedeemCode(dataNode.get(0).asText());
|
|
result.setRedeemCode(dataNode.get(0).asText());
|