修改数据格式转换方法

This commit is contained in:
z9hang 2015-01-20 17:42:18 +08:00
parent 0a33a716de
commit b949f70c64
7 changed files with 99 additions and 39 deletions

View File

@ -169,7 +169,7 @@ module Mobile
route_param :id do route_param :id do
get do get do
cs = CoursesService.new cs = CoursesService.new
course = cs.show_course params,current_user course = cs.show_course(params,(current_user.nil? ? User.find(2):current_user))
#course = Course.find(params[:id]) #course = Course.find(params[:id])
{status: 0, data: course} {status: 0, data: course}
end end
@ -196,6 +196,18 @@ module Mobile
present :status, 0 present :status, 0
end end
desc "显示课程通知"
params do
end
get "news/:id" do
cs = CoursesService.new
cs.show_course_news_authorize(current_user.nil? ? User.find(2):current_user)
news = cs.show_course_news params,current_user.nil? ? User.find(2):current_user
present :data, news, with: Mobile::Entities::News
present :status, 0
end
end end
end end

View File

@ -5,22 +5,37 @@ module Mobile
expose field do |f,opt| expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field) if f.is_a?(Hash) && f.key?(field)
f[field] f[field]
elsif f.is_a?(Hash) && !f.key?(field)
n = f[:news]
comments = f[:comments]
if n.is_a?(::News)
n.send(field) if n.respond_to?(field)
end
end end
end end
end end
#新闻标题 #新闻标题
news_expose :title news_expose :title
expose :author,using: Mobile::Entities::User do |f, opt|
n = f[:news]
n.author if n.respond_to?(:author)
end
#作者id #作者id
news_expose :author_id news_expose :author_id
#作者名 #作者名
news_expose :author_name news_expose :author_name
#新闻内容 #新闻内容
news_expose :content news_expose :description
#发布时间 #发布时间
news_expose :time news_expose :created_on
#评论数量 #评论数量
news_expose :comments_count news_expose :comments_count
#评论
news_expose :comments
end end
end end

View File

@ -1,12 +1,29 @@
module Mobile module Mobile
module Entities module Entities
class User < Grape::Entity class User < Grape::Entity
include ApplicationHelper
include ApiHelper
def self.user_expose(f) def self.user_expose(f)
expose f do |u,opt| expose f do |u,opt|
if u.is_a?(Hash) && u.key?(f) if u.is_a?(Hash) && u.key?(f)
u[f] u[f]
#else elsif u.is_a?(::User)
# u.send(f) if u.respond_to?(f) if u.respond_to?(f)
u.send(f)
else
case f
when :img_url
url_to_avatar(u)
when :gender
u.user_extensions.gender.nil? ? 0 : u.user_extensions.gender
when :work_unit
get_user_work_unit u
when :location
get_user_location u
when :brief_introduction
u.user_extensions.brief_introduction
end
end
end end
end end

View File

@ -92,7 +92,9 @@ class NewsController < ApplicationController
def show def show
cs = CoursesService.new cs = CoursesService.new
@news,@comments = cs.show_course_news params,User.current result = cs.show_course_news params,User.current
@news = result[:news]
@comments = result[:comments]
#@comments = @news.comments #@comments = @news.comments
#@comments.reverse! if User.current.wants_comments_in_reverse_order? #@comments.reverse! if User.current.wants_comments_in_reverse_order?
#modify by nwb #modify by nwb

22
app/helpers/api_helper.rb Normal file
View File

@ -0,0 +1,22 @@
module ApiHelper
#获取用户的工作单位
def get_user_work_unit user
work_unit = ""
if user.user_extensions.identity == 0 || user.user_extensions.identity == 1
work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil?
elsif user.user_extensions.identity == 3
work_unit = user.user_extensions.occupation
elsif user.user_extensions.identity == 2
work_unit = user.firstname
end
work_unit
end
#获取用户地区
def get_user_location user
location = ""
location << (user.user_extensions.location || '')
location << (user.user_extensions.location_city || '')
location
end
end

View File

@ -112,14 +112,14 @@ class CoursesService
scope = @course ? @course.news.course_visible : News.course_visible scope = @course ? @course.news.course_visible : News.course_visible
news = [] news = []
scope.each do |n| scope.each do |n|
news << {:title => n.title,:author_name => n.author.name,:author_id => n.author.id, :content => n.description,:time => format_time(n.created_on),:comments_count => n.comments_count} news << {:title => n.title,:author_name => n.author.name,:author_id => n.author.id, :description => n.description,:created_on => format_time(n.created_on),:comments_count => n.comments_count}
end end
news news
end end
#查看新闻权限验证 #查看新闻权限验证
def show_course_news_authorize(current_user,course) def show_course_news_authorize(current_user)
unless current_user.allowed_to?({:controller => 'news', :action => 'show'}, course) unless current_user.allowed_to?({:controller => 'news', :action => 'show'}, false)
raise '403' raise '403'
end end
end end
@ -129,7 +129,13 @@ class CoursesService
@news = News.find(params[:id]) @news = News.find(params[:id])
@comments = @news.comments @comments = @news.comments
@comments.reverse! if current_user.wants_comments_in_reverse_order? @comments.reverse! if current_user.wants_comments_in_reverse_order?
[@news,@comments] {:news => @news,:comments => @comments}
#comments = []
#@comments.each do |comment|
# comments << {:author_id => comment.author_id,:author_name => comment.author.name,:commont_content => comment.comments,:time => format_time(comment.created_on)}
#end
#{:title => @news.title,:author_name => @news.author.name,:author_id => @news.author.id, :description => @news.description,:created_on => format_time(@news.created_on),
# :comments_count => @news.comments_count,:comments => comments}
end end

View File

@ -3,6 +3,7 @@ class UsersService
include AccountHelper include AccountHelper
include AvatarHelper include AvatarHelper
include CoursesHelper include CoursesHelper
include ApiHelper
#将用户注册的功能函数写这里 #将用户注册的功能函数写这里
#参数约定 #参数约定
#成功返回注册后的User实例失败直接抛异常 #成功返回注册后的User实例失败直接抛异常
@ -36,11 +37,12 @@ class UsersService
ue.user_id = @user.id ue.user_id = @user.id
ue.save ue.save
end end
img_url = url_to_avatar(@user) @user
gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender #img_url = url_to_avatar(@user)
work_unit = get_user_work_unit @user #gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender
location = get_user_location @user #work_unit = get_user_work_unit @user
{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} #location = get_user_location @user
#{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction}
end end
#显示用户 #显示用户
@ -99,33 +101,17 @@ class UsersService
logger.error "[Error] avatar : users_service#edit_user ===> #{e}" logger.error "[Error] avatar : users_service#edit_user ===> #{e}"
end end
end end
img_url = url_to_avatar(@user) #img_url = url_to_avatar(@user)
gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender #gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender
work_unit = get_user_work_unit @user #work_unit = get_user_work_unit @user
location = get_user_location @user #location = get_user_location @user
{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} #{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction}
@user
end end
#获取用户的工作单位
def get_user_work_unit user
work_unit = ""
if user.user_extensions.identity == 0 || user.user_extensions.identity == 1
work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil?
elsif user.user_extensions.identity == 3
work_unit = user.user_extensions.occupation
elsif user.user_extensions.identity == 2
work_unit = user.firstname
end
work_unit
end
#获取用户地区
def get_user_location user
location = ""
location << (user.user_extensions.location || '')
location << (user.user_extensions.location_city || '')
location
end
#关注列表 #关注列表
def user_watcher params def user_watcher params