def interface_test_form(request): try: global received_json_interface_code if request.method == 'POST': received_json_url = request.POST.get("testUrl") received_json_interface_code = request.POST.get("interfaceCodeValue") received_json_data = request.POST.get("effectRow") received_json_dict = simplejson.loads(received_json_data) headers_dict = {"Content-type": "application/json"} elif request.method == 'GET': received_json_url = request.GET.get("testUrl") received_json_interface_code = request.GET.get("interfaceCodeValue") received_json_data = request.GET.get("effectRow") logger.debug(received_json_data) received_json_dict = simplejson.loads(received_json_data) headers_dict = {} secretkey_value = HttpInterfaceInfo.objects.get(interface_code=received_json_interface_code).secretkey processing_data_object = InterfaceDataProcessing(received_json_interface_code, received_json_dict, secretkey_value) # 进行是否满足InterfaceDataProcessing数据处理字典的判断 if processing_data_object.processing() != 0: received_json_dict = processing_data_object.processing() http_oject = HttpUrlConnection(received_json_url, method=request.method, parameters=received_json_dict, headers=headers_dict) result = http_oject.request() return HttpResponse(result) except Exception as e: logger.error(e) logger.exception(u"接口测试请求错误如下:")
def oyjt_crm(request, rest_api): try: crmdata = dict() logger.debug("欧亚CRM请求的数据为:"+str(request.body.decode("utf-8"))) # 判断是json数据还是application/x-www-form-urlencoded请求数据 if request.body.decode("utf-8") != "": if "&" in request.body.decode("utf-8"): crmdata = InterfaceDataProcessing.urldecoded(request.body.decode("utf-8")) logger.info("欧亚CRM请求的数据crmdata="+str(crmdata)) logger.info("欧亚CRM请求数据中CrmMemberID="+str(crmdata["CrmMemberID"])) else: crmdata = simplejson.loads(request.body.decode("utf-8")) logger.info("欧亚CRM请求的数据crmdata="+str(crmdata)) logger.info("欧亚CRM请求数据中CrmMemberID="+str(crmdata["CrmMemberID"])) # 数据库中获取配置 crmurl_object = CrmmockInfo.objects.filter(crmcode="oyjt") crmurl = list(crmurl_object)[0].crmuri logger.info("欧亚CRM链接crmurl="+str(crmurl)) logger.info("欧亚CRM请求REST部分rest_api="+str(rest_api)) logger.info("欧亚CRM请求未解码数据为:"+str(request.body)) logger.info("欧亚CRM请求解码数据为:"+str(request.body.decode("utf-8"))) logger.info("欧亚CRM方法为:"+str(request.method)) # 获取rest链接参数 crmapi = rest_api # 拼接真正请求的url crm_rest_absapi = crmurl + "/" + rest_api logger.info("完成的欧亚CRM请求链接crm_rest_absapi=" + str(crm_rest_absapi)) logger.info("欧亚CRM方法为:"+str(request.method)) if request.method == "POST": logger.info("以求发生在欧亚CRM的POST请求方法中!") try: crmdata_object = CrmmockPaydata.objects.filter(crmcode="oyjt", crmmemberid=crmdata["CrmMemberID"]) except: crmdata_object = CrmmockPaydata.objects.filter(crmcode="oyjt") # 获取消费记录 if crmapi == "Info/GetCrmHyxfjl": paydata_detail = dict() paydata_detail["Msg"] = "" paydata_detail["Bl"] = True paydata_detail["Infos"] = list() paydata_detail["Info"] = dict() paydata_total = dict() paydata_total["Msg"] = "" paydata_total["Bl"] = True paydata_total["Info"] = dict() paydata = dict() paydata["1"] = paydata_total paydata["0"] = paydata_detail logger.info(crmdata["CrmMemberID"]) if list(crmdata_object): paylog_data_list = list() try: # 数据库读取设置好的支付记录 paylog_dict = dict() logger.info("转为字典的欧亚消费记录paylog_dict=" + str(paylog_dict)) for j in list(crmdata_object): logger.info("数据库中取出的对应欧亚卡号的mock消费记录为:" + str(j.paylog)) paylog_dict = simplejson.loads(j.paylog) logger.info("转为字典的欧亚消费记录paylog_dict=" + str(paylog_dict)) paylog_data_list = paylog_dict["data"] logger.info("数据库中取出的对应欧亚卡号的mock消费记录具体数据paylog_data_list=" + str(paylog_data_list)) except: logger.exception("支付记录获取错误:") if len(paylog_data_list) == 1: # 设置了建卡时间但未设置消费记录 paydata_detail = {"Infos": [], "Info": {"shopCount": "0", "shopSumMoney": None}, "Msg": "", "Bl": True} paydata_total = {"Info": {"shopCount": "0", "shopSumMoney": None}, "Msg": "", "Bl": True} paydata["0"] = paydata_detail paydata["1"] = paydata_total else: # 设置了建卡时间并设置了消费记录 k = 0 for k in range(len(paylog_data_list) - 1): num = k + 1 amount = paylog_data_list[num][0] logger.info("欧亚消费总数amount="+str(amount)) orderDate = paylog_data_list[num][1] logger.info("欧亚订单日期orderDate="+str(orderDate)) # 调用大悦城数据Dict info_data = oyjtDict(amount, orderDate) paydata_detail["Infos"].append(info_data) logger.info("欧亚详细消费数据paydata_detail="+str(paydata_detail)) if len(paydata_detail["Infos"]) != 0: shopCount = len(paydata_detail["Infos"]) shopSumMoney = float(0) i = 0 for i in range(len(paydata_detail["Infos"])): shopSumMoney = shopSumMoney + float(paydata_detail["Infos"][i]["amount"]) paydata_detail["Info"]["shopCount"] = str(shopCount) paydata_detail["Info"]["shopSumMoney"] = str(shopSumMoney) paydata_total["Info"]["shopCount"] = str(shopCount) paydata_total["Info"]["shopSumMoney"] = str(shopSumMoney) else: # 无支付记录的给予默认值 yesterday_date = str(datetime.date.today() - datetime.timedelta(days=1)) TIME_STR_BUY = " 11:59:59" orderDate = yesterday_date + TIME_STR_BUY AMOUNT = "600.00" # 调用欧亚数据Dict info_data = oyjtDict(AMOUNT, orderDate) logger.info("mock未设置欧亚会员卡数据,默认info_data="+str(info_data)) paydata_detail["Infos"].append(info_data) logger.info("mock未设置欧亚会员卡数据,默认paydata_detail="+str(paydata_detail)) paydata_detail["Info"]["shopCount"] = str(1) paydata_detail["Info"]["shopSumMoney"] = str(AMOUNT) paydata_total["Info"]["shopCount"] = str(1) paydata_total["Info"]["shopSumMoney"] = str(AMOUNT) logger.info("mock未设置欧亚会员卡数据,默认的paydata_total="+str(paydata_total)) logger.info("mock未设置欧亚会员卡数据,默认的paydata_total="+str(paydata_detail)) return HttpResponse(simplejson.dumps(paydata[crmdata["hasOrder"]], ensure_ascii=False)) # 不满足条件则直接请求真实crm接口 headers_dict = {"Content-type": "application/x-www-form-urlencoded"} logger.info("欧亚CRM请求的crmdata="+str(crmdata)) httpObject = HttpUrlConnection(crm_rest_absapi, method="POST", parameters=crmdata, headers=headers_dict) result = httpObject.request() if request.method == "GET": logger.info("以求发生在欧亚CRM的GET请求方法中!") resultDict = dict() try: crmdata_object = CrmmockPaydata.objects.filter(crmcode="oyjt") httpObject = HttpUrlConnection(crm_rest_absapi, method="GET") result = httpObject.request().json() logger.debug("欧亚CRM请求的结果type(result))类型为:"+str(type(result))) logger.debug("欧亚CRM请求的结果result="+str(result)) resultDict = result # 获取会员卡信息,其他接口数据直接返回result if "Info/MembershipCardBasicInfo" in crmapi and resultDict["Mcb"] != None: logger.debug("欧亚CRM请求的CardID="+str(resultDict["Mcb"]["CardID"])) logger.debug("mock中对应欧亚CardID设置的数据为:"+str(list(crmdata_object.filter(card_no=resultDict["Mcb"]["CardID"])))) if list(crmdata_object.filter(card_no=resultDict["Mcb"]["CardID"])): # 数据库读取设置好的支付记录 paylog_dict = dict() for j in list(crmdata_object.filter(card_no=resultDict["Mcb"]["CardID"])): logger.info("mock中设置的欧亚会员数据为:"+str(j.paylog)) paylog_dict = simplejson.loads(j.paylog) logger.info("mock中设置的欧亚会员数据转换的字典paylog_dict="+str(paylog_dict)) # 获取数据库中配置的建卡时间 createDate = paylog_dict["data"][0] # 只更改正常获取crm信息中的建卡时间,欧亚没时分秒 resultDict["Mcb"]["CreateDate"] = createDate.split(" ")[0] return HttpResponse(simplejson.dumps(resultDict, ensure_ascii=False)) except: logger.exception("GET方法错误:") result = simplejson.dumps(resultDict, ensure_ascii=False) logger.info("欧亚CRM正常请求的数据result="+str(result)) return HttpResponse(result) except Exception as e: logger.error(e) logger.exception(u"欧亚crmMock错误如下:")