ting_model 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/README.md +41 -0
  4. data/Rakefile +1 -0
  5. data/gen_shards.rb +59 -0
  6. data/lib/extenders/album_extender.rb +9 -0
  7. data/lib/extenders/block_avatar_extender.rb +5 -0
  8. data/lib/extenders/chat_extender.rb +5 -0
  9. data/lib/extenders/class_node.rb +21 -0
  10. data/lib/extenders/comment_extender.rb +5 -0
  11. data/lib/extenders/favorite_album_extender.rb +5 -0
  12. data/lib/extenders/favorite_extender.rb +5 -0
  13. data/lib/extenders/following_extender.rb +13 -0
  14. data/lib/extenders/following_group_extender.rb +5 -0
  15. data/lib/extenders/following_tag_extender.rb +5 -0
  16. data/lib/extenders/followingx2_group_extender.rb +5 -0
  17. data/lib/extenders/inbox_extender.rb +5 -0
  18. data/lib/extenders/linkman_extender.rb +5 -0
  19. data/lib/extenders/outbox_extender.rb +5 -0
  20. data/lib/extenders/track_block_extender.rb +5 -0
  21. data/lib/extenders/track_extender.rb +5 -0
  22. data/lib/extenders/track_in_record_extender.rb +76 -0
  23. data/lib/extenders/track_picture_extender.rb +5 -0
  24. data/lib/extenders/track_record_extender.rb +5 -0
  25. data/lib/extenders/track_rich_extender.rb +5 -0
  26. data/lib/extenders/track_set_extender.rb +79 -0
  27. data/lib/extenders/track_set_rich_extender.rb +5 -0
  28. data/lib/extenders/user_tag_extender.rb +5 -0
  29. data/lib/ting_model.rb +1 -0
  30. data/lib/ting_model/advertisement.rb +5 -0
  31. data/lib/ting_model/advertisement_new.rb +4 -0
  32. data/lib/ting_model/album.rb +31 -0
  33. data/lib/ting_model/album_node.rb +9 -0
  34. data/lib/ting_model/album_origin.rb +137 -0
  35. data/lib/ting_model/album_pod.rb +8 -0
  36. data/lib/ting_model/album_podcat.rb +8 -0
  37. data/lib/ting_model/android_channel.rb +4 -0
  38. data/lib/ting_model/android_channel_binding.rb +7 -0
  39. data/lib/ting_model/announcement.rb +12 -0
  40. data/lib/ting_model/app_recommend.rb +55 -0
  41. data/lib/ting_model/application_v_category.rb +5 -0
  42. data/lib/ting_model/approve_group.rb +4 -0
  43. data/lib/ting_model/approving_track.rb +4 -0
  44. data/lib/ting_model/approving_track_log.rb +4 -0
  45. data/lib/ting_model/audit_log.rb +5 -0
  46. data/lib/ting_model/baidu_count.rb +4 -0
  47. data/lib/ting_model/bind_user.rb +7 -0
  48. data/lib/ting_model/binding_app.rb +4 -0
  49. data/lib/ting_model/biting.rb +4 -0
  50. data/lib/ting_model/black_user.rb +9 -0
  51. data/lib/ting_model/block_avatar.rb +31 -0
  52. data/lib/ting_model/block_avatar_node.rb +10 -0
  53. data/lib/ting_model/block_avatar_origin.rb +24 -0
  54. data/lib/ting_model/category.rb +20 -0
  55. data/lib/ting_model/category_icon_version.rb +12 -0
  56. data/lib/ting_model/chat.rb +31 -0
  57. data/lib/ting_model/chat_node.rb +10 -0
  58. data/lib/ting_model/chat_origin.rb +32 -0
  59. data/lib/ting_model/comment.rb +80 -0
  60. data/lib/ting_model/comment_node.rb +10 -0
  61. data/lib/ting_model/comment_origin.rb +116 -0
  62. data/lib/ting_model/dead_album.rb +8 -0
  63. data/lib/ting_model/dead_track.rb +8 -0
  64. data/lib/ting_model/dead_user.rb +7 -0
  65. data/lib/ting_model/default_follow.rb +6 -0
  66. data/lib/ting_model/delayed_album.rb +26 -0
  67. data/lib/ting_model/delayed_publish.rb +4 -0
  68. data/lib/ting_model/delayed_track.rb +43 -0
  69. data/lib/ting_model/discovery_page.rb +17 -0
  70. data/lib/ting_model/editor_recommend.rb +5 -0
  71. data/lib/ting_model/favorite.rb +59 -0
  72. data/lib/ting_model/favorite_album.rb +50 -0
  73. data/lib/ting_model/favorite_album_node.rb +9 -0
  74. data/lib/ting_model/favorite_album_origin.rb +88 -0
  75. data/lib/ting_model/favorite_node.rb +10 -0
  76. data/lib/ting_model/favorite_origin.rb +138 -0
  77. data/lib/ting_model/feed.rb +159 -0
  78. data/lib/ting_model/file_upload.rb +4 -0
  79. data/lib/ting_model/file_upload_record.rb +4 -0
  80. data/lib/ting_model/focus.rb +16 -0
  81. data/lib/ting_model/focus_album.rb +9 -0
  82. data/lib/ting_model/focus_current.rb +10 -0
  83. data/lib/ting_model/focus_track.rb +17 -0
  84. data/lib/ting_model/focus_user.rb +7 -0
  85. data/lib/ting_model/follower.rb +27 -0
  86. data/lib/ting_model/follower_node.rb +10 -0
  87. data/lib/ting_model/follower_origin.rb +34 -0
  88. data/lib/ting_model/follower_tag.rb +27 -0
  89. data/lib/ting_model/follower_tag_node.rb +10 -0
  90. data/lib/ting_model/follower_tag_origin.rb +14 -0
  91. data/lib/ting_model/followerx2_group.rb +27 -0
  92. data/lib/ting_model/followerx2_group_node.rb +10 -0
  93. data/lib/ting_model/followerx2_group_origin.rb +12 -0
  94. data/lib/ting_model/following.rb +57 -0
  95. data/lib/ting_model/following_group.rb +31 -0
  96. data/lib/ting_model/following_group_node.rb +10 -0
  97. data/lib/ting_model/following_group_origin.rb +29 -0
  98. data/lib/ting_model/following_node.rb +10 -0
  99. data/lib/ting_model/following_origin.rb +72 -0
  100. data/lib/ting_model/following_tag.rb +52 -0
  101. data/lib/ting_model/following_tag_node.rb +10 -0
  102. data/lib/ting_model/following_tag_origin.rb +59 -0
  103. data/lib/ting_model/followingx2_group.rb +31 -0
  104. data/lib/ting_model/followingx2_group_node.rb +10 -0
  105. data/lib/ting_model/followingx2_group_origin.rb +23 -0
  106. data/lib/ting_model/human_category.rb +17 -0
  107. data/lib/ting_model/human_recommend_album.rb +8 -0
  108. data/lib/ting_model/human_recommend_album_category_tag.rb +4 -0
  109. data/lib/ting_model/human_recommend_album_tag.rb +4 -0
  110. data/lib/ting_model/human_recommend_category_album.rb +7 -0
  111. data/lib/ting_model/human_recommend_category_tag.rb +6 -0
  112. data/lib/ting_model/human_recommend_category_tag_album.rb +7 -0
  113. data/lib/ting_model/human_recommend_category_tag_track.rb +11 -0
  114. data/lib/ting_model/human_recommend_category_tag_user.rb +7 -0
  115. data/lib/ting_model/human_recommend_category_track.rb +11 -0
  116. data/lib/ting_model/human_recommend_category_user.rb +7 -0
  117. data/lib/ting_model/human_recommend_tag.rb +5 -0
  118. data/lib/ting_model/human_recommend_tag_album.rb +7 -0
  119. data/lib/ting_model/human_recommend_tag_track.rb +9 -0
  120. data/lib/ting_model/human_recommend_tag_user.rb +7 -0
  121. data/lib/ting_model/human_recommend_track.rb +9 -0
  122. data/lib/ting_model/human_recommend_user.rb +7 -0
  123. data/lib/ting_model/icon_version.rb +7 -0
  124. data/lib/ting_model/inbox.rb +31 -0
  125. data/lib/ting_model/inbox_node.rb +10 -0
  126. data/lib/ting_model/inbox_origin.rb +59 -0
  127. data/lib/ting_model/latest_album.rb +9 -0
  128. data/lib/ting_model/latest_favorite.rb +10 -0
  129. data/lib/ting_model/latest_track.rb +10 -0
  130. data/lib/ting_model/linkman.rb +30 -0
  131. data/lib/ting_model/linkman_node.rb +10 -0
  132. data/lib/ting_model/linkman_origin.rb +26 -0
  133. data/lib/ting_model/liteapp.rb +7 -0
  134. data/lib/ting_model/liteapp_album.rb +4 -0
  135. data/lib/ting_model/liteapp_tag.rb +4 -0
  136. data/lib/ting_model/lover.rb +27 -0
  137. data/lib/ting_model/lover_album.rb +27 -0
  138. data/lib/ting_model/lover_album_node.rb +9 -0
  139. data/lib/ting_model/lover_album_origin.rb +39 -0
  140. data/lib/ting_model/lover_node.rb +10 -0
  141. data/lib/ting_model/lover_origin.rb +45 -0
  142. data/lib/ting_model/m_user.rb +8 -0
  143. data/lib/ting_model/message_log.rb +4 -0
  144. data/lib/ting_model/message_picture.rb +5 -0
  145. data/lib/ting_model/meta.rb +4 -0
  146. data/lib/ting_model/mixing_album.rb +7 -0
  147. data/lib/ting_model/mobad_stat.rb +9 -0
  148. data/lib/ting_model/news.rb +16 -0
  149. data/lib/ting_model/out_link.rb +7 -0
  150. data/lib/ting_model/outbox.rb +31 -0
  151. data/lib/ting_model/outbox_node.rb +10 -0
  152. data/lib/ting_model/outbox_origin.rb +59 -0
  153. data/lib/ting_model/outlink_stat.rb +4 -0
  154. data/lib/ting_model/personal_setting.rb +26 -0
  155. data/lib/ting_model/push_message.rb +4 -0
  156. data/lib/ting_model/receive_laya.rb +9 -0
  157. data/lib/ting_model/recommend_album.rb +7 -0
  158. data/lib/ting_model/recommend_category_album.rb +7 -0
  159. data/lib/ting_model/recommend_category_tag.rb +5 -0
  160. data/lib/ting_model/recommend_category_tag_album.rb +7 -0
  161. data/lib/ting_model/recommend_category_tag_track.rb +9 -0
  162. data/lib/ting_model/recommend_category_tag_user.rb +7 -0
  163. data/lib/ting_model/recommend_category_track.rb +9 -0
  164. data/lib/ting_model/recommend_category_user.rb +7 -0
  165. data/lib/ting_model/recommend_tag.rb +15 -0
  166. data/lib/ting_model/recommend_tag_album.rb +7 -0
  167. data/lib/ting_model/recommend_tag_track.rb +9 -0
  168. data/lib/ting_model/recommend_tag_user.rb +7 -0
  169. data/lib/ting_model/recommend_track.rb +9 -0
  170. data/lib/ting_model/recommend_user.rb +7 -0
  171. data/lib/ting_model/reject_reason.rb +17 -0
  172. data/lib/ting_model/report.rb +33 -0
  173. data/lib/ting_model/report_information.rb +29 -0
  174. data/lib/ting_model/search_black_uid.rb +7 -0
  175. data/lib/ting_model/search_key.rb +6 -0
  176. data/lib/ting_model/send_msg.rb +4 -0
  177. data/lib/ting_model/shards.rb +2626 -0
  178. data/lib/ting_model/sms.rb +19 -0
  179. data/lib/ting_model/special.rb +17 -0
  180. data/lib/ting_model/special_album.rb +4 -0
  181. data/lib/ting_model/special_track.rb +4 -0
  182. data/lib/ting_model/sub_app_advertisement_new.rb +4 -0
  183. data/lib/ting_model/subappad_stat.rb +9 -0
  184. data/lib/ting_model/system_configuration.rb +5 -0
  185. data/lib/ting_model/temp_blob.rb +5 -0
  186. data/lib/ting_model/track.rb +30 -0
  187. data/lib/ting_model/track_block.rb +46 -0
  188. data/lib/ting_model/track_block_node.rb +10 -0
  189. data/lib/ting_model/track_block_origin.rb +69 -0
  190. data/lib/ting_model/track_in_record.rb +27 -0
  191. data/lib/ting_model/track_in_record_node.rb +10 -0
  192. data/lib/ting_model/track_in_record_origin.rb +134 -0
  193. data/lib/ting_model/track_node.rb +9 -0
  194. data/lib/ting_model/track_origin.rb +224 -0
  195. data/lib/ting_model/track_picture.rb +32 -0
  196. data/lib/ting_model/track_picture_node.rb +10 -0
  197. data/lib/ting_model/track_picture_origin.rb +26 -0
  198. data/lib/ting_model/track_record.rb +31 -0
  199. data/lib/ting_model/track_record_node.rb +9 -0
  200. data/lib/ting_model/track_record_origin.rb +64 -0
  201. data/lib/ting_model/track_rich.rb +30 -0
  202. data/lib/ting_model/track_rich_node.rb +10 -0
  203. data/lib/ting_model/track_rich_origin.rb +31 -0
  204. data/lib/ting_model/track_set.rb +27 -0
  205. data/lib/ting_model/track_set_node.rb +9 -0
  206. data/lib/ting_model/track_set_origin.rb +147 -0
  207. data/lib/ting_model/track_set_rich.rb +30 -0
  208. data/lib/ting_model/track_set_rich_node.rb +10 -0
  209. data/lib/ting_model/track_set_rich_origin.rb +24 -0
  210. data/lib/ting_model/uid_approve_group.rb +4 -0
  211. data/lib/ting_model/upload_track_share_temp.rb +6 -0
  212. data/lib/ting_model/user_link.rb +10 -0
  213. data/lib/ting_model/user_log.rb +33 -0
  214. data/lib/ting_model/user_tag.rb +31 -0
  215. data/lib/ting_model/user_tag_node.rb +10 -0
  216. data/lib/ting_model/user_tag_origin.rb +23 -0
  217. data/lib/ting_model/user_v_category.rb +8 -0
  218. data/lib/ting_model/v_application.rb +35 -0
  219. data/lib/ting_model/v_category.rb +7 -0
  220. data/lib/ting_model/v_user.rb +7 -0
  221. data/lib/ting_model/varification_code.rb +6 -0
  222. data/lib/ting_model/web_advertisement.rb +6 -0
  223. data/lib/ting_model/web_discovery_page.rb +10 -0
  224. data/lib/ting_model/web_recommend.rb +6 -0
  225. data/lib/ting_model/weixin_account.rb +8 -0
  226. data/lib/ting_model/weixin_keyword.rb +4 -0
  227. data/lib/ting_model/weixin_monitor.rb +4 -0
  228. data/ting_model.gemspec +251 -0
  229. metadata +313 -0
@@ -0,0 +1,5 @@
1
+ class EditorRecommend < ActiveRecord::Base
2
+ self.table_name = "tb_editor_recommend" #小编推荐
3
+
4
+ attr_accessible :content, :cover_path, :end_time, :is_expired, :web_link_url, :position, :start_time, :title, :weixin_link_url
5
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../favorite_node', __FILE__)
2
+ require File.expand_path('../favorite_origin', __FILE__)
3
+
4
+ class Favorite < FavoriteOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(FavoriteNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ FavoriteNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = Favorite.gtn(r.uid)
21
+
22
+ unless r.id
23
+ r.id = Favorite.next_id
24
+ end
25
+
26
+ tir = TrackInRecord.fetch(r.track_id)
27
+ if tir
28
+ r.is_public = tir.is_public
29
+ r.track_uid = tir.uid
30
+ r.track_nickname = tir.nickname
31
+ r.track_avatar_path = tir.avatar_path
32
+ r.track_duration = tir.duration
33
+ r.title = tir.title
34
+ r.intro = tir.intro
35
+ r.duration = tir.duration
36
+ r.cover_path = tir.cover_path
37
+ r.tags = tir.tags
38
+ r.intro = tir.intro
39
+ r.play_path = tir.play_path
40
+ r.play_path_32 = tir.play_path_32
41
+ r.play_path_64 = tir.play_path_64
42
+ r.play_path_128 = tir.play_path_128
43
+ r.track_created_at = tir.created_at
44
+ r.allow_download = tir.allow_download
45
+ r.allow_comment = tir.allow_comment
46
+ r.download_path = tir.download_path
47
+ r.album_id = tir.album_id
48
+ r.album_title = tir.album_title
49
+ r.album_cover_path = tir.album_cover_path
50
+ r.category_id = tir.category_id
51
+ r.user_source = tir.user_source
52
+ end
53
+ end
54
+
55
+ before_destroy do |r|
56
+ r.class.table_name = Favorite.gtn(r.uid)
57
+ end
58
+
59
+ end
@@ -0,0 +1,50 @@
1
+ require File.expand_path('../favorite_album_node', __FILE__)
2
+ require File.expand_path('../favorite_album_origin', __FILE__)
3
+
4
+ class FavoriteAlbum < FavoriteAlbumOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(FavoriteAlbumNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ FavoriteAlbumNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = FavoriteAlbum.gtn(r.uid)
21
+
22
+ unless r.id
23
+ r.id = FavoriteAlbum.next_id
24
+ end
25
+
26
+ album = TrackSet.fetch(r.album_id)
27
+ if album
28
+ r.album_uid = album.uid
29
+ r.album_nickname = album.nickname
30
+ r.album_avatar_path = album.avatar_path
31
+ r.title = album.title
32
+ r.tags = album.tags
33
+ r.intro = album.intro
34
+ r.cover_path = album.cover_path
35
+ r.music_category = album.music_category
36
+ r.album_created_at = album.created_at
37
+ r.category_id = album.category_id
38
+ r.op_type = album.op_type
39
+ r.user_source = album.user_source
40
+ r.is_crawler = album.is_crawler
41
+ end
42
+
43
+ true
44
+ end
45
+
46
+ before_destroy do |r|
47
+ r.class.table_name = FavoriteAlbum.gtn(r.uid)
48
+ end
49
+
50
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class FavoriteAlbumNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_favorite_album_node'
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+ end
@@ -0,0 +1,88 @@
1
+ require File.expand_path('../../extenders/favorite_album_extender', __FILE__)
2
+ require File.expand_path('../track_set', __FILE__)
3
+ require File.expand_path('../lover_album', __FILE__)
4
+
5
+ class FavoriteAlbumOrigin < ActiveRecord::Base
6
+ extend FavoriteAlbumExtender
7
+
8
+ # 收藏专辑 根据uid分表
9
+ self.table_name = 'tb_favorite_album'
10
+
11
+ attr_accessible :uid,
12
+ :nickname,
13
+ :avatar_path,
14
+ :album_id,
15
+ :album_uid,
16
+ :album_nickname,
17
+ :album_avatar_path,
18
+ :op_type,
19
+ :user_source,
20
+ :is_crawler,
21
+ :title,
22
+ :tags,
23
+ :intro,
24
+ :cover_path,
25
+ :music_category,
26
+ :album_created_at,
27
+ :category_id,
28
+ :created_at,
29
+ :updated_at,
30
+ :upload_source
31
+
32
+ # uid nickname avatar_path --- 用户id 昵称 头像
33
+ # album_id album_uid album_nickname album_avatar_path --- 专辑id 用户id 昵称 头像
34
+ # op_type --- 专辑上传类型 1:自己传的 /2:转发
35
+ # user_source --- 专辑来源 1:原创 /2:采集
36
+ # is_crawler --- 专辑 是否爬虫
37
+ # title tags intro cover_path --- 专辑标题 标签 简介 封面
38
+ # music_category --- 专辑 音乐归类
39
+ # album_created_at --- 专辑创建时间
40
+ # category_id --- 专辑分类id
41
+ # upload_source --- 专辑上传自 1:iphone/2:电脑/3:android
42
+
43
+ validates :uid, presence: true
44
+
45
+ before_save do |r|
46
+ unless r.id
47
+ r.id = FavoriteAlbum.next_id
48
+ end
49
+
50
+ album = TrackSet.fetch(r.album_id)
51
+ if album
52
+ r.album_uid = album.uid
53
+ r.album_nickname = album.nickname
54
+ r.album_avatar_path = album.avatar_path
55
+ r.title = album.title
56
+ r.tags = album.tags
57
+ r.intro = album.intro
58
+ r.cover_path = album.cover_path
59
+ r.music_category = album.music_category
60
+ r.album_created_at = album.created_at
61
+ r.category_id = album.category_id
62
+ r.op_type = album.op_type
63
+ r.user_source = album.user_source
64
+ r.is_crawler = album.is_crawler
65
+ end
66
+
67
+ true
68
+ end
69
+
70
+ after_save do |r|
71
+ hash = r.attributes
72
+ hash.delete_if{|k,v| %w(id created_at updated_at).include? k }
73
+
74
+ lover = LoverAlbum.shard(r.album_id).where(uid: r.uid, album_id: r.album_id).first
75
+ unless lover
76
+ # 创建
77
+ lover = LoverAlbum.shard(r.album_id).new
78
+ end
79
+ lover.id = r.id
80
+ lover.update_attributes(hash)
81
+ end
82
+
83
+ after_destroy do |r|
84
+ lover = LoverAlbum.shard(r.album_id).where(uid: r.uid, album_id: r.album_id).first
85
+ lover.destroy if lover
86
+ end
87
+
88
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class FavoriteNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_favorite_node'
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,138 @@
1
+ require File.expand_path('../../extenders/favorite_extender', __FILE__)
2
+ require File.expand_path('../track_in_record', __FILE__)
3
+ require File.expand_path('../lover', __FILE__)
4
+
5
+ class FavoriteOrigin < ActiveRecord::Base
6
+ extend FavoriteExtender
7
+
8
+ # 喜欢声音 根据uid分表
9
+ self.table_name = 'tb_favorite'
10
+
11
+ attr_accessible :is_public, :upload_source,
12
+ :uid, :nickname, :avatar_path,
13
+ :track_id, :track_uid, :track_upload_source, :track_nickname, :track_avatar_path, :track_duration,
14
+ :user_source, :category_id,
15
+ :title, :intro,
16
+ :duration,
17
+ :download_path,
18
+ :play_path, :play_path_32, :play_path_64, :play_path_128,
19
+ :cover_path,
20
+ :cover_path_small, :cover_path_middle, :cover_path_large, :cover_path_wide,
21
+ :cover_path_60, :cover_path_86, :cover_path_640,
22
+ :tags,
23
+ :allow_download, :allow_comment,
24
+ :track_created_at, :track_updated_at,
25
+ :album_id, :album_title, :album_cover_path, :is_v,
26
+ :waveform, :upload_id
27
+
28
+ # is_public --- 是否公开
29
+ # upload_source --- 操作自 1:iphone /2:电脑 /3:android
30
+ # uid nickname avatar_path --- 用户id 昵称 头像地址
31
+ # track_id track_uid track_nickname track_avatar_path --- 声音id uid 昵称 发布者头像
32
+ # track_upload_source --- 声音上传自 1:iphone /2:电脑 /3:android
33
+ # track_duration --- 声音时长
34
+ # user_source --- 声音来源 1:原创/2:采集
35
+ # category_id --- 声音分类id
36
+ # title intro --- 声音标题 简介
37
+ # duration --- 声音时长
38
+ # download_path --- 声音下载地址
39
+ # play_path play_path_32 play_path_64 play_path_128 --- 播放地址原 32Kbps 64Kbps 128Kbps
40
+ # cover_path --- 声音封面路径原
41
+ # cover_path_small cover_path_middle cover_path_large cover_path_wide --- 未使用 50x50 100x100 180x180 400x300
42
+ # cover_path_60 cover_path_86 cover_path_640 --- 60x60 86x86 640x640
43
+ # tags --- 声音标签
44
+ # allow_download allow_comment --- 允许下载 允许评论
45
+ # track_created_at track_updated_at --- 声音创建时间 更新时间
46
+ # album_id album_title album_cover_path --- 专辑id 标题 封面
47
+ # is_v --- 声音作者是否加V
48
+ # waveform upload_id --- 声音波形 上传号
49
+
50
+ validates :uid, presence: true
51
+
52
+ before_save do |r|
53
+ unless r.id
54
+ r.id = Favorite.next_id
55
+ end
56
+
57
+ tir = TrackInRecord.fetch(r.track_id)
58
+ if tir
59
+ r.is_public = tir.is_public
60
+ r.track_uid = tir.uid
61
+ r.track_nickname = tir.nickname
62
+ r.track_avatar_path = tir.avatar_path
63
+ r.track_duration = tir.duration
64
+ r.title = tir.title
65
+ r.intro = tir.intro
66
+ r.duration = tir.duration
67
+ r.cover_path = tir.cover_path
68
+ r.tags = tir.tags
69
+ r.intro = tir.intro
70
+ r.play_path = tir.play_path
71
+ r.play_path_32 = tir.play_path_32
72
+ r.play_path_64 = tir.play_path_64
73
+ r.play_path_128 = tir.play_path_128
74
+ r.track_created_at = tir.created_at
75
+ r.allow_download = tir.allow_download
76
+ r.allow_comment = tir.allow_comment
77
+ r.download_path = tir.download_path
78
+ r.album_id = tir.album_id
79
+ r.album_title = tir.album_title
80
+ r.album_cover_path = tir.album_cover_path
81
+ r.category_id = tir.category_id
82
+ r.user_source = tir.user_source
83
+ end
84
+ end
85
+
86
+ after_save do |r|
87
+ hash = r.attributes
88
+ hash.delete_if{|k,v| %w(id created_at updated_at).include? k }
89
+
90
+ lover = Lover.shard(r.track_id).where(uid: r.uid, track_id: r.track_id).first
91
+ unless lover
92
+ # 创建
93
+ lover = Lover.shard(r.track_id).new
94
+ end
95
+ lover.id = r.id
96
+ lover.update_attributes(hash)
97
+ end
98
+
99
+ after_destroy do |r|
100
+ lover = Lover.shard(r.track_id).where(uid: r.uid, track_id: r.track_id).first
101
+ lover.destroy if lover
102
+ end
103
+
104
+ def to_topic_hash
105
+ {
106
+ created_at: self.created_at,
107
+ updated_at: self.updated_at,
108
+ id: self.id,
109
+ uid: self.uid,
110
+ nickname: self.nickname,
111
+ avatar_path: self.avatar_path,
112
+ track_id: self.track_id,
113
+ track_uid: self.track_uid,
114
+ track_nickname: self.track_nickname,
115
+ track_avatar_path: self.track_avatar_path,
116
+ track_duration: self.track_duration,
117
+ user_source: self.user_source,
118
+ category_id: self.category_id,
119
+ tags: self.tags,
120
+ title: self.title,
121
+ intro: self.intro,
122
+ cover_path: self.cover_path,
123
+ duration: self.duration,
124
+ download_path: self.download_path,
125
+ play_path: self.play_path,
126
+ play_path_128: self.play_path_128,
127
+ play_path_64: self.play_path_64,
128
+ play_path_32: self.play_path_32,
129
+ track_created_at: self.track_created_at,
130
+ allow_download: self.allow_download,
131
+ allow_comment: self.allow_comment,
132
+ album_id: self.album_id,
133
+ album_title: self.album_title,
134
+ album_cover_path: self.album_cover_path
135
+ }
136
+ end
137
+
138
+ end
@@ -0,0 +1,159 @@
1
+ class Feed < ActiveRecord::Base
2
+ self.table_name = 'tb_feed'
3
+
4
+ attr_accessible :album_id, :album_title, :track_id, :content, :play_url, :type, :uid
5
+ #老版本START
6
+ #现在未使用 获取feed的数据
7
+ def self.get_feed(uid,current_page,page_size)
8
+ begin
9
+ Yajl::Parser.parse FEED_WEB.getWebFeed(uid,current_page,page_size)
10
+ rescue Exception => e
11
+ logger.error e.message
12
+ nil
13
+ end
14
+ end
15
+
16
+ #获取feed event的数据
17
+ def self.get_feed_by_score(uid,timeLine,page_size,type=0)
18
+ begin
19
+ Yajl::Parser.parse FEED_WEB.getWebEventJson(uid,timeLine,page_size,type)
20
+ rescue Exception => e
21
+ logger.error e.message
22
+ nil
23
+ end
24
+ end
25
+ #获取feed 声音流的数据
26
+ def self.get_feed_content_by_score(uid,timeLine,page_size,type=0)
27
+ begin
28
+ Yajl::Parser.parse FEED_WEB.getContentFeedJson(uid,timeLine,page_size,type)
29
+ rescue Exception => e
30
+ logger.error e.message
31
+ nil
32
+ end
33
+ end
34
+
35
+ #删除feed
36
+ def self.del_feed(uid,id,groupIDs,type='event')
37
+ begin
38
+ FEED_WEB.delFeeds(uid,id,type,groupIDs)
39
+ rescue Exception => e
40
+ logger.error e.message
41
+ nil
42
+ end
43
+ end
44
+
45
+ #获得用户未读数量
46
+ def self.no_read_num uid
47
+ begin
48
+ FEED_WEB.getAllNoReadNum(uid)
49
+ rescue Exception => e
50
+ logger.error e.message
51
+ nil
52
+ end
53
+ end
54
+ #老版本END
55
+
56
+ #获取feed event的数据
57
+ def self.get_event_by_timeline(key,timeLine,page_size,type)
58
+ begin
59
+ Yajl::Parser.parse FEED_WEB.getWebEventJsonTimeline(key,timeLine,page_size,type)
60
+ rescue Exception => e
61
+ logger.error e.message
62
+ nil
63
+ end
64
+ end
65
+
66
+ #获取feed event的数据
67
+ def self.get_event_by_range(key,offset,limit)
68
+ begin
69
+ Yajl::Parser.parse FEED_WEB.getWebEventJsonRange(key,offset,limit)
70
+ rescue Exception => e
71
+ logger.error e.message
72
+ nil
73
+ end
74
+ end
75
+
76
+ #获取feed 声音流的数据
77
+ def self.get_track_by_timeline(key,timeLine,page_size,type)
78
+ begin
79
+ Yajl::Parser.parse FEED_WEB.getWebTrackJsonTimeline(key,timeLine,page_size,type)
80
+ rescue Exception => e
81
+ logger.error e.message
82
+ nil
83
+ end
84
+ end
85
+
86
+ #获取feed event的数据
87
+ def self.get_track_by_range(key,offset,limit)
88
+ begin
89
+ Yajl::Parser.parse FEED_WEB.getWebTrackJsonRange(key,offset,limit)
90
+ rescue Exception => e
91
+ logger.error e.message
92
+ nil
93
+ end
94
+ end
95
+ #删除feed
96
+ # @param uid 用户id
97
+ # @param feedId feed的id
98
+ # @param groupIds 分组id
99
+ # @param type feed的类型 event|sound
100
+ def self.deleteFeed(uid,feedId,groupIds,type)
101
+ begin
102
+ FEED_WEB.deleteFeed(uid,feedId,type,groupIds)
103
+ rescue Exception => e
104
+ logger.error e.message
105
+ nil
106
+ end
107
+ end
108
+
109
+ #获得用户未读数量
110
+ # @param key 用户id或者用户id+分组id
111
+ def self.no_read_num2 key
112
+ begin
113
+ FEED_WEB.getWebUnreadNumJson(key)
114
+ rescue Exception => e
115
+ logger.error e.message
116
+ nil
117
+ end
118
+ end
119
+
120
+
121
+ #现在未使用 获得feed的播放列表
122
+ def self.get_play_list uid,page_size
123
+ begin
124
+ FEED_WEB.getContentList(uid,page_size)
125
+ rescue Exception => e
126
+ logger.error e.message
127
+ nil
128
+ end
129
+ end
130
+ #去除内容,仅保留分页信息的feed
131
+ def self.get_feed_data feed,timeLine
132
+ feedData = feed["feedData"]
133
+ if feedData && feedData.length !=0
134
+ timeLine = feedData[feedData.length-1]['timeLine']
135
+ feed.store("timeLine",timeLine)
136
+ end
137
+ feed.delete "feedData"
138
+ if feed['timeLine'].nil?
139
+ feed['timeLine']=timeLine
140
+ end
141
+
142
+ feed.to_json
143
+ end
144
+ #组装所有的用户信息
145
+ def self.get_feed_uids feed
146
+ feedData = feed["feedData"]
147
+ uids = Array.new
148
+ if feedData && feedData.length !=0
149
+ feedData.each do |f|
150
+ #判断转发
151
+ if f['type'] && f['type']=='fts'
152
+ uids.push(f['toUid'])
153
+ end
154
+ uids.push(f['uid'])
155
+ end
156
+ end
157
+ uids.uniq
158
+ end
159
+ end