Просмотр исходного кода

后台查询/删除大模型许可证接口

locky 3 месяцев назад
Родитель
Сommit
e2702dd8df
1 измененных файлов с 124 добавлено и 3 удалено
  1. 124 3
      AdminController/DeviceManagementController.py

+ 124 - 3
AdminController/DeviceManagementController.py

@@ -8,20 +8,22 @@ import time
 
 import oss2
 import requests
+from obs import ObsClient
 from django.core.paginator import Paginator
 from django.db import transaction
 from django.db.models import Q, F, Sum, OuterRef, Min, Subquery
 from django.forms.models import model_to_dict
 from django.views.generic.base import View
 
-from Ansjer.config import LOGGER, SERIAL_DOMAIN_NAME
+from Ansjer.config import LOGGER, SERIAL_DOMAIN_NAME, HUAWEICLOUD_AK, HUAWEICLOUD_SK, HUAWEICLOUD_OBS_SERVER, \
+    HUAWEICLOUD_BAIDU_BIG_MODEL_LICENSE_BUKET
 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, \
     AWS_SES_ACCESS_REGION
 from Ansjer.config import SERVER_DOMAIN_TEST, SERVER_DOMAIN_CN, SERVER_DOMAIN_US, SERVER_DOMAIN_EUR
 from Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, StsCrdModel, \
     VodHlsModel, ExperienceContextModel, DeviceTypeModel, UidUserModel, ExperienceAiModel, AiService, \
     AppBundle, App_Info, AppDeviceType, DeviceNameLanguage, UIDCompanySerialModel, UidPushModel, \
-    CustomCustomerOrderInfo, CustomCustomerDevice, DeviceVersionInfo, VoicePromptModel, DeviceAlgorithmExplain
+    CustomCustomerOrderInfo, CustomCustomerDevice, DeviceVersionInfo, VoicePromptModel, DeviceAlgorithmExplain, BaiduBigModelLicense
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.Enums.RedisKeyConstant import RedisKeyConstant
 from Object.RedisObject import RedisObject
@@ -131,6 +133,16 @@ class DeviceManagement(View):
                 return self.del_device_voice(request_dict, response)
             elif operation == 'deviceTypeList':
                 return self.device_type_list(response)
+
+            # 百度大模型
+            elif operation == 'getBaiduBigModelLicense':  # 查询大模型许可证
+                return self.get_baidu_big_model_license(request_dict, response)
+            elif operation == 'addBaiduBigModelLicense':  # 添加大模型许可证
+                return self.add_baidu_big_model_license(request_dict, response)
+            elif operation == 'editBaiduBigModelLicense':  # 编辑大模型许可证
+                return self.edit_baidu_big_model_license(request, request_dict, response)
+            elif operation == 'delBaiduBigModelLicense':   # 删除大模型许可证
+                return self.del_baidu_big_model_license(request_dict, response)
             else:
                 return response.json(444, 'operation')
 
@@ -1923,4 +1935,113 @@ class DeviceManagement(View):
             return response.json(0, list(device_type_qs))
         except Exception as e:
             print(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 get_baidu_big_model_license(request_dict, response):
+        """查询百度大模型许可证列表"""
+        page_no = request_dict.get('pageNo')
+        page_size = request_dict.get('pageSize')
+        serial = request_dict.get('serial', '')
+        license_name = request_dict.get('licenseName', '')
+        use_status = request_dict.get('useStatus')
+
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        try:
+            query = BaiduBigModelLicense.objects.all()
+            if serial:
+                query = query.filter(serial__contains=serial)
+            if license_name:
+                query = query.filter(license_name__contains=license_name)
+            if use_status:
+                query = query.filter(use_status=use_status)
+
+            total = query.count()
+            licenses = query.order_by('-id')[
+                (int(page_no)-1)*int(page_size):int(page_no)*int(page_size)
+            ].values('id', 'serial', 'license_name', 'use_status', 'created_time', 'updated_time')
+
+            return response.json(0, {
+                'list': list(licenses),
+                'total': total
+            })
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def add_baidu_big_model_license(request_dict, response):
+        """添加百度大模型许可证"""
+        try:
+            serial = CommonService.createOrderID()[:9]  # 生成9位序列号
+            license_name = f"许可证_{serial}"
+            now_time = int(time.time())
+            
+            BaiduBigModelLicense.objects.create(
+                serial=serial,
+                license_name=license_name,
+                created_time=now_time,
+                updated_time=now_time
+            )
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    def edit_baidu_big_model_license(self, request, request_dict, response):
+        """编辑百度大模型许可证"""
+        license_id = request_dict.get('id')
+        license_name = request_dict.get('licenseName')
+        use_status = request_dict.get('useStatus')
+
+        if not license_id:
+            return response.json(444)
+
+        try:
+            update_data = {
+                'updated_time': int(time.time())
+            }
+            if license_name:
+                update_data['license_name'] = license_name
+            if use_status is not None:
+                update_data['use_status'] = use_status
+
+            BaiduBigModelLicense.objects.filter(id=license_id).update(**update_data)
+            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 del_baidu_big_model_license(request_dict, response):
+        """删除百度大模型许可证"""
+        license_id = request_dict.get('id')
+        
+        if not license_id:
+            return response.json(444)
+
+        try:
+            # 先查询出license_name
+            baidu_license = BaiduBigModelLicense.objects.filter(id=license_id).first()
+            if not baidu_license:
+                return response.json(444)
+                
+            license_name = baidu_license.license_name
+            
+            # 删除数据库记录
+            BaiduBigModelLicense.objects.filter(id=license_id).delete()
+            
+            # 删除华为云上的文件
+            obs_client = ObsClient(
+                access_key_id=HUAWEICLOUD_AK,
+                secret_access_key=HUAWEICLOUD_SK,
+                server=HUAWEICLOUD_OBS_SERVER
+            )
+            obs_client.deleteObject(
+                bucketName=HUAWEICLOUD_BAIDU_BIG_MODEL_LICENSE_BUKET,
+                objectKey=license_name
+            )
+            
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+