浏览代码

修改部分镜像gemini逻辑

chenbiao 7 月之前
父节点
当前提交
2515d18f23

+ 5 - 4
netflix-dao/src/main/java/com/cyksj/model/views/GeminiUserView.java

@@ -20,6 +20,11 @@ public class GeminiUserView {
      */
     private String skuName;
 
+    /**
+     *  用户token
+     */
+    private String userToken;
+
     /**
      * 过期时间
      */
@@ -35,8 +40,4 @@ public class GeminiUserView {
      */
     private Integer limitNum;
 
-    /**
-     * 使用次数
-     */
-    private Long use;
 }

+ 0 - 10
netflix-service/src/main/java/com/cyksj/service/gemini/GeminiService.java

@@ -44,16 +44,6 @@ public interface GeminiService {
      */
     String getCarLoginUrl(String domain, Long userId, Long relationId, String carId);
 
-    /**
-     * 获取滑动窗口内的对话次数
-     */
-    Long getConversationCount(String userToken, Long limitTime);
-
-    /**
-     * 对话次数限制检查
-     */
-    ConversationLimitResponse conversationLimit(String userToken, GeminiUser user);
-
     /**
      * 清除次数
      */

+ 1 - 49
netflix-service/src/main/java/com/cyksj/service/gemini/impl/GeminiServiceImpl.java

@@ -93,9 +93,9 @@ public class GeminiServiceImpl implements GeminiService {
             GeminiUserView view = GeminiUserView.builder()
                     .skuName(goodsDonSku.getSubTitle())
                     .expireTime(geminiUser.getExpireTime())
+                    .userToken(geminiUser.getUserToken())
                     .limitNum(geminiUser.getLimitNum())
                     .limitTime(geminiUser.getLimitTime())
-                    .use(Math.min(geminiUser.getLimitNum(), getConversationCount(geminiUser.getUserToken(), geminiUser.getLimitTime())))
                     .build();
             return view;
         } else {
@@ -158,54 +158,6 @@ public class GeminiServiceImpl implements GeminiService {
         }
     }
 
-    @Override
-    public Long getConversationCount(String userToken, Long limitTime) {
-        String key = "gemini:conversation:limit:" + userToken;
-        long currentTimeMillis = System.currentTimeMillis();
-        long windowStartMillis = currentTimeMillis - (limitTime * 60 * 60) * 1000;
-
-        // 清除时间窗口之前的请求记录
-        redisService.zRemoveRangeByScore(key, 0, windowStartMillis);
-
-        Long count = redisService.zCard(key);
-        return count != null ? count : 0L;
-    }
-
-    @Override
-    public ConversationLimitResponse conversationLimit(String userToken, GeminiUser user) {
-        return isConversationAllowed(userToken, user.getLimitNum(), user.getLimitTime());
-    }
-
-    /**
-     * 滑动窗口限制检查
-     */
-    private ConversationLimitResponse isConversationAllowed(String userToken, int limit, Long limitTime) {
-        String key = "gemini:conversation:limit:" + userToken;
-        long currentTimeMillis = System.currentTimeMillis();
-        long windowStartMillis = currentTimeMillis - (limitTime * 60 * 60) * 1000;
-
-        ConversationLimitResponse response = new ConversationLimitResponse();
-
-        // 清除时间窗口之前的请求记录
-        redisService.zRemoveRangeByScore(key, 0, windowStartMillis);
-
-        Long currentSize = redisService.zCard(key);
-        if (currentSize != null && currentSize >= limit) {
-            // 超过限制,拒绝请求
-            Set<Object> times = redisService.zRangeByScore(key, 0, currentTimeMillis, 0, 1);
-            Long oldestTime = (Long) times.stream().findFirst().orElse(null);
-            if (oldestTime != null) {
-                long nextAvailableTime = oldestTime + (limitTime * 60 * 60 * 1000);
-                response.setNextAvailableTime(nextAvailableTime);
-            }
-            response.setLimited(true);
-            return response;
-        } else {
-            response.setLimited(false);
-            return response;
-        }
-    }
-
     /**
      * Gemini镜像端API域名
      */

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

@@ -662,14 +662,6 @@ public class MirrorController {
                 return result.toString();
             }
 
-            // 检查次数限制
-            ConversationLimitResponse limitResponse = geminiService.conversationLimit(req.getUsertoken(), user);
-            if (limitResponse.isLimited()) {
-                result.put("code", 0);
-                result.put("msg", "使用次数已达上限,请稍后再试");
-                return result.toString();
-            }
-
             result.put("code", 1);
             result.put("msg", "success");
             result.put("grant", user.getIsPlus() ? "pro" : "free");