Brak opisu

sale_views.py 5.6KB

    # -*- coding: utf-8 -*- from __future__ import division from django.conf import settings from django.db import transaction from django.shortcuts import render from django_logit import logit from django_response import response from account.models import SaleclerkInfo from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo from product.models import ProductCodeSubmitLogInfo, ProductInfo, ProductModelInfo from utils.error.errno_utils import ProductModelStatusCode, ProductStatusCode, SaleclerkStatusCode def clerk_sale_oauth(request): unionid = request.GET.get('unionid', '') models = ProductModelInfo.objects.filter(status=True) models = [model.data for model in models] try: clerk = SaleclerkInfo.objects.get(unionid=unionid) except SaleclerkInfo.DoesNotExist: clerk = None return render(request, 'page/clerk_sale.html', { 'domain': settings.DOMAIN, 'models': models, 'clerk_info': clerk and clerk.data, }) @logit def clerk_sale_submit_api(request): user_id = request.POST.get('user_id', '') iv = request.POST.get('iv', '') encryptedData = request.POST.get('encryptedData', '') lat = request.POST.get('lat', '') lon = request.POST.get('lon', '') serialNo = request.POST.get('SerialNo', '') verifyResult = request.POST.get('verifyResult', '') consumer_name = request.POST.get('consumer_name', '') consumer_phone = request.POST.get('consumer_phone', '') file_path = request.POST.get('file_path', '') try: clerk = SaleclerkInfo.objects.get(clerk_id=user_id, status=True) except SaleclerkInfo.DoesNotExist: return response(SaleclerkStatusCode.CLERK_NOT_FOUND) # 店员提交记录 SaleclerkSubmitLogInfo.objects.create( franchiser_id=clerk.franchiser_id, clerk_id=clerk.clerk_id, code=serialNo, consumer_name=consumer_name, consumer_phone=consumer_phone, lat=lat, lon=lon, image=file_path, ) if SaleclerkIntegralIncomeExpensesInfo.objects.filter(code=serialNo, status=True).exists(): return response(SaleclerkStatusCode.DUPLICATE_SUBMIT) # 店员积分 # TODO: 序列号 vs. 积分 integral = 100 clerk.integral += integral clerk.total_integral += integral clerk.save() # 店员积分记录 SaleclerkIntegralIncomeExpensesInfo.objects.create( franchiser_id=clerk.franchiser_id, clerk_id=clerk.clerk_id, type=SaleclerkIntegralIncomeExpensesInfo.INCOME, code=serialNo, consumer_name=consumer_name, consumer_phone=consumer_phone, lat=lat, lon=lon, image=file_path, integral=integral, left_integral=clerk.total_integral, ) return response(200, data={ 'integral': integral, 'total_integral': clerk.integral, }) @logit @transaction.atomic def clerk_sale_submit_api_bak(request): """ 店员信息提交 """ step = int(request.POST.get('step', 1)) clerk_id = request.POST.get('clerk_id', '') model_id = request.POST.get('model_id', '') mount = request.POST.get('mount', 'NO') code = request.POST.get('code', '') name = request.POST.get('name', '') sex = int(request.POST.get('sex', 1)) age = int(request.POST.get('age', 1)) phone = request.POST.get('phone', '') # 店员是否存在 try: clerk = SaleclerkInfo.objects.select_for_update().get(clerk_id=clerk_id) except SaleclerkInfo.DoesNotExist: return response(SaleclerkStatusCode.CLERK_NOT_FOUND) # 店员是否激活 if clerk.user_status != SaleclerkInfo.ACTIVATED: return response(SaleclerkStatusCode.CLERK_NOT_ACTIVATED) # 型号是否存在 try: model = ProductModelInfo.objects.get(model_id=model_id) except ProductModelInfo.DoesNotExist: return response(ProductModelStatusCode.MODEL_NOT_FOUND) # 记录销售提交记录 ProductCodeSubmitLogInfo.objects.create( model_id=model.model_id, model_name=model.model_name, mount=mount, code=code, franchiser_id=clerk.franchiser_id, clerk_id=clerk.clerk_id, consumer_name=name, consumer_sex=sex, consumer_age=age, consumer_phone=phone, ) # 产品是否存在 try: product = ProductInfo.objects.select_for_update().get(model_id=model_id, mount=mount, code=code) except ProductInfo.DoesNotExist: return response(ProductStatusCode.PRODUCT_NOT_FOUND) # 产品是否使用 if step == 1 and product.code_status: return response(ProductStatusCode.PRODUCT_HAS_USED) if step == 2 and not product.code_status: return response(ProductStatusCode.PRODUCT_NOT_USED) # 产品使用 product.code_status = True product.integral_status = True product.franchiser_id = clerk.franchiser_id product.clerk_id = clerk.clerk_id if 'name' in request.POST: product.consumer_name = name if 'sex' in request.POST: product.consumer_sex = sex if 'age' in request.POST: product.consumer_age = age if 'phone' in request.POST: product.consumer_phone = phone product.save() # 店员积分 clerk.integral += product.integral clerk.save() # 店员积分记录 SaleclerkIntegralIncomeExpensesInfo.objects.create( franchiser_id=clerk.franchiser_id, clerk_id=clerk.clerk_id, type=SaleclerkIntegralIncomeExpensesInfo.INCOME, code=code, integral=product.integral, left_integral=clerk.integral, ) return response(200, 'Submit Success', u'提交成功', {})