Update set_brief_info after origin photo upload

Brightcells 8 gadi atpakaļ
vecāks
revīzija
da19301800
3 mainītis faili ar 52 papildinājumiem un 47 dzēšanām
  1. 9 21
      group/lensman_views.py
  2. 15 26
      pay/views.py
  3. 28 0
      utils/redis/rbrief.py

+ 9 - 21
group/lensman_views.py

@@ -23,9 +23,9 @@ from utils.error.errno_utils import LensmanStatusCode, OrderStatusCode, UserStat
23 23
 from utils.error.response_utils import response
24 24
 from utils.message_utils import system_messages
25 25
 from utils.page_utils import pagination
26
+from utils.redis.rbrief import set_brief_info
26 27
 from utils.redis.rgroup import get_group_info, set_group_info
27
-from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, TODAY_INCOME, TODAY_UPLOAD_PHOTO_AMOUNT, TOTAL_INCOME, WEEK_INCOME,
28
-                               WEEK_SOLD)
28
+from utils.redis.rkeys import GROUP_LAST_PHOTO_PK, TODAY_INCOME, TODAY_UPLOAD_PHOTO_AMOUNT, WEEK_INCOME, WEEK_SOLD
29 29
 from utils.redis.rorder import set_lensman_order_record
30 30
 from utils.redis.rprice import get_lensman_price_fixed, set_lensman_price_fixed
31 31
 from utils.thumbnail_utils import make_thumbnail
@@ -302,14 +302,14 @@ def lensman_origin_photo_upload_api(request):
302 302
 
303 303
     # 原图已删除, 处理退款逻辑
304 304
     if deleted and order.photo_status == OrderInfo.WANTED:
305
-        # 用户增加余额
305
+        # 用户余额增加
306 306
         try:
307 307
             from_user = UserInfo.objects.select_for_update().get(user_id=order.from_uid)
308 308
         except UserInfo.DoesNotExist:
309 309
             pass
310 310
 
311 311
         if from_user:
312
-            # 增加余额
312
+            # 余额增加
313 313
             from_user.balance += order.total_fee
314 314
             from_user.save()
315 315
             # 余额记录
@@ -324,14 +324,14 @@ def lensman_origin_photo_upload_api(request):
324 324
                 remark=u'高清图购买退款',
325 325
             )
326 326
 
327
-        # 摄影师减少余额
327
+        # 摄影师余额减少
328 328
         try:
329 329
             to_user = UserInfo.objects.select_for_update().get(user_id=order.to_uid)
330 330
         except UserInfo.DoesNotExist:
331 331
             pass
332 332
 
333 333
         if to_user:
334
-            # 减少余额
334
+            # 余额减少
335 335
             to_user.freeze_balance -= order.total_fee
336 336
             to_user.save()
337 337
             # 余额记录
@@ -346,20 +346,6 @@ def lensman_origin_photo_upload_api(request):
346 346
                 remark=u'高清图购买退款',
347 347
             )
348 348
 
349
-        # Redis 数值更新
350
-        ymd = tc.local_string(tc.to_local_datetime(order.created_at), format='%Y%m%d')
351
-        week = Week.withdate(order.created_at)
352
-
353
-        # 总收入
354
-        r.decr_limit(TOTAL_INCOME % (order.to_uid, order.photo_type), order.total_fee, limit=0)
355
-        # 周收入
356
-        r.decr_limit(WEEK_INCOME % (order.to_uid, order.photo_type, week), order.total_fee, limit=0)
357
-        # 日收入
358
-        r.decr_limit(TODAY_INCOME % (order.to_uid, order.photo_type, ymd), order.total_fee, limit=0)
359
-
360
-        # 周售出
361
-        r.decr_limit(WEEK_SOLD % (order.to_uid, order.photo_type, week), limit=0)
362
-
363 349
         # 更新订单状态
364 350
         order.photo_status = OrderInfo.DELETED
365 351
         order.reback_status = True
@@ -404,10 +390,12 @@ def lensman_origin_photo_upload_api(request):
404 390
             pass
405 391
 
406 392
         if to_user:
407
-            # 减少余额
393
+            # 余额解冻
408 394
             to_user.balance += order.total_fee
409 395
             to_user.freeze_balance -= order.total_fee
410 396
             to_user.save()
397
+            # Redis 数值更新
398
+            set_brief_info(order.to_uid, order.photo_type, order.total_fee, dt=order.created_at)
411 399
             # 余额记录
412 400
             UserIncomeExpensesInfo.objects.create(
413 401
                 user_id=order.to_uid,

+ 15 - 26
pay/views.py

@@ -4,7 +4,6 @@ import xmltodict
4 4
 from django.conf import settings
5 5
 from django.db import transaction
6 6
 from django.shortcuts import HttpResponse
7
-from isoweek import Week
8 7
 from logit import logit
9 8
 from TimeConvert import TimeConvert as tc
10 9
 from wechatpy import WeChatPay, WeChatPayException
@@ -16,7 +15,7 @@ from photo.models import PhotosInfo
16 15
 from utils.error.errno_utils import GroupPhotoStatusCode, OrderStatusCode, UserStatusCode, WithdrawStatusCode
17 16
 from utils.error.response_utils import response
18 17
 from utils.page_utils import pagination
19
-from utils.redis.rkeys import LENSMAN_PHOTO_PRICE, TODAY_INCOME, TOTAL_INCOME, WEEK_INCOME, WEEK_SOLD
18
+from utils.redis.rbrief import set_brief_info
20 19
 from utils.redis.rorder import set_lensman_order_record
21 20
 
22 21
 
@@ -143,37 +142,27 @@ def order_paid_success(order):
143 142
         return
144 143
 
145 144
     if order.photo_type == OrderInfo.NOMARK:
145
+        # 余额增加
146 146
         amount, freeze_amount = total_fee, 0
147 147
         user.balance += amount
148
+        # Redis 数值更新
149
+        set_brief_info(to_uid, order.photo_type, total_fee)
150
+        # 余额记录
151
+        UserIncomeExpensesInfo.objects.create(
152
+            user_id=to_uid,
153
+            photo_id=order.photo_id,
154
+            type=UserIncomeExpensesInfo.INCOME,
155
+            amount=amount,
156
+            balance=user.balance,
157
+            freeze_amount=freeze_amount,
158
+            freeze_balance=user.freeze_balance,
159
+            remark=u'图片购买',
160
+        )
148 161
     elif order.photo_type == OrderInfo.ORIGIN:
149 162
         amount, freeze_amount = 0, total_fee
150 163
         user.freeze_balance += freeze_amount
151 164
     user.save()
152 165
 
153
-    ymd = tc.local_string(format='%Y%m%d')
154
-    week = Week.thisweek().isoformat()
155
-
156
-    # 总收入
157
-    r.incr(TOTAL_INCOME % (to_uid, order.photo_type), total_fee)
158
-    # 周收入
159
-    r.incr(WEEK_INCOME % (to_uid, order.photo_type, week), total_fee)
160
-    # 日收入
161
-    r.incr(TODAY_INCOME % (to_uid, order.photo_type, ymd), total_fee)
162
-
163
-    # 周售出
164
-    r.incr(WEEK_SOLD % (to_uid, order.photo_type, week))
165
-
166
-    UserIncomeExpensesInfo.objects.create(
167
-        user_id=to_uid,
168
-        photo_id=order.photo_id,
169
-        type=UserIncomeExpensesInfo.INCOME,
170
-        amount=amount,
171
-        balance=user.balance,
172
-        freeze_amount=freeze_amount,
173
-        freeze_balance=user.freeze_balance,
174
-        remark=u'图片购买',
175
-    )
176
-
177 166
 
178 167
 def order_paid_fail(order):
179 168
     if order.pay_status == OrderInfo.FAIL:

+ 28 - 0
utils/redis/rbrief.py

@@ -0,0 +1,28 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.conf import settings
4
+from isoweek import Week
5
+from TimeConvert import TimeConvert as tc
6
+
7
+from utils.redis.rkeys import TODAY_INCOME, TOTAL_INCOME, WEEK_INCOME, WEEK_SOLD
8
+
9
+
10
+r = settings.REDIS_CACHE
11
+
12
+
13
+# 简报相关
14
+
15
+
16
+def set_brief_info(uid, ptype, fee, dt=None):
17
+    """ 更新简报信息 """
18
+    ymd, week = (tc.local_string(tc.to_local_datetime(dt), format='%Y%m%d'), Week.withdate(dt)) if dt else (tc.local_string(format='%Y%m%d'), Week.thisweek().isoformat())
19
+
20
+    # 总收入
21
+    r.incr(TOTAL_INCOME % (uid, ptype), fee)
22
+    # 周收入
23
+    r.incr(WEEK_INCOME % (uid, ptype, week), fee)
24
+    # 日收入
25
+    r.incr(TODAY_INCOME % (uid, ptype, ymd), fee)
26
+
27
+    # 周售出
28
+    r.incr(WEEK_SOLD % (uid, ptype, week))