diff --git a/app/controllers/graduation_works_controller.rb b/app/controllers/graduation_works_controller.rb index 1d26a3ed1..63551cd3d 100644 --- a/app/controllers/graduation_works_controller.rb +++ b/app/controllers/graduation_works_controller.rb @@ -142,6 +142,7 @@ class GraduationWorksController < ApplicationController graduation_work.commit_time = Time.now graduation_work.update_time = Time.now graduation_work.commit_user_id = current_user.id + graduation_work.update_user_id = current_user.id graduation_work.course_id = @course.id graduation_work.group_id = @task.task_type == 2 ? @task.graduation_works.where("work_status != 0").map(&:group_id).max.to_i + 1 : 0 @@ -162,7 +163,7 @@ class GraduationWorksController < ApplicationController graduation_task_id: @task.id, project_id: graduation_work.project_id, late_penalty: graduation_work.late_penalty, work_status: graduation_work.work_status, commit_time: Time.now, update_time: Time.now, group_id: graduation_work.group_id, - commit_user_id: current_user.id) + commit_user_id: current_user.id, update_user_id: current_user.id) stu_work.save! graduation_work.attachments.each do |attachment| att = attachment.copy @@ -190,8 +191,9 @@ class GraduationWorksController < ApplicationController def edit @task_user = current_user if @task.task_type == 2 + @commit_user_id = @work.commit_user_id @work_members = @course.students.where(user_id: @task.graduation_works.where(group_id: @work.group_id).pluck(:user_id)). - order("course_members.id=#{@work.user_id} desc").includes(:course_group, user: :user_extension) + order("course_members.id=#{@work.commit_user_id} desc").includes(:course_group, user: :user_extension) end end @@ -203,7 +205,8 @@ class GraduationWorksController < ApplicationController begin @work.description = params[:description] @work.update_time = Time.now - @work.commit_user_id = current_user.id + @work.update_user_id = current_user.id + # @work.commit_user_id = current_user.id if @work.save! Attachment.associate_container(params[:attachment_ids], @work.id, @work.class) @@ -217,7 +220,7 @@ class GraduationWorksController < ApplicationController # 原成员更新描述、更新时间以及附件 @task.graduation_works.where(group_id: @work.group_id, user_id: (work_user_ids & params_user_ids)).each do |work| - work.update_attributes(update_time: Time.now, description: @work.description, commit_user_id: current_user.id) + work.update_attributes(update_time: Time.now, description: @work.description, update_user_id: current_user.id) work.attachments.destroy_all @work.attachments.each do |attachment| att = attachment.copy @@ -237,7 +240,7 @@ class GraduationWorksController < ApplicationController @task.graduation_works.where(group_id: @work.group_id, user_id: delete_user_ids). update_all(work_status: 0, description: nil, late_penalty: 0, commit_time: nil, update_time: nil, final_score: nil, teacher_score: nil, work_score: nil, project_id: 0, group_id: 0, - commit_user_id: nil) + commit_user_id: nil, update_user_id: nil) # 新增加的成员 (params_user_ids - work_user_ids).each do |user_id| @@ -246,7 +249,7 @@ class GraduationWorksController < ApplicationController stu_work.update_attributes(user_id: user_id, description: @work.description, graduation_task_id: @task.id, project_id: @work.project_id, late_penalty: @work.late_penalty, work_status: @work.work_status, commit_time: Time.now, update_time: Time.now, - group_id: @work.group_id, commit_user_id: current_user.id) + group_id: @work.group_id, commit_user_id: @work.commit_user_id, update_user_id: current_user.id) @work.attachments.each do |attachment| att = attachment.copy att.author_id = attachment.author_id diff --git a/app/models/graduation_work.rb b/app/models/graduation_work.rb index 94c2633ae..89d95300a 100644 --- a/app/models/graduation_work.rb +++ b/app/models/graduation_work.rb @@ -6,6 +6,7 @@ class GraduationWork < ApplicationRecord belongs_to :graduation_task, optional: true belongs_to :commit_user, class_name: 'User', foreign_key: :commit_user_id, optional: true + belongs_to :update_user, class_name: 'User', foreign_key: :update_user_id, optional: true has_many :attachments, as: :container, dependent: :destroy has_many :tidings, as: :container, dependent: :destroy has_many :graduation_work_scores, dependent: :destroy diff --git a/app/views/graduation_works/edit.json.jbuilder b/app/views/graduation_works/edit.json.jbuilder index 254579473..718e2f4f7 100644 --- a/app/views/graduation_works/edit.json.jbuilder +++ b/app/views/graduation_works/edit.json.jbuilder @@ -10,9 +10,13 @@ json.attachments @work.attachments do |atta| json.partial! "attachments/attachment_simple", locals: {attachment: atta, delete: @work.delete_atta(atta)} end -json.members @work_members do |member| - json.user_id member.user_id - json.user_name member.user.real_name - json.group_name member.course_group_name - json.student_id member.user.student_id +if @task.task_type == 2 + json.is_leader_work @work.user_id == @commit_user_id + json.members @work_members do |member| + json.is_leader_work @work.user_id == @commit_user_id + json.user_name member.user.real_name + json.group_name member.course_group_name + json.student_id member.user.student_id + json.is_leader member.user_id == @commit_user_id + end end \ No newline at end of file diff --git a/app/views/graduation_works/show.json.jbuilder b/app/views/graduation_works/show.json.jbuilder index efe0f52cc..669adfbe9 100644 --- a/app/views/graduation_works/show.json.jbuilder +++ b/app/views/graduation_works/show.json.jbuilder @@ -2,9 +2,12 @@ json.partial! "graduation_tasks/public_navigation", locals: {course: @course, gr json.task_type @task.task_type json.(@work, :description, :commit_time, :update_time) +json.is_leader_work @work.user_id == @work.commit_user_id if @task.task_type == 2 + json.author_name @work.user.real_name json.is_author @is_author -json.update_user_name @work.commit_user.try(:real_name) +json.commit_user_name @work.commit_user.try(:real_name) +json.update_user_name @work.update_user.try(:real_name) json.task_status @task.status #6.12 -hs json.status task_curr_status(@task, @course)[:status] json.update_atta (!@course.is_end && @task.end_time < Time.now && @task.allow_late && (@task.late_time.nil? || @task.late_time > Time.now) && @is_author) @@ -17,9 +20,11 @@ if @task.task_type == 2 && @task.base_on_project json.project_info project_info @work, @current_user, @user_course_identity end -json.work_members @work_members.each do |member| - json.user_name member.user.real_name - json.user_login member.user.login +json.work_members @work_members.each do |work| + json.user_name work.user.real_name + json.user_login work.user.login + json.work_id work.id + json.is_leader work.user_id == work.commit_user_id end diff --git a/db/migrate/20190923094220_add_update_user_id_to_graduation_works.rb b/db/migrate/20190923094220_add_update_user_id_to_graduation_works.rb new file mode 100644 index 000000000..718c6adde --- /dev/null +++ b/db/migrate/20190923094220_add_update_user_id_to_graduation_works.rb @@ -0,0 +1,6 @@ +class AddUpdateUserIdToGraduationWorks < ActiveRecord::Migration[5.2] + def change + add_column :graduation_works, :update_user_id, :integer + GraduationWork.update_all("update_user_id = commit_user_id") + end +end