|
# -*- coding: utf-8 -*-
from __future__ import division
from django.db import transaction
from django.db.models import Q
from django_logit import logit
from django_response import response
from paginator import pagination
from TimeConvert import TimeConvert as tc
from account.models import UserInfo
from kodo.decorators import check_admin
from mch.models import AdministratorInfo, ConsumeShotUnbindingInfo, ConsumeInfoSubmitLogInfo, ModelInfo
from coupon.models import UserCouponInfo, CouponInfo
@logit
@check_admin
def consumer_shot_unbinding_list(request, administrator):
start_time = request.POST.get('start_time', '')
end_time = request.POST.get('end_time', '')
query = request.POST.get('query', '')
model_id = request.POST.get('model_id', '')
page = request.POST.get('page', 1)
num = request.POST.get('num', 20)
unbindings = ConsumeShotUnbindingInfo.objects.filter(status=True).order_by('-created_at')
if query:
user_ids = []
try:
user_ids = UserInfo.objects.filter(phone__icontains=query, status=True).values_list('user_id', flat=True)
except UserInfo.DoesNotExist:
pass
unbindings = unbindings.filter(Q(sn__icontains=query) | Q(user_id__in=user_ids))
if start_time and end_time:
start_time = tc.string_to_utc_datetime(start_time, format='%Y%m%d')
end_time = tc.string_to_utc_datetime(end_time + ' 23:59:59', format='%Y%m%d %H:%M:%S')
unbindings = unbindings.filter(created_at__range=(start_time, end_time))
if model_id:
unbindings = unbindings.filter(model_id=model_id)
count = unbindings.count()
unbindings, left = pagination(unbindings, page, num)
unbindings = [unbinding.admindata for unbinding in unbindings]
return response(200, 'Get Cosumer Shot Unbinding List Success', u'消费者镜头解绑列表获取成功', data={
'unbindings': unbindings,
'count': count,
'left': left
})
@logit
@check_admin
def consumer_shot_unbinding_delete(request, administrator):
pk = request.POST.get('pk', '')
unbinding_info = ConsumeShotUnbindingInfo.objects.get(pk=pk)
unbinding_info.status = False
unbinding_info.delete()
log_info = ConsumeInfoSubmitLogInfo.objects.get(pk=unbinding_info.submit_pk)
log_info.status = True
log_info.delete_type = ConsumeInfoSubmitLogInfo.UNDELETE
log_info.save()
if not log_info.unbound:
try:
user = UserInfo.objects.get(user_id=log_info.user_id)
user.shots_num += 1
user.integral += log_info.integral
model = ModelInfo.objects.get(model_id=log_info.model_id)
if user.level < UserInfo.MEMBER_BLACK_GOLD and model.shot_type_id != 'V6PkivthL4sdADp4GNpQ4C':
user.level += 1
user.save()
except UserInfo.DoesNotExist:
pass
return response(200, 'Get Cosumer Shot Unbinding Delete Success', u'消费者镜头解绑记录删除成功')
@logit
@check_admin
def consumer_coupon_type_list(request, administrator):
coupon_types = CouponInfo.objects.filter(is_coupon_admin_writeoff=False, status=True).order_by('coupon_type').values_list('coupon_title', flat=True)
coupon_types = list(set(coupon_types))
return response(200, 'Get Cosumer Coupon Type List Success', u'消费者优惠券类型列表获取成功', data={
'coupon_types': coupon_types
})
@logit
@check_admin
def consumer_coupon_list(request, administrator):
page = request.POST.get('page', 1)
num = request.POST.get('num', 20)
all = request.POST.get('all', False)
query = request.POST.get('query', '')
coupon_title = request.POST.get('coupon_title', '')
coupons = UserCouponInfo.objects.filter(is_coupon_admin_writeoff=False, distributor_name__icontains=query, coupon_title__icontains=coupon_title, status=True).order_by('-created_at')
count = coupons.count()
if not all:
coupons, left = pagination(coupons, page, num)
coupons = [coupon.admindata for coupon in coupons]
return response(200, 'Get Cosumer Coupon List Success', u'消费者优惠券列表获取成功', data={
'coupons': coupons,
'count': count,
'left': 0 if not all else left
})
|