zhangdongming 2 месяцев назад
Родитель
Сommit
0d155b20ce
3 измененных файлов с 98 добавлено и 14 удалено
  1. 92 14
      AdminController/EvaluationActivityController.py
  2. 2 0
      Ansjer/config.py
  3. 4 0
      Model/models.py

+ 92 - 14
AdminController/EvaluationActivityController.py

@@ -1,24 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnsjerFormal
-@software: PyCharm
-@DATE: 2024年7月29日15:51:04
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-"""
+import os
 import time
 
 from django.views.generic.base import View
+from obs import ObsClient
+
 from Model.models import FreeEvaluationActivity, ActivityTime, ActivityUser, Device_User
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.Enums.RedisKeyConstant import RedisKeyConstant
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
-from Ansjer.config import SERVER_DOMAIN, LOGGER
+from Ansjer.config import SERVER_DOMAIN, LOGGER, HUAWEICLOUD_AK, HUAWEICLOUD_SK, HUAWEICLOUD_OBS_SERVER, \
+    HUAWEICLOUD_SERVER_BUKET
 from Ansjer.cn_config.config_formal import SECRET_ACCESS_KEY, ACCESS_KEY_ID, REGION_NAME
 from django.db import transaction
 
@@ -54,6 +47,10 @@ class EvaluationActivityView(View):
             return self.add_activity_user(user_id, request_dict, response)
         elif operation == 'editActivityUser':
             return self.edit_activity_user(request_dict, response)
+        elif operation == 'addStoryCollectionUser':     # 新增故事征集客户信息
+            return self.add_story_collection_user(user_id, request_dict, response)
+        elif operation == 'addStoryCollectionUserSuccess':     # 新增故事征集客户信息成功回调
+            return self.add_story_collection_user_success(user_id, request_dict, response)
         else:
             return response.json(404)
 
@@ -79,9 +76,12 @@ class EvaluationActivityView(View):
                 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)
+                    user = user_qs.filter(user_id=user_id).values('registration_status')
                     if user.exists():
-                        activity['activity_status'] = 2  # 1:可报名;2:已报名;3:报名截止;4:活动结束
+                        if user[0]['registration_status']:
+                            activity['activity_status'] = 2  # 1:可报名;2:已报名;3:报名截止;4:活动结束
+                        else:
+                            activity['activity_status'] = 1
                     else:
                         activity['activity_status'] = 1
                     user_qs = user_qs.filter(is_selected=1).values('user_name', 'phone', 'user_id')
@@ -320,3 +320,81 @@ 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_story_collection_user(user_id, request_dict, response):
+        activity_id = request_dict.get('activity_id', None)
+        user_name = request_dict.get('user_name', None)
+        phone = request_dict.get('phone', None)
+        address = request_dict.get('address', None)
+        sex = request_dict.get('sex', None)
+        age = request_dict.get('age', None)
+        usage_environment = request_dict.get('usage_environment', None)
+        story = request_dict.get('story', None)
+        file_name_list = request_dict.get('file_name_list')
+
+        if not all([activity_id, user_name, phone, address, sex, age, usage_environment, story]):
+            return response.json(404)
+        now_time = int(time.time())
+        try:
+            data = {
+                'user_name': user_name,
+                'phone': phone,
+                'address': address,
+                'sex': sex,
+                'age': age,
+                'story': story,
+                'usage_environment': usage_environment,
+                'update_time': now_time
+            }
+
+            signed_url = []
+            # 如果上传文件,生成华为云OBS上传链接
+            if file_name_list:
+                # 报名状态暂时设置为不成功
+                data['registration_status'] = 0
+                obs_client = ObsClient(
+                    access_key_id=HUAWEICLOUD_AK,
+                    secret_access_key=HUAWEICLOUD_SK,
+                    server=HUAWEICLOUD_OBS_SERVER
+                )
+                file_name_list = eval(file_name_list)
+                for index, file_name in enumerate(file_name_list):
+                    file_name = str(index) + os.path.splitext(file_name)[1]
+                    file_name = 'story-collection/{}/{}'.format(user_id, file_name)
+                    if index == 0:
+                        data['file_1_name'] = file_name
+                    else:
+                        data['file_2_name'] = file_name
+
+                    res = obs_client.createSignedUrl(
+                        method='PUT', bucketName=HUAWEICLOUD_SERVER_BUKET, objectKey=file_name, expires=3600
+                    )
+                    signed_url.append(res.signedUrl)
+
+            user = ActivityUser.objects.filter(user_id=user_id, activity_id=activity_id)
+            if user.exists():
+                user.update(**data)
+            else:
+                data['activity_id'] = activity_id
+                data['user_id'] = user_id
+                data['created_time'] = now_time
+                ActivityUser.objects.create(**data)
+            if signed_url:
+                res = {
+                    'signed_url': signed_url
+                }
+                return response.json(0, res)
+            else:
+                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_story_collection_user_success(user_id, request_dict, response):
+        activity_id = request_dict.get('activity_id', None)
+        try:
+            ActivityUser.objects.filter(user_id=user_id, activity_id=activity_id).update(registration_status=1)
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 2 - 0
Ansjer/config.py

@@ -50,6 +50,8 @@ HUAWEICLOUD_AK = 'TN9T7ZPN3QRBBQ9NQHNB'
 HUAWEICLOUD_SK = 'rIlTBJ85MUC1WNLyJBZM2077HTsQ0qJaJf4IpTjU'
 HUAWEICLOUD_OBS_SERVER = 'https://obs.cn-east-3.myhuaweicloud.com'
 HUAWEICLOUD_PUSH_BUKET = 'asj-push'
+HUAWEICLOUD_BAIDU_BIG_MODEL_LICENSE_BUKET = 'baidu-big-model-license'
+HUAWEICLOUD_SERVER_BUKET = 'asj-server'
 
 # 阿里云AccessKey和AccessKeySecret
 ALI_ACCESS_KEY_ID = 'LTAI5t9BXQWTPfBEh2Qu8YNA'

+ 4 - 0
Model/models.py

@@ -5088,7 +5088,11 @@ class ActivityUser(models.Model):
     age = models.SmallIntegerField(verbose_name='年龄', default=0)
     usage_environment = models.CharField(default='', max_length=50, verbose_name='使用环境')
     is_reports = models.SmallIntegerField(verbose_name='是否输出过体验报告', default=0)  # 0:未输出;1:输出过
+    story = models.CharField(default='', max_length=800, verbose_name='故事')
+    file_1_name = models.CharField(default='', max_length=128, verbose_name='图片/视频文件名')
+    file_2_name = models.CharField(default='', max_length=128, verbose_name='图片/视频文件名')
     is_selected = models.SmallIntegerField(verbose_name='是否入选', default=0)  # 0:未入选;1:入选
+    registration_status = models.SmallIntegerField(verbose_name='报名状态', default=1)  # 0:报名失败;1:报名成功
     created_time = models.IntegerField(verbose_name='创建时间', default=0)
     update_time = models.IntegerField(verbose_name='更新时间', default=0)