@@ -2,8 +2,10 @@  | 
            ||
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from __future__ import division  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 
                -from mch.models import DistributorInfo, ModelInfo  | 
            |
| 6 | 
                -from statistic.models import DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo  | 
            |
| 5 | 
                +from mch.models import BrandInfo, DistributorInfo, ModelInfo  | 
            |
| 6 | 
                +from statistic.models import (ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo,  | 
            |
| 7 | 
                + ConsumeProvinceSaleStatisticInfo, DistributorSaleStatisticInfo, ModelSaleStatisticInfo,  | 
            |
| 8 | 
                + ProvinceSaleStatisticInfo)  | 
            |
| 7 | 9 | 
                 | 
            
| 8 | 10 | 
                 | 
            
| 9 | 11 | 
                 PROVINCE_LIST = {
               | 
            
                @@ -45,23 +47,47 @@ PROVINCE_LIST = {
               | 
            ||
| 45 | 47 | 
                 | 
            
| 46 | 48 | 
                 | 
            
| 47 | 49 | 
                def pre_provinces():  | 
            
| 48 | 
                - for pcode, pname in PROVINCE_LIST.items():  | 
            |
| 49 | 
                - pssi, created = ProvinceSaleStatisticInfo.objects.get_or_create(province_code=pcode, ymd=0)  | 
            |
| 50 | 
                - pssi.province_name = pname  | 
            |
| 51 | 
                - pssi.save()  | 
            |
| 50 | 
                + brands = BrandInfo.objects.filter(status=True)  | 
            |
| 51 | 
                + for brand in brands:  | 
            |
| 52 | 
                + for pcode, pname in PROVINCE_LIST.items():  | 
            |
| 53 | 
                + pssi, created = ProvinceSaleStatisticInfo.objects.get_or_create(brand_id=brand.brand_id, province_code=pcode, ymd=0)  | 
            |
| 54 | 
                + pssi.province_name = pname  | 
            |
| 55 | 
                + pssi.save()  | 
            |
| 56 | 
                +  | 
            |
| 57 | 
                + cpssi, created = ConsumeProvinceSaleStatisticInfo.objects.get_or_create(brand_id=brand.brand_id, province_code=pcode, ymd=0)  | 
            |
| 58 | 
                + cpssi.province_name = pname  | 
            |
| 59 | 
                + cpssi.save()  | 
            |
| 52 | 60 | 
                 | 
            
| 53 | 61 | 
                 | 
            
| 54 | 62 | 
                def pre_models():  | 
            
| 55 | 
                - models = ModelInfo.objects.filter(status=True)  | 
            |
| 56 | 
                - for mdl in models:  | 
            |
| 57 | 
                - mssi, created = ModelSaleStatisticInfo.objects.get_or_create(model_id=mdl.model_id, ymd=0)  | 
            |
| 58 | 
                - mssi.model_name = mdl.model_name  | 
            |
| 59 | 
                - mssi.save()  | 
            |
| 63 | 
                + brands = BrandInfo.objects.filter(status=True)  | 
            |
| 64 | 
                + for brand in brands:  | 
            |
| 65 | 
                + models = ModelInfo.objects.filter(status=True)  | 
            |
| 66 | 
                + for mdl in models:  | 
            |
| 67 | 
                + mssi, created = ModelSaleStatisticInfo.objects.get_or_create(brand_id=brand.brand_id, model_id=mdl.model_id, ymd=0)  | 
            |
| 68 | 
                + mssi.model_name = mdl.model_name  | 
            |
| 69 | 
                + mssi.save()  | 
            |
| 70 | 
                +  | 
            |
| 71 | 
                + cmssi, created = ConsumeModelSaleStatisticInfo.objects.get_or_create(brand_id=brand.brand_id, model_id=mdl.model_id, ymd=0)  | 
            |
| 72 | 
                + cmssi.model_name = mdl.model_name  | 
            |
| 73 | 
                + cmssi.save()  | 
            |
| 60 | 74 | 
                 | 
            
| 61 | 75 | 
                 | 
            
| 62 | 76 | 
                def pre_distributors():  | 
            
| 63 | 
                - distributors = DistributorInfo.objects.filter(status=True)  | 
            |
| 64 | 
                - for dtbt in distributors:  | 
            |
| 65 | 
                - dssi, created = DistributorSaleStatisticInfo.objects.get_or_create(distributor_id=dtbt.distributor_id, ymd=0)  | 
            |
| 66 | 
                - dssi.distributor_name = dtbt.distributor_name  | 
            |
| 67 | 
                - dssi.save()  | 
            |
| 77 | 
                + brands = BrandInfo.objects.filter(status=True)  | 
            |
| 78 | 
                + for brand in brands:  | 
            |
| 79 | 
                + distributors = DistributorInfo.objects.filter(status=True)  | 
            |
| 80 | 
                + for dtbt in distributors:  | 
            |
| 81 | 
                + dssi, created = DistributorSaleStatisticInfo.objects.get_or_create(brand_id=brand.brand_id, distributor_id=dtbt.distributor_id, ymd=0)  | 
            |
| 82 | 
                + dssi.distributor_name = dtbt.distributor_name  | 
            |
| 83 | 
                + dssi.save()  | 
            |
| 84 | 
                +  | 
            |
| 85 | 
                + cdssi, created = ConsumeDistributorSaleStatisticInfo.objects.get_or_create(brand_id=brand.brand_id, distributor_id=dtbt.distributor_id, ymd=0)  | 
            |
| 86 | 
                + cdssi.distributor_name = dtbt.distributor_name  | 
            |
| 87 | 
                + cdssi.save()  | 
            |
| 88 | 
                +  | 
            |
| 89 | 
                +  | 
            |
| 90 | 
                +def pre_all():  | 
            |
| 91 | 
                + pre_provinces()  | 
            |
| 92 | 
                + pre_models()  | 
            |
| 93 | 
                + pre_distributors()  | 
            
                @@ -6,6 +6,7 @@ from django_logit import logit  | 
            ||
| 6 | 6 | 
                from django_response import response  | 
            
| 7 | 7 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 8 | 8 | 
                 | 
            
| 9 | 
                +from mch.models import BrandInfo  | 
            |
| 9 | 10 | 
                from statistic.models import (ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo,  | 
            
| 10 | 11 | 
                ConsumeProvinceSaleStatisticInfo, ConsumeSaleStatisticInfo, DistributorSaleStatisticInfo,  | 
            
| 11 | 12 | 
                ModelSaleStatisticInfo, ProvinceSaleStatisticInfo, RegisterStatisticInfo,  | 
            
                @@ -15,11 +16,13 @@ from utils.rdm_utils import randnum  | 
            ||
| 15 | 16 | 
                 | 
            
| 16 | 17 | 
                @logit  | 
            
| 17 | 18 | 
                def tj_distributor(request):  | 
            
| 19 | 
                +    brand_id = request.POST.get('brand_id', 'ywkRTh5vtswRvhh8uLvTTQ')
               | 
            |
| 20 | 
                +  | 
            |
| 18 | 21 | 
                ymd = int(tc.local_string(format='%Y%m%d'))  | 
            
| 19 | 22 | 
                 | 
            
| 20 | 23 | 
                # 注册用户统计 & 今日注册用户  | 
            
| 21 | 24 | 
                try:  | 
            
| 22 | 
                - register_num = RegisterStatisticInfo.objects.get(ymd=ymd).num  | 
            |
| 25 | 
                + register_num = RegisterStatisticInfo.objects.get(brand_id=brand_id, ymd=ymd).num  | 
            |
| 23 | 26 | 
                except RegisterStatisticInfo.DoesNotExist:  | 
            
| 24 | 27 | 
                register_num = 0  | 
            
| 25 | 28 | 
                 | 
            
                @@ -29,7 +32,7 @@ def tj_distributor(request):  | 
            ||
| 29 | 32 | 
                 | 
            
| 30 | 33 | 
                # 销量统计 & 今日销量  | 
            
| 31 | 34 | 
                try:  | 
            
| 32 | 
                - sale_num = SaleStatisticInfo.objects.get(ymd=ymd).num  | 
            |
| 35 | 
                + sale_num = SaleStatisticInfo.objects.get(brand_id=brand_id, ymd=ymd).num  | 
            |
| 33 | 36 | 
                except SaleStatisticInfo.DoesNotExist:  | 
            
| 34 | 37 | 
                sale_num = 0  | 
            
| 35 | 38 | 
                 | 
            
                @@ -38,19 +41,19 @@ def tj_distributor(request):  | 
            ||
| 38 | 41 | 
                # sale_trends = [s.data for s in sale_trends]  | 
            
| 39 | 42 | 
                 | 
            
| 40 | 43 | 
                # 型号销量统计 & 热销商品榜  | 
            
| 41 | 
                -    model_sales = ModelSaleStatisticInfo.objects.filter(ymd=0, status=True).order_by('-num')
               | 
            |
| 44 | 
                +    model_sales = ModelSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True).order_by('-num')
               | 
            |
| 42 | 45 | 
                model_sales = [m.data for m in model_sales]  | 
            
| 43 | 46 | 
                 | 
            
| 44 | 47 | 
                # 经销商销量统计 & 经销商榜  | 
            
| 45 | 
                -    distributor_sales = DistributorSaleStatisticInfo.objects.filter(ymd=0, status=True).order_by('-num')
               | 
            |
| 48 | 
                +    distributor_sales = DistributorSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True).order_by('-num')
               | 
            |
| 46 | 49 | 
                distributor_sales = [d.data for d in distributor_sales]  | 
            
| 47 | 50 | 
                 | 
            
| 48 | 51 | 
                # 各地区实时销量  | 
            
| 49 | 
                -    province_sales = ProvinceSaleStatisticInfo.objects.filter(ymd=0, status=True).order_by('position')
               | 
            |
| 52 | 
                +    province_sales = ProvinceSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True).order_by('position')
               | 
            |
| 50 | 53 | 
                province_sales = [p.data for p in province_sales]  | 
            
| 51 | 54 | 
                 | 
            
| 52 | 55 | 
                # TOADD: ROI  | 
            
| 53 | 
                - rois = ModelSaleStatisticInfo.objects.filter(ymd=0, status=True)  | 
            |
| 56 | 
                + rois = ModelSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True)  | 
            |
| 54 | 57 | 
                rois = [m.roi for m in rois]  | 
            
| 55 | 58 | 
                 | 
            
| 56 | 59 | 
                     return response(200, 'Get TJ Data Success', u'获取统计数据成功', {
               | 
            
                @@ -67,38 +70,40 @@ def tj_distributor(request):  | 
            ||
| 67 | 70 | 
                 | 
            
| 68 | 71 | 
                @logit  | 
            
| 69 | 72 | 
                def tj_consumer(request):  | 
            
| 73 | 
                +    brand_id = request.POST.get('brand_id', 'ywkRTh5vtswRvhh8uLvTTQ')
               | 
            |
| 74 | 
                +  | 
            |
| 70 | 75 | 
                ymd = int(tc.local_string(format='%Y%m%d'))  | 
            
| 71 | 76 | 
                 | 
            
| 72 | 77 | 
                # 注册用户统计 & 今日注册用户  | 
            
| 73 | 78 | 
                try:  | 
            
| 74 | 
                - register_num = RegisterStatisticInfo.objects.get(ymd=ymd).num  | 
            |
| 79 | 
                + register_num = RegisterStatisticInfo.objects.get(brand_id=brand_id, ymd=ymd).num  | 
            |
| 75 | 80 | 
                except RegisterStatisticInfo.DoesNotExist:  | 
            
| 76 | 81 | 
                register_num = 0  | 
            
| 77 | 82 | 
                 | 
            
| 78 | 83 | 
                # 注册用户数趋势  | 
            
| 79 | 
                -    register_trends = RegisterStatisticInfo.objects.filter(status=True).order_by('-ymd')
               | 
            |
| 84 | 
                +    register_trends = RegisterStatisticInfo.objects.filter(brand_id=brand_id, status=True).order_by('-ymd')
               | 
            |
| 80 | 85 | 
                register_trends = [r.data for r in register_trends]  | 
            
| 81 | 86 | 
                 | 
            
| 82 | 87 | 
                # 销量统计 & 今日销量  | 
            
| 83 | 88 | 
                try:  | 
            
| 84 | 
                - sale_num = ConsumeSaleStatisticInfo.objects.get(ymd=ymd).num  | 
            |
| 89 | 
                + sale_num = ConsumeSaleStatisticInfo.objects.get(brand_id=brand_id, ymd=ymd).num  | 
            |
| 85 | 90 | 
                except ConsumeSaleStatisticInfo.DoesNotExist:  | 
            
| 86 | 91 | 
                sale_num = 0  | 
            
| 87 | 92 | 
                 | 
            
| 88 | 93 | 
                # 商品销量趋势  | 
            
| 89 | 
                -    sale_trends = ConsumeSaleStatisticInfo.objects.filter(status=True).order_by('-ymd')
               | 
            |
| 94 | 
                +    sale_trends = ConsumeSaleStatisticInfo.objects.filter(brand_id=brand_id, status=True).order_by('-ymd')
               | 
            |
| 90 | 95 | 
                sale_trends = [s.data for s in sale_trends]  | 
            
| 91 | 96 | 
                 | 
            
| 92 | 97 | 
                # 型号销量统计 & 热销商品榜  | 
            
| 93 | 
                -    model_sales = ConsumeModelSaleStatisticInfo.objects.filter(ymd=0, status=True).order_by('-num')
               | 
            |
| 98 | 
                +    model_sales = ConsumeModelSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True).order_by('-num')
               | 
            |
| 94 | 99 | 
                model_sales = [m.data for m in model_sales]  | 
            
| 95 | 100 | 
                 | 
            
| 96 | 101 | 
                # 经销商销量统计 & 经销商榜  | 
            
| 97 | 
                -    distributor_sales = ConsumeDistributorSaleStatisticInfo.objects.filter(ymd=0, status=True).order_by('-num')
               | 
            |
| 102 | 
                +    distributor_sales = ConsumeDistributorSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True).order_by('-num')
               | 
            |
| 98 | 103 | 
                distributor_sales = [d.data for d in distributor_sales]  | 
            
| 99 | 104 | 
                 | 
            
| 100 | 105 | 
                # 各地区实时销量  | 
            
| 101 | 
                -    province_sales = ConsumeProvinceSaleStatisticInfo.objects.filter(ymd=0, status=True).order_by('position')
               | 
            |
| 106 | 
                +    province_sales = ConsumeProvinceSaleStatisticInfo.objects.filter(brand_id=brand_id, ymd=0, status=True).order_by('position')
               | 
            |
| 102 | 107 | 
                province_sales = [p.data for p in province_sales]  | 
            
| 103 | 108 | 
                 | 
            
| 104 | 109 | 
                     return response(200, 'Get TJ Data Success', u'获取统计数据成功', {
               | 
            
                @@ -115,14 +120,25 @@ def tj_consumer(request):  | 
            ||
| 115 | 120 | 
                @logit  | 
            
| 116 | 121 | 
                @transaction.atomic  | 
            
| 117 | 122 | 
                def tj_generate(request):  | 
            
| 123 | 
                + # 1 0 * * * curl http://kodo.xfoto.com.cn/api/tj/generate  | 
            |
| 118 | 124 | 
                ymd = int(tc.local_string(format='%Y%m%d'))  | 
            
| 119 | 125 | 
                 | 
            
| 120 | 
                - RegisterStatisticInfo.objects.select_for_update().get_or_create(  | 
            |
| 121 | 
                - ymd=ymd,  | 
            |
| 122 | 
                - )  | 
            |
| 126 | 
                + brands = BrandInfo.objects.filter(status=True)  | 
            |
| 127 | 
                +  | 
            |
| 128 | 
                + for brand in brands:  | 
            |
| 129 | 
                + RegisterStatisticInfo.objects.select_for_update().get_or_create(  | 
            |
| 130 | 
                + brand_id=brand.brand_id,  | 
            |
| 131 | 
                + ymd=ymd,  | 
            |
| 132 | 
                + )  | 
            |
| 133 | 
                +  | 
            |
| 134 | 
                + SaleStatisticInfo.objects.select_for_update().get_or_create(  | 
            |
| 135 | 
                + brand_id=brand.brand_id,  | 
            |
| 136 | 
                + ymd=ymd,  | 
            |
| 137 | 
                + )  | 
            |
| 123 | 138 | 
                 | 
            
| 124 | 
                - SaleStatisticInfo.objects.select_for_update().get_or_create(  | 
            |
| 125 | 
                - ymd=ymd,  | 
            |
| 126 | 
                - )  | 
            |
| 139 | 
                + ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create(  | 
            |
| 140 | 
                + brand_id=brand.brand_id,  | 
            |
| 141 | 
                + ymd=ymd,  | 
            |
| 142 | 
                + )  | 
            |
| 127 | 143 | 
                 | 
            
| 128 | 144 | 
                return response()  |