json.course_identity @user_course_identity
json.homework_type @homework_type
json.course_public @course.is_public == 1
json.is_end @course.is_end
json.main_category_id @main_category.try(:id)
json.main_category_name @main_category.try(:module_name)
json.category_id @category.try(:id)
json.category_name @category.try(:name)

json.homeworks @homework_commons.each do |homework|
  # homework_private = (@user_course_identity > Course::STUDENT) && !homework.is_public
  curr_status = homework_curr_status(homework, @user_course_identity, @course, @member, @member&.teacher_course_groups)
  json.homework_id homework.id
  json.name homework.name
  json.private_icon !homework.is_public
  json.status curr_status[:status]
  json.status_time curr_status[:time]
  json.time_status curr_status[:time_status]
  json.allow_late homework.allow_late
  # 只有在主目录才显示
  json.upper_category_name homework.course_second_category&.name unless params[:category]

  unless curr_status[:status].include?("未发布")
    json.commit_count studentwork_count homework, 1, @member
    json.uncommit_count studentwork_count homework, 0, @member
  end

  if @user_course_identity < Course::STUDENT
    if homework.homework_type == "practice"
      json.shixun_identifier homework.shixuns.take.try(:identifier)
    end
  elsif @user_course_identity == Course::STUDENT
    if homework.homework_type == "practice"
      shixun = homework.shixuns.take
      # json.challenge_count homework.shixuns.first.try(:challenges_count).to_i
      current_myshixun = homework.user_work(@user.id).try(:myshixun)
      myshixun = current_myshixun ? current_myshixun : shixun.myshixuns.find_by(user_id: @user.id)
      # json.game_count current_myshixun ? current_myshixun.exec_count : 0
      json.task_operation task_operation_url(myshixun, shixun)
    else
      work = homework.user_work(@user.id)
      json.work_id work.try(:id)
      json.work_status student_work_status(homework, @user.id, @course, work)
      json.un_commit_work !work.present? || work.work_status == 0
    end
  end
end

json.all_count @all_count
json.published_count @published_count
json.unpublished_count @all_count - @published_count
json.task_count @task_count