@@ -15,7 +15,7 @@ from logit import logit |
||
15 | 15 |
from TimeConvert import TimeConvert as tc |
16 | 16 |
|
17 | 17 |
from account.models import LensmanInfo, UserIncomeExpensesInfo, UserInfo |
18 |
-from group.models import GroupInfo, GroupPhotoInfo, GroupPhotoOrderInfo, GroupUserInfo |
|
18 |
+from group.models import GroupInfo, GroupPhotoInfo, GroupPhotoOrderInfo |
|
19 | 19 |
from message.models import SystemMessageInfo |
20 | 20 |
from pay.models import OrderInfo |
21 | 21 |
from photo.models import PhotosInfo |
@@ -23,8 +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.rgroup import get_group_info, get_group_users_info, set_group_info, set_group_users_info |
|
27 |
-from utils.redis.rkeys import GROUP_LAST_PHOTO_PK, TODAY_INCOME, TODAY_UPLOAD_PHOTO_AMOUNT, WEEK_INCOME, WEEK_SOLD |
|
26 |
+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 | 29 |
from utils.redis.rorder import set_lensman_order_record |
29 | 30 |
from utils.redis.rprice import get_lensman_price_fixed, set_lensman_price_fixed |
30 | 31 |
from utils.thumbnail_utils import make_thumbnail |
@@ -299,28 +300,63 @@ def lensman_origin_photo_upload_api(request): |
||
299 | 300 |
except OrderInfo.DoesNotExist: |
300 | 301 |
return response(OrderStatusCode.WX_ORDER_NOT_FOUND) |
301 | 302 |
|
302 |
- from_uid = order.from_uid |
|
303 | 303 |
# 原图已删除, 处理退款逻辑 |
304 | 304 |
if deleted: |
305 |
+ # 用户增加余额 |
|
305 | 306 |
try: |
306 |
- user = UserInfo.objects.get(uid=from_uid) |
|
307 |
+ from_user = UserInfo.objects.select_for_update().get(user_id=order.from_uid) |
|
307 | 308 |
except UserInfo.DoesNotExist: |
308 | 309 |
pass |
309 | 310 |
|
310 |
- if user: |
|
311 |
+ if from_user: |
|
311 | 312 |
# 增加余额 |
312 |
- user.balance += order.total_fee |
|
313 |
- user.save() |
|
313 |
+ from_user.balance += order.total_fee |
|
314 |
+ from_user.save() |
|
314 | 315 |
# 余额记录 |
315 | 316 |
UserIncomeExpensesInfo.objects.create( |
316 |
- user_id=from_uid, |
|
317 |
+ user_id=order.from_uid, |
|
317 | 318 |
photo_id=order.photo_id, |
318 | 319 |
type=UserIncomeExpensesInfo.INCOME, |
319 | 320 |
amount=order.total_fee, |
320 |
- balance=user.balance, |
|
321 |
+ balance=from_user.balance, |
|
321 | 322 |
remark=u'高清图购买退款', |
322 | 323 |
) |
323 | 324 |
|
325 |
+ # 摄影师减少余额 |
|
326 |
+ try: |
|
327 |
+ to_user = UserInfo.objects.select_for_update().get(user_id=order.to_uid) |
|
328 |
+ except UserInfo.DoesNotExist: |
|
329 |
+ pass |
|
330 |
+ |
|
331 |
+ if to_user: |
|
332 |
+ # 减少余额 |
|
333 |
+ to_user.balance -= order.total_fee |
|
334 |
+ to_user.save() |
|
335 |
+ # 余额记录 |
|
336 |
+ UserIncomeExpensesInfo.objects.create( |
|
337 |
+ user_id=order.to_uid, |
|
338 |
+ photo_id=order.photo_id, |
|
339 |
+ type=UserIncomeExpensesInfo.EXPENSE, |
|
340 |
+ amount=order.total_fee, |
|
341 |
+ balance=to_user.balance, |
|
342 |
+ remark=u'高清图购买退款', |
|
343 |
+ ) |
|
344 |
+ |
|
345 |
+ # Redis 数值更新 |
|
346 |
+ ymd = tc.local_string(tc.to_local_datetime(order.created_at), format='%Y%m%d') |
|
347 |
+ week = Week.withdate(order.created_at) |
|
348 |
+ |
|
349 |
+ # 总收入 |
|
350 |
+ r.decr_limit(TOTAL_INCOME % (order.to_uid, order.photo_type), order.total_fee, limit=0) |
|
351 |
+ # 周收入 |
|
352 |
+ r.decr_limit(WEEK_INCOME % (order.to_uid, order.photo_type, week), order.total_fee, limit=0) |
|
353 |
+ # 日收入 |
|
354 |
+ r.decr_limit(TODAY_INCOME % (order.to_uid, order.photo_type, ymd), order.total_fee, limit=0) |
|
355 |
+ |
|
356 |
+ # 周售出 |
|
357 |
+ r.decr_limit(WEEK_SOLD % (order.to_uid, order.photo_type, week), limit=0) |
|
358 |
+ |
|
359 |
+ # 更新订单状态 |
|
324 | 360 |
order.photo_status = OrderInfo.DELETED |
325 | 361 |
order.reback_status = True |
326 | 362 |
order.reback_at = tc.utc_datetime() |
@@ -348,7 +384,7 @@ def lensman_origin_photo_upload_api(request): |
||
348 | 384 |
porder, created = GroupPhotoOrderInfo.objects.get_or_create( |
349 | 385 |
group_id=order.group_id, |
350 | 386 |
session_id=session_id, |
351 |
- user_id=from_uid, |
|
387 |
+ user_id=order.from_uid, |
|
352 | 388 |
photo_id=order.photo_id, |
353 | 389 |
lensman_photo_id=photo_id, |
354 | 390 |
) |
@@ -377,7 +413,7 @@ def lensman_brief_api(request): |
||
377 | 413 |
# 日上传 |
378 | 414 |
today_upload = int(r.get(TODAY_UPLOAD_PHOTO_AMOUNT % (user_id, ymd)) or 0) |
379 | 415 |
# 周售出 |
380 |
- week_sold = int(r.get(WEEK_SOLD % (OrderInfo.ORIGIN, user_id, ymd)) or 0) |
|
416 |
+ week_sold = int(r.get(WEEK_SOLD % (user_id, OrderInfo.ORIGIN, ymd)) or 0) |
|
381 | 417 |
|
382 | 418 |
# 摄影师端系统消息 |
383 | 419 |
systems = system_messages(user_id, SystemMessageInfo.PAIAI_LENSMAN) |
@@ -138,8 +138,8 @@ def order_paid_success(order): |
||
138 | 138 |
total_fee = order.total_fee |
139 | 139 |
|
140 | 140 |
try: |
141 |
- user = UserInfo.objects.select_for_update().filter(user_id=to_uid)[0] |
|
142 |
- except IndexError: |
|
141 |
+ user = UserInfo.objects.select_for_update().get(user_id=to_uid) |
|
142 |
+ except UserInfo.DoesNotExist: |
|
143 | 143 |
return |
144 | 144 |
|
145 | 145 |
user.balance += order.total_fee |
@@ -156,7 +156,7 @@ def order_paid_success(order): |
||
156 | 156 |
r.incr(TODAY_INCOME % (to_uid, order.photo_type, ymd), total_fee) |
157 | 157 |
|
158 | 158 |
# 周售出 |
159 |
- r.incr(WEEK_SOLD % (order.photo_type, to_uid, week)) |
|
159 |
+ r.incr(WEEK_SOLD % (to_uid, order.photo_type, week)) |
|
160 | 160 |
|
161 | 161 |
UserIncomeExpensesInfo.objects.create( |
162 | 162 |
user_id=to_uid, |
@@ -38,7 +38,7 @@ TODAY_INCOME = 'today:income:%s:%s:%s' # STRING,日收入,user_id、photo_t |
||
38 | 38 |
# 上传 |
39 | 39 |
TODAY_UPLOAD_PHOTO_AMOUNT = 'today:upload:photo:amount:%s:%s' # STRING,日上传照片数量,user_id、tc.local_string(format='%Y%m%d') |
40 | 40 |
# 售出 |
41 |
-WEEK_SOLD = 'week:sold:%s:%s:%s' # STRING,周售出,photo_type、user_id、Week.thisweek().isoformat() |
|
41 |
+WEEK_SOLD = 'week:sold:%s:%s:%s' # STRING,周售出,user_id、photo_type、Week.thisweek().isoformat() |
|
42 | 42 |
|
43 | 43 |
# 摄影师定价相关 |
44 | 44 |
LENSMAN_PHOTO_PRICE_FIXED = 'lensman:photo:price:fixed:%s' # STRING,摄影师照片定价(单位:分),user_id |