|
# -*- coding: utf-8 -*-
import logging
from django.conf import settings
from django.db import transaction
from django_logit import logit
from django_response import response
from django.contrib.auth.hashers import check_password
from django.db.models import Q
from TimeConvert import TimeConvert as tc
from account.models import UserInfo, AdministratorInfo
from goods.models import GoodsInfo, PackInfo
from kol.models import KOLInfo
from pay.models import OrderInfo
from utils.error.errno_utils import AdministratorStatusCode
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', u'管理员登录成功', 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))
res = []
for info in infos:
goods_info = []
try:
pack = PackInfo.objects.get(pack_id=info.pack_id)
kol = KOLInfo.objects.get(kol_id=info.kol_id)
for g in info.goods_info:
try:
goods = GoodsInfo.objects.get(good_id=g.get('good_id', ''))
goods_info.append({
'title': goods.title,
'num': g.get('num', 0)
})
except:
continue
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
})
except:
continue
return response(200, 'Order List Success', u'获取订单列表成功', {
'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)
order.tracking_number = tracking_number
order.save()
except OrderInfo.DoesNotExist:
return response(400001, 'Order Not Found', u'订单不存在')
return response(200, 'Order Update Success', u'订单更新成功')
|