12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166 |
- from __future__ import division
- import json
- from collections import defaultdict
- from datetime import datetime
- from django.conf import settings
- from django.db import transaction
- from django.db.models import Count, Q, Sum
- 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 coupon.models import UserCouponInfo, CouponInfo
- from integral.models import SaleclerkSubmitLogInfo
- from logs.models import MchInfoEncryptLogInfo
- from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo
- from member.models import GoodsOrderInfo, MemberActivityInfo, MemberActivityGroupShareInfo
- from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo
- from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode,
- ProductMachineStatusCode, UserStatusCode)
- WECHAT = settings.WECHAT
- @logit
- def querysn(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- model_id = request.POST.get('model_id', '')
- sn = request.POST.get('sn', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- if not AdministratorInfo.objects.filter(admin_id=admin_id, admin_type=AdministratorInfo.MAINTENANCE, user_status=AdministratorInfo.ACTIVATED, status=True).exists():
- return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
- log = ConsumeInfoSubmitLogInfo.objects.filter(brand_id=brand_id, model_id=model_id, serialNo=sn, submit_during_activity=True, status=True).order_by('has_used', '-pk').first()
- if not log:
- log = ConsumeInfoSubmitLogInfo.objects.filter(brand_id=brand_id, model_id=model_id, serialNo=sn, status=True).order_by('-submit_during_activity', 'dupload').first()
- if not log:
- return response(ProductMachineStatusCode.SN_NOT_FOUND)
- return response(200, 'Query SN Success', u'查询序列号成功', data=log.data)
- @logit
- def queryusedsn(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- if not AdministratorInfo.objects.filter(admin_id=admin_id, admin_type=AdministratorInfo.MAINTENANCE, user_status=AdministratorInfo.ACTIVATED, status=True).exists():
- return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
- logs = ConsumeInfoSubmitLogInfo.objects.filter(brand_id=brand_id, admin_id=admin_id, has_used=True, status=True).order_by('-used_at')
- logs = [log.data for log in logs]
- return response(200, 'Query Used SN Success', u'查询核销序列号成功', data={
- 'logs': logs,
- })
- @logit
- @transaction.atomic
- def usecoupon(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- model_id = request.POST.get('model_id', '')
- sn = request.POST.get('sn', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- if not AdministratorInfo.objects.filter(
- admin_id=admin_id,
- admin_type=AdministratorInfo.MAINTENANCE,
- user_status=AdministratorInfo.ACTIVATED,
- status=True
- ).exists():
- return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
- log = ConsumeInfoSubmitLogInfo.objects.filter(
- brand_id=brand_id,
- model_id=model_id,
- serialNo=sn,
- submit_during_activity=True,
- has_used=False,
- status=True
- ).first()
- if not log:
- return response(ProductMachineStatusCode.SN_NOT_FOUND)
- logdata = log.data
- if logdata.get('final_coupon_info', {}).get('coupon_has_expired', True):
- return response(ProductCouponStatusCode.COUPON_HAS_EXPIRED)
- log.has_used = True
- log.used_at = tc.utc_datetime()
- log.save()
- return response(200, 'Use Coupon Success', u'核销优惠券成功')
- @logit
- def userinfo(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- userinfos = UserInfo.objects.filter(status=True).order_by('-created_at')
- count = userinfos.count()
- userinfos, left = pagination(userinfos, page, num)
- userinfos = [userinfo.admindata for userinfo in userinfos]
- return response(200, 'Userinfo Success', u'用户列表获取成功', data={
- 'userinfos': userinfos,
- 'count': count,
- 'left': left,
- })
- @logit
- def query_usercoupons(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- user_id = request.POST.get('user_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
-
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return response(UserStatusCode.USER_NOT_FOUND)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- coupons = UserCouponInfo.objects.filter(brand_id=administrator.brand_id, user_id=user_id, status=True).order_by('-created_at')
- coupons = [coupon.admindata for coupon in coupons]
- return response(200, 'User Coupon Success', u'用户劵列表获取成功', data={
- 'coupons': coupons,
- })
- @logit
- def query_usergoods(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- user_id = request.POST.get('user_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
-
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return response(UserStatusCode.USER_NOT_FOUND)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = ConsumeInfoSubmitLogInfo.objects.filter(brand_id=administrator.brand_id, user_id=user_id, status=True).order_by('-created_at')
- logs = [log.adminuserdata for log in logs]
- return response(200, 'Userinfo Goods Success', u'用户商品列表获取成功', data={
- 'logs': logs,
- })
- @logit
- def query_userinfo(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- query = request.POST.get('query', '')
- level = request.POST.get('level', '')
- is_member = request.POST.get('is_member', '')
- code_version = request.POST.get('code_version', 0)
- sex = request.POST.get('sex', '')
- subscribe = request.POST.get('subscribe', '')
- has_membercard = request.POST.get('has_membercard', '')
- province = request.POST.get('province', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- userinfos = UserInfo.objects.filter(Q(status=True) & (Q(user_id__icontains=query) | Q(nickname__icontains=query) | Q(phone__icontains=query) | Q(memberusercardcode__icontains=query))).order_by('-created_at')
- if level:
- userinfos = userinfos.filter(level=level)
- if code_version:
- userinfos = userinfos.filter(code_version=code_version)
- if subscribe:
- userinfos = userinfos.filter(subscribe=subscribe)
- if has_membercard:
- userinfos = userinfos.filter(has_membercard=has_membercard)
- if is_member:
- userinfos = userinfos.filter(level__gte=1)
- if sex:
- userinfos = userinfos.filter(sex=sex)
- if province:
- userinfos = userinfos.filter(province_name=province)
- if start_time and end_time:
- ftime = datetime.strptime(start_time + ' 00:00:00', '%Y%m%d %H:%M:%S')
- ttime = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')
- userinfos = userinfos.filter(created_at__range=[ftime, ttime])
- count = userinfos.count()
- userinfos, left = pagination(userinfos, page, num)
- userinfos = [userinfo.admindata for userinfo in userinfos]
- return response(200, 'Userinfo Success', u'用户列表获取成功', data={
- 'userinfos': userinfos,
- 'count': count,
- 'left': left
- })
- @logit
- @transaction.atomic
- def userinfo_update(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- user_id = request.POST.get('user_id', '')
- integral = int(request.POST.get('integral', 0))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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:
- user = UserInfo.objects.select_for_update().get(user_id=user_id, status=True)
- except UserInfo.DoesNotExist:
- return response(UserStatusCode.USER_NOT_FOUND)
- user.integral = integral
- user.save()
- return response(200, 'Userinfo Update Success', u'修改用户信息成功', data={})
- def statistic_userprofile(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- model_name = request.POST.get('model_name', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- if model_name:
- logs = ConsumeModelSaleStatisticInfo.objects.filter(model_name=model_name, ymd__gte=start_time, ymd__lte=end_time)
- else:
- logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
- sexs = {0: 0, 1: 0, 2: 0}
- subscribes = {0: 0, 1: 0}
- has_membercards = {0: 0, 1: 0}
- provinces = defaultdict(int)
- for log in logs:
- for user in log.users:
- try:
- user = UserInfo.objects.get(user_id=user, status=True)
- except UserInfo.DoesNotExist:
- continue
- provinces[user.province_name] += 1
- sexs[user.sex] += 1
- subscribes[user.subscribe] += 1
- has_membercards[user.has_membercard] += 1
- return response(200, 'Get User Profile Success', u'获取用户画像成功', data={
- 'provinces': provinces,
- 'sexs': sexs,
- 'subscribe': subscribes,
- 'has_membercards': has_membercards,
- })
- def statistic_daily(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- sale_logs = ConsumeSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
- user_logs = ConsumeUserStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
- sale_logs = [log.data for log in sale_logs]
- user_logs = [log.data for log in user_logs]
- return response(200, 'Get User Sales Statistic Success', u'获取销量统计成功', data={
- 'sale_logs': sale_logs,
- 'user_logs': user_logs,
- })
- def statistic_model(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time).values_list('model_name').annotate(Sum('num'))
- logs = [{'model_name': log[0], 'num': log[1]} for log in logs]
- return response(200, 'Get Model Statistic Success', u'获取型号统计成功', data={
- 'logs': logs
- })
- def statistic_distributor(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- model_name = request.POST.get('model_name', '')
- distributor_name = request.POST.get('distributor_name', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- daily_sql = 'select id, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True %s %s GROUP BY ymd;' % (start_time, end_time, ('AND model_uni_name="%s"' % (model_name)) if model_name else '', ('AND distributor_name="%s"' % (distributor_name)) if distributor_name else '')
- daily_logs = SaleclerkSubmitLogInfo.objects.raw(daily_sql)
- daily_logs = [{'ymd': log.ymd, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in daily_logs]
- model_logs = []
- if model_name == '':
- model_sql = 'select id, model_uni_name, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True %s GROUP BY model_uni_name;' % (start_time, end_time, ('AND distributor_name="%s"' % (distributor_name)) if distributor_name else '')
- model_logs = SaleclerkSubmitLogInfo.objects.raw(model_sql)
- model_logs = [{'model_uni_name': log.model_uni_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in model_logs]
- distributor_logs = []
- if distributor_name == '':
- distributor_sql = 'select id, distributor_name, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True %s GROUP BY distributor_name;' % (start_time, end_time, ('AND model_uni_name="%s"' % (model_name)) if model_name else '')
- distributor_logs = SaleclerkSubmitLogInfo.objects.raw(distributor_sql)
- distributor_logs = [{'distributor_name': log.distributor_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in distributor_logs]
- return response(200, 'Get Distributor Statistic Success', u'获取经销商统计成功', data={
- 'daily_logs': daily_logs,
- 'model_logs': model_logs,
- 'distributor_logs': distributor_logs
- })
- def dashboard(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
-
- sale_logs = SaleclerkSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, test_user=False, dupload=False, test_sn=False, status=True)
- sale_count = sale_logs.count()
- sale_daily_logs = list(sale_logs.values('ymd').annotate(num=Count('pk')))
- sale_model_logs = list(sale_logs.values('model_uni_name').annotate(num=Count('pk')).order_by('-num'))[:10]
- sale_distributor_logs = list(sale_logs.values('distributor_name').annotate(num=Count('pk')).order_by('-num'))[:10]
-
- logs = ConsumeInfoSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, test_user=False, dupload=False, status=True)
- consumer_count = logs.count()
- consumer_daily_logs = list(logs.values('ymd').annotate(num=Count('pk')).order_by('ymd'))
- consumer_model_logs = list(logs.values('model_uni_name').annotate(num=Count('pk')).order_by('-num'))[:10]
- consumer_province_logs = list(logs.values('province').annotate(num=Count('pk')).order_by('-num'))[:10]
- return response(200, 'Get Distributor Statistic Success', u'获取经销商统计成功', data={
- 'sale_daily_logs': sale_daily_logs,
- 'sale_model_logs': sale_model_logs,
- 'sale_distributor_logs': sale_distributor_logs,
- 'consumer_daily_logs': consumer_daily_logs,
- 'consumer_model_logs': consumer_model_logs,
- 'consumer_province_logs': consumer_province_logs,
- 'sale_count': sale_count,
- 'consumer_count': consumer_count,
- })
- def statistic_consumer(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- model_name = request.POST.get('model_name', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
-
- daily_sql = 'select id, Count(id) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2 FROM mch_consumeinfosubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND status=True %s GROUP BY ymd;' % (start_time, end_time, ('AND model_uni_name="%s"' % (model_name)) if model_name else '')
- daily_logs = ConsumeInfoSubmitLogInfo.objects.raw(daily_sql)
- daily_logs = [{'ymd': log.ymd, 'num': log.num, 'code1': log.code1, 'code2': log.code2} for log in daily_logs]
- model_logs = []
- if model_name == '':
- model_sql = 'select id, model_uni_name, Count(id) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2 FROM mch_consumeinfosubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND status=True GROUP BY model_uni_name ORDER BY num desc;' % (start_time, end_time)
- model_logs = ConsumeInfoSubmitLogInfo.objects.raw(model_sql)
- model_logs = [{'model_uni_name': log.model_uni_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2} for log in model_logs]
- province_sql = 'select id, province, Count(id) AS num, Count(code_version=1 or NULL) AS code1, Count(code_version=2 or NULL) AS code2 FROM mch_consumeinfosubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND status=True %s GROUP BY province ORDER BY num desc;' % (start_time, end_time, ('AND model_uni_name="%s"' % (model_name)) if model_name else '')
- province_logs = ConsumeInfoSubmitLogInfo.objects.raw(province_sql)
- province_logs = [{'province': log.province, 'num': log.num, 'code1': log.code1, 'code2': log.code2} for log in province_logs]
- return response(200, 'Get Consumer Statistic Success', u'获取消费者统计成功', data={
- 'daily_logs': daily_logs,
- 'model_logs': model_logs,
- 'province_logs': province_logs,
- })
- def statistic_member(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
-
- if start_time and end_time:
- users = ConsumeInfoSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, test_user=False, dupload=False, status=True)
- else:
- users = ConsumeInfoSubmitLogInfo.objects.filter(test_user=False, dupload=False, status=True)
- users = users.values_list('user_id', flat=True).distinct()
- userinfos = UserInfo.objects.filter(user_id__in=users)
-
- level_logs = list(userinfos.values('level').annotate(num=Count('user_id')))
-
- integral_logs = list(userinfos.values('integral').annotate(num=Count('user_id')))
-
- shot_logs = list(userinfos.values('shots_num').annotate(num=Count('user_id')))
-
- sex_logs = list(userinfos.values('sex').annotate(num=Count('user_id')))
-
- province_logs = list(userinfos.values('province_name').annotate(num=Count('user_id')).order_by('-num'))
- return response(200, 'Get Consumer Statistic Success', u'获取消费者统计成功', data={
- 'level_logs': level_logs,
- 'integral_logs': integral_logs,
- 'shot_logs': shot_logs,
- 'sex_logs': sex_logs,
- 'province_logs': province_logs,
- })
- def record_consumer(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- admin_id = request.POST.get('admin_id', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- query = request.POST.get('query', '')
- dupload = request.POST.get('dupload', '')
- code_version = request.POST.get('code_version', 0)
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = ConsumeInfoSubmitLogInfo.objects.filter(Q(status=True) & Q(test_user=False) & (Q(model_name__icontains=query) | Q(phone__icontains=query) | Q(serialNo__icontains=query))).order_by('-created_at')
- if dupload:
- logs = logs.filter(dupload=dupload)
- if code_version:
- logs = logs.filter(code_version=code_version)
- if start_time and end_time:
- logs = logs.filter(ymd__gte=start_time, ymd__lte=end_time)
- count = logs.count()
- logs, left = pagination(logs, page, num)
- logs = [log.admindata for log in logs]
- return response(200, 'Get Consumer Record Success', u'获取消费者销售记录成功', data={
- 'logs': logs,
- 'count': count,
- 'left': left
- })
- def record_sale(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- query = request.POST.get('query', '')
- dupload = request.POST.get('dupload', '')
- has_scan = request.POST.get('has_scan', '')
- code_version = request.POST.get('code_version', 0)
- is_online_sale = request.POST.get('is_online_sale', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = SaleclerkSubmitLogInfo.objects.filter(Q(status=True) & Q(test_user=False) & Q(test_sn=False) & (Q(model_name__icontains=query) | Q(clerk_name__icontains=query) | Q(distributor_name__icontains=query) | Q(code__icontains=query))).order_by('-created_at')
- if dupload:
- logs = logs.filter(dupload=dupload)
- if code_version:
- logs = logs.filter(code_version=code_version)
- if has_scan:
- logs = logs.filter(has_scan=has_scan)
- if start_time and end_time:
- logs = logs.filter(ymd__gte=start_time, ymd__lte=end_time)
- if is_online_sale:
- logs = logs.filter(remark=('扫描条形码' if is_online_sale == '1' else ''))
- count = logs.count()
- logs, left = pagination(logs, page, num)
- logs = [log.admindata for log in logs]
- return response(200, 'Get Sale Record Success', u'获取销售员销售记录成功', data={
- 'logs': logs,
- 'count': count,
- 'left': left
- })
- def model_list(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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 = list(ModelInfo.objects.filter(status=True).values_list('model_uni_name', flat=True).distinct().order_by('model_uni_name'))
- return response(200, 'Get Model List Success', u'获取型号列表成功', data={
- 'models': infos
- })
- def distributor_list(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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 = list(DistributorInfo.objects.filter(status=True).values_list('distributor_name', flat=True).distinct().order_by('distributor_name'))
- return response(200, 'Get Model List Success', u'获取经销商列表成功', data={
- 'distributors': infos
- })
- def member_goods_order(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- phone = request.POST.get('phone', '')
- good_type = request.POST.get('good_type', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- order_status = int(request.POST.get('order_status', 0))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- orders = GoodsOrderInfo.objects.filter(phone__icontains=phone, status=True).order_by('-created_at')
- if good_type:
- orders = orders.filter(good_type=good_type)
-
-
- if order_status == 1:
- orders = orders.filter(Q(tracking_number__isnull=True) | Q(tracking_number=''))
- elif order_status == 2:
- orders = orders.filter(tracking_number__isnull=False).exclude(tracking_number='')
- count = orders.count()
- orders, left = pagination(orders, page, num)
- orders = [order.admindata for order in orders]
- return response(200, 'Get Member Goods Order List Success', u'获取会员商品订单列表成功', data={
- 'orders': orders,
- 'left': left,
- 'count': count
- })
- def member_goods_order_update(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- order_id = request.POST.get('order_id', '')
- tracking_number = request.POST.get('tracking_number', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- GoodsOrderInfo.objects.filter(order_id=order_id, status=True).update(tracking_number=tracking_number)
- return response(200, 'Member Goods Order Update Success', u'会员商品订单修改成功')
- def member_goods_order_batch_update(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- orders = json.loads(request.POST.get('orders', '[]'))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- err_orders = []
- for order in orders:
- try:
- GoodsOrderInfo.objects.filter(order_id=order['order_id'], status=True).update(tracking_number=order['tracking_number'])
- except:
- err_orders.append(order['order_id'])
- if err_orders:
- return response(40001, 'Member Goods Order Update Error', u'部分会员商品订单修改失败', data={
- 'orders': err_orders
- })
- return response(200, 'Member Goods Order Update Success', u'会员商品订单修改成功')
- def record_warehouse(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- model_name = request.POST.get('model_name', '')
- sn = request.POST.get('sn', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- models = ModelInfo.objects.filter(model_name__icontains=model_name, status=True).values_list('pk', flat=True)
- logs = MchInfoEncryptLogInfo.objects.filter(model_pk__in=models, sn__icontains=sn, status=True)
- if start_time and end_time:
- start_time = datetime.strptime(start_time, '%Y%m%d')
- end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')
- logs = logs.filter(created_at__range=(start_time, end_time))
- logs = logs.order_by('-created_at')
- count = logs.count()
- logs, left = pagination(logs, page, num)
- logs = [log.admindata for log in logs]
- return response(200, 'Get Warehouse Record Success', u'获取入库记录成功', data={
- 'logs': logs,
- 'left': left,
- 'count': count
- })
- def member_activity_list(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- title = request.POST.get('title', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = MemberActivityInfo.objects.filter(title__icontains=title)
- if start_time and end_time:
- start_time = datetime.strptime(start_time, '%Y%m%d')
- end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')
- logs = logs.filter(created_at__range=(start_time, end_time))
-
- logs = logs.order_by('-created_at')
-
- count = logs.count()
- logs, left = pagination(logs, page, num)
- logs = [log.admindata for log in logs]
- return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
- 'logs': logs,
- 'left': left,
- 'count': count
- })
- def member_activity_details(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- activity_id = request.POST.get('activity_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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:
- log = MemberActivityInfo.objects.get(activity_id=activity_id)
- except:
- return response()
-
- log = log.admindetails
- return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
- 'log': log,
- })
- def member_activity_update(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- activity_id = request.POST.get('activity_id', '')
- title = request.POST.get('title', '')
- subtitle = request.POST.get('subtitle', '')
- date = request.POST.get('date', '')
- city = request.POST.get('city', '')
- location = request.POST.get('location', '')
- integral = int(request.POST.get('integral', 0))
- cover_url = request.POST.get('cover_path', '')
- slider_image = request.POST.get('banner_path', '')
- image = request.POST.get('banner_path', '')
- is_signup = request.POST.get('is_signup', '')
- group_share_max_integral = int(request.POST.get('share_max_integral', 0))
- group_share_integral = int(request.POST.get('share_integral', 0))
- is_slider = request.POST.get('is_slider', '')
- content_rich_text = request.POST.get('content_rich_text', '')
- share_h5_link = request.POST.get('share_h5_link', '')
- activity_state = int(request.POST.get('activity_state', 0))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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:
- log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)
- except:
- return response()
-
- log.title = title
- log.subtitle = subtitle
- log.date = datetime.strptime(date + ' 23:59:59', '%Y-%m-%d %H:%M:%S')
- log.city = city
- log.location = location
- log.integral = integral
- log.cover = cover_url
- log.slider_image = slider_image
- log.image = slider_image
- log.is_signup = is_signup
- log.group_share_integral = group_share_integral
- log.group_share_max_integral = group_share_max_integral
- log.is_slider = is_slider
- log.content_rich_text = content_rich_text
- log.share_h5_link = share_h5_link
- log.activity_state = activity_state
- log.save()
- return response(200, 'MemberActivityInfo Update Success', u'会员活动更新成功')
- def member_activity_create(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- title = request.POST.get('title', '')
- subtitle = request.POST.get('subtitle', '')
- date = request.POST.get('date', '')
- city = request.POST.get('city', '')
- location = request.POST.get('location', '')
- integral = int(request.POST.get('integral', 0))
- cover_url = request.POST.get('cover_path', '')
- slider_image = request.POST.get('banner_path', '')
- image = request.POST.get('banner_path', '')
- is_signup = request.POST.get('is_signup', '')
- group_share_max_integral = int(request.POST.get('share_max_integral', 0))
- group_share_integral = int(request.POST.get('share_integral', 0))
- is_slider = request.POST.get('is_slider', '')
- content_rich_text = request.POST.get('content_rich_text', '')
- share_h5_link = request.POST.get('share_h5_link', '')
- activity_state = int(request.POST.get('activity_state', 0))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- MemberActivityInfo.objects.create(
- brand_id=administrator.brand_id,
- title=title,
- subtitle=subtitle,
- date=date,
- city=city,
- location=location,
- integral=integral,
- cover=cover_url,
- slider_image=slider_image,
- image=image,
- is_signup=is_signup,
- group_share_max_integral=group_share_max_integral,
- group_share_integral=group_share_integral,
- is_slider=is_slider,
- content_rich_text=content_rich_text,
- share_h5_link=share_h5_link,
- activity_state=activity_state
- )
- return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功')
- def member_activity_share_list(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- activity_id = request.POST.get('activity_id', '')
- page = int(request.POST.get('page', 1))
- num = int(request.POST.get('num', 20))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = MemberActivityGroupShareInfo.objects.filter(activity_id=activity_id, status=True)
- total_integral = logs.aggregate(Sum('integral'))['integral__sum']
- logs = logs.values('share_user_id').annotate(integral_sum=Sum('integral'), group_count=Count('open_gid'), user_count=Count('click_user_id')).order_by('-user_count')
-
- count = logs.count()
- logs, left = pagination(logs, page, num)
- return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
- 'logs': list(logs),
- 'count': count,
- 'left': left,
- 'total_integral': total_integral
- })
- def coupon_list(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- title = request.POST.get('title', '')
- start_time = request.POST.get('start_time', '')
- end_time = request.POST.get('end_time', '')
- page = request.POST.get('page', 1)
- num = request.POST.get('num', 20)
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- logs = CouponInfo.objects.filter(coupon_title__icontains=title, status=True)
- if start_time and end_time:
- start_time = datetime.strptime(start_time, '%Y%m%d')
- end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')
- logs = logs.filter(created_at__range=(start_time, end_time))
-
- logs = logs.order_by('-created_at')
-
- count = logs.count()
- logs, left = pagination(logs, page, num)
- logs = [log.admindata for log in logs]
- return response(200, 'Get CouponInfo List Success', u'获取劵列表成功', data={
- 'logs': logs,
- 'left': left,
- 'count': count
- })
- def coupon_details(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- coupon_id = request.POST.get('coupon_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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:
- log = CouponInfo.objects.get(coupon_id=coupon_id)
- except:
- return response()
-
- log = log.admindetails
- return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
- 'log': log,
- })
- def coupon_create(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- coupon_title = request.POST.get('coupon_title', '')
- coupon_detail = request.POST.get('coupon_detail', '')
- coupon_value = int(request.POST.get('coupon_value', 0))
- coupon_image = request.POST.get('coupon_image', '')
- coupon_expire_type = int(request.POST.get('coupon_expire_type', 0))
- coupon_valid_period = int(request.POST.get('coupon_valid_period', 0))
- coupon_expire_at = request.POST.get('coupon_expire_at', '')
- is_coupon_admin_writeoff = int(request.POST.get('is_coupon_admin_writeoff', 1))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- try:
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
- except AdministratorInfo.DoesNotExist:
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
- info = CouponInfo.objects.create(
- brand_id = brand_id,
- coupon_title = coupon_title,
- coupon_detail = coupon_detail,
- coupon_value = coupon_value,
- coupon_image = coupon_image,
- coupon_expire_type = coupon_expire_type,
- coupon_valid_period = coupon_valid_period,
- is_coupon_admin_writeoff = is_coupon_admin_writeoff
- )
- if coupon_expire_at:
- info.coupon_expire_at = datetime.strptime(coupon_expire_at + ' 23:59:59', '%Y-%m-%d %H:%M:%S')
- info.save()
- return response(200, 'CouponInfo Create Success', u'劵创建成功')
- def coupon_update(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- coupon_id = request.POST.get('coupon_id', '')
- coupon_title = request.POST.get('coupon_title', '')
- coupon_detail = request.POST.get('coupon_detail', '')
- coupon_value = int(request.POST.get('coupon_value', 0))
- coupon_image = request.POST.get('coupon_image', '')
- coupon_expire_type = int(request.POST.get('coupon_expire_type', 0))
- coupon_valid_period = int(request.POST.get('coupon_valid_period', 0))
- coupon_expire_at = request.POST.get('coupon_expire_at', '')
- is_coupon_admin_writeoff = int(request.POST.get('is_coupon_admin_writeoff', 1))
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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:
- log = CouponInfo.objects.get(coupon_id=coupon_id, status=True)
- except:
- return response()
-
- log.brand_id = brand_id
- log.coupon_title = coupon_title
- log.coupon_detail = coupon_detail
- log.coupon_value = coupon_value
- log.coupon_image = coupon_image
- log.coupon_expire_type = coupon_expire_type
- log.coupon_valid_period = coupon_valid_period
- if coupon_expire_at:
- log.coupon_expire_at = datetime.strptime(coupon_expire_at + ' 23:59:59', '%Y-%m-%d %H:%M:%S')
- log.is_coupon_admin_writeoff = is_coupon_admin_writeoff
- log.save()
- return response(200, 'CouponInfo Update Success', u'劵更新成功')
- def coupon_delete(request):
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
- admin_id = request.POST.get('admin_id', '')
- coupon_id = request.POST.get('activity_id', '')
- if brand_id != settings.KODO_DEFAULT_BRAND_ID:
- return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
- 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:
- log = CouponInfo.objects.get(coupon_id=coupon_id, status=True)
- except:
- return response()
-
- log.status = False
- log.save()
- return response(200, 'CouponInfo Delete Success', u'劵删除成功')
|