Browse Source

新品体验官

peng 1 year ago
parent
commit
781ff31676
1 changed files with 126 additions and 5 deletions
  1. 126 5
      AdminController/EvaluationActivityController.py

+ 126 - 5
AdminController/EvaluationActivityController.py

@@ -13,9 +13,11 @@ import time
 
 
 from django.views.generic.base import View
 from django.views.generic.base import View
 from Model.models import FreeEvaluationActivity, ActivityTime, ActivityUser
 from Model.models import FreeEvaluationActivity, ActivityTime, ActivityUser
+from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 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):
 class EvaluationActivityView(View):
@@ -39,8 +41,16 @@ class EvaluationActivityView(View):
         user_id = tko.userID
         user_id = tko.userID
         if operation == 'getActivity':
         if operation == 'getActivity':
             return self.get_activity(user_id, request_dict, response)
             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':
         elif operation == 'addActivityUser':
             return self.add_activity_user(user_id, request_dict, response)
             return self.add_activity_user(user_id, request_dict, response)
+        elif operation == 'editActivityUser':
+            return self.edit_activity_user(request_dict, response)
         else:
         else:
             return response.json(404)
             return response.json(404)
 
 
@@ -59,6 +69,7 @@ class EvaluationActivityView(View):
                 activity['activity_end_time'] = time_qs.last()['end_time']
                 activity['activity_end_time'] = time_qs.last()['end_time']
                 activity['activity_process'] = list(time_qs)
                 activity['activity_process'] = list(time_qs)
                 user_qs = ActivityUser.objects.filter(activity_id=activity['id'])
                 user_qs = ActivityUser.objects.filter(activity_id=activity['id'])
+                activity['user_count'] = user_qs.count()
                 if user_qs.exists():
                 if user_qs.exists():
                     user = user_qs.filter(user_id=user_id)
                     user = user_qs.filter(user_id=user_id)
                     if user.exists():
                     if user.exists():
@@ -95,11 +106,10 @@ class EvaluationActivityView(View):
             return response.json(404)
             return response.json(404)
         now_time = int(time.time())
         now_time = int(time.time())
         try:
         try:
-            user = ActivityUser.objects.filter(user_id=user_id)
+            user = ActivityUser.objects.filter(user_id=user_id, activity_id=activity_id)
             if user.exists():
             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:
             else:
                 ActivityUser.objects.create(activity_id=activity_id, user_id=user_id, phone=phone, address=address,
                 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,
                                             sex=sex, age=age, usage_environment=usage_environment, user_name=user_name,
@@ -107,3 +117,114 @@ class EvaluationActivityView(View):
             return response.json(0)
             return response.json(0)
         except Exception as e:
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(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)))