远兮 commited on
Commit
3dcffd6
·
1 Parent(s): 14b9fe4

封装api response,支持跨域,添加package api。

Browse files
.gitignore CHANGED
@@ -1,2 +1,3 @@
1
  .chroma/
2
- .inner/
 
 
1
  .chroma/
2
+ .inner/
3
+ __pycache__
chatgpt-next-web/ApiResponse.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class ApiResponse:
2
+ def __init__(self, code, message, data=None):
3
+ self.code = code
4
+ self.message = message
5
+ self.data = data
6
+
7
+ def to_json(self):
8
+ return {
9
+ 'code': self.code,
10
+ 'message': self.message,
11
+ 'data': self.data
12
+ }
chatgpt-next-web/pay_package.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ packages = [{
2
+ 'title': '基础套餐(推荐)',
3
+ 'package_id': '1',
4
+ 'basic_chat_limit': 10,
5
+ 'advanced_chat_limit': 10,
6
+ 'price': 10,
7
+ 'expiration': -1
8
+ },
9
+ {
10
+ 'title': '高级套餐(推荐)',
11
+ 'package_id': '2',
12
+ 'basic_chat_limit': -1, # -1 表示无限次
13
+ 'advanced_chat_limit': -1,
14
+ 'price': 100,
15
+ 'expiration': -1
16
+ }
17
+ ]
18
+
19
+
20
+ test_packages = [{
21
+ "id": 8,
22
+ "uuid": "3a07df99-e0d7-4855-835d-ff957e118946",
23
+ "title": "李振超级无敌套餐",
24
+ "subTitle": "",
25
+ "tokens": -1,
26
+ "chatCount": -1,
27
+ "advancedChatCount": -1,
28
+ "drawCount": -1,
29
+ "days": 99999,
30
+ "state": 10,
31
+ "calcTypeId": 2,
32
+ "calcType": "Daily",
33
+ "price": 9999.00,
34
+ "top": 0,
35
+ "createTime": "2023-07-03 22:54:22",
36
+ "updateTime": "2023-07-03 22:54:27"
37
+ }, {
38
+ "id": 9,
39
+ "uuid": "b2cadc5e-0a18-4aef-99c5-8375f5867534",
40
+ "title": "X套餐",
41
+ "subTitle": "",
42
+ "tokens": 10000,
43
+ "chatCount": 0,
44
+ "advancedChatCount": 0,
45
+ "drawCount": 0,
46
+ "days": 30,
47
+ "state": 10,
48
+ "calcTypeId": 1,
49
+ "calcType": "Total",
50
+ "price": 10.00,
51
+ "top": 0,
52
+ "createTime": "2023-07-14 22:01:54",
53
+ "updateTime": "2023-07-14 22:02:07"
54
+ }, {
55
+ "id": 10,
56
+ "uuid": "e1623644-caf0-43a2-a298-9894a68290a3",
57
+ "title": "小时套餐",
58
+ "subTitle": "小时套餐",
59
+ "tokens": 0,
60
+ "chatCount": 2,
61
+ "advancedChatCount": 0,
62
+ "drawCount": 0,
63
+ "days": 31,
64
+ "state": 10,
65
+ "calcTypeId": 4,
66
+ "calcType": "ThreeHourly",
67
+ "price": 0.01,
68
+ "top": 0,
69
+ "createTime": "2023-07-23 12:55:30",
70
+ "updateTime": "2023-07-23 12:55:33"
71
+ }]
72
+
73
+
74
+ # 根据套餐ID获取套餐信息
75
+ def get_package_by_id(package_id):
76
+ for package in packages:
77
+ if package['package_id'] == package_id:
78
+ return package
79
+ return None
chatgpt-next-web/service.py CHANGED
@@ -10,13 +10,17 @@ import os
10
  from flask import Flask, request, jsonify, Request, Response
11
  from redis import Redis
12
  from utils import nowtime
 
 
 
13
 
14
  SECERT_KEY = "8U2LL1"
15
  MY_OPENAI_API_KEY = os.environ.get('MY_OPENAI_API_KEY')
16
 
17
  app = Flask(__name__)
18
- # redis = Redis(host='192.168.3.229', port=6379, password='lizhen-redis')
19
- redis = Redis(host='10.254.13.87', port=6379)
 
20
  # redis = Redis(host='localhost', port=6379)
21
 
22
 
@@ -171,7 +175,7 @@ def purchase():
171
  return jsonify({'code': 401, 'message': 'Invalid token'})
172
 
173
  # 根据套餐ID获取套餐信息
174
- package = get_package_by_id(package_id)
175
  if not package:
176
  return jsonify({'code': 400, 'message': 'Invalid package ID'})
177
 
@@ -314,6 +318,25 @@ def handle_pick_up_free_chat_count():
314
  return {'message': '您今天已经领取了'}
315
 
316
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
317
  def parse_token(request: Request):
318
  token_with_bearer = request.headers.get('Authorization')
319
 
@@ -382,39 +405,20 @@ def get_user_id_by_username(username):
382
  return None
383
 
384
 
385
- # 根据套餐ID获取套餐信息
386
- def get_package_by_id(package_id):
387
- packages = {
388
- '1': {
389
- 'package_id': '1',
390
- 'name': 'Package 1',
391
- 'basic_chat_limit': 10,
392
- 'advanced_chat_limit': 10,
393
- 'price': 10,
394
- 'expiration': 30 * 24 * 60 * 60 # 过期时间为30天(以秒为单位)
395
- },
396
- '2': {
397
- 'package_id': '2',
398
- 'name': 'Package 2',
399
- 'basic_chat_limit': -1, # -1 表示无限次
400
- 'advanced_chat_limit': -1,
401
- 'price': 100,
402
- 'expiration': 30 * 24 * 60 * 60 # 过期时间为30天(以秒为单位)
403
- }
404
- }
405
-
406
- return packages.get(package_id)
407
-
408
-
409
  # 存储用户套餐信息到Redis
410
  def store_user_package(user_id, package):
 
 
 
 
 
 
 
411
  user_package_key = f'user:{user_id}:package'
412
  redis.hset(user_package_key, 'package_id', package['package_id'])
413
  redis.hset(user_package_key, 'name', package['name'])
414
- redis.hset(user_package_key, 'basic_chat_limit',
415
- package['basic_chat_limit'])
416
- redis.hset(user_package_key, 'advanced_chat_limit',
417
- package['advanced_chat_limit'])
418
  # 设置套餐过期时间
419
  expiration = int(time.time()) + package['expiration']
420
  redis.expireat(user_package_key, expiration)
 
10
  from flask import Flask, request, jsonify, Request, Response
11
  from redis import Redis
12
  from utils import nowtime
13
+ import pay_package
14
+ from ApiResponse import ApiResponse
15
+ from flask_cors import CORS
16
 
17
  SECERT_KEY = "8U2LL1"
18
  MY_OPENAI_API_KEY = os.environ.get('MY_OPENAI_API_KEY')
19
 
20
  app = Flask(__name__)
21
+ cors = CORS(app)
22
+ redis = Redis(host='192.168.3.229', port=6379, password='lizhen-redis')
23
+ # redis = Redis(host='10.254.13.87', port=6379)
24
  # redis = Redis(host='localhost', port=6379)
25
 
26
 
 
175
  return jsonify({'code': 401, 'message': 'Invalid token'})
176
 
177
  # 根据套餐ID获取套餐信息
178
+ package = pay_package.get_package_by_id(package_id)
179
  if not package:
180
  return jsonify({'code': 400, 'message': 'Invalid package ID'})
181
 
 
318
  return {'message': '您今天已经领取了'}
319
 
320
 
321
+ @app.route('/package/onSales', methods=['POST'])
322
+ def packageOnSales():
323
+ token = parse_token(request)
324
+
325
+ # 验证令牌
326
+ if not validate_token(token):
327
+ return jsonify({'code': 401, 'message': 'Invalid token'})
328
+
329
+ user_id = get_user_id_from_token(token)
330
+
331
+ if not user_id:
332
+ return jsonify({'code': 400, 'message': 'User not found'})
333
+ response = ApiResponse(
334
+ code=0,
335
+ message='Login successful',
336
+ data=pay_package.test_packages)
337
+ return jsonify(response.to_json())
338
+
339
+
340
  def parse_token(request: Request):
341
  token_with_bearer = request.headers.get('Authorization')
342
 
 
405
  return None
406
 
407
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
408
  # 存储用户套餐信息到Redis
409
  def store_user_package(user_id, package):
410
+ current_package = get_user_package(user_id)
411
+ basic_chat_limit = 0
412
+ advanced_chat_limit = 0
413
+ if not current_package:
414
+ basic_chat_limit = int(package.get(b'basic_chat_limit', 0))
415
+ advanced_chat_limit = int(package.get(b'advanced_chat_limit', 0))
416
+
417
  user_package_key = f'user:{user_id}:package'
418
  redis.hset(user_package_key, 'package_id', package['package_id'])
419
  redis.hset(user_package_key, 'name', package['name'])
420
+ redis.hset(user_package_key, 'basic_chat_limit', basic_chat_limit)
421
+ redis.hset(user_package_key, 'advanced_chat_limit', advanced_chat_limit)
 
 
422
  # 设置套餐过期时间
423
  expiration = int(time.time()) + package['expiration']
424
  redis.expireat(user_package_key, expiration)