|  |  | @@ -9,9 +9,10 @@ from django_response import response | 
            
            
              | 9 | 9 |  from paginator import pagination | 
            
            
              | 10 | 10 |  from TimeConvert import TimeConvert as tc | 
            
            
              | 11 | 11 |  from django.utils import timezone | 
            
            
              |  | 12 | +from django.db.models import Sum | 
            
            
              | 12 | 13 |   | 
            
            
              | 13 | 14 |  from mch.models import AdministratorInfo | 
            
            
              | 14 |  | -from statistic.models import ConsumeModelSaleStatisticInfo | 
            
            
              |  | 15 | +from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo | 
            
            
              | 15 | 16 |  from account.models import UserInfo | 
            
            
              | 16 | 17 |  from integral.models import SaleclerkSubmitLogInfo | 
            
            
              | 17 | 18 |  from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode, | 
            
            
            
            
              |  |  | @@ -230,6 +231,8 @@ def statistic_userprofile(request): | 
            
            
              | 230 | 231 |          logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time) | 
            
            
              | 231 | 232 |       | 
            
            
              | 232 | 233 |      sexs = {0: 0, 1: 0, 2: 0} | 
            
            
              |  | 234 | +    subscribes = {0: 0, 1: 0} | 
            
            
              |  | 235 | +    has_membercards = {0: 0, 1: 0} | 
            
            
              | 233 | 236 |      provinces = defaultdict(int) | 
            
            
              | 234 | 237 |      for log in logs: | 
            
            
              | 235 | 238 |          for user in log.users: | 
            
            
            
            
              |  |  | @@ -240,9 +243,58 @@ def statistic_userprofile(request): | 
            
            
              | 240 | 243 |   | 
            
            
              | 241 | 244 |              provinces[user.province_name] += 1 | 
            
            
              | 242 | 245 |              sexs[user.sex] += 1 | 
            
            
              |  | 246 | +            subscribes[user.subscribe] += 1 | 
            
            
              |  | 247 | +            has_membercards[user.has_membercard] += 1 | 
            
            
              | 243 | 248 |   | 
            
            
              | 244 | 249 |      return response(200, 'Get User Profile Success', u'获取用户画像成功', data={ | 
            
            
              | 245 | 250 |          'provinces': provinces, | 
            
            
              | 246 | 251 |          'sexs': sexs, | 
            
            
              |  | 252 | +        'subscribe': subscribes, | 
            
            
              |  | 253 | +        'has_membercards': has_membercards, | 
            
            
              | 247 | 254 |      }) | 
            
            
              | 248 | 255 |       | 
            
            
              |  | 256 | +def statistic_daily(request): | 
            
            
              |  | 257 | +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) | 
            
            
              |  | 258 | +    admin_id = request.POST.get('admin_id', '') | 
            
            
              |  | 259 | +    start_time = request.POST.get('start_time', '') | 
            
            
              |  | 260 | +    end_time = request.POST.get('end_time', '') | 
            
            
              |  | 261 | + | 
            
            
              |  | 262 | +    if brand_id != settings.KODO_DEFAULT_BRAND_ID: | 
            
            
              |  | 263 | +        return response(ProductBrandStatusCode.BRAND_NOT_MATCH) | 
            
            
              |  | 264 | + | 
            
            
              |  | 265 | +    try: | 
            
            
              |  | 266 | +        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) | 
            
            
              |  | 267 | +    except AdministratorInfo.DoesNotExist: | 
            
            
              |  | 268 | +        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) | 
            
            
              |  | 269 | +     | 
            
            
              |  | 270 | +    sale_logs = ConsumeSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time) | 
            
            
              |  | 271 | +    user_logs = ConsumeUserStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time) | 
            
            
              |  | 272 | + | 
            
            
              |  | 273 | +    sale_logs = [log.data for log in sale_logs] | 
            
            
              |  | 274 | +    user_logs = [log.data for log in user_logs] | 
            
            
              |  | 275 | + | 
            
            
              |  | 276 | +    return response(200, 'Get User Sales Statistic Success', u'获取销量统计成功', data={ | 
            
            
              |  | 277 | +        'sale_logs': sale_logs, | 
            
            
              |  | 278 | +        'user_logs': user_logs, | 
            
            
              |  | 279 | +    }) | 
            
            
              |  | 280 | + | 
            
            
              |  | 281 | +def statistic_model(request): | 
            
            
              |  | 282 | +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) | 
            
            
              |  | 283 | +    admin_id = request.POST.get('admin_id', '') | 
            
            
              |  | 284 | +    start_time = request.POST.get('start_time', '') | 
            
            
              |  | 285 | +    end_time = request.POST.get('end_time', '') | 
            
            
              |  | 286 | + | 
            
            
              |  | 287 | +    if brand_id != settings.KODO_DEFAULT_BRAND_ID: | 
            
            
              |  | 288 | +        return response(ProductBrandStatusCode.BRAND_NOT_MATCH) | 
            
            
              |  | 289 | + | 
            
            
              |  | 290 | +    try: | 
            
            
              |  | 291 | +        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) | 
            
            
              |  | 292 | +    except AdministratorInfo.DoesNotExist: | 
            
            
              |  | 293 | +        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) | 
            
            
              |  | 294 | +     | 
            
            
              |  | 295 | +    logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time).values_list('model_name').annotate(Sum('num')) | 
            
            
              |  | 296 | + | 
            
            
              |  | 297 | +    logs = [{'model_name': log[0], 'num': log[1]} for log in logs] | 
            
            
              |  | 298 | +    return response(200, 'Get Model Statistic Success', u'获取型号统计成功', data={ | 
            
            
              |  | 299 | +        'logs': logs | 
            
            
              |  | 300 | +    }) |