Spaces:
Runtime error
Runtime error
远兮
commited on
Commit
·
08adc84
1
Parent(s):
ec5b9cf
添加套餐过期时间
Browse files- redis/test_user_redis.py +23 -4
redis/test_user_redis.py
CHANGED
@@ -2,6 +2,7 @@ import json
|
|
2 |
import random
|
3 |
import string
|
4 |
import uuid
|
|
|
5 |
from flask import Flask, request, jsonify, session
|
6 |
from redis import Redis
|
7 |
|
@@ -138,11 +139,11 @@ def purchase():
|
|
138 |
return jsonify({'message': 'User not found'}), 400
|
139 |
|
140 |
# 检查用户是否已经支付过当前套餐
|
141 |
-
if has_purchased_package(user_id, package_id):
|
142 |
return jsonify({'message': 'Package already purchased'}), 400
|
143 |
|
144 |
# 检查如果用户已经支付了高级套餐,则不能支付比高级套餐更低级的基础套餐
|
145 |
-
if has_purchased_advanced_package(user_id) and package_id == '1':
|
146 |
return jsonify({'message': 'Cannot purchase lower level package'}), 400
|
147 |
|
148 |
# 存储用户套餐信息到Redis
|
@@ -191,14 +192,16 @@ def get_package_by_id(package_id):
|
|
191 |
'name': 'Package 1',
|
192 |
'basic_chat_limit': 10,
|
193 |
'advanced_chat_limit': 10,
|
194 |
-
'price': 10
|
|
|
195 |
},
|
196 |
'2': {
|
197 |
'package_id': '2',
|
198 |
'name': 'Package 2',
|
199 |
'basic_chat_limit': -1, # -1 表示无限次
|
200 |
'advanced_chat_limit': -1,
|
201 |
-
'price': 100
|
|
|
202 |
}
|
203 |
}
|
204 |
|
@@ -214,6 +217,9 @@ def store_user_package(user_id, package):
|
|
214 |
package['basic_chat_limit'])
|
215 |
redis.hset(user_package_key, 'advanced_chat_limit',
|
216 |
package['advanced_chat_limit'])
|
|
|
|
|
|
|
217 |
|
218 |
|
219 |
# 获取用户套餐信息
|
@@ -237,6 +243,19 @@ def has_purchased_advanced_package(user_id):
|
|
237 |
return purchased_package_id.decode('utf-8') == '2'
|
238 |
|
239 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
# 检查用户聊天次数是否超过限制
|
241 |
def exceeded_chat_limit(user_id, package):
|
242 |
user_basic_chat_key = f'user:{user_id}:basic_chat'
|
|
|
2 |
import random
|
3 |
import string
|
4 |
import uuid
|
5 |
+
import time
|
6 |
from flask import Flask, request, jsonify, session
|
7 |
from redis import Redis
|
8 |
|
|
|
139 |
return jsonify({'message': 'User not found'}), 400
|
140 |
|
141 |
# 检查用户是否已经支付过当前套餐
|
142 |
+
if not is_package_expired(user_id) and has_purchased_package(user_id, package_id):
|
143 |
return jsonify({'message': 'Package already purchased'}), 400
|
144 |
|
145 |
# 检查如果用户已经支付了高级套餐,则不能支付比高级套餐更低级的基础套餐
|
146 |
+
if not is_package_expired(user_id) and has_purchased_advanced_package(user_id) and package_id == '1':
|
147 |
return jsonify({'message': 'Cannot purchase lower level package'}), 400
|
148 |
|
149 |
# 存储用户套餐信息到Redis
|
|
|
192 |
'name': 'Package 1',
|
193 |
'basic_chat_limit': 10,
|
194 |
'advanced_chat_limit': 10,
|
195 |
+
'price': 10,
|
196 |
+
'expiration': 30 * 24 * 60 * 60 # 过期时间为30天(以秒为单位)
|
197 |
},
|
198 |
'2': {
|
199 |
'package_id': '2',
|
200 |
'name': 'Package 2',
|
201 |
'basic_chat_limit': -1, # -1 表示无限次
|
202 |
'advanced_chat_limit': -1,
|
203 |
+
'price': 100,
|
204 |
+
'expiration': 30 * 24 * 60 * 60 # 过期时间为30天(以秒为单位)
|
205 |
}
|
206 |
}
|
207 |
|
|
|
217 |
package['basic_chat_limit'])
|
218 |
redis.hset(user_package_key, 'advanced_chat_limit',
|
219 |
package['advanced_chat_limit'])
|
220 |
+
# 设置套餐过期时间
|
221 |
+
expiration = int(time.time()) + package['expiration']
|
222 |
+
redis.expireat(user_package_key, expiration)
|
223 |
|
224 |
|
225 |
# 获取用户套餐信息
|
|
|
243 |
return purchased_package_id.decode('utf-8') == '2'
|
244 |
|
245 |
|
246 |
+
# 检查套餐是否过期
|
247 |
+
def is_package_expired(user_id):
|
248 |
+
user_package_key = f'user:{user_id}:package'
|
249 |
+
expiration = redis.ttl(user_package_key)
|
250 |
+
return expiration <= 0
|
251 |
+
|
252 |
+
|
253 |
+
# 获取套餐有效期
|
254 |
+
def get_package_expiration(user_id):
|
255 |
+
user_package_key = f'user:{user_id}:package'
|
256 |
+
expiration = redis.ttl(user_package_key)
|
257 |
+
return expiration
|
258 |
+
|
259 |
# 检查用户聊天次数是否超过限制
|
260 |
def exceeded_chat_limit(user_id, package):
|
261 |
user_basic_chat_key = f'user:{user_id}:basic_chat'
|