Quellcode durchsuchen

修改获取百度大模型许可证方式

locky vor 3 Monaten
Ursprung
Commit
a82b5432ec
3 geänderte Dateien mit 30 neuen und 11 gelöschten Zeilen
  1. 1 0
      Ansjer/config.py
  2. 26 10
      Controller/SerialNumberController.py
  3. 3 1
      Model/models.py

+ 1 - 0
Ansjer/config.py

@@ -52,6 +52,7 @@ 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'
 
 # 阿里云AccessKey和AccessKeySecret
 ALI_ACCESS_KEY_ID = 'LTAI5t9BXQWTPfBEh2Qu8YNA'

+ 26 - 10
Controller/SerialNumberController.py

@@ -12,7 +12,7 @@ from django.views import View
 from Ansjer.config import CRCKey, CONFIG_INFO, CONFIG_US, CONFIG_EUR, \
     CONFIG_CN, USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST, SERVER_DOMAIN_US, REGION_ID_LIST, SERVER_DOMAIN_TEST, \
     SERVER_DOMAIN_LIST, SERVER_DOMAIN_CN, SERVER_DOMAIN_EUR, RESET_REGION_ID_SERIAL_REDIS_LIST, LOGGER, CONFIG_TEST, \
-    SERVER_DOMAIN
+    SERVER_DOMAIN, HUAWEICLOUD_AK, HUAWEICLOUD_SK, HUAWEICLOUD_OBS_SERVER, HUAWEICLOUD_BAIDU_BIG_MODEL_LICENSE_BUKET
 from Controller.CheckUserData import DataValid
 from Controller.UnicomCombo.UnicomComboController import UnicomComboView
 from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, UIDModel, Device_Info, \
@@ -78,8 +78,8 @@ class SerialNumberView(View):
             return self.get_iot_core_by_serial_number(request_dict, response)
         elif operation == 'saveUserNetInfo':
             return self.save_user_net_info(request_dict, response)
-        elif operation == 'getBaiduBigModelLicense':
-            return self.get_baidu_big_model_license(request_dict, response)
+        elif operation == 'getBaiduBigModelLicenseUrl':
+            return self.get_baidu_big_model_license_url(request_dict, response)
         else:
             return response.json(414)
 
@@ -1116,9 +1116,9 @@ class SerialNumberView(View):
             UidSetModel.objects.create(uid=uid, nickname=nickname)
 
     @staticmethod
-    def get_baidu_big_model_license(request_dict, response):
+    def get_baidu_big_model_license_url(request_dict, response):
         """
-        获取百度大模型许可证
+        获取百度大模型许可证下载链接
         @param request_dict: 请求参数
         @param response: 响应对象
         @request_dict serial_number: 序列号
@@ -1129,26 +1129,42 @@ class SerialNumberView(View):
             return response.json(444)
         try:
             # 同个序列号返回相同license
-            baidu_big_model_license_qs = BaiduBigModelLicense.objects.filter(serial=serial).values('license')
+            baidu_big_model_license_qs = BaiduBigModelLicense.objects.filter(serial=serial).values('license_name')
             if baidu_big_model_license_qs.exists():
-                baidu_license = baidu_big_model_license_qs[0]['license']
+                license_name = baidu_big_model_license_qs[0]['license_name']
             else:
                 # 查询未被使用的license,使用事务和行锁避免并发问题
                 with transaction.atomic():
                     baidu_big_model_license_qs = BaiduBigModelLicense.objects.filter(
-                        serial=''
+                        serial='', use_status=0
                     ).select_for_update().order_by('id').first()
                     if not baidu_big_model_license_qs:
                         return response.json(173)
-                    baidu_license = baidu_big_model_license_qs.license
+                    license_name = baidu_big_model_license_qs.license_name
                     # 更新数据为已使用
                     now_time = int(time.time())
                     baidu_big_model_license_qs.serial = serial
+                    baidu_big_model_license_qs.use_status = 1
                     baidu_big_model_license_qs.updated_time = now_time
                     baidu_big_model_license_qs.save()
 
+            # 生成华为云OBS临时下载链接
+            from obs import ObsClient
+            obs_client = ObsClient(
+                access_key_id=HUAWEICLOUD_AK,
+                secret_access_key=HUAWEICLOUD_SK,
+                server=HUAWEICLOUD_OBS_SERVER
+            )
+            expires = 3600  # 链接有效期1小时
+            download_url = obs_client.createSignedUrl(
+                'GET',
+                HUAWEICLOUD_BAIDU_BIG_MODEL_LICENSE_BUKET,
+                license_name,
+                expires
+            )
+            
             res = {
-                'license': baidu_license
+                'license_url': download_url.signedUrl
             }
 
             return response.json(0, res)

+ 3 - 1
Model/models.py

@@ -5735,7 +5735,9 @@ class DeviceDailyReport(models.Model):
 class BaiduBigModelLicense(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增标记ID')
     serial = models.CharField(default='', max_length=9, verbose_name='序列号')
-    license = models.TextField(default='', verbose_name='许可证')
+    license_name = models.CharField(default='', max_length=32, verbose_name='许可证名称')
+    # 使用状态,0: 未使用, 1: 已使用
+    use_status = models.PositiveSmallIntegerField(default=0, verbose_name='使用状态')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
     updated_time = models.IntegerField(default=0, verbose_name='更新时间')