Spaces:
Runtime error
Runtime error
远兮
commited on
Commit
·
ec5b9cf
1
Parent(s):
089917b
添加支付套餐检查
Browse files- redis/test_user_redis.py +26 -0
redis/test_user_redis.py
CHANGED
@@ -137,6 +137,14 @@ def purchase():
|
|
137 |
if not user_id:
|
138 |
return jsonify({'message': 'User not found'}), 400
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
# 存储用户套餐信息到Redis
|
141 |
store_user_package(user_id, package)
|
142 |
|
@@ -152,6 +160,7 @@ def validate():
|
|
152 |
|
153 |
if not user_id:
|
154 |
return jsonify({'message': 'User not found'}), 400
|
|
|
155 |
# 获取用户套餐信息
|
156 |
package = get_user_package(user_id)
|
157 |
if not package:
|
@@ -178,12 +187,14 @@ def get_user_id_by_username(username):
|
|
178 |
def get_package_by_id(package_id):
|
179 |
packages = {
|
180 |
'1': {
|
|
|
181 |
'name': 'Package 1',
|
182 |
'basic_chat_limit': 10,
|
183 |
'advanced_chat_limit': 10,
|
184 |
'price': 10
|
185 |
},
|
186 |
'2': {
|
|
|
187 |
'name': 'Package 2',
|
188 |
'basic_chat_limit': -1, # -1 表示无限次
|
189 |
'advanced_chat_limit': -1,
|
@@ -197,6 +208,7 @@ def get_package_by_id(package_id):
|
|
197 |
# 存储用户套餐信息到Redis
|
198 |
def store_user_package(user_id, package):
|
199 |
user_package_key = f'user:{user_id}:package'
|
|
|
200 |
redis.hset(user_package_key, 'name', package['name'])
|
201 |
redis.hset(user_package_key, 'basic_chat_limit',
|
202 |
package['basic_chat_limit'])
|
@@ -211,6 +223,20 @@ def get_user_package(user_id):
|
|
211 |
return package
|
212 |
|
213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
# 检查用户聊天次数是否超过限制
|
215 |
def exceeded_chat_limit(user_id, package):
|
216 |
user_basic_chat_key = f'user:{user_id}:basic_chat'
|
|
|
137 |
if not user_id:
|
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
|
149 |
store_user_package(user_id, package)
|
150 |
|
|
|
160 |
|
161 |
if not user_id:
|
162 |
return jsonify({'message': 'User not found'}), 400
|
163 |
+
|
164 |
# 获取用户套餐信息
|
165 |
package = get_user_package(user_id)
|
166 |
if not package:
|
|
|
187 |
def get_package_by_id(package_id):
|
188 |
packages = {
|
189 |
'1': {
|
190 |
+
'package_id': '1',
|
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,
|
|
|
208 |
# 存储用户套餐信息到Redis
|
209 |
def store_user_package(user_id, package):
|
210 |
user_package_key = f'user:{user_id}:package'
|
211 |
+
redis.hset(user_package_key, 'package_id', package['package_id'])
|
212 |
redis.hset(user_package_key, 'name', package['name'])
|
213 |
redis.hset(user_package_key, 'basic_chat_limit',
|
214 |
package['basic_chat_limit'])
|
|
|
223 |
return package
|
224 |
|
225 |
|
226 |
+
# 检查用户是否已经支付过指定套餐
|
227 |
+
def has_purchased_package(user_id, package_id):
|
228 |
+
user_package_key = f'user:{user_id}:package'
|
229 |
+
purchased_package_id = redis.hget(user_package_key, 'package_id')
|
230 |
+
return purchased_package_id.decode('utf-8') == str(package_id)
|
231 |
+
|
232 |
+
|
233 |
+
# 检查用户是否已经支付了高级套餐
|
234 |
+
def has_purchased_advanced_package(user_id):
|
235 |
+
user_package_key = f'user:{user_id}:package'
|
236 |
+
purchased_package_id = redis.hget(user_package_key, 'package_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'
|