Explorar o código

C520M带屏图片违规

linhaohong hai 11 meses
pai
achega
e517b2b95c

+ 53 - 0
Controller/UserDevice/UserDeviceShareController.py

@@ -6,7 +6,9 @@
 @Email   : zhangdongming@asj6.wecom.work
 @Software: PyCharm
 """
+import json
 import logging
+import threading
 import time
 
 import boto3
@@ -18,6 +20,7 @@ from django.views import View
 
 from Model.models import DeviceSharePermission, DeviceChannelUserSet, DeviceChannelUserPermission, UidChannelSetModel, \
     Device_Info
+from Object.ContentSecurityObject import ContentSecurity
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.UserDeviceService import UserDeviceService
@@ -360,6 +363,38 @@ class UserDeviceShareView(View):
             device_info_qs = Device_Info.objects.filter(UID=uid).values('id', 'Type')
             device_type = device_info_qs[0]['Type'] if device_info_qs.exists() else ''
 
+            # 初始化存储桶客户端
+            if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
+                s3 = boto3.client(
+                    's3',
+                    aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                    aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+                    config=botocore.client.Config(signature_version='s3v4'),
+                    region_name='cn-northwest-1'
+                )
+            else:
+                s3 = boto3.client(
+                    's3',
+                    aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+                    aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
+                    config=botocore.client.Config(signature_version='s3v4'),
+                    region_name='us-east-1'
+                )
+
+            obj_key = f"app/static/device-wallpaper/{uid}/{file_name}"
+            params = {'Bucket': "ansjerfilemanager", 'Key': obj_key}
+            image_url = s3.generate_presigned_url('get_object', Params=params)
+            service = 'profilePhotoCheck'
+            LOGGER.info('壁纸链接:{}'.format(image_url))
+            service_dict = {'imageUrl': image_url}
+            service_parameters = json.dumps(service_dict)
+            legal = ContentSecurity().image_review(service, service_parameters)
+            if not legal:
+                # 异步删除
+                thread = threading.Thread(target=cls.delete_wallpaper, args=(obj_key,))
+                thread.start()
+                return response.json(184)
+
             DeviceWallpaper.objects.create(
                 device_type=device_type,
                 storage_type=1,
@@ -469,3 +504,21 @@ class UserDeviceShareView(View):
         except Exception as e:
             LOGGER.error('用户选取壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(5)
+
+    @staticmethod
+    def delete_wallpaper(file_key):
+        try:
+            if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
+                s3 = AmazonS3Util(
+                    AWS_ACCESS_KEY_ID[0], AWS_SECRET_ACCESS_KEY[0], 'cn-northwest-1'
+                )
+            else:
+                s3 = AmazonS3Util(
+                    AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], 'us-east-1'
+                )
+
+            s3.delete_obj("ansjerfilemanager", file_key)
+            return True
+        except Exception as e:
+            LOGGER.info('删除违规壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return False

+ 6 - 0
Object/ResponseObject.py

@@ -52,6 +52,8 @@ class ResponseObject(object):
             180: 'Smart button scene trigger conditions cannot be repeated',
             181: 'The gateway only bind 3 smart button at most',
             182: 'Scene effective time conflict',
+            183: 'This user is not bound to an e-mail address',
+            184: 'Image Violations',
             201: 'You can only add 3 custom voice at most',
             306: 'The link has expired!',
             309: 'Please ReLogin! errmsg token',
@@ -99,6 +101,7 @@ class ResponseObject(object):
             10014: 'Accept transfer of equipment packages that have not expired and cannot be transferred',
             10015: 'Shared devices cannot be transferred',
             10016: 'The transfer device does not support the AI function and cannot be transferred',
+            10017: 'This order cannot be transferred, contact the administrator if needed',
             10030: 'No purchase of cloud storage',
             10031: 'The cloud storage has expired',
             10032: 'The switched cloud storage package ID cannot be the same as the one in use',
@@ -191,6 +194,8 @@ class ResponseObject(object):
             180: '智能按钮场景触发条件不能重复',
             181: '该网关最多只能绑定3个智能按钮',
             182: '场景生效时间冲突',
+            183: '该用户未绑定邮箱',
+            184: '图片违规',
             201: '最多只能添加3条自定义语音',
             306: '链接已超过有效期!',
             309: '请重新登录!',
@@ -238,6 +243,7 @@ class ResponseObject(object):
             10014: '接受转移设备套餐未过期,无法转移',
             10015: '分享的设备无法转移',
             10016: '转入设备不支持AI功能,无法转移',
+            10017: '此订单无法转移,有需要可联系管理员',
             10030: '未购买云存',
             10031: '云存已过期',
             10032: '切换的云存套餐ID不能与正在使用中的相同',