def stu_selectcourse(self, studinfo, xuanke_counter=0): studenetId = studinfo['stu']['id'] studentNo = studinfo['stu']['studentNo'] semeId = str(int(studinfo['stu']['xueqi']['id']) + 1) #本学期选下学期的课 stu_plan_name = studinfo['stu']['planObj']['name'] dateutil = DateUtil.DateUtil() semenum = dateutil.getSCTermNo(stu_plan_name) tobeelectlistinfo = self.get_stu_tobeelect(studinfo) if tobeelectlistinfo and len(tobeelectlistinfo) == 2: stu_cur_eleactive = tobeelectlistinfo[0] tobeelectlist = tobeelectlistinfo[1] if stu_cur_eleactive and len( stu_cur_eleactive) > 0 and self.getifforceselectcourse( ) != True: self.log('学生' + str(studentNo) + '已有选课记录,不再进行自动选课。', True) else: # 优选本学期的推荐课,判断是否为推荐选课 tobeelectlist = self.selectCourseService.get_recommend_courselist( studentNo) if xuanke_counter > 0: # 在所有推荐选课列表中先选主修课再选选修课 #mainstudy_courselist=self.selectCourseService.get_recommend_courselist(studentNo,0) #if len(mainstudy_courselist)>=xuanke_counter: # tobeelectlist=mainstudy_courselist[0:xuanke_counter] #else: # selectstudy_courselist=self.selectCourseService.get_recommend_courselist(studentNo,1) # selectstudy_coursecount=len(selectstudy_courselist) # if selectstudy_coursecount>0: # selectstudycount=xuanke_counter-len(mainstudy_courselist) # if selectstudycount>selectstudy_coursecount: # selectstudycount=selectstudy_coursecount # mainstudy_courselist.extend(selectstudy_courselist[0:selectstudycount]) # tobeelectlist =mainstudy_courselist tobeelectlist = tobeelectlist[0:xuanke_counter] # 组织自动选课数据 selectcourselist = [] selectcoursetime = self.getcurrenttime() for course in tobeelectlist: # 优选本学期的推荐课,判断是否为推荐选课,如果是则选择 courseid = course['courseId'] coursetype = '必修' if course['type'] == 0: coursetype = '必修' if course['type'] == 1: coursetype = '选修' selectcouse = { "coursePlanId": course['id'], "courseD": course['courseD'], "studentId": studenetId, "studentNo": studentNo, "courseId": courseid, "planId": course['planId'], "semeId": semeId, "type": coursetype, "time": selectcoursetime } selectcourselist.append(selectcouse) selectcourse_data = json.dumps(selectcourselist, ensure_ascii=False) self.submit_selectcourse(studinfo, selectcourse_data)
def get_stu_courseplanlist(self, login_name, stu_plan_name, stu_plan_id, retrytime=None): dateutil = DateUtil.DateUtil() semenum = dateutil.getSCTermNo(stu_plan_name) request_url = 'https://jxjyxb.bucm.edu.cn/api/v1/student/courseplan/list_stu' post_data = { 'page': 1, 'pageSize': 100, 'coursePlan.planId': stu_plan_id, 'coursePlan.semenum': semenum } try: response = self.session.post(request_url, data=post_data, headers=self.headers) if response.status_code == 200: print('选课信息---' + response.text) stu_course_json = json.loads(response.text) stu_course_plan = stu_course_json['pager']['datas'] except: self.log(neterror_msg, True) set_retrytime = int(self.get_retrytime()) if retrytime is None: retrytime = int(set_retrytime) else: retrytime = int(retrytime) - 1 if retrytime > 0: self.log('重复尝试第' + str(set_retrytime - retrytime + 1) + '次', True) retryinterval = self.get_retryinterval() time.sleep(retryinterval) self.get_stu_courseplanlist(login_name, stu_plan_name, stu_plan_id, retrytime) return stu_course_plan
# -*- coding: utf-8 -*- import traceback # import hashlib from DateUtil import * from DbUtil import * VIP_USE_TIMES = (5, 80, 600, 1300, 0) # 月会员3次 # 季度10次 # 半年会员21次 # 年会员43次 # 永久会员 db = DbUtil() date_util = DateUtil() def is_use_forever(vip_type): if vip_type == VipType.forever: return True else: return False # def get_use_times(vip_type): # if vip_type in VipType: # return VIP_USE_TIMES[vip_type.value] # else: # return 0