Эх сурвалжийг харах

后台每日对账+套餐新标题和内容

peng 1 жил өмнө
parent
commit
26862d304d

+ 34 - 2
AdminController/ServeManagementController.py

@@ -21,7 +21,7 @@ from Controller.Cron.CronTaskController import CronUpdateDataView
 from Controller.UnicomCombo.UnicomComboTaskController import UnicomComboTaskView
 from Model.models import VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
     UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
-    Device_Info, DeviceTypeModel, UnicomComboOrderInfo, AiService, CountryModel, AbnormalOrder
+    Device_Info, DeviceTypeModel, UnicomComboOrderInfo, AiService, CountryModel, AbnormalOrder, DailyReconciliation
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UnicomObject import UnicomObjeect
@@ -97,6 +97,8 @@ class serveManagement(View):
                 return self.getAbnormalOrderList(request_dict, response)
             elif operation == 'updateAbnormalOrder':
                 return self.updateAbnormalOrder(request_dict, response)
+            elif operation == 'getDailyReconciliation':
+                return self.getDailyReconciliation(request_dict, response)
             elif operation == 'deleteDeviceOrder':
                 return self.deleteDeviceOrder(userID, request_dict, response)
             elif operation == 'getDevicePackageList':  # 云存设备套餐
@@ -894,6 +896,32 @@ class serveManagement(View):
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
+    def getDailyReconciliation(self, request_dict, response):
+        print('request_dict: ', request_dict)
+        page_no = request_dict.get('page_no', None)
+        page_size = request_dict.get('page_size', None)
+        start_time = request_dict.get('start_time', None)
+        end_time = request_dict.get('end_time', None)
+
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        page = int(page_no)
+        line = int(page_size)
+        try:
+            order_qs = DailyReconciliation.objects.all()
+            # 筛选指定订单
+            if start_time and end_time:
+                order_qs = order_qs.filter(time__gte=start_time, time__lt=end_time)
+            if not order_qs.exists():
+                return response.json(0, [])
+            count = order_qs.count()
+            order_qs = order_qs.values("id", "trade_nos", "ansjer_total", "ansjer_num", "paypal_num", "paypal_total",
+                                       "time").order_by('-time')[(page - 1) * line:page * line]
+            return response.json(0, {'list': list(order_qs), 'total': count})
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
     def vodOrderReconcile(self, request, request_dict, response):
 
         file = request.FILES.get('file', None)
@@ -1674,7 +1702,11 @@ class serveManagement(View):
                         if not unused_meal_qs.exists():
                             UID_Bucket.objects.filter(uid=uid).update(has_unused=0, updateTime=nowTime)
                         return response.json(0)
-                    uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, use_status=1).values('endTime')
+                    uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, use_status=1, orderId=orderID)
+                    if uid_bucket_qs.exists():  # 如果通过订单号查询正在使用的套餐,则删除套餐
+                        uid_bucket_qs.delete()
+                        return response.json(0)
+                    uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, use_status=1, orderId='').values('endTime')
                     if uid_bucket_qs.exists():  # 如果通过uid查询正在使用的套餐,则更新过期时间和使用状态
                         end_time = pay_time + uid_bucket_qs[0]['endTime'] - CommonService.calcMonthLater(expire, pay_time)
                         use_status = 2 if end_time < nowTime else 1

+ 43 - 10
Controller/CloudStorage.py

@@ -813,11 +813,11 @@ class CloudStorageView(View):
                         else:
                             UID_Bucket.objects.filter(id=uid_bucket_id).update(channel=channel, bucket_id=bucket_id,
                                                                                endTime=end_time, updateTime=now_time,
-                                                                               use_status=1)
+                                                                               use_status=1, orderId=order_id)
                     else:
                         uid_bucket = UID_Bucket.objects.create(uid=uid, channel=channel, bucket_id=bucket_id,
                                                                endTime=end_time, addTime=now_time, updateTime=now_time,
-                                                               use_status=1)
+                                                               use_status=1, orderId=order_id)
                         uid_bucket_id = uid_bucket.id
 
                     device_info_qs = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
@@ -965,11 +965,12 @@ class CloudStorageView(View):
                                                                                            bucket_id=bucket_id,
                                                                                            endTime=end_time,
                                                                                            updateTime=now_time,
-                                                                                           use_status=1)
+                                                                                           use_status=1,
+                                                                                           orderId=order_id)
                 else:
                     uid_bucket = UID_Bucket.objects.create(uid=uid, channel=channel, bucket_id=bucket_id,
                                                            endTime=end_time, addTime=now_time, updateTime=now_time,
-                                                           use_status=1)
+                                                           use_status=1, orderId=order_id)
                     update_status = True
                     uid_bucket_id = uid_bucket.id
 
@@ -1103,11 +1104,11 @@ class CloudStorageView(View):
                         else:
                             UID_Bucket.objects.filter(id=uid_bucket_id).update(channel=channel, bucket_id=bucket_id,
                                                                                endTime=end_time, updateTime=now_time,
-                                                                               use_status=1)
+                                                                               use_status=1, orderId=order_id)
                     else:
                         uid_bucket = UID_Bucket.objects.create(uid=uid, channel=channel, bucket_id=bucket_id,
                                                                endTime=end_time, addTime=now_time,
-                                                               updateTime=now_time, use_status=1)
+                                                               updateTime=now_time, use_status=1, orderId=order_id)
                         uid_bucket_id = uid_bucket.id
 
                     device_info_qs = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
@@ -1458,11 +1459,11 @@ class CloudStorageView(View):
                     else:
                         UID_Bucket.objects.filter(id=uid_bucket_id).update(channel=channel, bucket_id=bucket_id,
                                                                            endTime=end_time, updateTime=now_time,
-                                                                           use_status=1)
+                                                                           use_status=1, orderId=order_id)
                 else:
                     uid_bucket = UID_Bucket.objects.create(uid=uid, channel=channel, bucket_id=bucket_id,
                                                            endTime=end_time, addTime=now_time, updateTime=now_time,
-                                                           use_status=1)
+                                                           use_status=1, orderId=order_id)
                     uid_bucket_id = uid_bucket.id
                 store_meal_qs = Store_Meal.objects.filter(id=rank, lang__lang='cn', is_show=0).values('lang__title',
                                                                                                       'lang__content')
@@ -1633,7 +1634,8 @@ class CloudStorageView(View):
         store_list = []
         uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid", "bucket__content",
                                                                                          "use_status", "endTime",
-                                                                                         "has_unused", "bucket__id")
+                                                                                         "has_unused", "bucket__id",
+                                                                                         "orderId")
         if not uid_bucket_qs:
             return response.json(10030)
 
@@ -1655,7 +1657,8 @@ class CloudStorageView(View):
                                                                                                        "uid",
                                                                                                        "bucket__content",
                                                                                                        "bucket__id",
-                                                                                                       "expire")
+                                                                                                       "expire",
+                                                                                                       "order_id")
             month = 'month' if lang != 'cn' else '个月'
             for unused_uid in unused_uid_qs:
                 storage_time = unused_uid['expire']
@@ -1670,6 +1673,7 @@ class CloudStorageView(View):
                     "endTime": 0,
                     "bucket__id": unused_uid['bucket__id'],
                     "storage": storage,
+                    "orderId": unused_uid['order_id'],
                 }
                 store_list.append(unused_dict)
                 bucket_id_list.append(unused_uid['bucket__id'])
@@ -1677,6 +1681,35 @@ class CloudStorageView(View):
             title=F('lang__title'), content=F('lang__content')).values('lang__content', 'lang__lang',
                                                                        'bucket__id', 'lang__title')
         for index, value in enumerate(store_list):
+            if value['orderId']:
+                order_qs = Order_Model.objects.filter(orderID=value['orderId'], rank__lang__lang=lang).values('payType',
+                                                                                                              'rank__is_ai',
+                                                                                                              'rank__pixel_level',
+                                                                                                              'rank__commodity_code',
+                                                                                                              'rank__lang__new_title')
+                if order_qs.exists():
+                    if order_qs[0]['payType'] not in [10, 11]:
+                        if order_qs[0]['rank__pixel_level'] == 0 and order_qs[0]['rank__is_ai'] == 0:
+                            if order_qs[0]['rank__commodity_code']:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('5', '')
+                            else:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('1', '')
+                        elif order_qs[0]['rank__pixel_level'] == 1 and order_qs[0]['rank__is_ai'] == 0:
+                            if order_qs[0]['rank__commodity_code']:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('6', '')
+                            else:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('2', '')
+                        elif order_qs[0]['rank__pixel_level'] == 0 and order_qs[0]['rank__is_ai'] == 1:
+                            if order_qs[0]['rank__commodity_code']:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('7', '')
+                            else:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('3', '')
+                        elif order_qs[0]['rank__pixel_level'] == 1 and order_qs[0]['rank__is_ai'] == 1:
+                            if order_qs[0]['rank__commodity_code']:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('8', '')
+                            else:
+                                value['bucket__content'] = order_qs[0]['rank__lang__new_title'].get('4', '')
+                        continue
             for store in store_qs:
                 if value['bucket__id'] == store['bucket__id']:
                     value['bucket__content'] = store['lang__title'] + '-' + store['lang__content']

+ 2 - 1
Controller/Cron/CronTaskController.py

@@ -467,7 +467,8 @@ class CronUpdateDataView(View):
                         bucket_id=unused['bucket_id'],
                         updateTime=now_time,
                         use_status=1,
-                        has_unused=has_unused)
+                        has_unused=has_unused,
+                        ordersId=unused['order_id'])
                     if unused['is_ai']:
                         ai_service = AiService.objects.filter(uid=expired_uid_bucket['uid'], channel=unused['channel'])
                         if ai_service.exists():

+ 7 - 4
Controller/PaymentCycle.py

@@ -244,12 +244,13 @@ class PaypalCycleNotify(View):
                                                                                            bucket_id=bucketId,
                                                                                            endTime=endTime,
                                                                                            updateTime=nowTime,
-                                                                                           use_status=1)
+                                                                                           use_status=1,
+                                                                                           orderId=orderID)
 
                 else:
                     ub_cqs = UID_Bucket.objects.create \
                         (uid=UID, channel=channel, bucket_id=bucketId, endTime=endTime, addTime=nowTime,
-                         updateTime=nowTime, use_status=1)
+                         updateTime=nowTime, use_status=1, orderId=orderID)
                     update_status = True
                     uid_bucket_id = ub_cqs.id
                 dvq = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
@@ -474,11 +475,13 @@ class PaypalCycleNotify(View):
                                                                                            bucket_id=bucketId,
                                                                                            endTime=endTime,
                                                                                            updateTime=nowTime,
-                                                                                           use_status=1)
+                                                                                           use_status=1,
+                                                                                           orderId=orderID)
 
                 else:
                     ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId, endTime=endTime,
-                                                       addTime=nowTime, updateTime=nowTime, use_status=1)
+                                                       addTime=nowTime, updateTime=nowTime, use_status=1,
+                                                       orderId=orderID)
                     uid_bucket_id = ub_cqs.id
                     update_status = True
                 PAY_LOGGER.info(

+ 5 - 3
Model/models.py

@@ -1393,6 +1393,7 @@ class Lang(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增ID')
     lang = models.CharField(default='', max_length=20, db_index=True, verbose_name='语言/国家')
     title = models.CharField(blank=True, max_length=320, verbose_name='标题')
+    new_title = models.JSONField(null=True, verbose_name='新套餐标题')
     content = models.TextField(blank=True, null=True, verbose_name='描述')
     discount_content = models.CharField(blank=True, max_length=320, verbose_name=u'优惠信息描述')
 
@@ -1515,7 +1516,7 @@ class Order_Model(models.Model):
     rank = models.ForeignKey(Store_Meal, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联云存套餐表')
     ai_rank = models.ForeignKey(AiStoreMeal, to_field='id', default='', on_delete=models.CASCADE,
                                 verbose_name='关联ai套餐表')
-    order_type = models.SmallIntegerField(default=0, verbose_name='订单类型:0:云存,1:ai,2:联通4G,3:五兴,4:云盘')
+    order_type = models.SmallIntegerField(default=0, verbose_name='订单类型:0:云存,1:AI+云存,2:联通4G,3:五兴,4:云盘')
     unify_combo_id = models.CharField(blank=True, default='', max_length=32, verbose_name=u'统一套餐id')
     nickname = models.CharField(default='', max_length=64, verbose_name='设备昵称')
     uid_bucket_id = models.IntegerField(default=0, verbose_name='关联uid_bucket的字段')
@@ -1853,6 +1854,7 @@ class UID_Bucket(models.Model):
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, verbose_name='存储空间')
     status = models.SmallIntegerField(default=0, verbose_name='状态[0:关闭,1:开启]')
+    orderId = models.CharField(max_length=20, verbose_name='关联订单号', default='', db_index=True)
     endTime = models.BigIntegerField(verbose_name='套餐结束时间', db_index=True, default=0)
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updateTime = models.BigIntegerField(verbose_name='更新时间', default=0)
@@ -3472,7 +3474,7 @@ class UnicomCombo(models.Model):
     package_id = models.CharField(default='', max_length=128, verbose_name=u'第三方套餐包id')
     combo_name = models.CharField(default='', max_length=32, verbose_name=u'套餐名称')
     status = models.SmallIntegerField(default=0, verbose_name='状态{0:开启,1:停用}')
-    # 套餐类型 0:联通商用,1:联通初始化赠送,2:联通赠送套餐,3:五兴电信
+    # 套餐类型 0:联通商用,1:联通初始化赠送,2:联通赠送套餐,3:五兴电信,4:出厂测试
     combo_type = models.SmallIntegerField(default=0, verbose_name='套餐类型')
     flow_total = models.IntegerField(default=0, blank=True, verbose_name=u'流量总量值 单位(MB)')
     expiration_days = models.IntegerField(default=0, blank=True, verbose_name=u'有效期天数')
@@ -3664,7 +3666,7 @@ class DeviceAlgorithmScenario(models.Model):
 class DeviceAlgorithmType(models.Model):
     id = models.AutoField(primary_key=True)
     # 0:移动侦测,1:人形检测,2:挥手识别,3:人脸检测,4:异声感知,5:车辆检测,7:宠物检测,6:哭声检测,8:徘徊检测
-    # 9:区域闯入,10:区域闯出,11:长时间无人检测,12:往来检测,13:云相册,14:火焰检测
+    # 9:区域闯入,10:区域闯出,11:长时间无人检测,12:往来检测,13:云相册,14:火焰检测,15:婴儿遮面
     type = models.SmallIntegerField(default=0, verbose_name='算法类型')
     memory = models.CharField(max_length=32, default='', verbose_name='所需内存')
     down_count = models.IntegerField(default=0, verbose_name='下载次数')