Files
MoFin/venv/lib/python3.12/site-packages/baostock/macroscopic/economic_data.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

724 lines
27 KiB
Python

# -*- coding:utf-8 -*-
"""
宏观数据,宏观经济数据
@author: baostock.com
@group : baostock.com
@contact: baostock@163.com
@copyright: baostock System & alpha.All Rights Reserved.
"""
import time
import zlib
import datetime
import baostock.data.resultset as rs
import baostock.common.contants as cons
import baostock.util.stringutil as strUtil
import baostock.common.context as conx
import baostock.util.socketutil as sock
import baostock.data.messageheader as msgheader
def query_deposit_rate_data(start_date="", end_date=""):
"""存款利率
@param sart_date: 起始日期,包含次此日期,可为空
@param end_date: 结束日期,包含次此日期,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_date(start_date):
pass
else:
print("起始日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_date(end_date):
pass
else:
print("结束日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(
start_date, '%Y-%m-%d')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m-%d')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_deposit_rate_data," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYDEPOSITRATEDATA_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYDEPOSITRATEDATA_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data
def query_loan_rate_data(start_date="", end_date=""):
"""贷款利率
@param sart_date: 起始日期,包含次此日期,可为空
@param end_date: 结束日期,包含次此日期,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_date(start_date):
pass
else:
print("起始日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_date(end_date):
pass
else:
print("结束日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(
start_date, '%Y-%m-%d')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m-%d')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_loan_rate_data," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYLOANRATEDATA_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYLOANRATEDATA_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data
def query_required_reserve_ratio_data(start_date="", end_date="", yearType="0"):
"""存款准备金率
@param sart_date: 起始日期,包含次此日期,可为空
@param end_date: 结束日期,包含次此日期,可为空
@param yearType: 日期类型,默认0为公告日期,1为生效日期
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_date(start_date):
pass
else:
print("起始日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_date(end_date):
pass
else:
print("结束日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(
start_date, '%Y-%m-%d')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m-%d')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
if yearType is None or yearType == "":
print("年份类别输入有误,请修改。")
data.error_msg = "年份类别输入有误,请修改。"
data.error_code = cons.BSERR_PARAM_ERR
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_required_reserve_ratio_data," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date) + "," + str(yearType)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUREYREQUIREDRESERVERATIODATA_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUREYREQUIREDRESERVERATIODATA_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.yearType = body_arr[9]
data.setFields(body_arr[10])
return data
def query_money_supply_data_month(start_date="", end_date=""):
"""货币供应量
@param sart_date: 起始年月yyyy-MM,包含次此日期,可为空
@param end_date: 结束年月yyyy-MM,包含次此日期,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_year_month_date(start_date):
pass
else:
print("起始日期格式不正确,应为:yyyy-mm,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,应为:yyyy-mm,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_year_month_date(end_date):
pass
else:
print("结束日期格式不正确,应为:yyyy-mm,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,应为:yyyy-mm,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(start_date, '%Y-%m')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_money_supply_data_month," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYMONEYSUPPLYDATAMONTH_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYMONEYSUPPLYDATAMONTH_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data
def query_money_supply_data_year(start_date="", end_date=""):
"""货币供应量(年底余额)
@param sart_date: 起始年份yyyy,包含次此年份,可为空
@param end_date: 结束年份yyyy,包含次此年份,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_year_date(start_date):
pass
else:
print("起始日期格式不正确,应为:yyyy,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,应为:yyyy,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_year_date(end_date):
pass
else:
print("结束日期格式不正确,应为:yyyy,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,应为:yyyy,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(start_date, '%Y')
end_date_time = datetime.datetime.strptime(end_date, '%Y')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_money_supply_data_year," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYMONEYSUPPLYDATAYEAR_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYMONEYSUPPLYDATAYEAR_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data
def query_cpi_data(start_date="", end_date=""):
"""居民价格消费指数
@param sart_date: 起始日期,包含次此日期,可为空
@param end_date: 结束日期,包含次此日期,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_date(start_date):
pass
else:
print("起始日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_date(end_date):
pass
else:
print("结束日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(
start_date, '%Y-%m-%d')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m-%d')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_cpi_data," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYCPIDATA_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYCPIDATA_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data
def query_ppi_data(start_date="", end_date=""):
"""工业品出厂价格指数
@param sart_date: 起始日期,包含次此日期,可为空
@param end_date: 结束日期,包含次此日期,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_date(start_date):
pass
else:
print("起始日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_date(end_date):
pass
else:
print("结束日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(
start_date, '%Y-%m-%d')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m-%d')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_ppi_data," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYPPIDATA_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYPPIDATA_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data
def query_pmi_data(start_date="", end_date=""):
"""采购经理人指数
@param sart_date: 起始日期,包含次此日期,可为空
@param end_date: 结束日期,包含次此日期,可为空
"""
data = rs.ResultData()
if start_date is None or start_date == "":
start_date = ""
else:
if strUtil.is_valid_date(start_date):
pass
else:
print("起始日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "起始日期格式不正确,请修改。"
return data
if end_date is None or end_date == "":
end_date = ""
else:
if strUtil.is_valid_date(end_date):
pass
else:
print("结束日期格式不正确,请修改。")
data.error_code = cons.BSERR_DATE_ERR
data.error_msg = "结束日期格式不正确,请修改。"
return data
if start_date != "" and end_date != "":
start_date_time = datetime.datetime.strptime(
start_date, '%Y-%m-%d')
end_date_time = datetime.datetime.strptime(end_date, '%Y-%m-%d')
if end_date_time < start_date_time:
print("起始日期大于结束日期,请修改。")
data.error_code = cons.BSERR_START_BIGTHAN_END
data.error_msg = "起始日期大于结束日期,请修改。"
return data
user_id = ""
try:
user_id = getattr(conx, "user_id")
except Exception:
print("you don't login.")
data.error_code = cons.BSERR_NO_LOGIN
data.error_msg = "you don't login."
return data
param = "query_pmi_data," + str(user_id) + ",1," + \
str(cons.BAOSTOCK_PER_PAGE_COUNT) + \
"," + str(start_date) + "," + str(end_date)
msg_body = strUtil.organize_msg_body(param)
msg_header = msgheader.to_message_header(
cons.MESSAGE_TYPE_QUERYPMIDATA_REQUEST, len(msg_body))
data.msg_type = cons.MESSAGE_TYPE_QUERYPMIDATA_REQUEST
data.msg_body = msg_body
head_body = msg_header + msg_body
crc32str = zlib.crc32(bytes(head_body, encoding='utf-8'))
receive_data = sock.send_msg(head_body + cons.MESSAGE_SPLIT + str(crc32str))
if receive_data is None or receive_data.strip() == "":
data.error_code = cons.BSERR_RECVSOCK_FAIL
data.error_msg = "网络接收错误。"
return data
msg_header = receive_data[0:cons.MESSAGE_HEADER_LENGTH]
msg_body = receive_data[cons.MESSAGE_HEADER_LENGTH:-1]
header_arr = msg_header.split(cons.MESSAGE_SPLIT)
body_arr = msg_body.split(cons.MESSAGE_SPLIT)
data.msg_body_length = header_arr[2]
data.error_code = body_arr[0]
data.error_msg = body_arr[1]
if cons.BSERR_SUCCESS == data.error_code:
data.method = body_arr[2]
data.user_id = body_arr[3]
data.cur_page_num = body_arr[4]
data.per_page_count = body_arr[5]
data.setData(body_arr[6])
data.start_date = body_arr[7]
data.end_date = body_arr[8]
data.setFields(body_arr[9])
return data