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,19 @@
1
+ class Sms < ActiveRecord::Base
2
+ self.table_name = 'tb_sms' #短信信息表
3
+
4
+ attr_accessible :status, :photo_num, :msg_type, :content, :create_at, :received_at, :submited_at, :report_status, :phone_type
5
+
6
+ def msg_type_display
7
+ case self.msg_type
8
+ when 2
9
+ "修改密码"
10
+ when 3
11
+ "绑定"
12
+ when 4
13
+ "注册"
14
+ else
15
+ ""
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,17 @@
1
+ class Special < ActiveRecord::Base
2
+ self.table_name = 'tb_special' # 专题
3
+ attr_accessible :content_type, :cover_path_big, :cover_path_small, :intro, :is_goto_index, :is_publish, :title, :uid, :released_at
4
+
5
+ # content_type --- 1:专辑 2:声音
6
+ # cover_path_big --- 大图
7
+ # cover_path_small --- 小图
8
+ # intro --- 导语
9
+ # is_goto_index --- 是否参与首页显示
10
+ # is_publish --- 是否发布
11
+ # title --- 标题
12
+ # uid --- 小编uid
13
+ # released_at --- 第一次发布于时间
14
+
15
+ ContentType = {album:1,track:2}
16
+
17
+ end
@@ -0,0 +1,4 @@
1
+ class SpecialAlbum < ActiveRecord::Base
2
+ self.table_name = 'tb_special_album' # 专题下专辑
3
+ attr_accessible :album_id, :cover_path, :intro, :order_num, :special_id, :title
4
+ end
@@ -0,0 +1,4 @@
1
+ class SpecialTrack < ActiveRecord::Base
2
+ self.table_name = 'tb_special_track' # 专题下声音
3
+ attr_accessible :cover_path, :intro, :order_num, :special_id, :title, :track_id
4
+ end
@@ -0,0 +1,4 @@
1
+ class SubAppAdvertisementNew < ActiveRecord::Base
2
+ self.table_name = "tb_sub_app_advertisement_new"
3
+ attr_accessible :advertisement_new_id, :sub_app_id
4
+ end
@@ -0,0 +1,9 @@
1
+ class SubappadStat < ActiveRecord::Base
2
+ self.table_name = 'tb_subappad_stat' # 子APP广告统计
3
+ attr_accessible :day_at, :jts, :subappad_id, :uniq_ips
4
+
5
+ # day_at --- 某天
6
+ # jts --- 点击数
7
+ # subappad_id --- 子APP广告id
8
+ # uniq_ips --- ip数
9
+ end
@@ -0,0 +1,5 @@
1
+ class SystemConfiguration < ActiveRecord::Base
2
+ self.table_name = 'tb_system_configuration' #系统配置信息
3
+ attr_accessible :content, :name, :remark, :type
4
+ validates :content, :name, :remark, :con_type, presence: true
5
+ end
@@ -0,0 +1,5 @@
1
+ class TempBlob < ActiveRecord::Base
2
+ self.table_name = 'tb_temp_blob'
3
+
4
+ attr_accessible :file_blob
5
+ end
@@ -0,0 +1,30 @@
1
+ require File.expand_path('../track_node', __FILE__)
2
+ require File.expand_path('../track_origin', __FILE__)
3
+
4
+ class Track < TrackOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(TrackNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.stn(key)
11
+ self.table_name = self.gtn(key)
12
+ self
13
+ end
14
+
15
+ def self.gtn(key)
16
+ TrackNode.seek(key).table_name
17
+ end
18
+
19
+ before_save do |r|
20
+ unless r.id
21
+ r.id = Track.next_id
22
+ end
23
+ r.class.table_name = Track.gtn(r.id)
24
+ end
25
+
26
+ before_destroy do |r|
27
+ r.class.table_name = Track.gtn(r.id)
28
+ end
29
+
30
+ end
@@ -0,0 +1,46 @@
1
+ require File.expand_path('../track_block_node', __FILE__)
2
+ require File.expand_path('../track_block_origin', __FILE__)
3
+
4
+ class TrackBlock < TrackBlockOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(TrackBlockNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ TrackBlockNode.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 = TrackBlock.gtn(r.track_id)
21
+
22
+ unless r.id
23
+ r.id = TrackBlock.next_id
24
+ end
25
+
26
+ # 如果播放时长被赋值,没有块记录,设置块
27
+ if r.duration and r.blocks.nil?
28
+ b = (r.duration / MIN_SECONDS_PER_BLOCK + 1).to_i # 块数
29
+ b = TRACK_MAX_BLOCKS if b > TRACK_MAX_BLOCKS
30
+
31
+ sec_per_block = r.duration / b # 每秒长度
32
+ flags = []
33
+ b.times do |i|
34
+ flags << "%5.3f" % (sec_per_block * i)
35
+ end
36
+
37
+ r.blocks = b
38
+ r.flags = flags.join(',')
39
+ end
40
+ end
41
+
42
+ before_destroy do |r|
43
+ r.class.table_name = TrackBlock.gtn(r.track_id)
44
+ end
45
+
46
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class TrackBlockNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_track_block_node' # 声音记录分表节点
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,69 @@
1
+ require File.expand_path('../../extenders/track_block_extender', __FILE__)
2
+
3
+ class TrackBlockOrigin < ActiveRecord::Base
4
+ extend TrackBlockExtender
5
+
6
+ TRACK_MAX_BLOCKS = 30 # 播放彩条分块
7
+ MIN_SECONDS_PER_BLOCK = 2 # 彩条分块每块默认几秒
8
+
9
+ # 声音块 根据track_id分表
10
+ self.table_name = 'tb_track_block'
11
+
12
+ attr_accessible :track_id,
13
+ :duration,
14
+ :blocks,
15
+ :flags,
16
+ :b0, :b1, :b2, :b3, :b4, :b5, :b6, :b7, :b8, :b9, :b10,
17
+ :b11, :b12, :b13, :b14, :b15, :b16, :b17, :b18, :b19, :b20,
18
+ :b21, :b22, :b23, :b24, :b25, :b26, :b27, :b28, :b29
19
+
20
+ # track_id --- 声音id
21
+ # duration --- 时长
22
+ # blocks --- 块数
23
+ # flags --- 逐块起始秒数 0.000,1.234,5.678
24
+ # b{n} --- 第n块评论数
25
+
26
+ validates :track_id, presence: true
27
+
28
+ def get_block_idx_by_second(second)
29
+ if second
30
+ second = second.to_i
31
+ next_flag = self.flags.split(',').map{|s| s.to_f}.index{|x| x > second}
32
+ return next_flag ? next_flag - 1 : self.blocks - 1
33
+ end
34
+
35
+ nil
36
+ end
37
+
38
+ # 更新评论数
39
+ def increase_by_second(second, inc = 1)
40
+ idx = self.get_block_idx_by_second(second)
41
+ if idx
42
+ col = "b#{idx}"
43
+ count = self.send(col) + inc
44
+ self.update_attributes(col.to_sym => (count >= 0 ? count : 0))
45
+ end
46
+ end
47
+
48
+ before_save do |r|
49
+ unless r.id
50
+ r.id = TrackBlock.next_id
51
+ end
52
+
53
+ # 如果播放时长被赋值,没有块记录,设置块
54
+ if r.duration and r.blocks.nil?
55
+ b = (r.duration / MIN_SECONDS_PER_BLOCK + 1).to_i # 块数
56
+ b = TRACK_MAX_BLOCKS if b > TRACK_MAX_BLOCKS
57
+
58
+ sec_per_block = r.duration / b # 每秒长度
59
+ flags = []
60
+ b.times do |i|
61
+ flags << "%5.3f" % (sec_per_block * i)
62
+ end
63
+
64
+ r.blocks = b
65
+ r.flags = flags.join(',')
66
+ end
67
+ end
68
+
69
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../track_in_record_node', __FILE__)
2
+ require File.expand_path('../track_in_record_origin', __FILE__)
3
+
4
+ class TrackInRecord < TrackInRecordOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(TrackInRecordNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ TrackInRecordNode.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 = TrackInRecord.gtn(r.track_id)
21
+ end
22
+
23
+ before_destroy do |r|
24
+ r.class.table_name = TrackInRecord.gtn(r.track_id)
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class TrackInRecordNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_track_in_record_node' # 声音记录分表节点
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,134 @@
1
+ require File.expand_path('../../extenders/track_in_record_extender', __FILE__)
2
+
3
+ class TrackInRecordOrigin < ActiveRecord::Base
4
+ extend TrackInRecordExtender
5
+ # 声音记录 根据track_id分表
6
+
7
+ self.table_name = 'tb_track_record'
8
+
9
+ attr_accessible :track_id,
10
+ :track_uid,
11
+ :track_upload_source,
12
+ :op_type,
13
+ :is_publish,
14
+ :upload_source,
15
+ :uid, :nickname, :avatar_path, :is_v, :human_category_id,
16
+ :title, :intro,
17
+ :user_source,
18
+ :category_id,
19
+ :duration,
20
+ :play_path, :play_path_32, :play_path_64, :play_path_128,
21
+ :transcode_state,
22
+ :download_path,
23
+ :cover_path,
24
+ :album_id, :album_title,
25
+ :album_cover_path,
26
+ :tags, :ignore_tags, :extra_tags,
27
+ :singer, :singer_category, :author,
28
+ :composer, :arrangement, :post_production,
29
+ :lyric, :lyric_path,
30
+ :language, :resinger, :announcer,
31
+ :is_public, :access_password,
32
+ :allow_download, :allow_comment,
33
+ :is_crawler, :inet_aton_ip, :longitude, :latitude,
34
+ :music_category, :order_num, :is_pick,
35
+ :rich_intro, :short_intro, :comment_content, :comment_id,
36
+ :dig_status, :approved_at,
37
+ :is_deleted,
38
+ :mp3size, :mp3size_32, :mp3size_64, :waveform,
39
+ :created_at, :updated_at, :upload_id, :id,
40
+ :source_url, :status, :explore_height, :download_size
41
+
42
+
43
+ # op_type --- 1:自己传的 /2:转发(根据原track产生又一条record记录)
44
+ # track_id track_upload_source --- 声音id 上传源
45
+ # track_uid --- 声音用户id
46
+ # comment_content --- 转发时输入的评论
47
+
48
+ validates :track_id, presence: true
49
+
50
+ OP_TYPE = { UPLOAD: 1, RELAY: 2 }
51
+
52
+ after_save do |r|
53
+ TrackInRecord.del_cache(r)
54
+ end
55
+
56
+ after_destroy do |r|
57
+ TrackInRecord.del_cache(r)
58
+ end
59
+
60
+ def self.hashlize(obj)
61
+ {
62
+ id: obj.id,
63
+ track_id: obj.track_id,
64
+ uid: obj.uid,
65
+ op_type: obj.op_type,
66
+ nickname: obj.nickname,
67
+ avatar_path: obj.avatar_path,
68
+ is_v: obj.is_v,
69
+ is_public: obj.is_public,
70
+ is_publish: obj.is_publish,
71
+ user_source: obj.user_source,
72
+ category_id: obj.category_id,
73
+ title: obj.title,
74
+ intro: obj.intro,
75
+ tags: obj.tags,
76
+ cover_path: obj.cover_path,
77
+ duration: obj.duration,
78
+ download_path: obj.download_path,
79
+ play_path: obj.play_path,
80
+ play_path_128: obj.play_path_128,
81
+ play_path_64: obj.play_path_64,
82
+ play_path_32: obj.play_path_32,
83
+ singer: obj.singer,
84
+ singer_category: obj.singer_category,
85
+ author: obj.author,
86
+ composer: obj.composer,
87
+ arrangement: obj.arrangement,
88
+ post_production: obj.post_production,
89
+ lyric: obj.lyric,
90
+ lyric_path: obj.lyric_path,
91
+ language: obj.language,
92
+ resinger: obj.resinger,
93
+ announcer: obj.announcer,
94
+ access_password: obj.access_password,
95
+ allow_download: obj.allow_download,
96
+ allow_comment: obj.allow_comment,
97
+ is_crawler: obj.is_crawler,
98
+ inet_aton_ip: obj.inet_aton_ip,
99
+ upload_source: obj.upload_source,
100
+ longitude: obj.longitude,
101
+ latitude: obj.latitude,
102
+ album_id: obj.album_id,
103
+ album_title: obj.album_title,
104
+ album_cover_path: obj.album_cover_path,
105
+ transcode_state: obj.transcode_state,
106
+ created_at: obj.created_at,
107
+ updated_at: obj.updated_at,
108
+ rich_intro: obj.rich_intro,
109
+ comment_content: obj.comment_content,
110
+ comment_id: obj.comment_id,
111
+ track_upload_source: obj.track_upload_source,
112
+ is_pick: obj.is_pick,
113
+ track_uid: obj.track_uid,
114
+ short_intro: obj.short_intro,
115
+ is_deleted: obj.is_deleted,
116
+ dig_status: obj.dig_status,
117
+ approved_at: obj.approved_at,
118
+ mp3size: obj.mp3size,
119
+ mp3size_32: obj.mp3size_32,
120
+ mp3size_64: obj.mp3size_64,
121
+ upload_id: obj.upload_id,
122
+ waveform: obj.waveform,
123
+ extra_tags: obj.extra_tags,
124
+ ignore_tags: obj.ignore_tags,
125
+ music_category: obj.music_category,
126
+ order_num: obj.order_num,
127
+ source_url: obj.source_url,
128
+ status: obj.status,
129
+ human_category_id: obj.human_category_id,
130
+ explore_height: obj.explore_height
131
+ }
132
+ end
133
+
134
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class TrackNode < ActiveRecord::Base
4
+ extend ClassNode
5
+ self.table_name = 'tb_track_node' # 声音分表节点
6
+
7
+ attr_accessible :node, :table_name, :class_name
8
+
9
+ end
@@ -0,0 +1,224 @@
1
+ require File.expand_path('../../extenders/track_extender', __FILE__)
2
+
3
+ class TrackOrigin < ActiveRecord::Base
4
+ extend TrackExtender
5
+ # 声音 根据id分表
6
+ self.table_name = 'tb_track'
7
+
8
+ attr_accessible :is_publish,
9
+ :upload_source,
10
+ :uid, :nickname, :avatar_path, :is_v, :human_category_id,
11
+ :title, :intro,
12
+ :user_source,
13
+ :category_id,
14
+ :duration,
15
+ :download_path,
16
+ :play_path, :play_path_32, :play_path_64, :play_path_128,
17
+ :transcode_state,
18
+ :cover_path,
19
+ :album_id, :album_title,
20
+ :album_cover_path,
21
+ :tags, :ignore_tags, :extra_tags,
22
+ :singer, :singer_category, :author,
23
+ :composer, :arrangement, :post_production,
24
+ :lyric, :lyric_path,
25
+ :language, :resinger, :announcer,
26
+ :is_public, :access_password,
27
+ :allow_download, :allow_comment,
28
+ :is_crawler, :inet_aton_ip, :longitude, :latitude,
29
+ :music_category, :order_num, :is_pick,
30
+ :rich_intro, :short_intro,
31
+ :dig_status, :approved_at,
32
+ :is_deleted,
33
+ :mp3size, :mp3size_32, :mp3size_64,
34
+ :created_at, :updated_at, :id, :waveform, :upload_id,
35
+ :source_url, :status, :explore_height, :download_size
36
+
37
+
38
+ # is_publish --- 是否发布
39
+ # upload_source --- 上传源 1:iphone/2:电脑/3:android
40
+ # uid nickname is_v avatar_path avatar_path_640 --- 用户id 昵称 头像地址小 大 是否加v
41
+ # title intro short_intro rich_intro --- 标题 简介(不带格式) 短简介(不带格式) 收起的富简介(展开见track_rich.rich_intro)
42
+ # user_source --- 声音来源 1:原创/2:采集
43
+ # category_id --- 分类id
44
+ # duration --- 时长
45
+ # download_path --- 下载地址
46
+ # play_path play_path_32 play_path_64 play_path_128 --- 播放地址原 32Kbps 64Kbps 128Kbps
47
+ # transcode_state --- 转码状态 1:处理中/2:已完成/3:已失败
48
+ # cover_path --- 声音封面
49
+ # cover_path_60 cover_path_86 cover_path_640 --- 未使用
50
+ # album_id album_title --- 专辑id 标题
51
+ # album_cover_path album_cover_path_640 --- 专辑封面路径小 大
52
+ # tags tags_json --- 标签(逗号分隔) 标签json
53
+ # singer singer_category author --- 演唱 歌手类型 作词(作者)
54
+ # composer arrangement post_production --- 作曲 编曲 后期
55
+ # lyric lyric_path --- 文案/歌词(未使用,见track_rich.lyric) 字幕路径(未使用)
56
+ # language resinger announcer --- 语言 翻唱 播音
57
+ # is_public access_password --- 是否公开 访问密码
58
+ # allow_download allow_comment --- 允许下载 允许评论
59
+ # is_crawler inet_aton_ip --- 是否爬得 inet_aton过的ip
60
+ # longitude latitude --- 未使用
61
+ # music_category --- 音乐分类 原唱/翻唱/伴奏/小样/K歌/音效
62
+ # order_num --- 排序号
63
+ # is_pick --- 未使用
64
+ # dig_status --- 去发现页状态 0:待审核/1:去发现页/2:不去
65
+ # approved_at --- 去发现页的时间
66
+ # is_deleted --- 是否被删除
67
+ # mp3size --- mp3文件大小
68
+ # upload_id waveform --- 声音文件id 波形图采样数据文件地址
69
+ # source_url --- 视频源地址
70
+ # status --- 声音状态 0: 待审核/1: 已上架/2: 已下架
71
+ # explore_height --- 封面高上限
72
+
73
+ validates :title, presence: true
74
+
75
+ has_one :human_recommend_category_tag_track
76
+ has_one :human_recommend_track
77
+ has_one :human_recommend_category_track
78
+ belongs_to :category
79
+
80
+ before_save do |r|
81
+ unless r.id
82
+ r.id = Track.next_id
83
+ end
84
+ end
85
+
86
+ def to_topic_hash
87
+ {
88
+ created_at: self.created_at,
89
+ updated_at: self.updated_at,
90
+ id: self.id,
91
+ uid: self.uid,
92
+ nickname: self.nickname,
93
+ avatar_path: self.avatar_path,
94
+ is_v: self.is_v,
95
+ human_category_id: self.human_category_id,
96
+ is_public: self.is_public,
97
+ is_publish: self.is_publish,
98
+ user_source: self.user_source,
99
+ category_id: self.category_id,
100
+ tags: self.tags,
101
+ title: self.title,
102
+ intro: self.intro,
103
+ cover_path: self.cover_path,
104
+ duration: self.duration,
105
+ download_path: self.download_path,
106
+ play_path: self.play_path,
107
+ play_path_32: self.play_path_32,
108
+ play_path_64: self.play_path_64,
109
+ play_path_128: self.play_path_128,
110
+ singer: self.singer,
111
+ singer_category: self.singer_category,
112
+ author: self.author,
113
+ composer: self.composer,
114
+ arrangement: self.arrangement,
115
+ post_production: self.post_production,
116
+ lyric: self.lyric,
117
+ lyric_path: self.lyric_path,
118
+ language: self.language,
119
+ resinger: self.resinger,
120
+ announcer: self.announcer,
121
+ access_password: self.access_password,
122
+ allow_download: self.allow_download,
123
+ allow_comment: self.allow_comment,
124
+ is_crawler: self.is_crawler,
125
+ inet_aton_ip: self.inet_aton_ip,
126
+ upload_source: self.upload_source,
127
+ longitude: self.longitude,
128
+ latitude: self.latitude,
129
+ album_id: self.album_id,
130
+ album_title: self.album_title,
131
+ album_cover_path: self.album_cover_path,
132
+ transcode_state: self.transcode_state,
133
+ music_category: self.music_category,
134
+ short_intro: self.short_intro,
135
+ dig_status: self.dig_status,
136
+ approved_at: self.approved_at,
137
+ is_deleted: self.is_deleted,
138
+ mp3size: self.mp3size,
139
+ mp3size_32: self.mp3size_32,
140
+ mp3size_64: self.mp3size_64,
141
+ waveform: self.waveform,
142
+ upload_id: self.upload_id,
143
+ status: self.status
144
+ }
145
+ end
146
+
147
+ def is_crawler_disp
148
+ case self.is_crawler
149
+ when true
150
+ '爬虫'
151
+ when false
152
+ '用户'
153
+ end
154
+ end
155
+
156
+ def is_publish_disp
157
+ case self.is_publish
158
+ when true
159
+ '审核通过'
160
+ when false
161
+ '审核不通过'
162
+ else
163
+ '审核通过'
164
+ end
165
+ end
166
+
167
+ def user_source_disp
168
+ case user_source
169
+ when 1
170
+ '原创'
171
+ when 2
172
+ '采集'
173
+ else
174
+ ''
175
+ end
176
+ end
177
+
178
+ def upload_source_disp
179
+ case self.upload_source
180
+ when 1
181
+ 'ios'
182
+ when 2
183
+ '电脑'
184
+ when 3
185
+ 'android'
186
+ end
187
+ end
188
+
189
+ #去发现页状态显示
190
+ def dig_status_disp
191
+ case self.dig_status
192
+ when 0
193
+ '待去'
194
+ when 1
195
+ '去'
196
+ when 2
197
+ '不去'
198
+ end
199
+ end
200
+
201
+ #是否加V
202
+ def is_v_disp
203
+ case self.is_v
204
+ when true
205
+ "是"
206
+ when false
207
+ "否"
208
+ end
209
+ end
210
+
211
+ #审核状态
212
+ def track_status_disp
213
+ case status
214
+ when 0
215
+ "待审核"
216
+ when 1
217
+ "通过"
218
+ when 2
219
+ "不通过"
220
+ end
221
+ end
222
+
223
+
224
+ end