Browse Source

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

locky 3 months ago
parent
commit
e2702dd8df
1 changed files with 124 additions and 3 deletions
  1. 124 3
      AdminController/DeviceManagementController.py

+ 124 - 3
AdminController/DeviceManagementController.py

@@ -8,20 +8,22 @@ import time
 
 
 import oss2
 import oss2
 import requests
 import requests
+from obs import ObsClient
 from django.core.paginator import Paginator
 from django.core.paginator import Paginator
 from django.db import transaction
 from django.db import transaction
 from django.db.models import Q, F, Sum, OuterRef, Min, Subquery
 from django.db.models import Q, F, Sum, OuterRef, Min, Subquery
 from django.forms.models import model_to_dict
 from django.forms.models import model_to_dict
 from django.views.generic.base import View
 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, \
 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, \
     AWS_SES_ACCESS_REGION
     AWS_SES_ACCESS_REGION
 from Ansjer.config import SERVER_DOMAIN_TEST, SERVER_DOMAIN_CN, SERVER_DOMAIN_US, SERVER_DOMAIN_EUR
 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, \
 from Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, StsCrdModel, \
     VodHlsModel, ExperienceContextModel, DeviceTypeModel, UidUserModel, ExperienceAiModel, AiService, \
     VodHlsModel, ExperienceContextModel, DeviceTypeModel, UidUserModel, ExperienceAiModel, AiService, \
     AppBundle, App_Info, AppDeviceType, DeviceNameLanguage, UIDCompanySerialModel, UidPushModel, \
     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.AWS.AmazonS3Util import AmazonS3Util
 from Object.Enums.RedisKeyConstant import RedisKeyConstant
 from Object.Enums.RedisKeyConstant import RedisKeyConstant
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
@@ -131,6 +133,16 @@ class DeviceManagement(View):
                 return self.del_device_voice(request_dict, response)
                 return self.del_device_voice(request_dict, response)
             elif operation == 'deviceTypeList':
             elif operation == 'deviceTypeList':
                 return self.device_type_list(response)
                 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:
             else:
                 return response.json(444, 'operation')
                 return response.json(444, 'operation')
 
 
@@ -1923,4 +1935,113 @@ class DeviceManagement(View):
             return response.json(0, list(device_type_qs))
             return response.json(0, list(device_type_qs))
         except Exception as e:
         except Exception as e:
             print(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)))
+