Example #1
0
def is_owner_or_404(request, user_id):
    """
    校验登录用户是否是资源所有者
    :param request:
    :param user_id:
    :return:
    """
    if request.user.id != safe_int(user_id):
        raise exceptions.NotFound
Example #2
0
def aggregator_case_record_get(request):
    logs = AggregatorCaseRecord.objects.all()
    offset = safe_int(request.query_params.get('offset', 0))
    limit = safe_int(request.query_params.get('limit', 15))
    limit = get_limit(limit)

    module = request.query_params.get('module')
    action_flag = request.query_params.get('action_flag')
    key = request.query_params.get('key')
    platform = request.query_params.get('platform')
    start_time = request.query_params.get('start_time')
    end_time = request.query_params.get('end_time')

    if module:
        logs = logs.filter(module=module)
    if key:
        logs = logs.filter(key=key)
    if platform:
        logs = logs.filter(platform=platform)
    if action_flag:
        logs = logs.filter(action_flag=action_flag)
    if start_time and end_time:
        start_time += ' 00:00:00'
        end_time += ' 23:59:59'
        logs = logs.filter(create_time__gte=start_time).filter(
            create_time__lte=end_time)

    total = logs.count()
    logs = logs.order_by('-create_time')[offset:offset + limit]

    serializer = AggregatorCaseRecordSerializer(logs, many=True)

    # extras转为dict
    for data in serializer.data:
        if check_json_format(data['extras']):
            data['extras'] = json.loads(data['extras'])
        data['create_time'] = time.mktime(
            time.strptime(data['create_time'], '%Y-%m-%dT%H:%M:%S.%f'))

    response = APIResponse(success=True, data=serializer.data)
    # 分页数据
    response[CONTENT_RANGE] = '{0}-{1}'.format(offset, offset + len(logs))
    response[CONTENT_TOTAL] = total
    return response
Example #3
0
    def get(self, request):
        logs = ExportRecord.objects.all()
        offset = safe_int(request.query_params.get('offset', 0))
        limit = safe_int(request.query_params.get('limit', 15))
        limit = get_limit(limit)

        file_name = request.query_params.get('file_name')
        status = request.query_params.get('status')
        operator_name = request.query_params.get('operator_name')
        start_time = request.query_params.get('start_time')
        end_time = request.query_params.get('end_time')

        if file_name:
            logs = logs.filter(file_name=file_name)
        if status:
            logs = logs.filter(status=status)
        if operator_name:
            logs = logs.filter(operator_name=operator_name)
        if start_time and end_time:
            start_time += ' 00:00:00'
            end_time += ' 23:59:59'
            logs = logs.filter(create_time__gte=start_time).filter(
                create_time__lte=end_time)

        total = logs.count()
        logs = logs.order_by('-create_time')[offset:offset + limit]

        serializer = ExportRecordSerializer(logs, many=True)

        # extras转为dict
        for data in serializer.data:
            if check_json_format(data['extras']):
                data['extras'] = json.loads(data['extras'])
            data['create_time'] = time.mktime(
                time.strptime(data['create_time'], '%Y-%m-%dT%H:%M:%S.%f'))

        response = APIResponse(success=True, data=serializer.data)
        # 分页数据
        response[CONTENT_RANGE] = '{0}-{1}'.format(offset, offset + len(logs))
        response[CONTENT_TOTAL] = total
        return response
Example #4
0
from utils.string_extension import safe_int
Example #5
0
from utils.string_extension import safe_int
Example #6
0
def online_generation_order(data, request):
    data = re.sub('\'', '\"', data)
    now = datetime.now()
    date = now.date()
    delta = timedelta(days=15)
    due_time = date + delta
    try:
        data = json.loads(data)
        # 商品信息
        goods_info = data['goods_info']
        goods_id_list = []
        number_list = []
        for info in goods_info:
            goods_id_list.append(int(info['goods_id']))
            number_list.append(int(info['number']))
        # 收货人
        receiver = data['receiver']
        # 电话
        mobile = data['mobile']
        # 省
        province = data['province']
        # 市
        city = data['city']
        # 区
        district = data['district']
        # 详细地址
        address = data['address']
        # 备注
        remarks = data['remarks']
        # 买家ID
        guest_id = request.user.id
        # guest_id = 2
        # 这里后续需要加上获取佣金比例的逻辑 暂时先用 0.0 替代
        ratio = 0.0
        order_status = 1
        headers = {'content-type': 'application/json',
                   'user-agent': "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"}
        parameters = json.dumps({})
        try:
            response = requests.post(ORDER_API_HOST + '/api/order', data=parameters, headers=headers)
            response_dict = json.loads(response.text)
        except Exception as e:
            logger.info('ID生成器连接失败!!!')
            response = APIResponse(success=False, data={}, msg='ID生成器连接失败!!!')
            return response
        if response_dict['rescode'] != '10000':
            return response
        # 获取商品信息
        try:
            parameters = {'goods_ids': goods_id_list, 'quantities': number_list}
            goods_response = requests.get(GOODS_API_HOST + '/api/service/checkout/goods', parameters, headers=headers)
            goods_dict = json.loads(goods_response.text)
        except Exception as e:
            logger.info('ID生成器连接失败!!!')
            response = APIResponse(success=False, data={}, msg='ID生成器连接失败!!!')
            return response
        if goods_dict['rescode'] != '10000':
            return goods_response
        # 母订单号
        mother_order_sn = response_dict['data']['order_sn']
        goods_data = []
        for goods in goods_dict['data'].values():
            _ = {}
            try:
                parameters = json.dumps({'order_id': mother_order_sn})
                response = requests.post(ORDER_API_HOST + '/api/order', data=parameters, headers=headers)
            except Exception as e:
                logger.info('生成子订单出错')
                # response = APIResponse(success=False, data={}, msg='请求ID生成器出错')
                return response
            son_order_sn = json.loads(response.text)['data']['order_sn']
            supplier_id = goods['supplier_id']
            try:
                response = requests.get(SUPPLIER_API_HOST + '/api/service/suppliers/%s' % safe_int(supplier_id))
                supplier_info = json.loads(response.text)
            except Exception as e:
                logger.info('查询供应商信息出错')
                response = APIResponse(success=False, data={}, msg='查询供应商信息出错')
                return response
            if supplier_info['rescode'] != '10000':
                return supplier_info
            _['univalent'] = goods['price']
            _['supplier_name'] = supplier_info['data']['company']
            _['price_discount'] = 0.0
            _['goods_id'] = goods['goods_id']
            _['supplier_id'] = supplier_id
            _['goods_name'] = goods['goods_name']
            _['model'] = goods['partnumber']
            _['goods_unit'] = goods['sales_unit']
            res = re.match(r'\d+', goods['lead_time'])
            _['max_delivery_time'] = int(res.group()) if res else 7
            _['brand'] = goods['brand_name']
            _['goods_sn'] = goods['gno']
            _['number'] = goods['quantity']
            _['product_place'] = goods['prodution_place']
            _['son_order_sn'] = son_order_sn
            goods_data.append(_)
        # 发票信息
        if data['receipt_type'] == 3:
            receipt = Receipt.objects.create(receipt_type=data['receipt_type'])
        else:
            receipt = Receipt.objects.create(
                title=data['title'],
                account=data['account'],
                tax_number=data['tax_number'],
                telephone=data['telephone'],
                bank=data['bank'],
                company_address=data['company_address'],
                receipt_type=data['receipt_type'],
            )
        # 创建母订单信息, 母订单类型订单不存在母订单
        mother_order = Order.objects.create(receipt=receipt.id, remarks=remarks, receiver=receiver, mobile=mobile,
                                            guest_id=guest_id, order_sn=mother_order_sn, address=address,
                                            province=province, city=city, district=district)
        # 增加母订单状态信息
        OrderOperationRecord.objects.create(order_sn=mother_order.order_sn, status=1, operator=guest_id,
                                            execution_detail='提交订单', progress='未支付')
        # 增加初始订单支付信息
        OrderPayment.objects.create(order_sn=mother_order_sn, pay_status=1)
        total_money = 0.0
        for _data in goods_data:
            # parameters = json.dumps({'order_id': mother_order_sn})
            # response = requests.post(ORDER_API_HOST + '/api/order', data=parameters, headers=headers)
            # order_sn = json.loads(response.text)['data']['order_sn']
            price_discount = float(_data.get('price_discount', 0.0))
            subtotal_money = float(_data['univalent']) * float(_data['number']) * (1.0 - price_discount)
            total_money += subtotal_money
            _order = OrderDetail.objects.create(
                order=mother_order.id,
                son_order_sn=_data['son_order_sn'],
                supplier_id=_data['supplier_id'],
                goods_id=_data['goods_id'],
                goods_sn=_data['goods_sn'],
                goods_name=_data['goods_name'],
                goods_unit=_data['goods_unit'],
                product_place=_data['product_place'],
                model=_data['model'],
                brand=_data['brand'],
                number=int(_data['number']),
                univalent=float(_data['univalent']),
                subtotal_money=subtotal_money,
                commission=subtotal_money * ratio,
                price_discount=price_discount,
                status=order_status,
                max_delivery_time=_data['max_delivery_time'],
                due_time=due_time
            )
            # 增加子订单状态信息
            OrderOperationRecord.objects.create(order_sn=_order.son_order_sn, status=1, operator=guest_id,
                                                execution_detail='用户[%s]提交订单' % guest_id, progress='未支付')
            OrderPayment.objects.create(order_sn=_order.son_order_sn, pay_status=1)
        mother_order.total_money = total_money
        mother_order.save()
    except json.JSONDecodeError as e:
        logger.info("{msg: 请求参数异常}")
        response = APIResponse(success=False, data={}, msg='请求参数异常')
        return response
    result = {
        'id': mother_order.id,
        'mother_order_sn': mother_order_sn,
        'add_time': mother_order.add_time,
        'address': mother_order.address,
        'receipt_title': receipt.title,
        'receipt_type': RECEIPT_TYPE[receipt.receipt_type],
        'status': order_status
    }
    response = APIResponse(success=True, data=result, msg='创建订单信息成功')
    return response