示例#1
0
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"接口测试请求错误如下:")
示例#2
0
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错误如下:")