Ver código fonte

GPT续费目前升级规格

zoujiajian 2 anos atrás
pai
commit
88a74af886
17 arquivos alterados com 283 adições e 23 exclusões
  1. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/OrderDonUpgradeRenewRecordMapper.java
  2. 2 1
      netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponUserMapper.java
  3. 2 0
      netflix-dao/src/main/java/com/cyksj/model/dto/RenewOriOrderSkuDto.java
  4. 5 0
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonRenewRecord.java
  5. 23 0
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonUpgradeRenewRecord.java
  6. 10 0
      netflix-dao/src/main/java/com/cyksj/model/views/ChatGptUserView.java
  7. 63 0
      netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuRenewView.java
  8. 12 0
      netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java
  9. 2 1
      netflix-dao/src/main/resources/mapper/CouponUserMapper.xml
  10. 2 0
      netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptAccountServiceImpl.java
  11. 1 1
      netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java
  12. 2 1
      netflix-service/src/main/java/com/cyksj/service/mange/MirrorUserCleatService.java
  13. 3 2
      netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java
  14. 31 1
      netflix-service/src/main/java/com/cyksj/service/mange/impl/MirrorUserCleatServiceImpl.java
  15. 81 16
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  16. 23 0
      netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java
  17. 8 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonUpgradeRenewRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.OrderDonUpgradeRenewRecord;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: OrderDonUpgradeRenewRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/8/29 15:53
+ */
+public interface OrderDonUpgradeRenewRecordMapper extends BaseMapper<OrderDonUpgradeRenewRecord> {
+}

+ 2 - 1
netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponUserMapper.java

@@ -9,6 +9,7 @@ import com.cyksj.model.views.CouponActiveView;
 import com.cyksj.model.views.CouponUserView;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -19,7 +20,7 @@ import java.util.Map;
  *创建时间:2022/11/18 11:43
  */
 public interface CouponUserMapper extends BaseMapper<CouponUser> {
-	Page<CouponUserView> getAvailableCouponList(@Param("skuId") Long skuId, @Param("couponId") Long couponId, @Param("goodsId") Long goodsId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew, @Param("page") IPage<CouponUserView> page);
+	Page<CouponUserView> getAvailableCouponList(@Param("skuId") Long skuId, @Param("skuMoney") BigDecimal skuMoney, @Param("couponId") Long couponId, @Param("goodsId") Long goodsId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew, @Param("page") IPage<CouponUserView> page);
 
 	List<CouponUserView> countAvailableCouponList(@Param("goodsId") Long goodsId, @Param("skuId") Long skuId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew);
 

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/RenewOriOrderSkuDto.java

@@ -14,6 +14,8 @@ import java.util.Date;
 @Getter
 @Setter
 public class RenewOriOrderSkuDto {
+	private Long orderId;
+
 	private OriSkuDto oriSku;
 
 	private Date lastExpiryTime;

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonRenewRecord.java

@@ -28,4 +28,9 @@ public class OrderDonRenewRecord extends BaseEntity{
 	 * 是否过期,默认false
 	 */
 	private Boolean isValid;
+
+	/**
+	 * 1普通,2续费
+	 */
+	private Integer orderType;
 }

+ 23 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonUpgradeRenewRecord.java

@@ -0,0 +1,23 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: OrderDonUpgradeRenewRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/8/29 15:48
+ * 套餐升级 续费套餐升级规格
+ */
+@Getter
+@Setter
+public class OrderDonUpgradeRenewRecord extends BaseEntity{
+	private Long orderId;
+
+	private Long oriSkuId;
+
+	private Long userId;
+
+	private Long packageId;
+}

+ 10 - 0
netflix-dao/src/main/java/com/cyksj/model/views/ChatGptUserView.java

@@ -75,4 +75,14 @@ public class ChatGptUserView {
      * 是否是续费升级
      */
     private Boolean isRenewPackage;
+
+    /**
+     * 续费升级规格id
+     */
+    private Long renewSkuId;
+
+    /**
+     * 续费升级订单id
+     */
+    private Long renewOrderId;
 }

+ 63 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuRenewView.java

@@ -0,0 +1,63 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: GoodsDonSkuRenewView
+ * 创建者: JavaZou
+ * 创建时间:2024/8/29 11:38
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don_sku sku left join goods_don g on g.id = sku.goods_id",
+		where = "sku.status is true and g.status is true and g.deleted is true")
+public class GoodsDonSkuRenewView {
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("sku.price")
+	private BigDecimal price;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("sku.months")
+	private Integer months;
+
+	/**
+	 * gpt 镜像限制次数
+	 */
+	@DbField("sku.gpt_limit_num")
+	private Integer gptUserLimitNum;
+
+	/**
+	 * gpt 镜像限制时间
+	 */
+	@DbField("sku.gpt_limit_time")
+	private Long gptUserLimitTime;
+
+	/**
+	 * 续费升级套餐id
+	 */
+	@DbIgnore
+	private Long packageId;
+
+	/**
+	 * 续费升级目前规格订单id
+	 */
+	@DbIgnore
+	private Long originalOrderId;
+}

+ 12 - 0
netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java

@@ -291,6 +291,18 @@ public class RenewalView {
     @DbIgnore
     private Boolean isRenewPackage;
 
+    /**
+     * 续费升级规格id
+     */
+    @DbIgnore
+    private Long renewSkuId;
+
+    /**
+     * 续费升级目前规格
+     */
+    @DbIgnore
+    private GoodsDonSkuRenewView renewSku;
+
     /**
      * 续费升级折扣
      */

+ 2 - 1
netflix-dao/src/main/resources/mapper/CouponUserMapper.xml

@@ -21,6 +21,7 @@
         cp.use_scope,
         cu.created_time,
         cu.status as couponUserStatus,
+        if(type = 'discount',${skuMoney} * (1-cp.discount),reduce_money) as couponMoney,
         if(ck.id is null, 0, 1) as 'isAvailable',
         if(ca.id is not null and ca.expiry_status = 0,false,true) flag,
         (case
@@ -53,7 +54,7 @@
             order by isAvailable desc,orderby
         </if>
         <if test="couponId != null">
-            order by case when cp.id = #{couponId} then 2 else isAvailable end desc,orderby
+            order by case when cp.id = #{couponId} then 2 else isAvailable end desc,orderby,couponMoney desc
         </if>)s where flag = 1 and couponUserStatus != 'used' and orderby != 2
     </select>
 

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptAccountServiceImpl.java

@@ -843,6 +843,8 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
                     .packageId(chatgptUser.getPackageId())
                     .packagePrice(packagePrice)
                     .isRenewPackage(chatgptUser.getRenewOrderId() != null ? true : false)
+                    .renewSkuId(chatgptUser.getRenewSkuId())
+                    .renewOrderId(chatgptUser.getRenewOrderId())
                     .build();
         } else {
             throw BusinessRuntimeException.getInstance("您还未购买该车票");

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -135,7 +135,7 @@ public class CouponFontServiceImpl implements CouponFontService {
 		if (goodsDonSkuView.getType() == 2) {
 			goodsId = goodsDonSkuView.getGoodsId();
 		}
-		Page<CouponUserView> availableCouponList = couponUserMapper.getAvailableCouponList(skuId, couponId, goodsId, userId, isRenew, new Page<>(start, limit));
+		Page<CouponUserView> availableCouponList = couponUserMapper.getAvailableCouponList(skuId, skuMoney, couponId, goodsId, userId, isRenew, new Page<>(start, limit));
 		Optional.ofNullable(availableCouponList).ifPresent(page->{
 			page.getRecords().stream().forEach(data->{
 				String str = couponSkuMapper.selectGoodsSkuStr(data.getCouponId());

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/mange/MirrorUserCleatService.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.mange;
 
+import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.OrderDon;
 
 /**
@@ -15,5 +16,5 @@ public interface MirrorUserCleatService {
 	 * 处理续费升级订单,将镜像车票还原
 	 * @param orderDon
 	 */
-	void handleRenewUpgradeOrders(OrderDon orderDon);
+	void handleRenewUpgradeOrders(OrderDon orderDon, GoodsDonSku sku);
 }

+ 3 - 2
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -199,6 +199,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final OrderDonRenewRecordMapper orderDonRenewRecordMapper;
 
+    private final OrderDonUpgradeRenewRecordMapper orderDonUpgradeRenewRecordMapper;
+
     private final LumaUserMapper lumaUserMapper;
 
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
@@ -378,7 +380,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         orderDonMapper.updateById(orderDon);
         //续费升级订单
         if (orderDon.getOrderType() == 2 && sku.getIsMirror()) {
-            mirrorUserCleatService.handleRenewUpgradeOrders(orderDon);
+            mirrorUserCleatService.handleRenewUpgradeOrders(orderDon, sku);
         }
         //提交过工单的订单
         //将用户异常订单关闭
@@ -1404,5 +1406,4 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             }
         }
     }
-
 }

+ 31 - 1
netflix-service/src/main/java/com/cyksj/service/mange/impl/MirrorUserCleatServiceImpl.java

@@ -48,6 +48,8 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 
 	private final LumaUserMapper lumaUserMapper;
 
+	private final OrderDonUpgradeRenewRecordMapper orderDonUpgradeRenewRecordMapper;
+
 	@Override
 	public void delMirrorUser(Long goodsId, Long relationId) {
 		//gpt镜像
@@ -92,7 +94,7 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 	}
 
 	@Override
-	public void handleRenewUpgradeOrders(OrderDon orderDon) {
+	public void handleRenewUpgradeOrders(OrderDon orderDon, GoodsDonSku sku) {
 		Long orderId = orderDon.getId();
 		OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
 				.eq(OrderDonRenewRecord::getOrderId, orderId)
@@ -158,5 +160,33 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 			orderDonRenewRecord.setIsValid(true);
 			orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
 		}
+
+		if (orderDonRenewRecord == null && orderDon.getOrderType() == 2) {
+			//退款续费 套餐升级订单
+			handleGptMirrorRenewOrderRefund(orderDon, sku);
+		}
+	}
+
+	/**
+	 * 镜像续费订单退款 清除user额外功能时间
+	 */
+	private void handleGptMirrorRenewOrderRefund(OrderDon orderDon, GoodsDonSku sku) {
+		Long id = orderDon.getId();
+		OrderDonUpgradeRenewRecord orderDonUpgradeRenewRecord = orderDonUpgradeRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonUpgradeRenewRecord.class)
+				.eq(OrderDonUpgradeRenewRecord::getOrderId, id)
+				.last("limit 1"));
+		ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+				.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
+				.last("limit 1"));
+		if (chatgptUser == null) {
+			return;
+		}
+		if (orderDonUpgradeRenewRecord != null) {
+			Date clearPackageTime = chatgptUser.getClearPackageTime();
+			clearPackageTime = DateUtil.offsetMonth(clearPackageTime, -sku.getMonths());
+			log.info("GPT镜像续费订单退款,user清除套餐升级过期时间:{} ---> {}", chatgptUser.getClearPackageTime(), clearPackageTime);
+			chatgptUser.setClearPackageTime(clearPackageTime);
+			chatgptUserMapper.updateById(chatgptUser);
+		}
 	}
 }

+ 81 - 16
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -323,6 +323,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final OrderDonPosterRelateMapper orderDonPosterRelateMapper;
 
+	private final OrderDonUpgradeRenewRecordMapper orderDonUpgradeRenewRecordMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -1049,6 +1051,43 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 			corpInteractiveUserOrderRelationMapper.insert(corpInteractiveUserOrderRelation);
 		}
+		//GPT续费升级 目前升级套餐续费
+		if ((payRequest.getPackageId() != null || payRequest.getOriginalOrderId() != null) && orderDon.getGoodsId() == 18 && sku.getIsMirror()) {
+			try {
+				//记录续费升级订单 目前升级规格续费
+				ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+						.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
+						.last("limit 1"));
+				if (chatgptUser != null) {
+					//是续费升级的规格
+					if (payRequest.getOriginalOrderId() != null && chatgptUser.getRenewSkuId() != null && chatgptUser.getRenewSkuId().intValue() == orderDon.getSkuId()) {
+						OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
+								.eq(OrderDonRenewRecord::getOrderId, payRequest.getOriginalOrderId()));
+						//无优惠折扣 但订单可使用优惠码
+						RenewUpgradePackage renewUpgradePackage = new RenewUpgradePackage();
+						renewUpgradePackage.setId(orderDonRenewRecord.getPackageId());
+						renewUpgradePackage.setDiscount(BigDecimal.ONE);
+						recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
+					}
+					if (payRequest.getPackageId() != null && chatgptUser.getPackageId() != null && chatgptUser.getPackageId().intValue() == payRequest.getPackageId().intValue()) {
+						UpgradeOrderDon upgradeOrderDon = upgradeOrderDonMapper.selectOne(Wrappers.lambdaQuery(UpgradeOrderDon.class)
+								.eq(UpgradeOrderDon::getRelationId, orderDon.getRelationId())
+								.eq(UpgradeOrderDon::getPackageId, payRequest.getPackageId())
+								.in(UpgradeOrderDon::getUserId, userIdList)
+								.eq(UpgradeOrderDon::getStatus, UpgradeOrderDon.Status.complete)
+								.orderByDesc(UpgradeOrderDon::getId)
+								.last("limit 1"));
+						if (upgradeOrderDon != null) {
+							recordUpgradeRenewOrderDon(orderDon, upgradeOrderDon.getPackageId(), groupsTrips);
+						}
+					}
+				}
+			} catch (Exception e) {
+				log.error("记录续费升级错误:{}", StringUtil.getErrorText(e));
+			}
+		}
+		//记录订单ip关联
+		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		//订单金额为0 且订单为已完成 更新虚物车票
 		if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0) {
 			OrderDon updateOrder = orderDonMapper.selectById(orderDon.getId());
@@ -1073,8 +1112,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 			return updateOrder;
 		}
-		//记录订单ip关联
-		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		return orderDon;
 	}
 
@@ -3831,34 +3868,62 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDonRenewRecord.setPackageId(renewUpgradePackage.getId());
 		orderDonRenewRecord.setDiscount(renewUpgradePackage.getDiscount());
 		orderDonRenewRecord.setOriSkuId(groupsTrips.getSkuId());
+		orderDonRenewRecord.setOrderType(orderDon.getOrderType());
 		orderDonRenewRecordMapper.insert(orderDonRenewRecord);
 	}
 
+	/**
+	 * 记录套餐升级 续费订单
+	 */
+	private void recordUpgradeRenewOrderDon(OrderDon orderDon, Long packageId, GroupsTrips groupsTrips) {
+		OrderDonUpgradeRenewRecord orderDonUpgradeRenewRecord = new OrderDonUpgradeRenewRecord();
+		orderDonUpgradeRenewRecord.setOrderId(orderDon.getId());
+		orderDonUpgradeRenewRecord.setUserId(orderDon.getUserId());
+		orderDonUpgradeRenewRecord.setPackageId(packageId);
+		orderDonUpgradeRenewRecord.setOriSkuId(groupsTrips.getSkuId());
+		orderDonUpgradeRenewRecordMapper.insert(orderDonUpgradeRenewRecord);
+	}
+
 	//镜像续费升级
 	private void handleMirrorRenew(GoodsDonSku sku, OrderDon order, GroupsTrips groupsTrips, Long relationId, Date newDate) {
-		if (sku.getIsMirror() && order.getOrderType() == 2) {
+		if (sku.getGoodsId() == 18 && sku.getIsMirror() && order.getOrderType() == 2) {
 			OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
 					.eq(OrderDonRenewRecord::getOrderId, order.getId())
 					.last("limit 1"));
+			//升级gptUser次数
+			ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+					.eq(ChatgptUser::getRelationId, relationId)
+					.last("limit 1"));
+			if (chatgptUser == null) {
+				return;
+			}
 			if (orderDonRenewRecord != null) {
 				//同规格续费无需更新
 				if (!ObjectUtil.equal(groupsTrips.getSkuId(), order.getSkuId())) {
 					log.info("用户续费升级订单skuId:{}将用户车票relationId:{}套餐续费升级", order.getSkuId(), relationId);
-					//升级gptUser次数
-					ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
-							.eq(ChatgptUser::getRelationId, relationId)
-							.last("limit 1"));
-					if (chatgptUser != null) {
-						chatgptUser.setLimitTime(sku.getGptLimitTime());
-						chatgptUser.setLimitNum(sku.getGptLimitNum());
-						//记录续费升级过期的时间
-						chatgptUser.setRenewExpiryTime(newDate);
-						chatgptUser.setRenewOrderId(order.getId());
-						chatgptUser.setRenewSkuId(order.getSkuId());
-						chatgptUserMapper.updateById(chatgptUser);
-					}
+					chatgptUser.setLimitTime(sku.getGptLimitTime());
+					chatgptUser.setLimitNum(sku.getGptLimitNum());
+					//记录续费升级过期的时间
+					chatgptUser.setRenewExpiryTime(newDate);
+					chatgptUser.setRenewOrderId(order.getId());
+					chatgptUser.setRenewSkuId(order.getSkuId());
 				}
 			}
+
+			//套餐升级 续费订单
+			OrderDonUpgradeRenewRecord orderDonUpgradeRenewRecord = null;
+			if (orderDonRenewRecord == null) {
+				orderDonUpgradeRenewRecord = orderDonUpgradeRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonUpgradeRenewRecord.class)
+						.eq(OrderDonUpgradeRenewRecord::getOrderId, order.getId())
+						.last("limit 1"));
+			}
+			if (orderDonUpgradeRenewRecord != null) {
+				Date clearPackageTime = chatgptUser.getClearPackageTime();
+				clearPackageTime = DateUtil.offsetMonth(clearPackageTime, sku.getMonths());
+				log.info("GPT镜像套餐升级,user套餐升级过期时间:{} ---> {}", chatgptUser.getRenewExpiryTime(), clearPackageTime);
+				chatgptUser.setClearPackageTime(clearPackageTime);
+			}
+			chatgptUserMapper.updateById(chatgptUser);
 		}
 	}
 

+ 23 - 0
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -150,6 +150,10 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 	private final UserDistributePosterRecordMapper userDistributePosterRecordMapper;
 
+	private final OrderDonRenewRecordMapper orderDonRenewRecordMapper;
+
+	private final UpgradeOrderDonMapper upgradeOrderDonMapper;
+
 	@Override
 	public SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account) {
 		User u = userMapper.selectById(userId);
@@ -307,8 +311,24 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 					if (userInfo.getPackageId() != 0) {
 						UpgradePackage upgradePackage = upgradePackageMapper.selectById(userInfo.getPackageId());
 						ticket.setPackagePrice(upgradePackage.getPrice());
+						Long upgradeOrderDonSkuId = upgradePackage.getUpgradeSkuId();
+						GoodsDonSkuRenewView renewSku = beanSearcher.searchFirst(GoodsDonSkuRenewView.class, MapUtils.builder().field(GoodsDonSkuRenewView::getSkuId, upgradeOrderDonSkuId).build());
+						renewSku.setPackageId(userInfo.getPackageId());
+						ticket.setRenewSku(renewSku);
 					}
 					ticket.setIsRenewPackage(userInfo.getIsRenewPackage());
+					Long renewSkuId = userInfo.getRenewSkuId();
+					if (renewSkuId != null) {
+						GoodsDonSkuRenewView upgradeSkuRenewView = ticket.getRenewSku();
+						GoodsDonSkuRenewView renewSku = beanSearcher.searchFirst(GoodsDonSkuRenewView.class, MapUtils.builder().field(GoodsDonSkuRenewView::getSkuId, renewSkuId).build());
+						//续费升级是更高级规格
+						if (upgradeSkuRenewView == null || (renewSku.getGptUserLimitNum() >= upgradeSkuRenewView.getGptUserLimitNum() && renewSku.getMonths() >= userInfo.getMonths())) {
+							Optional.ofNullable(orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
+									.eq(OrderDonRenewRecord::getOrderId, userInfo.getRenewOrderId())
+									.last("limit 1"))).ifPresent(e -> renewSku.setOriginalOrderId(e.getOrderId()));
+							ticket.setRenewSku(renewSku);
+						}
+					}
 				} catch (Exception e) {
 				}
 			}
@@ -773,6 +793,9 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				return false;
 			}
 			Integer skuMonths = ticket.getMonths();
+			if (skuMonths == null) {
+				return false;
+			}
 			Date expiryTime = ticket.getExpiryTime();
 			//年付 提前一个月
 			if (skuMonths >= 12) {

+ 8 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -118,6 +118,8 @@ public class CmsOrderController {
 
 	private final OrderDonRenewRecordMapper orderDonRenewRecordMapper;
 
+	private final ChatgptUserMapper chatgptUserMapper;
+
 
 	@GetMapping("/get")
 	@SaCheckPermission("order:view")
@@ -1095,6 +1097,12 @@ public class CmsOrderController {
 				OriSkuDto oriSku = skuMapper.selectRenewOriSku(orderDonRenewRecord.getOriSkuId());
 				renewOriOrderSkuDto.setOriSku(oriSku);
 				renewOriOrderSkuDto.setLastExpiryTime(lastExpiryTIme);
+				ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+						.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
+						.last("limit 1"));
+				if (chatgptUser != null) {
+					renewOriOrderSkuDto.setOrderId(chatgptUser.getRenewOrderId());
+				}
 				return GatewayResponse.SUCCESS.newBuilder().toResult(renewOriOrderSkuDto);
 			}
 		}