فهرست منبع

后台用户消息推送代码优化

linhaohong 1 سال پیش
والد
کامیت
e59cd28d61
3فایلهای تغییر یافته به همراه32 افزوده شده و 33 حذف شده
  1. 28 27
      AdminController/CampaignController.py
  2. 3 5
      Controller/CampaignController/AppCampaignController.py
  3. 1 1
      Model/models.py

+ 28 - 27
AdminController/CampaignController.py

@@ -108,13 +108,16 @@ class CampaignView(View):
 
 
                 s3_url, _, _ = self.s3_server()
                 s3_url, _, _ = self.s3_server()
 
 
-                banner_campaign = campaign.banner_campaign
-                for sort in banner_campaign:
-                    banner_campaign[sort]["image"] = s3_url + banner_campaign[sort]["image"]
+                # 轮播图处理
+                banner_campaign_list = campaign.banner_campaign
+                for banner_campaign in banner_campaign_list:
+                    banner_campaign["image"] = s3_url + banner_campaign["image"]
+                banner_campaign_dict = {str(index): banner_campaign_list for index, banner_campaign_list in
+                                        enumerate(banner_campaign_list, start=1)}
                 campaign_data = {
                 campaign_data = {
                     'id': campaign.id,
                     'id': campaign.id,
                     'image_url': s3_url + campaign.image_url,
                     'image_url': s3_url + campaign.image_url,
-                    'banner_campaign': banner_campaign,
+                    'banner_campaign': banner_campaign_dict,
                     'campaign_name': campaign.campaign_name,
                     'campaign_name': campaign.campaign_name,
                     'campaign_url': campaign.campaign_url,
                     'campaign_url': campaign.campaign_url,
                     'campaign_type': campaign.campaign_type,
                     'campaign_type': campaign.campaign_type,
@@ -185,7 +188,6 @@ class CampaignView(View):
                 country_name_list.remove("未知地区")
                 country_name_list.remove("未知地区")
 
 
             # 上传文件到S3
             # 上传文件到S3
-
             banner_image_urls = self.upload_files_to_s3(banner_files,
             banner_image_urls = self.upload_files_to_s3(banner_files,
                                                         "BannerAdvertise") if banner_files is not None else []
                                                         "BannerAdvertise") if banner_files is not None else []
             poster_image_url = self.upload_files_to_s3(poster_file,
             poster_image_url = self.upload_files_to_s3(poster_file,
@@ -196,13 +198,10 @@ class CampaignView(View):
 
 
             if banner_image_urls:
             if banner_image_urls:
                 campaign_type.append(2)
                 campaign_type.append(2)
-                banner_campaign = {
-                    str(index): {"image": image_url, "url": campaign_url}
-                    for index, (image_url, campaign_url) in
-                    enumerate(zip(banner_image_urls, banner_campaign_urls), start=1)
-                }
+                banner_campaign = [{"image": image_url, "url": campaign_url}
+                                   for image_url, campaign_url in zip(banner_image_urls, banner_campaign_urls)]
             else:
             else:
-                banner_campaign = {}
+                banner_campaign = []
 
 
             create_time = int(time.time())
             create_time = int(time.time())
             update_time = int(time.time())
             update_time = int(time.time())
@@ -299,18 +298,18 @@ class CampaignView(View):
             # 更改轮播广告图片
             # 更改轮播广告图片
             if banner_files:
             if banner_files:
                 for sort in sort_files:
                 for sort in sort_files:
-                    if str(sort) in campaign.banner_campaign:
-                        old_image = campaign.banner_campaign[str(sort)]["image"]
+                    if sort <= len(campaign.banner_campaign):
+                        old_image = campaign.banner_campaign[sort - 1]["image"]
                         self.del_file_to_s3(old_image)
                         self.del_file_to_s3(old_image)
                     else:
                     else:
-                        campaign.banner_campaign[str(sort)] = {}
+                        campaign.banner_campaign.append({})
                         if sort not in sort_urls:
                         if sort not in sort_urls:
                             return response.json(10, "图片需要和链接对应")
                             return response.json(10, "图片需要和链接对应")
 
 
                 banner_image_urls = self.upload_files_to_s3(banner_files, "BannerAdvertise")
                 banner_image_urls = self.upload_files_to_s3(banner_files, "BannerAdvertise")
                 image_num = 0
                 image_num = 0
                 for sort in sort_files:
                 for sort in sort_files:
-                    campaign.banner_campaign[str(sort)]["image"] = banner_image_urls[image_num]
+                    campaign.banner_campaign[sort - 1]["image"] = banner_image_urls[image_num]
                     image_num = image_num + 1
                     image_num = image_num + 1
 
 
                 if 2 not in campaign.campaign_type:
                 if 2 not in campaign.campaign_type:
@@ -320,18 +319,20 @@ class CampaignView(View):
             if banner_urls:
             if banner_urls:
                 url_num = 0
                 url_num = 0
                 for sort in sort_urls:
                 for sort in sort_urls:
-                    if str(sort) not in campaign.banner_campaign:
-                        campaign.banner_campaign[str(sort)] = {}
+                    if sort > len(campaign.banner_campaign):
+                        campaign.banner_campaign.append({})
                         if sort not in sort_files:
                         if sort not in sort_files:
                             return response.json(10, "图片需要和链接对应")
                             return response.json(10, "图片需要和链接对应")
-                    campaign.banner_campaign[str(sort)]["url"] = banner_urls[url_num]
+                    campaign.banner_campaign[sort - 1]["url"] = banner_urls[url_num]
                     url_num = url_num + 1
                     url_num = url_num + 1
 
 
-            # 添加删除列表
+            # 添加删除轮播图列表
             if sort_banner_del:
             if sort_banner_del:
+                sort_banner_del.sort(reverse=True)
                 for sort in sort_banner_del:
                 for sort in sort_banner_del:
-                    if str(sort) in campaign.banner_campaign:
-                        del campaign.banner_campaign[str(sort)]
+                    if sort <= len(campaign.banner_campaign):
+                        self.del_file_to_s3(campaign.banner_campaign[sort - 1]["image"])
+                        campaign.banner_campaign.pop(sort - 1)
                 if not campaign.banner_campaign:
                 if not campaign.banner_campaign:
                     campaign.campaign_type.remove(2)
                     campaign.campaign_type.remove(2)
 
 
@@ -394,12 +395,12 @@ class CampaignView(View):
             campaign = AppAdvertiseCampaign.objects.get(pk=campaign_id)
             campaign = AppAdvertiseCampaign.objects.get(pk=campaign_id)
             if campaign.image_url != "":
             if campaign.image_url != "":
                 self.del_file_to_s3(campaign.image_url)
                 self.del_file_to_s3(campaign.image_url)
-            if campaign.banner_campaign is not {}:
-                banner_campaign = []
-                for sort in campaign.banner_campaign:
-                    banner = campaign.banner_campaign[sort]
-                    banner_campaign.append(banner)
-                self.del_file_to_s3(banner_campaign)
+            if campaign.banner_campaign:
+                banner_campaign_list = []
+                for banner_campaign in campaign.banner_campaign:
+                    banner = banner_campaign["image"]
+                    banner_campaign_list.append(banner)
+                self.del_file_to_s3(banner_campaign_list)
             # 清除多对多关系
             # 清除多对多关系
             campaign.device_type.clear()
             campaign.device_type.clear()
             campaign.country.clear()
             campaign.country.clear()

+ 3 - 5
Controller/CampaignController/AppCampaignController.py

@@ -106,11 +106,9 @@ class AppCampaignView(View):
                 #     datetime.utcfromtimestamp(campaign.campaign_start_date + campaign.campaign_show_etime)
                 #     datetime.utcfromtimestamp(campaign.campaign_start_date + campaign.campaign_show_etime)
                 #     .replace(tzinfo=pytz.utc).astimezone(timezone).strftime('%H:%M')) # 时间版本
                 #     .replace(tzinfo=pytz.utc).astimezone(timezone).strftime('%H:%M')) # 时间版本
                 # 轮播广告
                 # 轮播广告
-                banner_campaign = []
-                for sort in campaign.banner_campaign:
-                    banner = campaign.banner_campaign[sort]
-                    banner["image"] = s3_url + banner["image"]
-                    banner_campaign.append(banner)
+                banner_campaign = campaign.banner_campaign
+                for banner_cam in banner_campaign:
+                    banner_cam["image"] = s3_url + banner_cam["image"]
 
 
                 campaigns_list.append({
                 campaigns_list.append({
                     'campaign_id': campaign.id,
                     'campaign_id': campaign.id,

+ 1 - 1
Model/models.py

@@ -4814,7 +4814,7 @@ class DailyReconciliation(models.Model):
 class AppAdvertiseCampaign(models.Model):
 class AppAdvertiseCampaign(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='主键')
     id = models.AutoField(primary_key=True, verbose_name='主键')
     image_url = models.CharField(default='', max_length=256, verbose_name='开屏广告图片url')
     image_url = models.CharField(default='', max_length=256, verbose_name='开屏广告图片url')
-    banner_campaign = models.JSONField(default=dict, verbose_name='轮播广告')
+    banner_campaign = models.JSONField(default=list, verbose_name='轮播广告')
     campaign_url = models.CharField(default='', max_length=256, verbose_name='活动链接')
     campaign_url = models.CharField(default='', max_length=256, verbose_name='活动链接')
     campaign_name = models.CharField(default='', max_length=32, verbose_name='广告名称')
     campaign_name = models.CharField(default='', max_length=32, verbose_name='广告名称')
     campaign_type = models.JSONField(default=list, verbose_name='广告类型')  # 1:开屏广告 # 2:轮播广告
     campaign_type = models.JSONField(default=list, verbose_name='广告类型')  # 1:开屏广告 # 2:轮播广告