Exemple #1
0
def generateAlipayUrl(diagnoseId):
    if session.has_key('userId'):
        userId=session['userId']
    if userId is None:
        return redirect(LOGIN_URL)
    diagnose=Diagnose.getDiagnoseById(diagnoseId)

    if diagnose and hasattr(diagnose,'patient') and string.atoi(userId)!=diagnose.patient.userID:
        result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或不是用户申请的")
        return  json.dumps(result.__dict__,ensure_ascii=False)

    if diagnose and diagnose.status==constant.DiagnoseStatus.NeedPay and diagnose.ossUploaded==constant.DiagnoseUploaed.Uploaded:
        alipayLog=AlipayLog(userId,diagnoseId,constant.AlipayLogAction.StartApplyAlipay)
        AlipayLog.save(alipayLog)
        description=None
        needPay=None
        if hasattr(diagnose,'pathology') and hasattr(diagnose.pathology,'pathologyPostions'):
            if len(diagnose.pathology.pathologyPostions)>0:
                if diagnose.pathology.diagnoseMethod==constant.DiagnoseMethod.Mri:
                    needPay=diagnose.getPayCount(constant.DiagnoseMethod.Mri,len(diagnose.pathology.pathologyPostions),diagnose.getUserDiscount(diagnose.patientId))
                elif diagnose.pathology.diagnoseMethod==constant.DiagnoseMethod.Ct:
                    needPay=diagnose.getPayCount(constant.DiagnoseMethod.Ct,len(diagnose.pathology.pathologyPostions),diagnose.getUserDiscount(diagnose.patientId))
            else:
                result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或这状态不对")
                return  json.dumps(result.__dict__,ensure_ascii=False)
        else:
            result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或这状态不对")
            return  json.dumps(result.__dict__,ensure_ascii=False)

        if hasattr(diagnose,'doctor') and hasattr(diagnose.doctor,'username'):

            description=' 医生(%s)的诊断费用:%f 元'%(diagnose.doctor.username,needPay)
            if hasattr(diagnose.doctor.hospital,'name'):
                description=diagnose.doctor.hospital.name+description
        payUrl=alipay.create_direct_pay_by_user(diagnose.diagnoseSeriesNumber,diagnose.diagnoseSeriesNumber,'咨询费',needPay)
        if payUrl:
            alipayLog=AlipayLog(userId,diagnoseId,constant.AlipayLogAction.GetAlipayUrl)
            alipayLog.description=description
            alipayLog.payUrl=payUrl
            AlipayLog.save(alipayLog)
            result=rs.ResultStatus(rs.SUCCESS.status,rs.SUCCESS.msg,payUrl)
            return  json.dumps(result.__dict__,ensure_ascii=False)
        else:
            alipayLog=AlipayLog(userId,diagnoseId,constant.AlipayLogAction.GetAlipayUrlFailure)
            AlipayLog.save(alipayLog)
            result=rs.ResultStatus(rs.FAILURE.status,constant.AlipayLogAction.GetAlipayUrlFailure)
            return  json.dumps(result.__dict__,ensure_ascii=False)
    result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或这状态不对")
    return  json.dumps(result.__dict__,ensure_ascii=False)
Exemple #2
0
def generateAlipayUrl(diagnoseId):
    if session.has_key('userId'):
        userId = session['userId']
    if userId is None:
        return redirect(LOGIN_URL)
    diagnose = Diagnose.getDiagnoseById(diagnoseId)

    if diagnose and hasattr(
            diagnose,
            'patient') and string.atoi(userId) != diagnose.patient.userID:
        result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或不是用户申请的")
        return json.dumps(result.__dict__, ensure_ascii=False)

    if diagnose and diagnose.status == constant.DiagnoseStatus.NeedPay and diagnose.ossUploaded == constant.DiagnoseUploaed.Uploaded:
        alipayLog = AlipayLog(userId, diagnoseId,
                              constant.AlipayLogAction.StartApplyAlipay)
        AlipayLog.save(alipayLog)
        description = None
        needPay = None
        if hasattr(diagnose, 'pathology') and hasattr(diagnose.pathology,
                                                      'pathologyPostions'):
            if len(diagnose.pathology.pathologyPostions) > 0:
                if diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Mri:
                    needPay = diagnose.getPayCount(
                        constant.DiagnoseMethod.Mri,
                        len(diagnose.pathology.pathologyPostions),
                        diagnose.getUserDiscount(diagnose.patientId))
                elif diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Ct:
                    needPay = diagnose.getPayCount(
                        constant.DiagnoseMethod.Ct,
                        len(diagnose.pathology.pathologyPostions),
                        diagnose.getUserDiscount(diagnose.patientId))
            else:
                result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对")
                return json.dumps(result.__dict__, ensure_ascii=False)
        else:
            result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对")
            return json.dumps(result.__dict__, ensure_ascii=False)

        if hasattr(diagnose, 'doctor') and hasattr(diagnose.doctor,
                                                   'username'):

            description = ' 医生(%s)的诊断费用:%f 元' % (diagnose.doctor.username,
                                                 needPay)
            if hasattr(diagnose.doctor.hospital, 'name'):
                description = diagnose.doctor.hospital.name + description
        payUrl = alipay.create_direct_pay_by_user(
            diagnose.diagnoseSeriesNumber, diagnose.diagnoseSeriesNumber,
            '咨询费', needPay)
        if payUrl:
            alipayLog = AlipayLog(userId, diagnoseId,
                                  constant.AlipayLogAction.GetAlipayUrl)
            alipayLog.description = description
            alipayLog.payUrl = payUrl
            AlipayLog.save(alipayLog)
            result = rs.ResultStatus(rs.SUCCESS.status, rs.SUCCESS.msg, payUrl)
            return json.dumps(result.__dict__, ensure_ascii=False)
        else:
            alipayLog = AlipayLog(userId, diagnoseId,
                                  constant.AlipayLogAction.GetAlipayUrlFailure)
            AlipayLog.save(alipayLog)
            result = rs.ResultStatus(
                rs.FAILURE.status,
                constant.AlipayLogAction.GetAlipayUrlFailure)
            return json.dumps(result.__dict__, ensure_ascii=False)
    result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对")
    return json.dumps(result.__dict__, ensure_ascii=False)
Exemple #3
0
def generateAliPay(userId, diagnoseId, diagnose=None):

    if diagnoseId:
        diagnose = Diagnose.getDiagnoseById(diagnoseId)
    else:
        diagnose = Diagnose.getDiagnoseById(diagnose.id)

    if diagnoseId is None and diagnose:
        diagnoseId = diagnose.id
    if userId is None:
        LOG.warn("诊断生成阿里支付地址出错,用户未登录")

    if isinstance(userId, basestring):
        userId = string.atoi(userId)
    if diagnose is None:
        LOG.error("诊断[diagnoseId=%d]生成阿里支付地址出错,诊断在系统中不存在" % diagnoseId)

    if diagnose and diagnose.uploadUserId != userId:
        if hasattr(diagnose, 'patient') and userId != diagnose.patient.userID:
            LOG.error("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址出错,用户没有权限" %
                      (diagnoseId, userId))

    if diagnose and diagnose.status == constant.DiagnoseStatus.NeedPay and diagnose.ossUploaded == constant.DiagnoseUploaed.Uploaded:
        alipayLog = AlipayLog(userId, diagnoseId,
                              constant.AlipayLogAction.StartApplyAlipay)
        AlipayLog.save(alipayLog)
        description = None
        needPay = None
        if hasattr(diagnose, 'pathology') and hasattr(diagnose.pathology,
                                                      'pathologyPostions'):
            if len(diagnose.pathology.pathologyPostions) > 0:
                if diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Mri:
                    needPay = diagnose.getPayCount(
                        constant.DiagnoseMethod.Mri,
                        len(diagnose.pathology.pathologyPostions),
                        diagnose.getUserDiscount(diagnose.patientId))
                elif diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Ct:
                    needPay = diagnose.getPayCount(
                        constant.DiagnoseMethod.Ct,
                        len(diagnose.pathology.pathologyPostions),
                        diagnose.getUserDiscount(diagnose.patientId))
            else:
                result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对")
                return json.dumps(result.__dict__, ensure_ascii=False)
        else:
            result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对")
            return json.dumps(result.__dict__, ensure_ascii=False)

        if hasattr(diagnose, 'doctor') and hasattr(diagnose.doctor,
                                                   'username'):

            description = ' 医生(%s)的诊断费用:%f 元' % (diagnose.doctor.username,
                                                 needPay)
            if hasattr(diagnose.doctor.hospital, 'name'):
                description = diagnose.doctor.hospital.name + description
        payUrl = alipay.create_direct_pay_by_user(
            diagnose.diagnoseSeriesNumber, diagnose.diagnoseSeriesNumber,
            '咨询费', needPay)
        if payUrl:
            alipayLog = AlipayLog(userId, diagnoseId,
                                  constant.AlipayLogAction.GetAlipayUrl)
            alipayLog.description = description
            alipayLog.payUrl = payUrl
            AlipayLog.save(alipayLog)

            updateDiagnose(diagnose.id, payUrl)
            LOG.info("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址成功" %
                     (diagnoseId, userId))
            return payUrl
        else:
            alipayLog = AlipayLog(userId, diagnoseId,
                                  constant.AlipayLogAction.GetAlipayUrlFailure)
            AlipayLog.save(alipayLog)

            LOG.error("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址出错,去阿里获取的payurl为空" %
                      (diagnoseId, userId))
    LOG.error("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址出错,其他未知原因" %
              (diagnoseId, userId))