Browse Source

Merge branch 'master' into pre

zoujiajian 2 năm trước cách đây
mục cha
commit
1a11eeab55

+ 10 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -345,4 +345,14 @@ public interface Constant {
 
 	//英文
 	String EN_US = "en_US";
+
+	/**
+	 * MJ特殊价格规格
+	 */
+	String MJ_SPECIAL_SKU_PRICE_KEY = "mj_special_sku_price_key";
+
+	/**
+	 * 特殊价格规格ids
+	 */
+	List<Long> SPECIAL_PRICE_SKU_IDS = List.of(409l);
 }

+ 21 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/GoodsDonPriceDto.java

@@ -0,0 +1,21 @@
+package com.cyksj.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: GoodsDonPriceDto
+ * 创建者: JavaZou
+ * 创建时间:2024/7/22 10:30
+ */
+@Getter
+@Setter
+public class GoodsDonPriceDto {
+	private BigDecimal price;
+
+	private List<Long> sharedId;
+}

+ 5 - 3
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptAccountServiceImpl.java

@@ -71,6 +71,8 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
 
     private static final long WINDOW_SIZE = 3 * 60 * 60; // 3小时窗口的秒数
 
+    private static final List<String> LOW_GPT_MODEL = List.of("gpt-4o-mini","text-davinci-002-render-sha");
+
     private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
     private final RedisService redisService;
@@ -495,7 +497,7 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
         chatgptUserConversationRecord.setModel(conversationRequest.getModel());
         chatgptUserConversationRecordMapper.insert(chatgptUserConversationRecord);
 
-        if(!"text-davinci-002-render-sha".equals(conversationRequest.getModel())){
+        if(!LOW_GPT_MODEL.contains(conversationRequest.getModel())){
             String key = RedisService.key.CHATGPT_CONVERSATION_LIMIT.getName() + ":" + userToken;
             long currentTimeMillis = System.currentTimeMillis();
 
@@ -514,7 +516,7 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
         }
 
         if (StringUtils.isNotBlank(chatgptSession.getCarId())) {
-            updateExperienceAndScore(chatgptSession.getCarId(), !"text-davinci-002-render-sha".equals(conversationRequest.getModel()), System.currentTimeMillis());
+            updateExperienceAndScore(chatgptSession.getCarId(), !LOW_GPT_MODEL.contains(conversationRequest.getModel()), System.currentTimeMillis());
         }
 
     }
@@ -524,7 +526,7 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
     public ConversationLimitResponse conversationLimit(String userToken, String model, String carId, ChatgptUser chatgptUser, Boolean isCar) {
         ConversationLimitResponse conversationLimitResponse = new ConversationLimitResponse();
         conversationLimitResponse.setLimited(false);
-        if (!"text-davinci-002-render-sha".equals(model)) {
+        if (!LOW_GPT_MODEL.contains(model)) {
             //如果不为车队 直接返回
             if (chatgptUser.getIsCar()) {
                 conversationLimitResponse = isConversationAllowed(userToken, chatgptUser.getLimitNum(), chatgptUser.getLimitTime());

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

@@ -456,6 +456,25 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (sku != null && payRequest.getDonMoney().compareTo(sku.getPrice()) < 0 && !isSpecificPrice) {
 			log.info("规格:{}支付金额:{}异常,调整用户userId:{}支付金额为:{}", sku.getSpecVal(), payRequest.getDonMoney(), user.getId(), sku.getPrice());
 			payRequest.setDonMoney(sku.getPrice());
+			//如 mj标准6人月付 价格特殊处理
+			if (Constant.SPECIAL_PRICE_SKU_IDS.contains(sku.getId())) {
+				UserDistributeShared distributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class)
+						.eq(UserDistributeShared::getUserId, userId)
+						.last("limit 1"));
+				if (distributeShared != null) {
+					SysConfig one = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
+							.eq(SysConfig::getSysKey, Constant.MJ_SPECIAL_SKU_PRICE_KEY)
+							.last("limit 1"));
+					if (one != null && StrUtil.isNotBlank(one.getSysValue())) {
+						GoodsDonPriceDto goodsDonPriceDto = Jsons.parseObject(one.getSysValue(), GoodsDonPriceDto.class);
+						Long sharedId = distributeShared.getSharedId();
+						List<Long> sharedIdList = goodsDonPriceDto.getSharedId();
+						if (CollUtil.isNotEmpty(sharedIdList) && sharedIdList.contains(sharedId)) {
+							payRequest.setDonMoney(goodsDonPriceDto.getPrice());
+						}
+					}
+				}
+			}
 		}
 
 		//租赁商品

+ 16 - 0
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -20,6 +20,7 @@ import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.RegisterOrderDonMapper;
 import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
 import com.cyksj.mapper.sys.SysConfigMapper;
+import com.cyksj.model.dto.GoodsDonPriceDto;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.ClickRecordReq;
 import com.cyksj.model.views.*;
@@ -419,6 +420,21 @@ public class GoodsDonController {
 					}
 				}
 			}
+			if (dsUserId.get() != 0 && Constant.SPECIAL_PRICE_SKU_IDS.contains(sku.getId())) {
+				Optional.ofNullable(sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
+						.eq(SysConfig::getSysValue, Constant.MJ_SPECIAL_SKU_PRICE_KEY)
+						.last("limit 1"))).ifPresent(sysConfig -> {
+					if (StrUtil.isNotBlank(sysConfig.getSysValue())) {
+						try {
+							GoodsDonPriceDto goodsDonPriceDto = Jsons.parseObject(sysConfig.getSysValue(), GoodsDonPriceDto.class);
+							if (CollUtil.isNotEmpty(goodsDonPriceDto.getSharedId()) && goodsDonPriceDto.getSharedId().contains(dsUserId)) {
+								sku.setPrice(goodsDonPriceDto.getPrice());
+							}
+						} catch (Exception e) {
+						}
+					}
+				});
+			}
 			return true;
 		}).collect(Collectors.toList()));
 		return GatewayResponse.SUCCESS.newBuilder().toResult(views);

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

@@ -171,7 +171,7 @@ public class MirrorController {
                 String url = "[点击此处升级](https://nf.video/ticket?relationId=%d&pType=pay)";
 
                 String format = String.format(url, user.getRelationId());
-                detail.setMessage("您目前的套餐已达到GPT-4的使用上限。您可以继续使用3.5,预计 " + DateUtil.format(new Date(conversationLimitResponse.getNextAvailableTime()), "yyyy-MM-dd HH:mm:ss") + " 恢复" + ",如需增加滚动时间内可询问次数," + format);
+                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 {