""" 功能:调用云平台rpc服务 版本:v1.0 作者:pengchen """ import config import requests import time import hashlib import logger def queryExamValidRecordData(courseId,pageNo): """ 获取全部考生的阅卷信息 获取成功返回具体信息,失败则返回None """ #logger.info("start to get %s course valid record"%(str(courseId))) url=config.oedomain+"api/core/oe/admin/examRecordForMarking/queryValidExamRecordInfoPage" data = { "examId": config.examId, "courseId": courseId, "start": pageNo, "size":200 } headers = createRpcheader("4","OE") result = requests.post(url, headers=headers,json=data) if result.status_code==200: #logger.info("get %s course valid record success" % (str(courseId))) return result.json() else: #logger.error("get %s course valid record failed" % (str(courseId))) return None def getQuestion(questionId,courseCode,paperType): """ 获取question详细信息 """ #logger.info("start to get course %s,quesionid is %s question info" % (courseCode,str(questionId))) url = config.questiondomain + "api/core/questions/extract_config/getQuestion" headers = createRpcheader("3", "Q") data = { "examId": config.examId, "courseCode": courseCode, "groupCode": paperType, "questionId": questionId } result = requests.post(url, headers=headers,json=data) if result.status_code == 200: #logger.info("get course %s,quesionid is %s question info success" % (courseCode,str(questionId))) return result.json() else: #logger.error("get course %s,quesionid is %s question info failed" % (courseCode,str(questionId))) return None def getCourse(courseId): """ 获取课程详细信息 """ url=config.basedomain+"api/core/basic/course/getCoursesByIdList" headers =createRpcheader("1","B") data={ "courseIdList":[courseId] } result = requests.post( url, headers=headers,json=data) if result.status_code == 200: #logger.info("get %s course detail info success" % (str(courseId))) return result.json() else: #logger.error("get %s course detail info failed" % (str(courseId))) return None def createRpcheader(appid,appcode): secretkey = "123456" t = time.time() secretstr = ''.join([appid, appcode, str(int(round(t * 1000))), secretkey]) accssToken = hashlib.sha256(secretstr.encode("utf-8")).hexdigest() headers = { "App-Id": appid, "App-Code": appcode, "Trace-Id": "1222222", "Access-Token": accssToken, "timestamp": str(int(round(t * 1000))) } return headers def querySubjectInfo(examRecordDataId): """ 根据考试记录id,获取考试记录所有主观题学生作答 paperId: paperType: courseCode: """ url=config.oedomain+"api/core/oe/admin/examRecordQuestions/querySubjectiveAnswerList" headers=createRpcheader("4","OE") data={ "examRecordDataId":examRecordDataId } result = requests.post(url, headers=headers,json=data) if result.status_code == 200: #logger.info("get examrecordid %s subject info success" % (str(examRecordDataId))) return result.json() else: logger.error("get examrecordid %s subject info failed" % (str(examRecordDataId))) return None def queryExamMarkingInfo(): """ 获取阅卷科目信息 """ url=config.oedomain+"api/core/oe/admin/examRecordForMarking/findExamRecordForMarkingInfo" data = { "examId": config.examId, "courseId": "", "batchNum": "" } headers=createRpcheader("4","OE") result = requests.post(url, headers=headers,json=data) if result.status_code == 200: #logger.info("get examid %s formarking info success" % (str(config.examId))) return result.json() else: #logger.error("get examid %s formarking info failed" % (str(config.examId))) return None def queryPaperStruct(courseCode,groupCode,paperId,courseName): url = config.questiondomain + "api/core/questions/extract_config/getPaper" data = { "examId": config.examId, "courseCode": courseCode, "groupCode": groupCode, "paperId": paperId } headers = createRpcheader("3", "Q") result = requests.post(url, headers=headers, json=data) if result.status_code == 200: #logger.info("get courseName %s,coursecode %s ,papertype %s,paperId is %s success" % (courseName,courseCode,groupCode,paperId)) return result.json() else: logger.error("get courseName %s,coursecode %s ,papertype %s,paperId is %s failed" % (courseName,courseCode,groupCode,paperId)) return None def queryExamStudent(examstudentid): url=config.examworkdomain+"api/core/examwork/examStudent/getExamStudent" headers = createRpcheader("2", "E") data={ "rootOrgId":config.rootOrgId, "examStudentId":examstudentid, } result = requests.post( url, headers=headers, json=data) if result.status_code==200: examstudent=result.json()["examStudentBean"] return examstudent else: logger.info(("query examstudent %s failed")%(str(examstudentid))) return None