远兮 commited on
Commit
ec5b9cf
·
1 Parent(s): 089917b

添加支付套餐检查

Browse files
Files changed (1) hide show
  1. 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'