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

"""
case_tag:cmdc_api,cmdc获取已发布商品分类信息,2294,2294-2,sit,bs
主数据平台:多采商城获取已发布商品分类信息接口
"""

from common.common_func import commonFuc
from air_case.cmdc_login.多采商城登录.多采商城登录 import CmdcMaiiLogin
from common.db.db import mySql
import requests
import random
import json

module = "cmdc_trade"

# 第一步获取登录多采商城所需账号密码
username = commonFuc().get_business_data(module, "username")
password = commonFuc().get_business_data(module, "password")
# 获取登录后Cmdc_access_token
cmdc_access_token = CmdcMaiiLogin(username, password).get_token()
headers = commonFuc().get_business_data(module, "json_headers1", cmdc_access_token)

# 第二步根据用户id获取公司信息
url = commonFuc().get_api_url() + commonFuc().get_business_data(module, "url1")
# 发送请求
result = requests.get(url, headers=headers)
result = json.loads(result.content)

# 生成随机数
company_random = random.randint(0, len(result["data"]) - 1)
# 获取公司信息
company_id = result["data"][company_random]["companyId"]

# 第三步获取对应公司已发布的商品分类
url = commonFuc().get_api_url() + commonFuc().get_business_data(module, "url2")
request_body = commonFuc().get_business_data(module, "payload2", company_id)

"""

 场景: 获取已发布商品分类信息
 用例名称：获取已发布商品分类信息
 输出：{"total":"%s"}
"""

# 发送请求
result = requests.post(url, json=request_body, headers=headers)
# 获取接口响应时间
api_time = float(result.elapsed.total_seconds())
# print(result.elapsed.total_seconds())
result = json.loads(result.content)

# print(result)
# 获取分类数量
result = {"total": len(result["data"])}
result["api_time"] = api_time
# 数据库操作
mysql_handle = mySql()
# 获取conf.ini文件中配置的数据库信息
host, port, user, pwd = mysql_handle.getConf(db="cmdc_db")

# 数据库查询套包状态
sql = "SELECT count(t.categoryId) FROM `cmdc-product`.ic_product_category t WHERE parentId = 1 " \
      "and deleteSign = 0 and isOpen = 1 and categoryLevel = 1 and categoryId in " \
      "(SELECT t.categoryId  FROM `cmdc-product`.ic_product_category_company t " \
      "WHERE companyId = {} and deleteSign = 0 and publishSign = 1 and virtualDeleteSign  = 0)".format(company_id)
total = mysql_handle.selectSql(host, port, user, pwd, "cmdc-product", sql)[0][0]

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