コード例 #1
0
def service_logistics(headers,
                      order_id,
                      item_id=None,
                      service_id=None,
                      project_code=44030011):
    url = '/aftersales/goods/logistics'
    try:
        log.info('service_logistics() --> begin , order_id --> %s ' % order_id)
        if not item_id:
            item_info = order_item.order_item(order_id=order_id)
            item_id = item_info['id']
            service_id = item_info['current_service']
        data = {
            "project_code": project_code,
            "order_id": order_id,
            "item_id": item_id,
            "after_service_id": service_id,
            "express_company_code": "SHUNFENG",
            "tracking_number": "123456abc",
            "imgs": []
        }
        resp = request(method='post',
                       headers=headers,
                       url=host + url,
                       json=data)
        return resp
    except Exception as e:
        log.error('service_logistics() failed :', e)
コード例 #2
0
def service_reason(
    headers,
    apply_type,
    order_id,
    item_id=None,
    project_code=44030011,
):
    url = '/aftersales/service/goods'
    try:
        log.info('service_reason() --> begin , order_id --> %s ' % order_id)
        if apply_type not in [
                'REFUNDONLY', 'RETURNPRODUCTANDREFUND', 'CHANGEPRODUCT'
        ]:
            log.error(
                f'can only [REFUNDONLY, RETURNPRODUCTANDREFUND, CHANGEPRODUCT] ,but [{apply_type}]'
            )
            return
        if not item_id:
            item_info = order_item.order_item(order_id=order_id)
            item_id = item_info['id']
        params = {
            'project_code': project_code,
            'order_id': order_id,
            'item_id': item_id,
            'type': apply_type
        }
        resp = request(method='get',
                       headers=headers,
                       url=host + url,
                       params=params)
        return resp
    except Exception as e:
        log.error('service_detail() failed :', e)
コード例 #3
0
def get_service_reason(project_code, order_id, service_type):
	url = '/aftersales/service/goods'
	item_id = order_item(order_id=order_id, key='id')
	params = {'project_code': project_code, 'order_id': order_id, 'item_id': item_id, 'type': service_type}
	log.info('method : get_service_reason() --> begin ')
	result = request(method='get', url=host + url, params=params)
	log.info('method : get_service_reason() --> end ')
	return result
コード例 #4
0
def input_logistics(headers, order_id, project_code='44030011', express_company='YUANTONG', express_no='0000001'):
	# 填写回寄的快递单
	url = '/aftersales/goods/logistics'
	item_id = order_item(order_id=order_id, key='id')
	service_id = order_item(order_id=order_id, key='current_service')
	data = {
		"project_code": project_code,
		"order_id": order_id,
		"item_id": item_id,
		"after_service_id": service_id,
		"express_company_code": express_company,
		"tracking_number": express_no,
		"imgs": []
	}
	log.info('method : return_logistics_info() --> begin')
	resp = request(method='post', headers=headers, url=host + url, json=data)
	log.info('method : return_logistics_info() --> end')
	return resp
コード例 #5
0
def service_get_logistics(headers, order_id, project_code='44030011'):
	# 获取物流公司
	url = '/aftersales/logistics/info'
	service_id = order_item(order_id=order_id, key='current_service')
	params = {'project_code': project_code, 'order_id': order_id, 'service_id': service_id}
	log.info('method : service_get_logistics() --> begin')
	resp = request(method='get', headers=headers, url=host + url, params=params)
	log.info('method : service_get_logistics() --> end')
	return resp
コード例 #6
0
def service_list(order_id, project_code='44030011'):
	# 售后详情
	url = '/aftersales/services/list'
	item_id = order_item(order_id=order_id, key='id')
	params = {'project_code': project_code, 'order_id': order_id, 'item_id': item_id}
	log.info('method : service_list() --> begin')
	resp = request(method='get', url=host + url, params=params)
	log.info('method : service_list() --> end')
	return resp
コード例 #7
0
def apply_service(headers, order_id, project_code=44030052, service_type='REFUNDONLY'):
	# 申請售後 ,RETURNPRODUCTANDREFUND--退货退款  CHANGEPRODUCT--换货  REFUNDONLY--仅退款
	resp_result = get_service_reason(project_code=project_code, order_id=order_id, service_type=service_type)
	if resp_result.json().get('result') == '不支持的售后类型':
		log.error('method get_service_reason() occurred error ,method apply_service(): run over')
		return
	else:
		reason = resp_result.json().get('result').get('after_service_reason')[0].get('value')  # 默认获取第一个原因
	url = '/aftersales/service/apply'
	# 判断发起的售后是否合理
	order_status = orders(order_id=order_id, key='order_status')
	if order_status in ('PAID', 'DELIVERED', 'RECEIVED'):
		if order_status == 'PAID' and service_type != 'REFUNDONLY':
			log.error(f'order_status : {order_status} ,can not apply service : {service_type}')
			return
	else:
		log.error(
			f'only order_status in [PAID, DELIVERED, RECEIVED] can apply service ,current order_status : {order_status}')
		return
	item = order_item(order_id=order_id, key='id')
	item_price = int(order_item(order_id=order_id, key='price') * 100)
	item_qty = order_item(order_id=order_id, key='quantity')
	shipping = int(orders(order_id=order_id, key='shipping') * 100)
	if service_type == 'REFUNDONLY':
		price = item_price * item_qty + shipping
	else:
		price = item_price * item_qty
	data = {
		"project_code": project_code,
		"type": service_type,
		"order_id": order_id,
		"item_id": item,
		"imgs": [],
		"after_service_reason": reason,
		"illustration": "Test",
		"price": price
	}
	log.info('method : apply_service() --> begin')
	resp = request(method='post', url=host + url, headers=headers, json=data)
	log.info('method : apply_service() --> end')
	return resp
コード例 #8
0
def service_detail(headers, order_id, item_id=None, project_code=44030011):
    url = '/aftersales/services/list'
    try:
        log.info('service_detail() --> begin , order_id --> %s ' % order_id)
        if not item_id:
            item_info = order_item.order_item(order_id=order_id)
            item_id = item_info['id']
        params = {
            "project_code": project_code,
            "order_id": order_id,
            "item_id": item_id
        }
        resp = request(method='get',
                       headers=headers,
                       url=host + url,
                       params=params)
        return resp
    except Exception as e:
        log.error('service_detail() failed :', e)
コード例 #9
0
def service_apply(headers,
                  order_id,
                  project_code=44030011,
                  apply_type='RETURNPRODUCTANDREFUND',
                  item_id=None):
    url = '/aftersales/service/apply'
    log.info('service_apply() --> begin , order_id --> %s ' % order_id)
    try:
        # apply_type类型和原因
        my_apply = {
            'REFUNDONLY': 'NOTRECEIVED',
            'RETURNPRODUCTANDREFUND': 'DELIVERYMISTAKE',
            'CHANGEPRODUCT': 'QUALITYPROBLEM'
        }
        if apply_type in my_apply.keys():
            after_service_reason = my_apply.get(apply_type)
        else:
            log.error(
                'only [REFUNDONLY,RETURNPRODUCTANDREFUND,CHANGEPRODUCT] can select'
            )
            return
        # 获取item_id、item_status、单价、数量,并设置申请退款金额(全额)
        if not item_id:
            item = order_item.order_item(order_id=order_id)
            item_id = item['id']
            item_status = item.get('item_status')
            item_price = item.get('price')
            item_qty = item.get('quantity')
            price = int(item_price * 100) * item_qty
        else:
            item = order_item.order_item(order_id=order_id, item_id=item_id)
            item_status = item.get('item_status')
            item_price = item.get('price')
            item_qty = item.get('quantity')
            price = int(item_price * 100) * item_qty
        # 根据item_status判断发起的售后是否合理
        if item_status in ('PAID', 'DELIVERED', 'RECEIVED'):
            if item_status == 'PAID' and apply_type != 'REFUNDONLY':
                log.error(
                    f'item_status : [PAID] can not apply service : [REFUNDONLY]'
                )
                return
            elif item_status in ('DELIVERED',
                                 'RECEIVED') and apply_type not in (
                                     'RETURNPRODUCTANDREFUND',
                                     'CHANGEPRODUCT'):
                log.error(
                    f'only item_status : [PAID] can not apply service : [REFUNDONLY] , but current item_status :{item_status}'
                )
                return
        else:
            log.error(
                f'only item_status in [PAID, DELIVERED, RECEIVED] can apply service ,current item_status : {item_status}'
            )
            return
        data = {
            "project_code": project_code,
            "type": apply_type,
            "order_id": order_id,
            "item_id": item_id,
            "imgs": [],
            "after_service_reason": after_service_reason,
            "illustration": "Test",
            "price": price
        }
        resp = request(method='post',
                       headers=headers,
                       url=host + url,
                       json=data)
        if resp.status_code == 200 and resp.json().get('code') == 0:
            log.info('service_apply() success')
            return resp
        else:
            log.error('service_apply() failed --> ' + resp.text)
    except Exception as e:
        log.error('service_apply() failed :', e)