price_fixed store in redis & update api lensman_photo_price

Brightcells лет %!s(int64=8): %!d(string=назад)
Родитель
Сommit
684b876a38
4 измененных файлов с 49 добавлено и 2 удалено
  1. 3 0
      group/lensman_views.py
  2. 7 2
      group/views.py
  3. 3 0
      utils/redis/rkeys.py
  4. 36 0
      utils/redis/rprice.py

+ 3 - 0
group/lensman_views.py

@@ -26,6 +26,7 @@ from utils.page_utils import pagination
26 26
 from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_info, set_group_users_info
27 27
 from utils.redis.rkeys import GROUP_LAST_PHOTO_PK, TODAY_INCOME, TODAY_UPLOAD_PHOTO_AMOUNT, WEEK_INCOME, WEEK_SOLD
28 28
 from utils.redis.rorder import set_lensman_order_record
29
+from utils.redis.rprice import set_lensman_price_fixed
29 30
 from utils.thumbnail_utils import make_thumbnail
30 31
 from utils.watermark_utils import watermark_wrap
31 32
 
@@ -144,6 +145,8 @@ def lensman_price_fix_api(request):
144 145
         lensman.origin = origin
145 146
     lensman.save()
146 147
 
148
+    set_lensman_price_fixed(lensman_id)
149
+
147 150
     return response(200, 'Lensman Price Fix Success', u'摄影师定价修改成功')
148 151
 
149 152
 

+ 7 - 2
group/views.py

@@ -32,6 +32,7 @@ from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_PHOTO_WATCHER_SET, GRO
32 32
                                GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET, GROUP_USERS_QUIT_SET,
33 33
                                GROUP_USERS_REFUSED_SET, LENSMAN_PHOTO_HAGGLE_TIMES, LENSMAN_PHOTO_PRICE)
34 34
 from utils.redis.rorder import get_lensman_order_record
35
+from utils.redis.rprice import get_lensman_price_fixed
35 36
 from utils.sql.raw import PAI2_HOME_API
36 37
 from utils.thumbnail_utils import make_thumbnail
37 38
 from utils.time_utils import origin_expired_stamps
@@ -963,9 +964,13 @@ def lensman_photo_price(request):
963 964
             price -= random.choice([50, 100])
964 965
             r.incr(lensman_photo_haggle_times_key)
965 966
     else:
967
+        try:
968
+            group_photo = GroupPhotoInfo.objects.get(pk=photo_id)
969
+        except GroupPhotoInfo.DoesNotExist:
970
+            return response(GroupPhotoStatusCode.GROUP_PHOTO_NOT_FOUND)
966 971
         # 获取摄影师定价
967
-        # TODO, 此处需要完整的摄影师定价
968
-        price = 999 if photo_type == 'origin' else 299
972
+        price_fixed = get_lensman_price_fixed(group_photo.user_id)
973
+        price = price_fixed.get(photo_type, 999)
969 974
 
970 975
     r.set(lensman_photo_price_key, price)
971 976
 

+ 3 - 0
utils/redis/rkeys.py

@@ -40,6 +40,9 @@ TODAY_UPLOAD_PHOTO_AMOUNT = 'today:upload:photo:amount:%s:%s'  # STRING,日上
40 40
 # 售出
41 41
 WEEK_SOLD = 'week:sold:%s:%s:%s'  # STRING,周售出,photo_type、user_id、Week.thisweek().isoformat()
42 42
 
43
+# 摄影师定价相关
44
+LENSMAN_PHOTO_PRICE_FIXED = 'lensman:photo:price:fixed:%s'  # STRING,摄影师照片定价(单位:分),user_id
45
+
43 46
 # 系统消息相关
44 47
 SYSTEM_MESSAGE_READ_INFO = 'system:message:read:info:%s'  # STRING,系统消息读取信息,user_id
45 48
 SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s'  # STRING,系统消息删除信息,user_id

+ 36 - 0
utils/redis/rprice.py

@@ -0,0 +1,36 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+import json
4
+
5
+from django.conf import settings
6
+
7
+from account.models import LensmanInfo
8
+from utils.redis.rkeys import LENSMAN_PHOTO_PRICE_FIXED
9
+
10
+
11
+r = settings.REDIS_CACHE
12
+
13
+
14
+# 最新 APP 相关
15
+
16
+
17
+def set_lensman_price_fixed(user_id):
18
+    """ 设置摄影师价格设定 """
19
+    try:
20
+        lensman = LensmanInfo.objects.get(lensman_id=user_id)
21
+    except LensmanInfo.DoesNotExist:
22
+        lensman = None
23
+
24
+    price_fixed = {
25
+        'nomark': (lensman and lensman.nomark) or 299,
26
+        'origin': (lensman and lensman.origin) or 999,
27
+    }
28
+
29
+    r.set(LENSMAN_PHOTO_PRICE_FIXED % user_id, json.dumps(price_fixed))
30
+
31
+    return price_fixed
32
+
33
+
34
+def get_lensman_price_fixed(user_id):
35
+    """ 获取摄影师价格设定 """
36
+    return json.loads(r.get(LENSMAN_PHOTO_PRICE_FIXED % user_id) or '{}') or set_lensman_price_fixed(user_id)