| @@ -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 |