远兮 commited on
Commit
08adc84
·
1 Parent(s): ec5b9cf

添加套餐过期时间

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