|
# -*- coding: utf-8 -*-
import logging
from django.core.paginator import Paginator
from django.contrib.auth.hashers import check_password
from django.db import transaction
from django.db.models import Q
from django_logit import logit
from django_response import response
from TimeConvert import TimeConvert as tc
from account.models import AdministratorInfo
from goods.models import GoodsInfo, PackInfo
from kol.models import KOLInfo
from pay.models import OrderInfo
from live.models import RoomInfo, RoomGoodsInfo, RoomOrderInfo, AnchorInfo, liveGoodsInfo
from utils.error.errno_utils import AdministratorStatusCode, OrderStatusCode
logger = logging.getLogger('logit')
@logit(res=True)
def login(request):
name = request.POST.get('name', '')
password = request.POST.get('password', '')
try:
administrator = AdministratorInfo.objects.get(name=name, status=True)
except AdministratorInfo.DoesNotExist:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
if administrator.user_status == AdministratorInfo.DISABLED:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_ACTIVATED)
elif administrator.user_status == AdministratorInfo.DELETED:
return response(AdministratorStatusCode.ADMINISTRATOR_HAS_DELETED)
if not check_password(password, administrator.encryption):
return response(AdministratorStatusCode.ADMINISTRATOR_PASSWORD_ERROR)
request.session['admin_id'] = administrator.admin_id
return response(200, 'Admin Login Success', '管理员登录成功', data={
'admin_id': administrator.admin_id,
'admin_type': administrator.admin_type,
})
@logit(res=True)
@transaction.atomic
def order_list(request):
admin_id = request.POST.get('admin_id', '')
kol_id = request.POST.get('kol_id', '')
pack_id = request.POST.get('pack_id', '')
ftime = request.POST.get('ftime', '')
ttime = request.POST.get('ttime', '')
query = request.POST.get('query', '')
page = request.POST.get('page', 0)
num = request.POST.get('num', 20)
try:
administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
except AdministratorInfo.DoesNotExist:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
infos = OrderInfo.objects.filter(
Q(phone__contains=query) | Q(name__contains=query) & Q(kol_id__contains=kol_id) & Q(
pack_id__contains=pack_id) & Q(pay_status=1)).order_by('-paid_at')
res = []
for info in infos:
goods_info = []
try:
pack = PackInfo.objects.get(pack_id=info.pack_id)
except PackInfo.DoesNotExist:
continue
try:
kol = KOLInfo.objects.get(kol_id=info.kol_id)
except KOLInfo.DoesNotExist:
continue
for g in info.goods_info:
try:
goods = GoodsInfo.objects.get(good_id=g.get('good_id', ''))
except GoodsInfo.DoesNotExist:
continue
goods_info.append({
'title': goods.title,
'num': g.get('num', 0)
})
res.append({
'name': info.name,
'phone': info.phone,
'address': info.address,
'paid_at': tc.local_string(utc_dt=info.paid_at, format='%Y-%m-%d %H:%M'),
'order_id': info.order_id,
'transaction_id': info.transaction_id,
'tracking_number': info.tracking_number,
'goods_info': goods_info,
'kol_name': kol.name,
'pack_title': pack.title
})
return response(200, 'Order List Success', '获取订单列表成功', {
'orders': res
})
@logit(res=True)
@transaction.atomic
def order_update(request):
admin_id = request.POST.get('admin_id', '')
order_id = request.POST.get('order_id', '')
tracking_number = request.POST.get('tracking_number', '')
try:
administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
except AdministratorInfo.DoesNotExist:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
try:
order = OrderInfo.objects.get(order_id=order_id)
except OrderInfo.DoesNotExist:
return response(OrderStatusCode.ORDER_NOT_FOUND)
order.tracking_number = tracking_number
order.save()
return response(200, 'Order Update Success', '订单更新成功')
def live_goods_list(request):
admin_id = request.POST.get('admin_id', '')
page = request.POST.get('page', 1)
num = request.POST.get('num', 20)
try:
administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
except AdministratorInfo.DoesNotExist:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
goods_list = liveGoodsInfo.objects.all()
count = goods_list.count()
goods_list = Paginator(goods_list, num).get_page(page)
goods_list = [goods.admindata for goods in goods_list]
return response(200, 'Live Goods Success', u'直播商品库获取成功', data={
'goods_list': goods_list,
'count': count,
})
def live_room_list(request):
admin_id = request.POST.get('admin_id', '')
page = request.POST.get('page', 1)
num = request.POST.get('num', 20)
try:
administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
except AdministratorInfo.DoesNotExist:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
rooms = RoomInfo.objects.all()
count = rooms.count()
rooms = Paginator(rooms, num).get_page(page)
rooms = [room.admindata for room in rooms]
return response(200, 'Live Goods Success', u'直播商品库获取成功', data={
'rooms': rooms,
'count': count,
})
|