# -*- encoding=utf8 -*-
__author__ = "liguangyu"

"""
case_tag:cmdc_api,cmdc列表查询条件验证_配货单列表获取,2290,2250-02,sit,bs
主数据平台:运营后台管理系统配货单列表接口
"""

from common.common_func import commonFuc
from air_case.cmdc_login.后台管理系统登录.后台管理系统登录 import CmdcDoLogin
import requests
import random
import json

module = "cmdc_order_merge"

# 第一步登录后台运营系统获取token信息
username = commonFuc().get_business_data(module, "username2")
password = commonFuc().get_business_data(module, "password2")
# 获取登录后Cmdc_access_token
cmdc_access_token = CmdcDoLogin(username, password).get_token()
headers = commonFuc().get_business_data(module, "json_headers", cmdc_access_token)

# 第二步获取配货单列表
url = commonFuc().get_api_url() + commonFuc().get_business_data(module, "url1")
request_body = commonFuc().get_business_data(module, "payload1")
# 发送请求
result = requests.post(url, json=request_body, headers=headers)
result = json.loads(result.content)
# print(result)

# 此函数用于当x为none时，进行空字符串替换
def func(x):
    if x is None:
        x = ""
        return x
    else:
        return x


# 生成随机数
distribution_random = random.randint(0, len(result["data"]["list"]) - 1)
# 获取配货单信息
distribution_id = func(result["data"]["list"][distribution_random]["distributionId"])
demand_parent_code = func(result["data"]["list"][distribution_random]["demandParentCode"])
demand_code = func(result["data"]["list"][distribution_random]["demandCode"])
distribution_code = func(result["data"]["list"][distribution_random]["distributionCode"])
customer_code = func(result["data"]["list"][distribution_random]["customerCode"])
audit_by_name = func(result["data"]["list"][distribution_random]["auditByName"])
product_line_name = func(result["data"]["list"][distribution_random]["productLineName"])
distribution_status = func(result["data"]["list"][distribution_random]["distributionStatus"])
push_type = func(result["data"]["list"][distribution_random]["pushType"])
is_merge = func(result["data"]["list"][distribution_random]["isMerge"])
merge_version_code = func(result["data"]["list"][distribution_random]["mergeVersionCode"])
out_code = func(result["data"]["list"][distribution_random]["soCode"])
promotion_type = func(result["data"]["list"][distribution_random]["promotionType"])
jde_type = func(result["data"]["list"][distribution_random]["jdeType"])
customer_name = func(result["data"]["list"][distribution_random]["customerName"])

# 第三步获取配货单详情
url = commonFuc().get_api_url() + commonFuc().get_business_data(module, "url5")
request_body = commonFuc().get_business_data(module, "payload5", distribution_id)
# 发送请求
result = requests.get(url, params=request_body, headers=headers)
result = json.loads(result.content)
if result["success"]:
    # 获取商品信息
    product_random = random.randint(0, len(result["data"]["distributionDetailList"]) - 1)
    productCodeList = func(result["data"]["distributionDetailList"][product_random]["productCode"])
    materialCodeList = func(result["data"]["distributionDetailList"][product_random]["materialCode"])
    optionStr = func(result["data"]["distributionDetailList"][product_random]["optionStr"])
    isGroupSign = ""
    # 第四步进行列表查询条件验证
    url = commonFuc().get_api_url() + commonFuc().get_business_data(module, "url4")
    request_body = commonFuc().get_business_data(module, "payload4", demand_parent_code, demand_code, distribution_code,
                                                 customer_code, audit_by_name, product_line_name, distribution_status,
                                                 push_type, productCodeList, materialCodeList, jde_type, is_merge,
                                                 optionStr, customer_name, promotion_type, isGroupSign,
                                                 merge_version_code, out_code)
    print(request_body)
    """
    
     场景: 列表查询条件验证_配货单列表获取
     用例名称：列表查询条件验证_配货单列表获取
     输出：{"demandParentCode":"%s"}
    """
    # 发送请求
    result = requests.post(url, json=request_body, headers=headers)
    # 获取接口响应时间
    api_time = float(result.elapsed.total_seconds())
    result = json.loads(result.content)
    print(result)
    # 获取结果中demandParentCode
    result = {"demandParentCode": result["data"]["list"][0]["demandParentCode"]}
    # 将接口响应时间添加至result中
    result["api_time"] = api_time

    # 获取预期结果
    check_dict = commonFuc().get_business_data(module, "checkDict4", demand_parent_code)
    # print(check_dict)
    # 断言实际结果中是否包含预期结果的内容
    commonFuc().check_result(check_dict, result)

else:
    # 获取预期结果
    check_dict = commonFuc().get_business_data(module, "checkDict4", demand_parent_code)
    # print(check_dict)
    # 断言实际结果中是否包含预期结果的内容
    commonFuc().check_result(check_dict, result)
