diff --git a/Gemfile b/Gemfile index 3bea83669..03dbb5785 100644 --- a/Gemfile +++ b/Gemfile @@ -51,7 +51,7 @@ gem 'elasticsearch-rails' ### profile -#gem 'oneapm_rpm' +gem 'oneapm_rpm' group :development do gem 'grape-swagger' diff --git a/Gemfile~ b/Gemfile~ deleted file mode 100644 index 334f15853..000000000 --- a/Gemfile~ +++ /dev/null @@ -1,114 +0,0 @@ -source 'https://ruby.taobao.org/' - -unless RUBY_PLATFORM =~ /w32/ - # unix-like only - gem 'iconv' - gem "rmagick", ">= 2.0.0" - gem 'certified' -end - -gem 'net-ssh', '2.9.1' -gem 'jenkins_api_client' -gem 'nokogiri' - -gem 'wechat',path: 'lib/wechat' -gem 'grack', path:'lib/grack' -gem 'gitlab', path: 'lib/gitlab-cli' -gem 'rest-client' -gem "mysql2", "= 0.3.18" -gem 'redis-rails' -gem 'rubyzip' -gem 'delayed_job_active_record'#, :group => :production -gem 'daemons' -gem 'grape', '~> 0.9.0' -gem 'grape-entity' -gem 'rack-cors', :require => 'rack/cors' -gem 'seems_rateable', '~> 1.0.13' -gem 'rails', '~> 3.2' -gem "jquery-rails", "~> 2.0.2" -gem "i18n", "~> 0.6.0" -gem 'coderay', '~> 1.1.0' -gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] -gem "builder", "3.0.0" -gem 'acts-as-taggable-on', '2.4.1' -gem 'spreadsheet' -gem 'ruby-ole' -gem 'rails_kindeditor',path:'lib/rails_kindeditor' -gem 'binding_of_caller' -gem 'chinese_pinyin' -# gem 'sunspot_rails', '~> 1.3.3' -# gem 'sunspot_solr' -# gem 'sunspot' -# gem 'progress_bar' -gem 'ansi' - -gem 'kaminari' -gem 'elasticsearch-model' -gem 'elasticsearch-rails' - - -### profile -#gem 'oneapm_rpm' - -group :development do - gem 'grape-swagger' - gem 'better_errors', '~> 1.1.0' - # gem "query_reviewer" - # gem 'rack-mini-profiler', '~> 0.9.3' - if RUBY_PLATFORM =~ /w32/ - gem 'win32console' - end -end - -group :development, :test do - unless RUBY_PLATFORM =~ /w32/ - gem 'pry-rails' - if RUBY_VERSION >= '2.0.0' - gem 'pry-byebug' - end - gem 'pry-stack_explorer' - if RUBY_PLATFORM =~ /darwin/ - gem 'puma' - end - end - - gem 'rspec-rails', '~> 3.0' - gem 'factory_girl_rails' -end - -# Gems used only for assets and not required -# in production environments by default. -group :assets do - gem 'sass-rails', '~> 3.2.3' - gem 'coffee-rails', '~> 3.2.1' - - # See https://github.com/sstephenson/execjs#readme for more supported runtimes - # gem 'therubyracer', :platforms => :ruby - - gem 'uglifier', '>= 1.0.3' -end - -# Optional gem for LDAP authentication -group :ldap do - gem "net-ldap", "~> 0.3.1" -end - - -# Optional gem for OpenID authentication -group :openid do - gem "ruby-openid", "~> 2.1.4", :require => "openid" - gem "rack-openid" -end - - -database_file = File.join(File.dirname(__FILE__), "config/database.yml") -if File.exist?(database_file) -else - warn("Please configure your config/database.yml first") -end - -# Load plugins' Gemfiles -Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file| - puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v` - instance_eval File.read(file) -end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 301417781..caabad198 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -17,7 +17,7 @@ module Mobile authenticate! cs = CoursesService.new courses = cs.user_courses_list(current_user) - present :data, courses, with: Mobile::Entities::Course + present :data, courses, with: Mobile::Entities::Course,user: current_user present :status, 0 end @@ -56,7 +56,7 @@ module Mobile class_period: params[:class_period] } courses = cs.create_course(cs_params, current_user) - present :data, courses, with: Mobile::Entities::Course + present :data, courses, with: Mobile::Entities::Course,user: current_user present :status, 0 end @@ -90,7 +90,7 @@ module Mobile end cs.edit_course_authorize(current_user,course) course = cs.edit_course(cs_params, course,current_user) - present :data, course, with: Mobile::Entities::Course + present :data, course, with: Mobile::Entities::Course,user: current_user present :status, 0 end post do @@ -138,7 +138,7 @@ module Mobile get 'search' do cs = CoursesService.new courses = cs.search_course(params,current_user.nil? ? User.find(2):current_user) - present :data, courses, with: Mobile::Entities::Course + present :data, courses, with: Mobile::Entities::Course,user: current_user present :status, 0 end @@ -193,15 +193,14 @@ module Mobile desc "返回单个课程" params do requires :id, type: Integer - optional :token, type: String + requires :token,type:String end route_param :id do get do - authenticate! + # course = Course.find(params[:id]) cs = CoursesService.new - course = cs.show_course(params,(current_user.nil? ? User.find(2):current_user)) - #course = Course.find(params[:id]) - present :data, course, with: Mobile::Entities::Course + course = cs.show_course(params,current_user) + present :data, course, with: Mobile::Entities::Course,user: current_user { status: 0} end end @@ -391,7 +390,9 @@ module Mobile end get ':course_id/exercises' do authenticate! - exercises = Course.find(params[:course_id]).exercises + + course = Course.find(params[:course_id]) + exercises = course.exercises.where("exercise_status <> 1").order("created_at desc") present :data,exercises,with:Mobile::Entities::Exercise present :status,0 end diff --git a/app/api/mobile/apis/resources.rb b/app/api/mobile/apis/resources.rb index 6dfe8e599..d5823d5b4 100644 --- a/app/api/mobile/apis/resources.rb +++ b/app/api/mobile/apis/resources.rb @@ -8,11 +8,23 @@ module Mobile desc '获取所有课件' params do requires :token, type: String + requires :page, type: Integer end - get do + post do authenticate! - data = current_user.course_attachments - present :data, data, with: Mobile::Entities::Attachment + page = params[:page] ? params[:page] : 0 + + rs = ResourcesService.new + # data = current_user.course_attachments + data = rs.all_course_attachments current_user + all_count = data.count + data = data.limit(10).offset(page * 10) + count = data.count + + present :data, data, with: Mobile::Entities::Attachment,user: current_user + present :all_count, all_count + present :count, count + present :page, page present :status, 0 end @@ -22,13 +34,24 @@ module Mobile desc '获取所有作业' params do requires :token, type: String + requires :page, type: Integer end - get 'homeworks' do + post 'homeworks' do authenticate! - homeworks = current_user.homework_commons + page = params[:page] ? params[:page] : 0 - present :data, homeworks, with: Mobile::Entities::Homework + rs = ResourcesService.new + homeworks = rs.all_homework_commons current_user + + all_count = homeworks.count + homeworks = homeworks.limit(10).offset(page * 10) + count = homeworks.count + + present :data, homeworks, with: Mobile::Entities::Homework,user: current_user + present :all_count, all_count + present :count, count + present :page, page present :status, 0 end @@ -36,12 +59,23 @@ module Mobile desc '获取所有测验' params do requires :token, type: String + requires :page, type: Integer end - get 'exercies' do + post 'exercises' do authenticate! - exercises = current_user.exercises - present :data, exercises, with: Mobile::Entities::Exercise + page = params[:page] ? params[:page] : 0 + + rs = ResourcesService.new + exercises = rs.all_exercises current_user + all_count = exercises.count + exercises = exercises.limit(10).offset(page * 10) + count = exercises.count + + present :data, exercises, with: Mobile::Entities::Exercise,user: current_user + present :all_count, all_count + present :count, count + present :page, page present :status, 0 end diff --git a/app/api/mobile/apis/syllabuses.rb b/app/api/mobile/apis/syllabuses.rb index 57db4cb9e..8538fae99 100644 --- a/app/api/mobile/apis/syllabuses.rb +++ b/app/api/mobile/apis/syllabuses.rb @@ -14,7 +14,7 @@ module Mobile cs = SyllabusesService.new courses = cs.user_syllabus(current_user) - present :data, courses, with: Mobile::Entities::Syllabus + present :data, courses, with: Mobile::Entities::Syllabus,user: current_user present :status, 0 end @@ -29,9 +29,8 @@ module Mobile sy = ::Syllabus.find(params[:id]) sy.courses = sy.courses.not_deleted - sy = ss.judge_can_setting(sy,current_user) - present :data, sy, with: Mobile::Entities::Syllabus + present :data, sy, with: Mobile::Entities::Syllabus,user: current_user present :status, 0 end @@ -68,7 +67,7 @@ module Mobile if sy.new_record? {status:-1, message: '创建大纲失败' } else - present :data, sy, with: Mobile::Entities::Syllabus + present :data, sy, with: Mobile::Entities::Syllabus,user: current_user present :status, 0 end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index a6536e73e..e34bae63f 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -41,8 +41,8 @@ module Mobile openid: openid, user: user ) - # ws = WechatService.new - # ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台", user.login, format_time(Time.now)) + ws = WechatService.new + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台", user.login, Time.now.strftime("%Y-%m-%d")) present status: 0, message: '您已成功绑定Trustie平台' end @@ -67,7 +67,8 @@ module Mobile openid: openid, user: user ) - + ws = WechatService.new + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台", user.login, Time.now.strftime("%Y-%m-%d")) present :data, user, with: Mobile::Entities::User present :status, 0 end diff --git a/app/api/mobile/entities/attachment.rb b/app/api/mobile/entities/attachment.rb index bb67b6d28..49cb6bd2b 100644 --- a/app/api/mobile/entities/attachment.rb +++ b/app/api/mobile/entities/attachment.rb @@ -2,6 +2,7 @@ module Mobile module Entities class Attachment < Grape::Entity include Redmine::I18n + include ActionView::Helpers::NumberHelper def self.attachment_expose(field) expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) @@ -17,6 +18,10 @@ module Mobile case field when :file_dir "attachments/download/" << f.send(:id).to_s << '/' + when :attafile_size + (number_to_human_size(f.filesize)).gsub("ytes", "").to_s + when :coursename + f.course.nil? ? "" : f.course.name end end end @@ -29,6 +34,8 @@ module Mobile attachment_expose :quotes attachment_expose :created_on attachment_expose :file_dir + attachment_expose :attafile_size + attachment_expose :coursename #所属班级名 end end end \ No newline at end of file diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index d44869a60..88c8ba144 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -2,6 +2,8 @@ module Mobile module Entities class Course < Grape::Entity include Redmine::I18n + include ApplicationHelper + include ApiHelper def self.course_expose(field) expose field do |f,opt| c = nil @@ -52,7 +54,28 @@ module Mobile course_expose :updated_at course_expose :course_student_num course_expose :member_count - course_expose :can_setting + expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| + current_user = options[:user] + can_setting = false + + if instance[:course] + course = instance[:course] + else + course = instance + end + + member = course.members.where("user_id=#{current_user.id} and course_id=#{course.id}")[0] + roleName = member.roles[0].name if member + + if roleName && (roleName == "TeachingAsistant" || roleName == "Teacher" ) + can_setting = true + end + + if course.tea_id == current_user.id + can_setting = true + end + can_setting + end expose :teacher, using: Mobile::Entities::User do |c, opt| if c.is_a? ::Course c.teacher diff --git a/app/api/mobile/entities/exercise.rb b/app/api/mobile/entities/exercise.rb index 3218264fb..05066f8a4 100644 --- a/app/api/mobile/entities/exercise.rb +++ b/app/api/mobile/entities/exercise.rb @@ -1,8 +1,32 @@ module Mobile module Entities class Exercise < Grape::Entity + include Redmine::I18n + include ApplicationHelper + include ApiHelper + def self.exercise_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + if field == :created_on + format_time(f[field]) + else + f[field] + end + elsif f.is_a?(::Exercise) + if f.respond_to?(field) + f.send(field) + else + case field + when :coursename + f.course.nil? ? "" : f.course.name + end + end + end + end + end expose :exercise_name expose :exercise_description + exercise_expose :coursename #所属班级名 end end end diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb index db3e44119..3f1631c96 100644 --- a/app/api/mobile/entities/homework.rb +++ b/app/api/mobile/entities/homework.rb @@ -37,6 +37,8 @@ module Mobile when :homework_anony_type val = f.homework_type == 1 && !f.homework_detail_manual.nil? val + when :coursename + f.course.nil? ? "" : f.course.name end end end @@ -94,6 +96,8 @@ module Mobile homework_expose :homework_anony_type #是否是匿评作业 + homework_expose :coursename #所属班级名 + end end end \ No newline at end of file diff --git a/app/api/mobile/entities/syllabus.rb b/app/api/mobile/entities/syllabus.rb index 4f97dd868..e4dd2e07a 100644 --- a/app/api/mobile/entities/syllabus.rb +++ b/app/api/mobile/entities/syllabus.rb @@ -1,12 +1,14 @@ module Mobile module Entities class Syllabus < Grape::Entity - include ApplicationHelper - expose :title expose :id - expose :can_setting - + expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| + current_user = options[:user] + can_setting = instance.user_id == current_user.id ? true : false + can_setting = false if instance.id.nil? + can_setting + end expose :courses, using: Mobile::Entities::Course end end diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index a6b5f09cf..fa2c87f8c 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -18,6 +18,8 @@ class AttachmentsController < ApplicationController layout "users_base" + before_filter :verify_authenticity_token, only: [:uploa] + before_filter :find_project, :only => [:show, :download, :thumbnail, :destroy, :delete_homework]#, :except => [:upload, :autocomplete] before_filter :file_readable, :read_authorize, :only => [:show, :thumbnail]#Modified by young before_filter :delete_authorize, :only => [:destroy] diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 601b9e4da..e8a08803c 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -635,6 +635,9 @@ class CoursesController < ApplicationController =end end if @course + #发送微信消息 + ss = SyllabusesService.new + ss.send_wechat_create_class_notice User.current,@course respond_to do |format| flash[:notice] = l(:notice_successful_create) format.html {redirect_to course_url(@course)} @@ -970,7 +973,7 @@ class CoursesController < ApplicationController @homework = HomeworkCommon.find params[:homework] #order("#{@order} #{@b_sort}" - @student_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("simi_value desc"),@name + @student_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("simi_value desc").has_committed,@name @works_hash = {} diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 03ed7945a..6b50c1788 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -2,7 +2,7 @@ class QualityAnalysisController < ApplicationController before_filter :find_project_by_project_id#, :except => [:getattachtype] before_filter :find_quality_analysis, :only => [:edit, :update_jenkins_job] before_filter :authorize - before_filter :connect_jenkins, :only => [:create, :edit, :update_jenkins_job, :index] + before_filter :connect_jenkins, :only => [:create, :edit, :update_jenkins_job, :index, :delete] layout "base_projects" include ApplicationHelper include QualityAnalysisHelper @@ -33,7 +33,6 @@ class QualityAnalysisController < ApplicationController arr = JSON.parse(projects_date).map {|m| m["nm"]} # eg: ["Hjqreturn:cc_rep", "Hjqreturn:putong", "Hjqreturn:sonar_rep2", "shitou:sonar_rep"] quality_an = QualityAnalysis.where(:sonar_name => sonar_name).first if @client.job.exists?(job_name) && QualityAnalysis.where(:sonar_name => sonar_name).select{|qa| arr.include?(qa.sonar_name)}.blank? - logger.info("88888888888888888888") aa = @client.job.delete("#{job_name}") quality_an.delete unless quality_an.blank? end @@ -83,8 +82,8 @@ class QualityAnalysisController < ApplicationController end end - # sonar 缓冲,取数据 - sleep(5) + # sonar 缓冲,sonar生成数据 + sleep(10) # 获取sonar output结果 console_build = @client.job.get_console_output("#{job_name}", build_num = 0, start = 0, mode = 'text')["output"] @@ -152,11 +151,31 @@ class QualityAnalysisController < ApplicationController @gitlab_default_branch = @g.project(@project.gpid).default_branch end + # 删除的时候主要删除三方面数据:1/Trustie数据 2/jenkins数据 3/sonar数据 + # 如果只删除数据1,则新建的时候会有冲突 + def delete + begin + qa = QualityAnalysis.find(params[:id]) + rep_id = Repository.where(:project_id => @project.id, :identifier => qa.rep_identifier).first.try(:id) + job_name = "#{qa.author_login}-#{rep_id}" + logger.info("result: job_name ###################==>#{job_name}") + logger.info("result: @client.job ###################==>#{@client.job}") + + d_job = @client.job.delete(job_name) + logger.info("result: delete job ###################==>#{d_job}") + qa.delete + respond_to do |format| + format.html{redirect_to project_quality_analysis_path(:project_id => @project.id)} + end + rescue Exception => e + puts e + end + end + # 更新Jenkins job,主要包括相关配置文件参数的更新,Trustie平台数据的更新 def update_jenkins_job begin rep_id = Repository.where(:project_id => @project.id).first.try(:id) - logger.error("#############################===>666") sonar_name = @quality_analysis.sonar_name job_name = "#{@quality_analysis.author_login}-#{rep_id}" version = @quality_analysis.sonar_version @@ -223,7 +242,7 @@ class QualityAnalysisController < ApplicationController if key == "sqale_index" value = com["frmt_val"] else - value = com["val"].to_i + value = com["val"] end @ha.store(key,value) end @@ -260,9 +279,11 @@ class QualityAnalysisController < ApplicationController def connect_jenkins @gitlab_address = Redmine::Configuration['gitlab_address'] @jenkins_address = Redmine::Configuration['jenkins_address'] + jenkins_username = Redmine::Configuration['jenkins_username'] + jenkins_password = Redmine::Configuration['jenkins_password'] # connect jenkins - @client = JenkinsApi::Client.new(:server_url => @jenkins_address, :username => "temp", :password => '123123') + @client = JenkinsApi::Client.new(:server_url => @jenkins_address, :username => jenkins_username, :password => jenkins_password) rescue => e logger.error("failed to connect Jenkins ==> #{e}") end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 4764d1cd7..6b41e39fc 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -38,7 +38,7 @@ class RepositoriesController < ApplicationController before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive, :quality_analysis] # 链接gitlab - before_filter :connect_gitlab, :only => [:quality_analysis, :show] + before_filter :connect_gitlab, :only => [:quality_analysis, :show, :commit_diff, :find_project_repository] # 版本库新增权限 before_filter :show_rep, :only => [:show] accept_rss_auth :revisions @@ -48,7 +48,6 @@ class RepositoriesController < ApplicationController include RepositoriesHelper helper :project_score #@root_path = RepositoriesHelper::ROOT_PATH - $g=Gitlab.client require 'net/ssh' rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed @@ -548,8 +547,8 @@ update # 每次提交对应的文件差异 def commit_diff - @commit_diff = $g.commit_diff(@project.gpid, params[:changeset]) - @commit_details = $g.commit(@project.gpid, params[:changeset]) + @commit_diff = @g.commit_diff(@project.gpid, params[:changeset]) + @commit_details = @g.commit(@project.gpid, params[:changeset]) render :layout => 'base_projects' end @@ -700,7 +699,8 @@ update (render_404; return false) unless @repository @path = params[:path].is_a?(Array) ? params[:path].join('/') : params[:path].to_s # gitlab端获取默认分支 - gitlab_branchs = $g.project(@project.gpid).default_branch + g = Gitlab.client + gitlab_branchs = g.project(@project.gpid).default_branch @project.gpid.nil? ? (@rev = params[:rev].blank? ? @repository.default_branch : params[:rev].to_s.strip) : (@rev = params[:rev].blank? ? gitlab_branchs : params[:rev].to_s.strip) @rev_to = params[:rev_to] unless @rev.to_s.match(REV_PARAM_RE) && @rev_to.to_s.match(REV_PARAM_RE) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 4c3a608de..45b54cf0a 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -110,9 +110,9 @@ class StudentWorkController < ApplicationController #status 0:答案正确 -5program_test_ex 函数出错 -4judge代码出错 -3http超时 -2:编译错误 -1:答案错误 2:程序运行超时 resultObj[:status] = -3 CodeTests.create(:homework_id=>@homework.id,:language=>@homework.homework_detail_programing.language,:status=>-3,:wait_time=>tUsedtime,:student_work_id=>student_work.id) - rescue + rescue => e #-4 judge代码 出错 - logger.debug "program_test_error 1" + logger.debug "program_test_error #{e}" resultObj[:status] = -4 tmpstatus = -4 CodeTests.create(:homework_id=>@homework.id,:language=>@homework.homework_detail_programing.language,:status=>tmpstatus,:time_used=>0,:wait_time=>0,:student_work_id=>student_work.id) @@ -197,7 +197,7 @@ class StudentWorkController < ApplicationController resultObj[:status] = 0 end student_work.save! - resultObj[:time] = student_work_test.created_at.to_s(:db) + resultObj[:time] = student_work_test.created_at.strftime(format='%Y-%m-%d %H:%M:%S') resultObj[:index] = student_work.student_work_tests.count end @@ -271,7 +271,7 @@ class StudentWorkController < ApplicationController all_studentwork = find_all_student_work_by_homeid() - @work_count = all_studentwork.count + @work_count = all_studentwork.has_committed.count end #代码查重 status: 0完成 -2不需要查重 -1查重失败不支持该语言 @@ -282,7 +282,7 @@ class StudentWorkController < ApplicationController @homework = HomeworkCommon.find params[:homework] - all_studentwork = find_all_student_work_by_homeid() + all_studentwork = find_all_student_work_by_homeid().has_committed if all_studentwork == nil resultObj[:status] = -2 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index cf703afa7..f256d7a06 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2174,6 +2174,7 @@ class UsersController < ApplicationController # 添加资源到对应的项目 def add_exist_file_to_project @flag = true + # 发送单个资源 if params[:send_id].present? send_id = params[:send_id] project_ids = params[:projects_ids] @@ -2210,6 +2211,8 @@ class UsersController < ApplicationController quotes = ori.quotes.to_i + 1 ori.update_attribute(:quotes, quotes) unless ori.nil? ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now) + # 项目中添加动态 + ForgeActivity.create(:user_id => User.current.id, :project_id => project_id, :forge_act_id => attach_copied_obj.id, :forge_act_type => "Attachment" ) end unless Project.find(project_id).project_score.nil? Project.find(project_id).project_score.update_attribute(:attach_num, @@ -2218,6 +2221,7 @@ class UsersController < ApplicationController end @ori = ori end + # 发送多个资源 elsif params[:send_ids].present? send_ids = params[:send_ids].split(",") project_ids = params[:projects_ids] @@ -2256,6 +2260,8 @@ class UsersController < ApplicationController quotes = ori.quotes.to_i + 1 ori.update_attribute(:quotes, quotes) unless ori.nil? ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now) + # 项目中添加动态 + ForgeActivity.create(:user_id => User.current.id, :project_id => project_id, :forge_act_id => attach_copied_obj.id, :forge_act_type => "Attachment" ) end unless Project.find(project_id).project_score.nil? Project.find(project_id).project_score.update_attribute(:attach_num, Project.find(project_id).project_score.attach_num + 1) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index f49398ff7..ea305d967 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -69,11 +69,21 @@ class WechatsController < ActionController::Base end on :click, with: 'DEV' do |request, key| - request.reply.text "此功能正在开发中,很快就会上线,谢谢!" + uw = user_binded?(request[:FromUserName]) + unless uw + sendBind(request) + else + request.reply.text "此功能正在开发中,很快就会上线,谢谢!" + end end # When user view URL in the menu button on :view, with: 'http://wechat.somewhere.com/view_url' do |request, view| - request.reply.text "#{request[:FromUserName]} view #{view}" + uw = user_binded?(request[:FromUserName]) + unless uw + sendBind(request) + else + request.reply.text "#{request[:FromUserName]} view #{view}" + end end # When user sent the imsage @@ -139,8 +149,8 @@ class WechatsController < ActionController::Base on :click, with: 'JOIN_CLASS' do |request, key| uw = user_binded?(request[:FromUserName]) - unless uw - sendBind(request) + unless uw + sendBind(request) else request.reply.text "请直接回复5位班级邀请码\n(不区分大小写):" end @@ -198,6 +208,9 @@ class WechatsController < ActionController::Base course = Course.where(invite_code: params[:invite_code]).first if params[:invite_code] raise "班级不存在,请确认您的邀请码是否输入正确,谢谢!" unless course + #取出用户角色类型 + role = 10 + cs = CoursesService.new status = cs.join_course({invite_code: course.invite_code}, user) logger.info status @@ -208,7 +221,7 @@ class WechatsController < ActionController::Base news = (1..1).each_with_object([]) { |n, memo| memo << { title: '恭喜您成功加入班级,开始学习吧!', content: "课程名称: #{course.name}\n班级名称: #{course.name}\n任课老师: #{course.teacher.show_name}\n进入班级,和小伙伴愉快的学习吧!"} } return request.reply.news(news) do |article, n, index| # article is return object - url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities?id='+course.id.to_s}&response_type=code&scope=snsapi_base&state=myclass#wechat_redirect" + url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities#/class?id='+course.id.to_s}&response_type=code&scope=snsapi_base&state=myclass#wechat_redirect" pic_url = "#{ROOT_URL}/images/wechat/class.jpg" article.item title: "#{n[:title]}", description: n[:content], diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1306d5625..603084cd1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -385,6 +385,7 @@ module ApplicationHelper subject = truncate(subject, :length => 60) end end + # status_id:3、已解决 5、已关闭 if issue.status_id == 3 s = link_to text, issue_path(issue), :class => "text_line_s", :title => title elsif issue.status_id == 5 @@ -1765,20 +1766,21 @@ module ApplicationHelper link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)") end + # 本次修改,修改为只显示关闭的所占%比 def progress_bar(pcts, options={}) - pcts = [pcts, pcts] unless pcts.is_a?(Array) + pcts = [pcts] unless pcts.is_a?(Array) pcts = pcts.collect(&:round) - pcts[1] = pcts[1] - pcts[0] - pcts << (100 - pcts[1] - pcts[0]) + # pcts[1] = pcts[1] + pcts[0] + pcts << (100 - pcts[0]) width = options[:width] || '100px;' legend = options[:legend] || '' content_tag('table', content_tag('tr', - (pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : ''.html_safe) + - (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : ''.html_safe) + - (pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : ''.html_safe) - ), :class => 'progress', :style => "width: #{width};").html_safe + - content_tag('p', legend, :class => 'percent').html_safe + (pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed', :title => "已关闭:#{pcts[0]}%") : ''.html_safe) + + # (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done', :title => "开发中:#{pcts[1]}%") : ''.html_safe) + + (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'todo', :title => "未完成:#{pcts[1]}%") : ''.html_safe), :style => "width: #{width}" + ), :class => 'progress').html_safe + # + content_tag('p', legend, :class => 'percent').html_safe end def checked_image(checked=true) @@ -2990,6 +2992,7 @@ int main(int argc, char** argv){ unless projects.empty? project_ids = '('+projects.map{|pro|pro.project_id}.join(',')+')' sort_projects = ForgeActivity.find_by_sql("SELECT MAX(updated_at) AS updated_at,user_id, project_id FROM forge_activities WHERE project_id IN #{project_ids} GROUP BY project_id ORDER BY MAX(updated_at) DESC") + #sort_projects = sort_projects.sort_by{|sp| (!sp.project.project_score.nil? && !sp.project.project_score.commit_time.nil?) ? '' : sp.project.project_score.commit_time} return sort_projects end end @@ -3289,7 +3292,7 @@ def strip_html(text,len=0,endss="...") ss = "" if !text.nil? && text.length>0 ss=text.gsub(/<\/?.*?>/, '').strip - ss = ss.gsub(/ /, ' ') + ss = ss.gsub(/ */, ' ') if len > 0 && ss.length > len ss = ss[0, len] + endss @@ -3303,6 +3306,7 @@ end def message_content content content = (strip_html content).strip + content = content.gsub(/\s+/, " ") if content.gsub(" ", "") == "" content = "[非文本消息]" end diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index b525c4aed..ef637d3ee 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -47,13 +47,11 @@ module RepositoriesHelper end # 获取文件目录的最新动态 - def get_trees_last_changes(project_id, rev, ent_name) - g = Gitlab.client + def get_trees_last_changes(project_id, rev, ent_name, g) begin tree_changes = g.rep_last_changes(project_id, :rev => rev, :path => ent_name) - tree_changes - rescue - logger.error("faile to get tress activities!") + rescue Exception => e + puts e end end @@ -65,7 +63,7 @@ module RepositoriesHelper # 获取diff内容行号 def diff_line_num content - content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.join("").to_i + content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.nil? ? "" : content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.join("").to_i end # 处理内容 diff --git a/app/models/changeset.rb b/app/models/changeset.rb index e05a7d2da..f72342257 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -64,14 +64,12 @@ class Changeset < ActiveRecord::Base includes(:repository => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args)) } - after_create :scan_for_issues,:refresh_changests#:be_user_score # user_score - after_update :be_user_score + # after_create :scan_for_issues,:refresh_changests#:be_user_score # user_score + # after_update :be_user_score after_destroy :down_user_score - before_create :before_create_cs - - # fq - # after_create :act_as_activity - # end + # before_create :before_create_cs + after_create :act_as_forge_activity + def revision=(r) write_attribute :revision, (r.nil? ? nil : r.to_s) @@ -117,6 +115,12 @@ class Changeset < ActiveRecord::Base self.user = repository.find_committer_user(self.committer) end + # 项目中提交动态,类型Changeset + # type:0 为老版本即Trsutie数据 1为gitlab中获取的动态 + def act_as_forge_activity + self.acts << ForgeActivity.new(:user_id => self.user_id, :project_id => self.project_id, :type => true) + end + def scan_for_issues scan_comment_for_issue_ids end diff --git a/app/models/forge_activity.rb b/app/models/forge_activity.rb index 44b13b315..47ebf4d0f 100644 --- a/app/models/forge_activity.rb +++ b/app/models/forge_activity.rb @@ -23,46 +23,52 @@ class ForgeActivity < ActiveRecord::Base after_create :add_user_activity, :add_org_activity before_destroy :destroy_user_activity, :destroy_org_activity - #在个人动态里面增加当前动态 + # 在个人动态里面增加当前动态 + # 版本库提交动态不显示在用户动态中 def add_user_activity - user_activity = UserActivity.where("act_type = '#{self.forge_act_type.to_s}' and act_id = '#{self.forge_act_id}'").first - if user_activity - user_activity.save - else - if self.forge_act_type == 'Message' && !self.forge_act.parent_id.nil? - user_activity = UserActivity.where("act_type = 'Message' and act_id = #{self.forge_act.parent.id}").first - user_activity.created_at = self.created_at + if self.forge_act_type != "Changeset" + user_activity = UserActivity.where("act_type = '#{self.forge_act_type.to_s}' and act_id = '#{self.forge_act_id}'").first + if user_activity user_activity.save else - user_activity = UserActivity.new - user_activity.act_id = self.forge_act_id - user_activity.act_type = self.forge_act_type - user_activity.container_type = "Project" - user_activity.container_id = self.project_id - user_activity.user_id = self.user_id - user_activity.save + if self.forge_act_type == 'Message' && !self.forge_act.parent_id.nil? + user_activity = UserActivity.where("act_type = 'Message' and act_id = #{self.forge_act.parent.id}").first + user_activity.created_at = self.created_at + user_activity.save + else + user_activity = UserActivity.new + user_activity.act_id = self.forge_act_id + user_activity.act_type = self.forge_act_type + user_activity.container_type = "Project" + user_activity.container_id = self.project_id + user_activity.user_id = self.user_id + user_activity.save + end end end end + # 项目提交动态不显示在组织动态中 def add_org_activity - org_activity = OrgActivity.where("org_act_type = '#{self.forge_act_type.to_s}' and org_act_id = #{self.forge_act_id}").first - if org_activity - org_activity.updated_at = self.updated_at - org_activity.save - else - if self.forge_act_type == 'Message' && !self.forge_act.parent_id.nil? - org_activity = OrgActivity.where("org_act_type = 'Message' and org_act_id = #{self.forge_act.parent.id}").first - org_activity.created_at = self.created_at + if self.forge_act_type != "Changeset" + org_activity = OrgActivity.where("org_act_type = '#{self.forge_act_type.to_s}' and org_act_id = #{self.forge_act_id}").first + if org_activity + org_activity.updated_at = self.updated_at org_activity.save else - OrgActivity.create(:user_id => self.user_id, - :org_act_id => self.forge_act_id, - :org_act_type => self.forge_act_type, - :container_id => self.project_id, - :container_type => 'Project', - :created_at => self.created_at, - :updated_at => self.updated_at) + if self.forge_act_type == 'Message' && !self.forge_act.parent_id.nil? + org_activity = OrgActivity.where("org_act_type = 'Message' and org_act_id = #{self.forge_act.parent.id}").first + org_activity.created_at = self.created_at + org_activity.save + else + OrgActivity.create(:user_id => self.user_id, + :org_act_id => self.forge_act_id, + :org_act_type => self.forge_act_type, + :container_id => self.project_id, + :container_type => 'Project', + :created_at => self.created_at, + :updated_at => self.updated_at) + end end end end diff --git a/app/models/student_work_test.rb b/app/models/student_work_test.rb index 54d5ab07a..f2a35871f 100644 --- a/app/models/student_work_test.rb +++ b/app/models/student_work_test.rb @@ -45,7 +45,7 @@ class StudentWorkTest < ActiveRecord::Base private def get_success_count self.results.inject(0) do |sum, result| - sum += (result["status"] && result["status"].to_i == 0 ? 1 : 0) + sum += (result["status"] && result["status"].class == ::Fixnum && result["status"].to_i == 0 ? 1 : 0) end || 0 end diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 7782c00a0..6da333370 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -187,10 +187,10 @@ class CoursesService else work_unit = get_user_work_unit course.teacher end - unless (course.is_public == 1 || current_user.member_of_course?(course) || current_user.admin?) - raise '403' - end - {:course => course,:work_unit => work_unit, :img_url => url_to_avatar(course),:current_user_is_member => current_user.member_of_course?(course),:current_user_is_teacher => is_course_teacher(current_user,course),:course_student_num => course ? course.student.count.to_s : 0} + # unless (course.is_public == 1 || current_user.member_of_course?(course) || current_user.admin?) + # raise '403' + # end + {:course => course,:work_unit => work_unit, :img_url => url_to_avatar(course),:current_user_is_member => current_user.nil? ? false : current_user.member_of_course?(course),:current_user_is_teacher => current_user.nil? ? false : is_course_teacher(current_user,course),:course_student_num => course ? course.student.count.to_s : 0} end #创建课程 @@ -326,8 +326,8 @@ class CoursesService define_error [ 0, '加入成功', 1, '密码错误', - 2, '课程已过期 请联系课程管理员重启课程。', - 3, '您已经加入了课程', + 2, '班级已过期 请联系班级管理员重启班级。', + 3, '您已经加入了班级', 4, '您的邀请码不正确', 5, '您还未登录', 6, '申请成功,请等待审核完毕', @@ -354,54 +354,27 @@ class CoursesService roleName = member.roles[0].name if member if params[:invite_code].present? #如果加入角色为学生 并且当前是学生 - if params[:role] == "10" && roleName == "Student" + if roleName == "Student" @state = 3 #如果加入的角色为老师,并且当前已经是老师 - elsif params[:role] == "9" && roleName == "Teacher" + elsif roleName == "Teacher" @state = 8 #如果加入的角色教辅并且当前为教辅 - elsif params[:role] == "7" && roleName == "TeachingAsistant" + elsif roleName == "TeachingAsistant" @state = 9 elsif roleName == "Manager" @state = 10 - #如果加入角色为教师或者教辅,并且当前是学生,或者是要成为教辅,当前不是教辅,或者要成为教师,当前不是教师。那么要发送请求 - elsif (params[:role] != "10" && roleName == "Student") || (params[:role] == "7" && roleName != "TeachingAsistant" ) || (params[:role] == "9" && roleName != "Teacher" ) - #如果已经发送过消息了,那么就要给个提示 - if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0 ").count != 0 - @state = 7 - else - Mailer.run.join_course_request(course, User.current, params[:role]) - CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> params[:role],:course_message_id=>User.current.id,:course_message_type=>'JoinCourseRequest',:status=>0) - @state = 6 - end - #如果加入角色是学生,但是是当前课程的教师或者教辅 - elsif params[:role] == "10" && roleName != "Student" - member.role_ids = [params[:role]] - member.save - StudentsForCourse.create(:student_id => current_user.id, :course_id => course.id) - @state = 0 end else @state = 1 end else if params[:invite_code].present? - if params[:role] == "10" || params[:role] == nil members = [] members << Member.new(:role_ids => [10], :user_id => current_user.id) course.members << members StudentsForCourse.create(:student_id => current_user.id, :course_id => course.id) @state = 0 - else - #如果已经发送过消息了,那么就要给个提示 - if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = #{params[:role]} and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0").count != 0 - @state = 7 - else - Mailer.run.join_course_request(course, User.current, params[:role]) - CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> params[:role],:course_message_id=>User.current.id,:course_message_type=>'JoinCourseRequest',:status=>0) - @state = 6 - end - end else @state = 1 end @@ -419,7 +392,7 @@ class CoursesService def homework_list params,current_user course = Course.find(params[:id]) if course.is_public != 0 || current_user.member_of_course?(course) - bids = course.homework_commons.page(params[:page] || 1).per(20).order('created_at DESC') + bids = course.homework_commons.where("publish_time <= ?",Time.now.strftime("%Y-%m-%d")).page(params[:page] || 1).per(20).order('created_at DESC') bids = bids.like(params[:name]) if params[:name].present? homeworks = [] bids.each do |bid| @@ -522,7 +495,7 @@ class CoursesService def course_attachments params result = [] course = Course.find(params[:course_id]) - attachments = course.attachments.order("created_on ") + attachments = course.attachments.where("is_publish = 1").order("created_on desc") if !params[:name].nil? && params[:name] != "" attachments.each do |atta| result << atta if atta.filename.include?(params[:name]) diff --git a/app/services/resources_service.rb b/app/services/resources_service.rb index a0fec585a..bc97437e4 100644 --- a/app/services/resources_service.rb +++ b/app/services/resources_service.rb @@ -1,7 +1,6 @@ #coding=utf-8 class ResourcesService - #发送资源到课程 def send_resource_to_course user,params send_id = params[:send_id] @@ -50,4 +49,56 @@ class ResourcesService [@ori, @flag, @save_message] end + # 我的资源-课件 已发布的 + def all_course_attachments user + + courses = user.courses.not_deleted + + courses_ids = courses.empty? ? '(-1)' :"(" + courses.map(&:id).join(",") + ")" + + attchments = Attachment.where("(author_id = #{user.id} and is_publish = 1 and container_id in #{courses_ids} and container_type = 'Course') or (container_type = 'Course' and is_publish = 1 and container_id in #{courses_ids})" ).order("created_on desc") + + # attchments.each do |v| + # course = Course.where("id=?",v.container_id).first + # v[:coursename] = course.nil? ? "未知" : course.name + # v[:attafile_size] = (number_to_human_size(v[:filesize])).gsub("ytes", "").to_s + # end + + attchments + end + + # 我的资源-作业 已发布的 + def all_homework_commons user + + courses = user.courses.not_deleted + + courses_ids = courses.empty? ? '(-1)' :"(" + courses.map(&:id).join(",") + ")" + + homeworks = HomeworkCommon.where("course_id in #{courses_ids} and publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc") + + # homeworks.each do |v| + # course = Course.where("id=?",v.course_id).first + # v[:coursename] = course.nil? ? "未知" : course.name + # end + + homeworks + end + + # 我的资源-测验 已发布的 + def all_exercises user + + courses = user.courses.not_deleted + + courses_ids = courses.empty? ? '(-1)' :"(" + courses.map(&:id).join(",") + ")" + + exercises = Exercise.where("exercise_status <> 1 and course_id in #{courses_ids}").order("created_at desc") + + # exercises.each do |v| + # course = Course.where("id=?",v.course_id).first + # v[:coursename] = course.nil? ? "未知" : course.name + # end + + exercises + end + end \ No newline at end of file diff --git a/app/services/syllabuses_service.rb b/app/services/syllabuses_service.rb index b3190182c..d5dec9f88 100644 --- a/app/services/syllabuses_service.rb +++ b/app/services/syllabuses_service.rb @@ -29,19 +29,13 @@ class SyllabusesService end #获取指定用户的课程大纲 def user_syllabus(user) - courses = CoursesService.new.user_courses_list(user) - - other = Syllabus.new(title: '未命名课程',user_id: user.id) - - courses.each do |c| - other.courses << c[:course] unless c[:course].syllabus - end - - # user.syllabuses.each do |syllabus| - # syllabus.courses = syllabus.courses.not_deleted - # end + # courses = CoursesService.new.user_courses_list(user) # - # user.syllabuses.to_a << other + # other = Syllabus.new(title: '未命名课程',user_id: user.id) + # + # courses.each do |c| + # other.courses << c[:course] unless c[:course].syllabus + # end courses = user.courses.not_deleted syllabus_ids = courses.empty? ? '(-1)' : "(" + courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")" @@ -51,12 +45,13 @@ class SyllabusesService syllabus.courses = courses.where("syllabus_id = #{syllabus.id}").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("time desc") end - syllabuses.to_a << other + # syllabuses.to_a << other + syllabuses.to_a #管理权限 can_setting - syllabuses.each do |s| - s = judge_can_setting(s,user) - end + # syllabuses.each do |s| + # s = judge_can_setting(s,user) + # end syllabuses end @@ -72,6 +67,15 @@ class SyllabusesService course.course_infos << course_info end + def send_wechat_create_class_notice user,course + count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count + if count == 0 + ws = WechatService.new + title = "恭喜您创建班级成功" + ws.create_class_notice user.id, "create_course_notice", course.id,title, course.name, user.show_name, 0, "点击查看班级详情" + end + end + #创建大纲 # params {title: '大纲名称', [{course}, {course}]} def create(user, title, courses = []) @@ -83,6 +87,7 @@ class SyllabusesService if ::Course === course course.syllabus_id = sy.id course.save! + send_wechat_create_class_notice user,course elsif Hash === course c = ::Course.new(course) c.tea_id = user.id @@ -91,6 +96,7 @@ class SyllabusesService c.is_public = 0 c.save! after_create_course(c, user) + send_wechat_create_class_notice user,c end end @@ -134,6 +140,7 @@ class SyllabusesService course.is_public = 0 course.save! after_create_course(course, user) + send_wechat_create_class_notice user,course end status = 0 end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 3169763c4..2da942ea6 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -115,7 +115,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}", + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}",#/assets/wechat/app.html#/#{type}/#{id} topcolor:"#FF0000", data:{ first: { @@ -139,11 +139,43 @@ class WechatService data end + def three_keys_template(openid, template_id, type, id, first, key1, key2, key3, remark="") + data = { + touser:openid, + template_id:template_id, + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}",#/assets/wechat/app.html#/#{type}/#{id} + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + keyword3:{ + value:key3, + color:"#707070" + }, + remark:{ + value:remark, + color:"#707070" + } + } + } + data + end + def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="") data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}", + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}", #/assets/wechat/app.html#/#{type}/#{id} topcolor:"#FF0000", data:{ first: { @@ -250,4 +282,45 @@ class WechatService end end + def create_class_notice(user_id, type, id, first, key1, key2, key3, remark="") + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = { + touser:uw.openid, + template_id:Wechat.config.create_class_notice, + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/class?id="+id.to_s, + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + keyword3:{ + value:key3, + color:"#707070" + }, + remark:{ + value:remark, + color:"#707070" + } + } + } + #data = three_keys_template uw.openid,Wechat.config.create_class_notice, type, id, first, key1, key2, key3, remark + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[wechat_create_class_notice] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end + end \ No newline at end of file diff --git a/app/views/account/about_us.html.erb b/app/views/account/about_us.html.erb index f990cd64c..a2b1c895b 100644 --- a/app/views/account/about_us.html.erb +++ b/app/views/account/about_us.html.erb @@ -1,4 +1,4 @@ -<%= stylesheet_link_tag 'new_user'%> +<%= stylesheet_link_tag 'css/public'%>