|
@@ -13,9 +13,11 @@ import time
|
|
|
|
|
|
from django.views.generic.base import View
|
|
|
from Model.models import FreeEvaluationActivity, ActivityTime, ActivityUser
|
|
|
+from Object.AWS.AmazonS3Util import AmazonS3Util
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
-from Service.CommonService import CommonService
|
|
|
+from Ansjer.config import SECRET_ACCESS_KEY, ACCESS_KEY_ID, REGION_NAME
|
|
|
+from django.db import transaction
|
|
|
|
|
|
|
|
|
class EvaluationActivityView(View):
|
|
@@ -39,8 +41,16 @@ class EvaluationActivityView(View):
|
|
|
user_id = tko.userID
|
|
|
if operation == 'getActivity':
|
|
|
return self.get_activity(user_id, request_dict, response)
|
|
|
+ elif operation == 'getActivityList':
|
|
|
+ return self.get_activity_list(user_id, request_dict, response)
|
|
|
+ elif operation == 'addOrEditActivity':
|
|
|
+ return self.add_or_edit_activity(request, request_dict, response)
|
|
|
+ elif operation == 'getActivityUser':
|
|
|
+ return self.get_user_list(request_dict, response)
|
|
|
elif operation == 'addActivityUser':
|
|
|
return self.add_activity_user(user_id, request_dict, response)
|
|
|
+ elif operation == 'editActivityUser':
|
|
|
+ return self.edit_activity_user(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -59,6 +69,7 @@ class EvaluationActivityView(View):
|
|
|
activity['activity_end_time'] = time_qs.last()['end_time']
|
|
|
activity['activity_process'] = list(time_qs)
|
|
|
user_qs = ActivityUser.objects.filter(activity_id=activity['id'])
|
|
|
+ activity['user_count'] = user_qs.count()
|
|
|
if user_qs.exists():
|
|
|
user = user_qs.filter(user_id=user_id)
|
|
|
if user.exists():
|
|
@@ -95,11 +106,10 @@ class EvaluationActivityView(View):
|
|
|
return response.json(404)
|
|
|
now_time = int(time.time())
|
|
|
try:
|
|
|
- user = ActivityUser.objects.filter(user_id=user_id)
|
|
|
+ user = ActivityUser.objects.filter(user_id=user_id, activity_id=activity_id)
|
|
|
if user.exists():
|
|
|
- user.update(activity_id=activity_id, phone=phone, address=address, sex=sex, user_name=user_name,
|
|
|
- age=age, usage_environment=usage_environment, is_reports=is_reports,
|
|
|
- update_time=now_time)
|
|
|
+ user.update(phone=phone, address=address, sex=sex, user_name=user_name, is_reports=is_reports, age=age,
|
|
|
+ usage_environment=usage_environment, update_time=now_time)
|
|
|
else:
|
|
|
ActivityUser.objects.create(activity_id=activity_id, user_id=user_id, phone=phone, address=address,
|
|
|
sex=sex, age=age, usage_environment=usage_environment, user_name=user_name,
|
|
@@ -107,3 +117,114 @@ class EvaluationActivityView(View):
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def add_or_edit_activity(request, request_dict, response):
|
|
|
+ activity_id = request_dict.get('activity_id', None)
|
|
|
+ activity_name = request_dict.get('activity_name', None)
|
|
|
+ carousel_image = request.FILES.get('carousel_image', None)
|
|
|
+ details_image = request.FILES.get('details_image', None)
|
|
|
+ issue = request_dict.get('issue', None)
|
|
|
+ product_number = request_dict.get('product_number', None)
|
|
|
+ original_price = request_dict.get('original_price', None)
|
|
|
+ activity_process = request_dict.get('activity_process', None)
|
|
|
+ is_show = request_dict.get('is_show', None)
|
|
|
+
|
|
|
+ if not all([activity_name, issue, product_number, original_price, is_show, activity_process]):
|
|
|
+ return response.json(404)
|
|
|
+ now_time = int(time.time())
|
|
|
+ activity_process = eval(activity_process)
|
|
|
+ try:
|
|
|
+ bucket = "ansjerfilemanager"
|
|
|
+ s3_obj = AmazonS3Util(ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME)
|
|
|
+ s3_url = 'https://{}.s3.{}.amazonaws.com.cn/'.format(bucket, REGION_NAME)
|
|
|
+ if carousel_image:
|
|
|
+ carousel_image_path = '前端/EvaluationActivity/carousel_image_{}.jpg'.format(issue)
|
|
|
+ s3_obj.upload_file_obj(
|
|
|
+ bucket,
|
|
|
+ carousel_image_path,
|
|
|
+ carousel_image,
|
|
|
+ {"ContentType": carousel_image.content_type, "ACL": "public-read"},
|
|
|
+ )
|
|
|
+ carousel_image_url = s3_url + carousel_image_path
|
|
|
+ if activity_id:
|
|
|
+ FreeEvaluationActivity.objects.filter(id=activity_id).update(carousel_image_url=carousel_image_url)
|
|
|
+ if details_image:
|
|
|
+ details_image_path = '前端/EvaluationActivity/details_image_{}.jpg'.format(issue)
|
|
|
+ s3_obj.upload_file_obj(
|
|
|
+ bucket,
|
|
|
+ details_image_path,
|
|
|
+ details_image,
|
|
|
+ {"ContentType": details_image.content_type, "ACL": "public-read"},
|
|
|
+ )
|
|
|
+ details_image_url = s3_url + details_image_path
|
|
|
+ if activity_id:
|
|
|
+ FreeEvaluationActivity.objects.filter(id=activity_id).update(details_image_url=details_image_url)
|
|
|
+ with transaction.atomic():
|
|
|
+ if activity_id: # 编辑活动
|
|
|
+ FreeEvaluationActivity.objects.filter(id=activity_id).update(issue=issue,
|
|
|
+ product_number=product_number,
|
|
|
+ original_price=original_price,
|
|
|
+ is_show=is_show, update_time=now_time)
|
|
|
+ for index, item in enumerate(activity_process):
|
|
|
+ time_qs = ActivityTime.objects.filter(activity_id=activity_id,
|
|
|
+ node_content=item['node_content'])
|
|
|
+ if time_qs.exists():
|
|
|
+ time_qs.update(start_time=item['start_time'], end_time=item['end_time'], sort=index)
|
|
|
+ else:
|
|
|
+ ActivityTime.objects.create(activity_id=activity_id, node_content=item['node_content'],
|
|
|
+ start_time=item['start_time'], end_time=item['end_time'],
|
|
|
+ sort=index)
|
|
|
+ else: # 增加活动
|
|
|
+ if not all([carousel_image, details_image]):
|
|
|
+ return response.json(404)
|
|
|
+ FreeEvaluationActivity.objects.create(activity_name=activity_name, product_number=product_number,
|
|
|
+ carousel_image_url=carousel_image_url, is_show=is_show,
|
|
|
+ original_price=original_price,
|
|
|
+ details_image_url=details_image_url, issue=issue)
|
|
|
+ for index, item in enumerate(activity_process):
|
|
|
+ ActivityTime.objects.create(activity_id=activity_id, node_content=item['node_content'],
|
|
|
+ start_time=item['start_time'], end_time=item['end_time'],
|
|
|
+ sort=index)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_activity_list(user_id, request_dict, response):
|
|
|
+ try:
|
|
|
+ activity_qs = FreeEvaluationActivity.objects.all().values('id', 'activity_name', 'carousel_image_url',
|
|
|
+ 'details_image_url', 'issue', 'is_show',
|
|
|
+ 'product_number', 'original_price')
|
|
|
+ for item in activity_qs:
|
|
|
+ time_qs = ActivityTime.objects.filter(activity_id=item['id']).values('node_content', 'start_time',
|
|
|
+ 'end_time').order_by('sort')
|
|
|
+ item['activity_process'] = list(time_qs)
|
|
|
+ return response.json(0, list(activity_qs))
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_user_list(request_dict, response):
|
|
|
+ activity_id = request_dict.get('activity_id', None)
|
|
|
+ try:
|
|
|
+ user_qs = ActivityUser.objects.all()
|
|
|
+ if activity_id:
|
|
|
+ user_qs = user_qs.filter(activity_id=activity_id)
|
|
|
+ user_qs = user_qs.values('id', 'user_name', 'phone', 'age', 'address', 'sex', 'is_selected', 'activity_id',
|
|
|
+ 'usage_environment', 'is_reports')
|
|
|
+ return response.json(0, list(user_qs))
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def edit_activity_user(request_dict, response):
|
|
|
+ activity_id = request_dict.get('activity_id', None)
|
|
|
+ user_id = request_dict.get('user_id', None)
|
|
|
+ is_selected = request_dict.get('is_selected', None)
|
|
|
+ try:
|
|
|
+ ActivityUser.objects.filter(activity_id=activity_id, id=user_id).update(is_selected=is_selected)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|