动态api调整

This commit is contained in:
Yiang Gan 2016-03-30 15:51:27 +08:00
parent c8142b3ee5
commit 9cebcfdd2d
11 changed files with 199 additions and 11 deletions

View File

@ -10,6 +10,10 @@ module Mobile
require_relative 'apis/issues' require_relative 'apis/issues'
require_relative 'apis/activities' require_relative 'apis/activities'
require_relative 'apis/whomeworks' require_relative 'apis/whomeworks'
require_relative 'apis/newss'
require_relative 'apis/journal_for_messages'
require_relative 'apis/messages'
require_relative 'apis/blog_comments'
class API < Grape::API class API < Grape::API
version 'v1', using: :path version 'v1', using: :path
@ -46,6 +50,10 @@ module Mobile
mount Apis::Issues mount Apis::Issues
mount Apis::Activities mount Apis::Activities
mount Apis::Whomeworks mount Apis::Whomeworks
mount Apis::Newss
mount Apis::JournalForMessages
mount Apis::Messages
mount Apis::BlogComments
#add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'})
#add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? #add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development?

View File

@ -0,0 +1,17 @@
#coding=utf-8
module Mobile
module Apis
class BlogComments< Grape::API
resources :blog_comments do
desc "get special topic"
get ':id' do
blog = BlogComment.find params[:id]
present :blog, message, with: Mobile::Entities::BlogComment
present :status, 0
end
end
end
end
end

View File

@ -7,7 +7,7 @@ module Mobile
desc "get special issuse" desc "get special issuse"
get ':id' do get ':id' do
issue = Issue.where("project_id = ?", params[:id]) issue = Issue.find params[:id]
present :data, issue, with: Mobile::Entities::Issue present :data, issue, with: Mobile::Entities::Issue
present :status, 0 present :status, 0
end end

View File

@ -0,0 +1,17 @@
#coding=utf-8
module Mobile
module Apis
class JournalForMessages< Grape::API
resources :journal_for_messages do
desc "get special journal"
get ':id' do
jour = JournalsForMessage.find params[:id]
present :data, jour, with: Mobile::Entities::Jours
present :status, 0
end
end
end
end
end

View File

@ -0,0 +1,17 @@
#coding=utf-8
module Mobile
module Apis
class Messages< Grape::API
resources :messages do
desc "get special topic"
get ':id' do
message = Message.find params[:id]
present :data, message, with: Mobile::Entities::Message
present :status, 0
end
end
end
end
end

View File

@ -0,0 +1,17 @@
#coding=utf-8
module Mobile
module Apis
class Newss< Grape::API
resources :newss do
desc "get special news"
get ':id' do
news = News.find params[:id]
present :data, news, with: Mobile::Entities::News
present :status, 0
end
end
end
end
end

View File

@ -29,14 +29,32 @@ module Mobile
elsif ac.act_type == "Issue" elsif ac.act_type == "Issue"
ac.nil? || ac.act.nil? ? 0 : ac.act.journals.count ac.nil? || ac.act.nil? ? 0 : ac.act.journals.count
end end
when :subject
if ac.act_type == "HomeworkCommon"
ac.act.name unless ac.nil? || ac.act.nil?
elsif ac.act_type == "News" || ac.act_type == "BlogComment"
ac.act.title unless ac.nil? || ac.act.nil?
elsif ac.act_type == "Message" || ac.act_type == "Issue"
ac.act.subject unless ac.nil? || ac.act.nil?
elsif ac.act_type == "JournalsForMessage"
ac.act.private == 0 ? "留言" : "私信"
end
when :description
if ac.act_type == "HomeworkCommon" || ac.act_type == "Issue" || ac.act_type == "News"
ac.act.description unless ac.nil? || ac.act.nil?
elsif ac.act_type == "Message" || ac.act_type == "BlogComment"
ac.act.content unless ac.nil? || ac.act.nil?
end
when :latest_update
time_from_now ac.updated_at unless ac.nil?
when :activity_praise_count when :activity_praise_count
if ac.act_type == "HomeworkCommon" || ac.act_type == "News" || ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage" || ac.act_type == "Issue" if ac.act_type == "HomeworkCommon" || ac.act_type == "News" || ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage" || ac.act_type == "Issue"
ac.nil? || ac.act.nil? ? 0 : get_activity_praise_num(ac.act) ac.nil? || ac.act.nil? ? 0 : get_activity_praise_num(ac.act)
end end
when :homework_common_detail_manual #when :homework_common_detail_manual
if ac.act_type == "HomeworkCommon" # if ac.act_type == "HomeworkCommon"
ac.act.homework_detail_manual unless ac.nil? || ac.act.nil? || ac.act.homework_detail_manual.nil? # ac.act.homework_detail_manual unless ac.nil? || ac.act.nil? || ac.act.homework_detail_manual.nil?
end # end
when :course_project_name when :course_project_name
if ac.container_type == "Course" if ac.container_type == "Course"
name = (get_course(ac.container_id)).name name = (get_course(ac.container_id)).name
@ -91,10 +109,22 @@ module Mobile
end end
end end
end end
act_expose :homework_common_detail_manual #作业相关信息 expose :homework_common_detail , using: Mobile::Entities::Whomework do |a, opt| #作业相关信息
if a.act_type == "HomeworkCommon"
a.act
end
end
expose :issue_detail, using: Mobile::Entities::Issue do |a, opt| #缺陷信息
if a.act_type == "Issue"
a.act
end
end
act_expose :reply_count #回复数 act_expose :reply_count #回复数
act_expose :activity_praise_count #点赞数 act_expose :activity_praise_count #点赞数
act_expose :user_act #某个动态 #act_expose :user_act #某个动态
act_expose :subject #标题
act_expose :description #描述
act_expose :latest_update #最新更新时间
act_expose :course_project_name #课程/项目名字 act_expose :course_project_name #课程/项目名字
act_expose :activity_type_name #课程问答区/项目缺陷等 act_expose :activity_type_name #课程问答区/项目缺陷等
end end

View File

@ -0,0 +1,46 @@
module Mobile
module Entities
class BlogComment < Grape::Entity
include ApplicationHelper
include ApiHelper
def self.blog_comment_expose(f)
expose f do |u,opt|
if u.is_a?(Hash) && u.key?(f)
u[f]
elsif u.is_a?(::BlogComment)
if u.respond_to?(f)
if f == :created_at
format_time( u.send(f))
else
u.send(f)
end
else
# case f
# when :xx
# #
# end
end
end
end
end
expose :user, using: Mobile::Entities::User do |c, opt|
if c.is_a?(::BlogComment)
c.author
end
end
blog_comment_expose :blog_id
blog_comment_expose :title
blog_comment_expose :content
blog_comment_expose :comments_count
blog_comment_expose :created_at
blog_comment_expose :id
expose :blog_comment_children, using:Mobile::Entities::BlogComment do |c,opt|
if c.is_a? (::BlogComment)
c.children
end
end
end
end
end

View File

@ -4,7 +4,24 @@ module Mobile
include ApiHelper include ApiHelper
include Redmine::I18n include Redmine::I18n
def self.issue_expose(f) def self.issue_expose(f)
f expose f do |issue, opt|
if issue.is_a?(Hash) && issue.key?(f)
issue[f]
elsif issue.is_a?(::Issue)
if issue.respond_to?(f)
issue.send(f)
else
case f
when :issue_priority
get_issue_priority_api issue.priority_id
when :issue_assigned_to
(get_user(issue.assigned_to_id)).login
when :issue_status
IssueStatus.find(issue.status_id).name
end
end
end
end
end end
expose :subject expose :subject
expose :description expose :description
@ -13,7 +30,6 @@ module Mobile
issue_expose :issue_priority issue_expose :issue_priority
issue_expose :issue_assigned_to issue_expose :issue_assigned_to
issue_expose :issue_status issue_expose :issue_status
issue_expose :issue_status
end end
end end
end end

View File

@ -55,8 +55,11 @@ module Mobile
whomework_expose :evaluation_end whomework_expose :evaluation_end
whomework_expose :whomework_praise_count whomework_expose :whomework_praise_count
whomework_expose :whomework_journal_count whomework_expose :whomework_journal_count
expose :jours, using: Mobile::Entities::Jours do |f, opt| expose :journals_for_messages, using: Mobile::Entities::Jours do |f, opt|
f[:jour] if f.is_a?(Hash) && f.key?(:jour) #f[:journals_for_messages] if f.is_a?(Hash) && f.key?(:journals_for_messages)
if f.is_a?(::HomeworkCommon)
f.journals_for_messages
end
end end
end end
end end

View File

@ -240,4 +240,21 @@ module ApiHelper
return 0 return 0
end end
end end
#获取缺陷的优先级
def get_issue_priority_api value
issuetype = ""
if value == 4
issuetype = "紧急"
elsif value == 2
issuetype = "正常"
elsif value == 3
issuetype = ""
elsif value == 1
issuetype = ""
else
issuetype = "立刻"
end
end
end end