Explorar o código

独立会员订单导入代充列表

zoujiajian hai 1 ano
pai
achega
efd7b1c77b

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/request/GptIndependentExportRechargeReq.java

@@ -0,0 +1,18 @@
+package com.cyksj.model.request;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: GptIndependentExportRechargeReq
+ * 创建者: JavaZou
+ * 创建时间:2025/8/8 14:17
+ */
+@Getter
+@Setter
+public class GptIndependentExportRechargeReq {
+	private String orderNo;
+
+	private Integer num;
+}

+ 6 - 0
netflix-service/src/main/java/com/cyksj/service/mange/gpt/GptRechargeService.java

@@ -1,5 +1,7 @@
 package com.cyksj.service.mange.gpt;
 
+import com.cyksj.model.entity.GroupsRelation;
+import com.cyksj.model.request.GptIndependentExportRechargeReq;
 import com.cyksj.model.request.GroupsRelationRechargeReq;
 import com.cyksj.server.recharge.dto.TaskResult;
 import com.cyksj.server.recharge.dto.TokenParseResult;
@@ -16,4 +18,8 @@ public interface GptRechargeService {
 	String confirmRecharge(long adminId, GroupsRelationRechargeReq req);
 
 	TaskResult getTaskResult(String taskId);
+
+	void gptIndependentExportRecharge(GptIndependentExportRechargeReq rechargeReq);
+
+	GroupsRelation getOrderRelation(String orderNo);
 }

+ 59 - 0
netflix-service/src/main/java/com/cyksj/service/mange/gpt/impl/GptRechargeServiceImpl.java

@@ -14,6 +14,7 @@ import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.request.GptIndependentExportRechargeReq;
 import com.cyksj.model.request.GroupsRelationRechargeReq;
 import com.cyksj.redis.RedisService;
 import com.cyksj.server.recharge.dto.CardKeyValidationResult;
@@ -22,12 +23,15 @@ import com.cyksj.server.recharge.dto.TaskSubmitResult;
 import com.cyksj.server.recharge.dto.TokenParseResult;
 import com.cyksj.service.chatgpt.GptUserRechargeRecordService;
 import com.cyksj.service.mange.gpt.GptRechargeService;
+import com.cyksj.service.user.UserBindRelationService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 项目名: yhlxj11111111
@@ -57,6 +61,8 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 
 	private final RedisService redisService;
 
+	private final UserBindRelationService userBindRelationService;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 
@@ -232,6 +238,59 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 		}
 	}
 
+	@Override
+	public void gptIndependentExportRecharge(GptIndependentExportRechargeReq rechargeReq) {
+		String orderNo = rechargeReq.getOrderNo();
+		OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getOrderNo, orderNo).notIn(OrderDon::getStatus, Constant.noOrderAllStatus));
+		if (orderDon == null) {
+			throw BusinessRuntimeException.getInstance("订单不存在或已退款");
+		}
+		//只支持GPT独立会员类型
+		List<Long> gptIdpSkuIds = skuMapper.selectList(Wrappers.lambdaQuery(GoodsDonSku.class).eq(GoodsDonSku::getGoodsId, Constant.GPT_PLUS_GID).eq(GoodsDonSku::getNum, 1)).stream().map(GoodsDonSku::getId).collect(Collectors.toList());
+		if (!gptIdpSkuIds.contains(orderDon.getSkuId())) {
+			throw BusinessRuntimeException.getInstance("只支持GPT独立会员类型");
+		}
+		Long relationId = orderDon.getRelationId();
+		Long userId = orderDon.getUserId();
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class).eq(GroupsRelation::getId, relationId).in(GroupsRelation::getUserId, userIdList).gt(GroupsRelation::getExpiryTime, DateTime.now()).last("limit 1"));
+		if (relation == null) {
+			throw BusinessRuntimeException.getInstance("独立会员车票不存在或已过期");
+		}
+		if (relation.getRenewStatus() != null) {
+			throw BusinessRuntimeException.getInstance("该笔订单号已导入");
+		}
+		Integer num = rechargeReq.getNum();
+		relation.setRechargeStatus(GroupsRelation.RechargeStatus.waiting);
+		GoodsDonSku sku = skuMapper.selectById(orderDon.getSkuId());
+		Integer months = sku.getMonths();
+		//总代充次数
+		relation.setRechargeNum(months > num ? months : num);
+		relation.setRechargeRemainNum(num);
+		relationMapper.updateById(relation);
+	}
+
+	@Override
+	public GroupsRelation getOrderRelation(String orderNo) {
+		OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getOrderNo, orderNo).notIn(OrderDon::getStatus, Constant.noOrderAllStatus));
+		if (orderDon == null) {
+			throw BusinessRuntimeException.getInstance("订单不存在或已退款");
+		}
+		//只支持GPT独立会员类型
+		List<Long> gptIdpSkuIds = skuMapper.selectList(Wrappers.lambdaQuery(GoodsDonSku.class).eq(GoodsDonSku::getGoodsId, Constant.GPT_PLUS_GID).eq(GoodsDonSku::getNum, 1)).stream().map(GoodsDonSku::getId).collect(Collectors.toList());
+		if (!gptIdpSkuIds.contains(orderDon.getSkuId())) {
+			throw BusinessRuntimeException.getInstance("只支持GPT独立会员类型");
+		}
+		Long relationId = orderDon.getRelationId();
+		Long userId = orderDon.getUserId();
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class).eq(GroupsRelation::getId, relationId).in(GroupsRelation::getUserId, userIdList).gt(GroupsRelation::getExpiryTime, DateTime.now()).last("limit 1"));
+		if (relation == null) {
+			throw BusinessRuntimeException.getInstance("独立会员车票不存在或已过期");
+		}
+		return relation;
+	}
+
 	public CardKeyValidationResult validateCardKey(String cardKey) {
 		log.info("开始验证卡密: {}", cardKey);
 		try {

+ 20 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/group/CmsGroupRelationController.java

@@ -20,6 +20,7 @@ import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.manage.views.GroupsRelationBackView;
+import com.cyksj.model.request.GptIndependentExportRechargeReq;
 import com.cyksj.model.request.GroupsRelationRechargeReq;
 import com.cyksj.model.request.RechargeRemainNumReq;
 import com.cyksj.model.views.DisableAccountView;
@@ -363,6 +364,25 @@ public class CmsGroupRelationController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(gptRechargeService.getTaskResult(taskId));
     }
 
+    /**
+     * 订单号车票详情
+     */
+    @GetMapping("/get/order/relation")
+    public Result<GroupsRelation> getOrderRelation(String orderNo) {
+        GroupsRelation relation = gptRechargeService.getOrderRelation(orderNo);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(relation);
+    }
+
+    /**
+     * GPT独立会员导入代充列表
+     */
+    @PostMapping("/gpt/independent/export/recharge")
+    @Log(module = "账号管理/用户代充/导入GPT独立会员订单", businessType = BusinessType.POST, isSaveRequestData = true)
+    public Result<String> gptIndependentExportRecharge(@RequestBody GptIndependentExportRechargeReq rechargeReq) {
+        gptRechargeService.gptIndependentExportRecharge(rechargeReq);
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
 
     /**
      * Chat GPT独立规格续费 列表