Просмотр исходного кода

Merge branch 'master' into pre

# Conflicts:
#	netflix-common/src/main/java/com/cyksj/common/constant/Constant.java
zoujiajian 2 лет назад
Родитель
Сommit
0708d9cc86

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopGoodsSkuMapper.java

@@ -23,7 +23,7 @@ public interface YhShopGoodsSkuMapper extends BaseMapper<YhShopGoodsSku> {
 	@Update("update yh_shop_goods_sku set status = 0 where sku_id = #{skuId} and price not between #{minPrice} and #{maxPrice}")
 	Integer setBelowPriceShopSkuDown(@Param("skuId") Long skuId, @Param("minPrice") BigDecimal minPrice, @Param("maxPrice") BigDecimal maxPrice);
 
-	@Select("select sku_id,price from yh_shop_goods_sku where yhs_id = #{yhsId} and goods_id = #{goodsId} and deleted is true and status is true order by price limit 1")
+	@Select("select sku_id,price from yh_shop_goods_sku ys where yhs_id = #{yhsId} and goods_id = #{goodsId} and deleted is true and status is true and exists(select 1 from goods_don_sku sku where sku.id = ys.sku_id and sku.status is true) order by price limit 1")
 	YhShopGoodsSku selectMinPriceSkuByYhsId(@Param("yhsId") Long yhsId, @Param("goodsId") Long goodsId);
 
 	@Select("select * from yh_shop_goods_sku where sku_id = #{skuId} and price not between #{minPrice} and #{maxPrice} and status = 1")

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

@@ -83,6 +83,11 @@ public class ChatgptUser extends BaseEntity {
      */
     private Long packageId;
 
+    /**
+     * 是否封禁
+     */
+    private Boolean isBlock;
+
     /**
      * 清洗套餐包时间
      */

+ 77 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -3704,6 +3704,83 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	}
 
 
+	@Override
+	public OrderDon submitRenewUpgrade(OrderPayRequest payRequest) {
+		Long packageId = payRequest.getPackageId();
+		Long relationId = payRequest.getRelationId();
+		if (relationId == null) {
+			throw BusinessRuntimeException.getInstance("系统异常");
+		}
+		Long userId = payRequest.getUserId();
+		User user = userMapper.selectById(userId);
+		if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
+		if (user.getIsBlack()) throw BusinessRuntimeException.getInstance("系统检测操作异常,请稍后再试");
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
+		int noPayCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
+				.in(OrderDon::getUserId, userIdList)
+				.eq(OrderDon::getRelationId, payRequest.getRelationId())
+				.eq(OrderDon::getStatus, OrderDon.Status.noPayment.toString()));
+		if (noPayCount > 0) {
+			throw new BusinessRuntimeException("您有未支付订单.");
+		}
+		GroupsRelation groupsRelation = getGroupsRelation(payRequest.getUserId(), payRequest.getRelationId());
+		GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
+		GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(groupsTrips.getSkuId());
+		GoodsDon goodsDon = goodsDonMapper.selectById(goodsDonSku.getGoodsId());
+		if (!goodsDonSku.getIsMirror()) {
+			throw BusinessRuntimeException.getInstance("系统异常");
+		}
+		Long renewSkuId = payRequest.getSkuId();
+		GoodsDonSku renewSku = goodsDonSkuMapper.selectById(renewSkuId);
+		//校验同规格
+		if (!ObjectUtil.equal(goodsDonSku.getGoodsId(), renewSku.getGoodsId())) {
+			throw BusinessRuntimeException.getInstance("系统异常");
+		}
+
+		OrderDon orderDon = new OrderDon();
+		orderDon.setUserId(userId);
+		orderDon.setGoodsId(goodsDonSku.getGoodsId());
+		orderDon.setRelationId(relationId);
+		orderDon.setSkuId(renewSkuId);
+		//续费订单
+		orderDon.setOrderType(2);
+		RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
+				.eq(RenewUpgradePackage::getId, packageId)
+				.eq(RenewUpgradePackage::getStatus, 1)
+				.eq(RenewUpgradePackage::getDeleted, 1));
+		if (renewUpgradePackage == null) {
+			throw BusinessRuntimeException.getInstance("续费升级套餐不存在");
+		}
+		BigDecimal price = renewSku.getPrice();
+		orderDon.setOriMoney(price);
+		orderDon.setRealMoney(price);
+		BigDecimal discountPrice = price.multiply(renewUpgradePackage.getDiscount());
+		orderDon.setMoney(discountPrice);
+
+		StringBuilder payTitle = new StringBuilder();
+		payTitle.append(goodsDon.getTitle()).append(renewSku.getSpecVal());
+		orderDon.setPayTitle(payTitle.toString());
+		String donNo = SEQUENCE.nextId().toString();
+		orderDon.setOrderNo(donNo);
+		orderDon.setStatus(OrderDon.Status.noPayment);
+
+		//虚拟商品订单,是否是分销订单
+		setDistributeOrderMark(orderDon, goodsDon.getType(), user.getId());
+
+		//存在余额
+		deductBalancePayOrderMoney(orderDon, payRequest.getBalance(), user);
+
+		orderDonMapper.insert(orderDon);
+		//记录续费升级的规格
+		recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
+
+		jobManager.addJob(EXPIRY_TIME, () -> {
+			closeOrder(orderDon.getId(), null);
+		});
+		return orderDon;
+	}
+
+
 	@Override
 	public OrderDon submitRenewUpgrade(OrderPayRequest payRequest) {
 		Long packageId = payRequest.getPackageId();

+ 7 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -121,7 +121,7 @@ public class CmsOrderController {
 
 	@GetMapping("/get")
 	@SaCheckPermission("order:view")
-	public Result<SearchResult<OrderDonBackView>> get(Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy) {
+	public Result<SearchResult<OrderDonBackView>> get(Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage) {
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		if (channelId != null) {
 			List<Long> popularizeIds = channelPopularizeMapper.getPopularizeIdByChannelId(channelId);
@@ -171,6 +171,12 @@ public class CmsOrderController {
 			}
 			conditionSql += " exists (select 1 from order_don_subsidy_relate ocr where ocr.order_id = o.id limit 1)";
 		}
+		if (isRenewPackage != null) {
+			if (StrUtil.isNotEmpty(conditionSql)) {
+				conditionSql += " and ";
+			}
+			conditionSql += " exists (select 1 from order_don_renew_record odrr1 where odrr1.order_id = o.id limit 1)";
+		}
 		if (StrUtil.isNotBlank(conditionSql)) {
 			builder.put("condition", conditionSql);
 		}

+ 31 - 17
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java

@@ -159,29 +159,43 @@ public class MirrorController {
         ChatgptUser user = chatGptAccountService.findByUserTokenAndExpireTimeAfter(userToken, LocalDateTime.now());
         //3.如果记录不存在,返回状态码 401
         if (user == null) {
-            response.setStatus(401);
-        }
-        if (StringUtils.isNotBlank(conversationRequest.getCarId())) {
-            //4.获取gpt-4 的规则限制
-            //text-davinci-002-render-sha 3.5
-            ConversationLimitResponse conversationLimitResponse = chatGptAccountService.conversationLimit(userToken, conversationRequest.getModel(), conversationRequest.getCarId(), user, isCar);
-
-            if (conversationLimitResponse.isLimited()) {
+            response.setStatus(400);
+            ChatgptConversionLimitView chatgptConversionLimitView = new ChatgptConversionLimitView();
+            ChatgptConversionLimitView.Detail detail = new ChatgptConversionLimitView.Detail();
+            detail.setMessage("看来您还没车票呢,是不是还没登录呀,赶紧去车票内重新选择上车 \uD83D\uDE97 [点击直达](https://nf.video/ticket)");
+            chatgptConversionLimitView.setDetail(detail);
+            return chatgptConversionLimitView;
+        }else {
+            if (user.getIsBlock() != null && user.getIsBlock()) {
                 response.setStatus(400);
-                //String json = "{\"detail\":{\"message\":\"您的账号已达到GPT-4的使用上限。您现在可以继续使用默认模型,或者重试在\",\"code\":\"model_cap_exceeded\",\"clears_in\":2687}}";
                 ChatgptConversionLimitView chatgptConversionLimitView = new ChatgptConversionLimitView();
                 ChatgptConversionLimitView.Detail detail = new ChatgptConversionLimitView.Detail();
-                String url = "[点击此处升级](https://nf.video/ticket?relationId=%d&pType=pay)";
-
-                String format = String.format(url, user.getRelationId());
-                detail.setMessage("您目前的套餐已达到GPT-4的使用上限。您可以继续使用3.5或4o-mini,预计 " + DateUtil.format(new Date(conversationLimitResponse.getNextAvailableTime()), "yyyy-MM-dd HH:mm:ss") + " 恢复" + ",如需增加滚动时间内可询问次数," + format);
+                detail.setMessage("抱歉,您因违反银河录像局使用条款已被封禁.");
                 chatgptConversionLimitView.setDetail(detail);
                 return chatgptConversionLimitView;
-            } else {
-                response.setStatus(200);
             }
-            //5.获取 conversationRequest 中的model 字段,判断是否为 gpt-4 如果为gpt-4 执行 查看是否达到限制方法
-            //6.如果达到限制,返回状态码 429 并返回文本 xxx
+            if (StringUtils.isNotBlank(conversationRequest.getCarId())) {
+                //4.获取gpt-4 的规则限制
+                //text-davinci-002-render-sha 3.5
+                ConversationLimitResponse conversationLimitResponse = chatGptAccountService.conversationLimit(userToken, conversationRequest.getModel(), conversationRequest.getCarId(), user, isCar);
+
+                if (conversationLimitResponse.isLimited()) {
+                    response.setStatus(400);
+                    //String json = "{\"detail\":{\"message\":\"您的账号已达到GPT-4的使用上限。您现在可以继续使用默认模型,或者重试在\",\"code\":\"model_cap_exceeded\",\"clears_in\":2687}}";
+                    ChatgptConversionLimitView chatgptConversionLimitView = new ChatgptConversionLimitView();
+                    ChatgptConversionLimitView.Detail detail = new ChatgptConversionLimitView.Detail();
+                    String url = "[点击此处升级](https://nf.video/ticket?relationId=%d&pType=pay)";
+
+                    String format = String.format(url, user.getRelationId());
+                    detail.setMessage("您目前的套餐已达到GPT-4的使用上限。您可以继续使用3.5或4o-mini,预计 " + DateUtil.format(new Date(conversationLimitResponse.getNextAvailableTime()), "yyyy-MM-dd HH:mm:ss") + " 恢复" + ",如需增加滚动时间内可询问次数," + format);
+                    chatgptConversionLimitView.setDetail(detail);
+                    return chatgptConversionLimitView;
+                } else {
+                    response.setStatus(200);
+                }
+                //5.获取 conversationRequest 中的model 字段,判断是否为 gpt-4 如果为gpt-4 执行 查看是否达到限制方法
+                //6.如果达到限制,返回状态码 429 并返回文本 xxx
+            }
         }
 
         return new ChatgptConversionLimitView();