def examine(self, request, pk): statu = request.data.get('status') remark = request.data.get('remark') report_result_id = request.data.get('report_result_id') unit_report = VirtualclassUnitReport.objects.filter(id=pk).first() user = request.session.get('user') unit_report_audit_url = 'http://' + settings.JAVA_DOMAIN + settings.UNIT_REPORT_AUDIT_URL params = { 'auditUserId': user.get('id'), 'auditUserName': user.get('realname'), # 'createTime': timezone.now(), # 'updateTime': timezone.now(), 'remark': remark, 'status': statu, 'unitReportId': unit_report.id } if report_result_id: params['id'] = report_result_id result = fetch_put_api(unit_report_audit_url, params, user_id=user.get('id')) if not result: return JsonResponse(code=1, msg='服务器错误', status=status.HTTP_200_OK) if result.get('code') != 200: return JsonResponse(code=1, msg=result.get('message'), status=status.HTTP_200_OK) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def remove_class_member(self, request, pk): student_id = request.data.get('student_id') remove_class_student_url = 'http://' + settings.JAVA_DOMAIN + settings.STUDNT_SIGN_OUT_CLASS.format( class_id=pk, student_user_id=student_id) headers = {'content-type': 'application/json'} result = requests.delete(remove_class_student_url, headers=headers) result = result.json() if result.get('code') != 200: logger.debug(result) return JsonResponse(code=1, msg='移出失败, {}'.format(result.get( 'message', '')), status=status.HTTP_200_OK) try: user = request.session.get('user') logger.debug('{} 移出班级成员, class_id: {}, student_id: {}'.format( user.get('id'), pk, student_id)) except Exception as e: pass return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def finish_virtualclass(self, request, pk): virtualclass_info = VirtualclassInfo.objects.get(id=pk) finish_virtualclass_info = settings.FINISH_VIRTUALCLASS.format( virtualclass_id=virtualclass_info.id, tutor_user_id=virtualclass_info.tutor_user_id) finish_virtualclass_url = 'http://' + settings.JAVA_DOMAIN + finish_virtualclass_info params = {'reason': 0, 'remark': '数据修复'} user = request.session.get('user') result = fetch_put_api(finish_virtualclass_url, params, user_id=user.get('id')) if not result: return JsonResponse(code=1, msg='服务器错误', status=status.HTTP_200_OK) if result.get('code') != 200: return JsonResponse(code=1, msg=result.get('message'), status=status.HTTP_200_OK) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def change_appointment_tutor(self, request): start_time = request.data.get('start_time') tutor_user_id = request.data.get('tutor_user_id') absent_tutor_user_id = request.data.get('absent_tutor_user_id') change_appointment_tutor_url = 'http://' + settings.JAVA_DOMAIN + settings.CHANGE_APPOINTMENTED_TUTOR.format( tutor_user_id=tutor_user_id, absent_tutor_user_id=absent_tutor_user_id, start_time=start_time) result = utils.fetch_post_api(change_appointment_tutor_url) if result.get('code') != 200: return JsonResponse(code=1, msg='{}'.format(result.get('message', '')), status=status.HTTP_200_OK) try: user = request.session.get('user') logger.debug( 'change appointment tutor , user={}, tutor_user_id={}, absent_tutor_user_id={}' .format(user.get('id'), tutor_user_id, change_appointment_tutor_url)) except Exception as e: logger.debug('change appointment tutor fail, error='.format(e)) return JsonResponse(code=0, msg='{}'.format(result.get('message', '')), status=status.HTTP_200_OK)
def change_tutor(self, request): class_timetable_ids = request.data.get('class_timetable_ids') tutor_user_id = request.data.get('tutor_user_id') class_timetables = ScheduleClassTimeTable.objects.filter( id__in=class_timetable_ids, status=ScheduleClassTimeTable.SUCCESS_APPOINTMENT).all() end_times = [] start_times = [] class_id = None class_type_id = None user = request.session.get('user') for class_timetable in class_timetables: start_times.append(class_timetable.start_time) end_times.append(class_timetable.end_time) class_id = class_timetable.class_field_id class_type_id = class_timetable.class_field.class_type_id if start_times: change_tutor_url = 'http://' + settings.JAVA_DOMAIN + settings.SCHEDULE_CHANGE_TUTOR data = { "classId": class_id, "classTypeId": class_type_id, "endTimes": end_times, "startTimes": start_times, "tutorUserId": tutor_user_id } result = utils.fetch_post_api(change_tutor_url, data, user_id=user.get('id')) if result.get('code') != 200: return JsonResponse(code=1, msg='更换老师失败, {}'.format( result.get('message', '')), status=status.HTTP_200_OK) for class_timetable in class_timetables: virtual_class = VirtualclassInfo.objects.filter( class_field_id=class_timetable.class_field_id, start_time=class_timetable.start_time, status=VirtualclassInfo.NOT_START).first() class_timetable.virtual_class = virtual_class class_timetable.status = ScheduleClassTimeTable.SUCCESS_APPOINTMENT class_timetable.appoint_user_id = user.get('id') class_timetable.appoint_user_name = user.get('realname') class_timetable.save() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def subscribe(self, request): class_timetable_ids = request.data.get('class_timetable_ids') tutor_user_id = request.data.get('tutor_user_id') class_timetables = ScheduleClassTimeTable.objects.filter( id__in=class_timetable_ids).all() start_times, end_times = [], [] class_id = None class_type_id = None for class_timetable in class_timetables: start_times.append(class_timetable.start_time) end_times.append(class_timetable.end_time) class_id = class_timetable.class_field_id class_type_id = class_timetable.class_field.class_type_id subscribe_url = 'http://' + settings.JAVA_DOMAIN + settings.SCHEDULE_SUBSCRIBE user = request.session.get('user') data = { "classId": class_id, "classTypeId": class_type_id, "endTimes": end_times, "opType": 1, # 1:预约时间;2:取消预约 "startTimes": start_times, "tutorUserId": tutor_user_id, "opUserId": user.get('id') } result = utils.fetch_post_api(subscribe_url, data, user_id=user.get('id')) if result.get('code') != 200: return JsonResponse(code=1, msg='约课失败, {}'.format(result.get( 'message', '')), data=result.get('data', []), status=status.HTTP_200_OK) for class_timetable in class_timetables: virtual_class = VirtualclassInfo.objects.filter( class_field_id=class_timetable.class_field_id, start_time=class_timetable.start_time, status=VirtualclassInfo.NOT_START).first() class_timetable.virtual_class = virtual_class class_timetable.status = ScheduleClassTimeTable.SUCCESS_APPOINTMENT class_timetable.appoint_user_id = user.get('id') class_timetable.appoint_user_name = user.get('realname') class_timetable.save() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def timetable(self, request, pk): start_time = request.query_params.get('start_time') end_time = request.query_params.get('end_time') timetable_url = 'http://' + settings.JAVA_DOMAIN + settings.TUTOR_TIME_TABLE.format(tutor_user_id=pk, start_time=start_time, end_time=end_time) result = utils.fetch_get_api(timetable_url) if result.get('code') != 200: return JsonResponse(code=1, msg='获取教师列表失败,{}'.format(result.get('message', '')), status=status.HTTP_200_OK) return JsonResponse(code=0, msg='success', data=result.get('data'), status=status.HTTP_200_OK)
def cancle_timetable(self, request): class_timetable_ids = request.data.get('class_timetable_ids') class_time_tables = ScheduleClassTimeTable.objects.filter( id__in=class_timetable_ids).all() start_times, end_times = [], [] class_id = None class_type_id = None user = request.session.get('user') for class_timetable in class_time_tables: if class_timetable.status == ScheduleClassTimeTable.SUCCESS_APPOINTMENT: start_times.append(class_timetable.start_time) end_times.append(class_timetable.end_time) class_id = class_timetable.class_field_id class_type_id = class_timetable.class_field.class_type_id if start_times: cancel_url = 'http://' + settings.JAVA_DOMAIN + settings.SCHEDULE_SUBSCRIBE data = { "classId": class_id, "classTypeId": class_type_id, "endTimes": end_times, "opType": 2, # 1:预约时间;2:取消预约 "startTimes": start_times, "tutorUserId": 0, "opUserId": user.get('id') } result = utils.fetch_post_api(cancel_url, data, user_id=user.get('id')) if result.get('code') != 200: return JsonResponse(code=1, msg='取消课程失败, {}'.format( result.get('message', '')), data=result.get('data', []), status=status.HTTP_200_OK) for class_timetable in class_time_tables: class_timetable.appoint_user_id = user.get('id') class_timetable.appoint_user_name = user.get('realname') class_timetable.status = ScheduleClassTimeTable.CANCELD_PUBLISHED class_timetable.save() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def edite_class_level(self, request, pk): course_edition = request.data.get('course_edition') course_level = request.data.get('course_level') lesson_no = request.data.get('lesson_no') course_info = CourseInfo.objects.filter( course_edition_id=course_edition, course_level=course_level).first() if not course_info: return JsonResponse(code=1, msg='未找到匹配的课程信息', status=status.HTTP_200_OK) course_lesson = CourseLesson.objects.filter( course=course_info, lesson_no=lesson_no, status=CourseLesson.ACTIVE).first() if not course_lesson: return JsonResponse(code=1, msg='没有该节课', status=status.HTTP_200_OK) # student.course_edition_id = course_edition_id # student.course_id = course_info.id # student.course_level = course_level # student.lesson_id = course_lesson.id # student.lesson_no = lesson_no # student.save() class_level_url = 'http://' + settings.JAVA_DOMAIN + settings.UPDATE_COURSE_LEVEL.format( class_id=pk, new_edition=course_edition, new_level=course_level, new_lesson_no=lesson_no) result = requests.put(class_level_url) result = result.json() if result.get('code') != 200: return JsonResponse(code=1, msg='修改失败', status=status.HTTP_200_OK) try: user = request.session.get('user') logger.debug( 'edite class level, user={}, class_id={}, url={}'.format( user.get('id'), pk, class_level_url)) except Exception as e: logger.debug('edite class level, fail, error='.format(e)) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def impose_fine(self, request, pk): money = request.data.get('money') remark = request.data.get('remark') first_report = self.get_object() user = request.session.get('user') first_report_fine = CourseReportFine() first_report_fine.user_id = user.get('id') first_report_fine.report_id = first_report.id first_report_fine.type = CourseReportFine.FIRST_REPORT first_report_fine.money = money first_report_fine.remark = remark first_report_fine.save() now_time = timezone.now() rate = ExchangeRate.objects.filter(currency='CNY', valid_start__lte=now_time, valid_end__gt=now_time).first() balance_change = BalanceChange() balance_change.role = BalanceChange.TEACHER balance_change.user_id = first_report.tutor_user.id balance_change.reference = first_report.virtual_class.id balance_change.amount = 0 - (money/rate.rate) balance_change.reason = BalanceChange.NO_SHOW_PENALTY balance_change.adviser_user_id = user.get('id') balance_change.save() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def timetable_format_time(self, request): queryset = self.filter_queryset(self.get_queryset()).select_related( 'tutor_user').select_related('class_field').select_related( 'lesson').select_related('lesson__course').select_related( 'lesson__course__course_edition') queryset = queryset.only( 'id', 'start_time', 'lesson_id', 'tutor_user__id', 'tutor_user__username', 'tutor_user__total_number_of_class', 'tutor_user__real_name', 'tutor_user__identity_name', 'class_field__id', 'class_field__class_no', 'class_field__class_name_zh', 'class_field__class_name', 'class_field__create_user_name') serializer = self.get_serializer(queryset, many=True) data = self.add_course_lesson(serializer.data) result = {} for s in data: start_time = s.pop('start_time') if start_time in result.keys(): result[start_time].append(s) else: result[start_time] = [] result[start_time].append(s) return JsonResponse(code=0, msg='success', data=result, status=status.HTTP_200_OK)
def total_data(self, request): '''拼团成功:6团 拼团中:12团 奖励已发放:3团 总充值课时:200课时 总充值人数:60人''' '''1:启用;2:拼团成功;3:奖励已发放''' sql = ''' select IFNULL(sum(recharge_amount), 0) as recharge_amount_sum, IFNULL(count(parent_user_id), 0) as parent_user_count, agi.status, count(distinct agi.id) as status_count from activity_group_info agi left join activity_group_recharge agr on agi.id=agr.group_id group by agi.status ''' result = { 'recharge_sum': 0, 'parent_user_count': 0, '1': 0, '2': 0, '3': 0 } with connections['lingoace'].cursor() as cursor: cursor.execute(sql) rows = cursor.fetchall() for row in rows: result['recharge_sum'] = result['recharge_sum'] + row[0] result['parent_user_count'] = result['parent_user_count'] + row[1] result[row[2]] = row[3] grant_count = ActivityGroupInfo.objects.filter(grant_award=ActivityGroupInfo.GRANT).count() result['3'] = grant_count return JsonResponse(code=0, msg='success', data=result, status=status.HTTP_200_OK)
def exists(self, request): lesson_id = request.query_params.get('lesson_id') outline_info = HomeworkOutlineInfo.objects.filter( lesson_id=lesson_id, status=HomeworkOutlineInfo.NOT_FINISH).first() exist = 0 result = {'exist': exist, 'outline_id': ''} if outline_info: outline_group = HomeworkOutlineGroup.objects.filter( outline_id=outline_info.id).first() if outline_group: # 判断outline下面是否有 group 没有归档 exist = 1 result['exist'] = exist result['outline_id'] = outline_info.id else: outline_info.status = HomeworkOutlineInfo.DELETED outline_info.save() result['exist'] = exist result['outline_id'] = '' return JsonResponse(code=0, msg='success', data=result, status=status.HTTP_200_OK)
def update_outlines(self, request): outline_group_ids = request.data.get('outline_group_ids') del_outline_group_ids = request.data.get('del_outline_group_ids', []) types = request.data.get('types') qualitys = request.data.get('qualitys') lesson_id = request.data.get('lesson_id') outline_info = HomeworkOutlineInfo.objects.filter( lesson_id=lesson_id, status=HomeworkOutlineInfo.NOT_FINISH).first() length = len(outline_group_ids) for i in range(length): if outline_group_ids[i] == 'add': outline_group = HomeworkOutlineGroup() outline_group.sort_no = i + 1 outline_group.quality = qualitys[i] outline_group.type = types[i] outline_group.lesson_id = lesson_id outline_group.outline_id = outline_info.id outline_group.save() else: instance = HomeworkOutlineGroup.objects.filter( id=outline_group_ids[i]).first() instance.sort_no = i + 1 instance.quality = qualitys[i] instance.save() HomeworkOutlineGroup.objects.filter( id__in=del_outline_group_ids).delete() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def add_outlines(self, request): lesson_id = request.data.get('lesson_id') types = request.data.get('types', []) qualitys = request.data.get('qualitys', []) types_length = len(types) sort_no = 1 outline_info = HomeworkOutlineInfo() outline_info.lesson_id = lesson_id outline_info.status = HomeworkOutlineInfo.NOT_FINISH outline_info.inspection_content = '' HomeworkOutlineInfo.objects.filter( lesson_id=lesson_id, status=HomeworkOutlineInfo.NOT_FINISH).update( status=HomeworkOutlineInfo.DELETED) outline_info.save() for i in range(types_length): outline_group = HomeworkOutlineGroup() outline_group.type = types[i] outline_group.quality = qualitys[i] outline_group.lesson_id = lesson_id outline_group.outline_id = outline_info.id outline_group.sort_no = sort_no outline_group.save() sort_no = sort_no + 1 return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def details(self, request, pk): virtualclass = VirtualclassInfo.objects.filter(id=pk).first() serializer = self.get_serializer(virtualclass) return JsonResponse(code=0, msg='success', data=serializer.data, status=status.HTTP_200_OK)
def ad_hoc(self, request): month_query = request.query_params.get('month_query') start_time = request.query_params.get('start_time') end_time = request.query_params.get('end_time') cms_user_id = request.query_params.get('cms_user_id') month_begin = None month_end = None if month_query == 'this_month': month_begin, month_end = utils.getNowMonth() elif month_query == 'before_month': month_begin, month_end = utils.get_berfore_month_datetime() balance_change_sql = """SELECT fbc.amount, fbc.adviser_user_id, fbc.xg_user_id FROM finance_balance_change fbc WHERE fbc.reason={} AND ( fbc.adviser_user_id IS NOT NULL OR fbc.xg_user_id IS NOT NULL )""".format( BalanceChange.AD_HOC) if month_begin: balance_change_sql = balance_change_sql + " and fbc.create_time>='{}'".format( utils.datetime_str(month_begin)) if month_end: balance_change_sql = balance_change_sql + " and fbc.create_time<='{}'".format( utils.datetime_str(month_end)) if start_time: start_time = "{} 00:00:00".format(start_time) balance_change_sql = balance_change_sql + " and fbc.create_time>='{}'".format( start_time) if end_time: end_time = "{} 23:59:59".format(end_time) balance_change_sql = balance_change_sql + " and fbc.create_time<='{}'".format( end_time) if cms_user_id: balance_change_sql = balance_change_sql + " and (fbc.xg_user_id={} or fbc.adviser_user_id={})".format( cms_user_id, cms_user_id) with connections['lingoace'].cursor() as cursor: cursor.execute(balance_change_sql) rows = cursor.fetchall() new_student_amount = 0 old_student_amount = 0 for row in rows: if row[2]: old_student_amount = old_student_amount + row[0] elif row[1]: new_student_amount = new_student_amount + row[0] data = dict(new_student_amount=new_student_amount, old_student_amount=old_student_amount) return JsonResponse(code=0, msg='success', data=data, status=status.HTTP_200_OK)
def lessons(self, request): course_id = request.query_params.get('course_id', None) course_lessons = CourseLesson.objects.filter( course_id=course_id, status=CourseLesson.ACTIVE).all() couese_lsesson_serializer = CourseLessonListSerializer(course_lessons, many=True) return JsonResponse(code=0, msg='success', data=couese_lsesson_serializer.data)
def upload_question_img(self, request): file = request.data.get('image_file') result = upload_aws.upload_file('hw_content', file) return JsonResponse(code=0, msg='success', data=result, status=status.HTTP_200_OK)
def comment(self, request, pk): target = request.query_params.get('target') if not target or target not in ('Student', 'Tutor'): return JsonResponse(code=1, msg='参数错误', status=status.HTTP_200_OK) comments = VirtualclassComment.objects.filter(virtual_class_id=pk) result = {} comment_result = {} # 老师反馈 if target == 'Student': valuations = comments.filter(role=VirtualclassComment.TEACHER) for valuation in valuations: student_name = valuation.student_user.real_name # 被评论者姓名 if student_name not in result.keys(): result[student_name] = {} result[student_name]['rating_le'] = valuation.rating_le result[student_name]['rating_id'] = valuation.rating_id result[student_name]['rating_pk'] = valuation.rating_pk if student_name not in comment_result.keys(): comment_result[student_name] = {} comment_result[student_name]['comment'] = valuation.comment_zh comment_result[student_name][ 'commentor'] = valuation.tutor_user.__str__() elif target == 'Tutor': # 学生反馈 以学生姓名做key valuations = comments.filter(role=VirtualclassComment.STUDENT) for valuation in valuations: teacher_name = valuation.tutor_user.__str__() # 老师姓名 student_name = valuation.student_user.real_name # 学生姓名 if student_name not in result.keys(): result[student_name] = {} result[student_name]['rating_le'] = valuation.rating_le result[student_name]['rating_id'] = valuation.rating_id result[student_name]['rating_pk'] = valuation.rating_pk result[student_name]['teacher'] = teacher_name if student_name not in comment_result.keys(): comment_result[student_name] = {} comment_result[student_name]['comment'] = valuation.comment_zh comment_result[student_name]['teacher'] = teacher_name data = {'comment': comment_result, 'valuation': result} return JsonResponse(code=0, msg='success', data=data, status=status.HTTP_200_OK)
def edite_class_name(self, request, pk): class_info = ClassInfo.objects.get(id=pk) class_name_zh = request.data.get('class_name_zh') class_name = request.data.get('class_name') if class_name_zh: class_info.class_name_zh = class_name_zh if class_name: class_info.class_name = class_name class_info.save() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def details(self, request, pk): class_info = ClassInfo.objects.get(id=pk) serializers = ClassDetailsSerializer(class_info) return JsonResponse(code=0, msg='success', data=serializers.data, status=status.HTTP_200_OK)
def schedule_timetable(self, request): class_id = request.data.get('class_id') start_time_list = request.data.get('start_times') class_info = ClassInfo.objects.filter(id=class_id).first() if not class_info: return JsonResponse(code=1, msg='未找到该班级', status=status.HTTP_200_OK) user = request.session.get('user') for start_time in start_time_list: start_time = timezone.datetime.strptime( start_time, '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.UTC) start_time = start_time - timedelta(hours=8) class_time_table = ScheduleClassTimeTable.objects.filter(class_field=class_info, start_time=start_time)\ .filter(~Q(status=ScheduleClassTimeTable.CANCELD_PUBLISHED)).first() if class_time_table: continue class_time_table = ScheduleClassTimeTable() class_time_table.start_time = start_time class_time_table.end_time = start_time + timedelta( minutes=app_settings.COURSE_DURATION) class_time_table.class_field = class_info class_time_table.appoint_user_id = user.get('id') class_time_table.appoint_user_name = user.get('realname') class_time_table.status = ScheduleClassTimeTable.PUBLISHED class_time_table.save() virtual_class = VirtualclassInfo.objects.filter( class_field__id=class_info.id, start_time=class_time_table.start_time, status=VirtualclassInfo.NOT_START).first() if virtual_class: class_time_table.status = ScheduleClassTimeTable.SUCCESS_APPOINTMENT class_time_table.virtual_class_id = virtual_class.id class_time_table.save() return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def add_class_member(self, request, pk): student_id = request.data.get('student_id') if not student_id: return JsonResponse(code=1, msg='参数缺失', status=status.HTTP_200_OK) data = {"classId": pk, "userId": student_id} url = 'http://' + settings.JAVA_DOMAIN + settings.STUDENT_ADD_CLASS result = utils.fetch_post_api(url, data) if result.get('code') != 200: return JsonResponse(code=1, msg='添加失败,{}'.format(result.get('message', '')), data=result.get('data', []), status=status.HTTP_200_OK) try: user = request.session.get('user') logger.debug('{} 添加班级成员, class_id: {}, student_id: {}'.format( user.get('id'), pk, student_id)) except Exception as e: pass return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def class_members(self, request, pk): student_name = request.query_params.get('student_name') activity_code = request.query_params.get('user_source') try: class_info = ClassInfo.objects.get(id=pk) except Exception as e: logger.debug('查询班级成员出错,class_id={}, error={}'.format(pk, e)) return JsonResponse(code=1, msg='未查询到班级', status=status.HTTP_200_OK) members = ClassMember.objects.filter( class_field=class_info, role__in=(ClassMember.MONITOR, ClassMember.MEMBER)).all() members = members.select_related('student_user').select_related( 'student_user__parent_user').only( 'id', 'student_user_id', 'create_time', 'student_user__id', 'student_user__real_name', 'student_user__gender', 'student_user__birthday', 'student_user__create_time', 'student_user__parent_user__id', 'student_user__parent_user__username', 'student_user__parent_user__country_of_residence', 'student_user__parent_user__adviser_user_id') members = members.order_by('-create_time') if student_name: members = members.filter( Q(student_user__real_name__icontains=student_name) | Q(student_user__parent_user__username__icontains=student_name) | Q(student_user__parent_user__email__icontains=student_name) | Q(student_user__parent_user__phone__icontains=student_name)) if activity_code == 'bigclass': members = members.filter( student_user__parent_user__user_source__activity_code= activity_code) print(members.query) elif activity_code == 'other': members = members.filter( Q(student_user__parent_user__user_source__isnull=True) | ~Q(student_user__parent_user__user_source__activity_code= 'bigclass')) page = LargeResultsSetPagination() page_roles = page.paginate_queryset(queryset=members, request=request, view=self) members_sreializer = ClassMemberSerializer(instance=page_roles, many=True) data = self.add_adviser_user_name(members_sreializer.data) data = self.add_account_balance(data) data = self.add_user_source(data, activity_code) # return Response(roles_ser.data) # 只返回数据 return page.get_paginated_response(data) # 返回前后夜url
def revert(self, request, pk): # vc = self.get_object() vc = VirtualclassInfo.objects.filter(id=pk).first() if vc.status in (VirtualclassInfo.FINISH_NOMAL, VirtualclassInfo.FINISH_ABNOMAL): return JsonResponse(code=1, msg='已结束授课', status=status.HTTP_200_OK) if vc.virtualclass_type_id == classroom_utils.TK_CLASS_ROOM: vc.virtualclass_type_id = classroom_utils.BAIJIAYUN_ROOM else: vc.virtualclass_type_id = classroom_utils.TK_CLASS_ROOM vc.save() try: user = request.session.get('user') logger.debug( 'revert virtualclass type , user={}, virtualclass_id={}'. format(user.get('id'), pk)) except Exception as e: logger.debug('revert virtualclass type fail, error='.format(e)) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def give_out_bonus(self, request, pk): group_info = ActivityGroupInfo.objects.get(id=pk) if group_info.grant_award == ActivityGroupInfo.GRANT: return JsonResponse(code=1, msg='已发放奖励', status=status.HTTP_200_OK) group_recharges = ActivityGroupRecharge.objects.filter(group_id=group_info.id).all() if len(group_recharges) == 0: return JsonResponse(code=1, msg='没有成员,不能发放奖励', status=status.HTTP_200_OK) for group_recharge in group_recharges: order_no = group_recharge.order_no recharge_balance_change = BalanceChange.objects.filter(reference=order_no, parent_user_id=group_recharge.parent_user_id, reason=3).first() if not recharge_balance_change: logger.debug('not found recharge record where order_no={}, parent_user_id={}'.format(order_no, group_recharge.parent_user_id)) parent_user = group_recharge.parent_user balance_change = BalanceChange() balance_change.reason = BalanceChange.BONUS balance_change.adviser_user_id = parent_user.adviser_user_id balance_change.xg_user_id = parent_user.xg_user_id balance_change.amount = group_recharge.bonus_amount balance_change.normal_amount = 0 balance_change.reference = group_recharge.order_no balance_change.parent_user_id = group_recharge.parent_user_id balance_change.user_id = parent_user.id balance_change.role = BalanceChange.PARENT balance_change.balance_id = recharge_balance_change.balance_id balance_change.save() # recharge_order = RechargeOrder.objects.filter(order_no=group_recharge.order_no).first() # recharge_order.incentive_amount = group_recharge.bonus_amount # recharge_order.save() group_info.grant_award = ActivityGroupInfo.GRANT group_info.save() cms_user = request.session.get('user') logger.debug('give out bonus, user_id:{}, group_info_id:{}'.format(cms_user.get('id'), group_info.id)) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def revert_list(self, request): try: virtual_class_ids = request.data.get('virtual_class_ids') virtual_class_type = int(request.data.get('virtual_class_type')) except: return JsonResponse(code=1, msg='参数错误', status=status.HTTP_200_OK) VirtualclassInfo.objects.filter( id__in=virtual_class_ids, status__in=(VirtualclassInfo.NOT_START, VirtualclassInfo.STARTED)).update( virtualclass_type_id=virtual_class_type) try: user = request.session.get('user') logger.debug( 'revert virtualclass type , user={}, virtualclass_ids={}, virtual_class_type={}' .format(user.get('id'), ','.join(virtual_class_ids), virtual_class_type)) except Exception as e: logger.debug('revert virtualclass type fail, error='.format(e)) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def edite_class_name(self, request, pk): class_info = self.get_object() class_name = request.data.get('class_name') class_info.class_name = class_name class_info.save() try: user = request.session.get('user') logger.debug( 'edite class name, user={}, class_id={}, class_name={}'.format( user.get('id'), class_info.id, class_name)) except Exception as e: logger.debug('edite class name, fail, error='.format(e)) return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
def course_playback(self, request, pk): # vc = self.get_object() vc = VirtualclassInfo.objects.filter(id=pk).first() if vc.virtualclass_type_id == VirtualclassType.BAIJIAYUN: if not vc.bj_class_id: return JsonResponse(code=1, msg='未找到教室', status=status.HTTP_200_OK) bj_class_id = vc.bj_class_id.split(',')[0] session_mp4_record = baijiayun.playback(bj_class_id) else: if not vc.tk_class_id: return JsonResponse(code=1, msg='未找到教室', status=status.HTTP_200_OK) session_mp4_record = classroom_controller.seeze_tk_record( vc.tk_class_id) return JsonResponse(code=0, msg='success', data={ 'mp4_url': session_mp4_record, 'virtualclass_type': vc.class_type_id }, status=status.HTTP_200_OK)