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.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/README.md +41 -0
- data/Rakefile +1 -0
- data/gen_shards.rb +59 -0
- data/lib/extenders/album_extender.rb +9 -0
- data/lib/extenders/block_avatar_extender.rb +5 -0
- data/lib/extenders/chat_extender.rb +5 -0
- data/lib/extenders/class_node.rb +21 -0
- data/lib/extenders/comment_extender.rb +5 -0
- data/lib/extenders/favorite_album_extender.rb +5 -0
- data/lib/extenders/favorite_extender.rb +5 -0
- data/lib/extenders/following_extender.rb +13 -0
- data/lib/extenders/following_group_extender.rb +5 -0
- data/lib/extenders/following_tag_extender.rb +5 -0
- data/lib/extenders/followingx2_group_extender.rb +5 -0
- data/lib/extenders/inbox_extender.rb +5 -0
- data/lib/extenders/linkman_extender.rb +5 -0
- data/lib/extenders/outbox_extender.rb +5 -0
- data/lib/extenders/track_block_extender.rb +5 -0
- data/lib/extenders/track_extender.rb +5 -0
- data/lib/extenders/track_in_record_extender.rb +76 -0
- data/lib/extenders/track_picture_extender.rb +5 -0
- data/lib/extenders/track_record_extender.rb +5 -0
- data/lib/extenders/track_rich_extender.rb +5 -0
- data/lib/extenders/track_set_extender.rb +79 -0
- data/lib/extenders/track_set_rich_extender.rb +5 -0
- data/lib/extenders/user_tag_extender.rb +5 -0
- data/lib/ting_model.rb +1 -0
- data/lib/ting_model/advertisement.rb +5 -0
- data/lib/ting_model/advertisement_new.rb +4 -0
- data/lib/ting_model/album.rb +31 -0
- data/lib/ting_model/album_node.rb +9 -0
- data/lib/ting_model/album_origin.rb +137 -0
- data/lib/ting_model/album_pod.rb +8 -0
- data/lib/ting_model/album_podcat.rb +8 -0
- data/lib/ting_model/android_channel.rb +4 -0
- data/lib/ting_model/android_channel_binding.rb +7 -0
- data/lib/ting_model/announcement.rb +12 -0
- data/lib/ting_model/app_recommend.rb +55 -0
- data/lib/ting_model/application_v_category.rb +5 -0
- data/lib/ting_model/approve_group.rb +4 -0
- data/lib/ting_model/approving_track.rb +4 -0
- data/lib/ting_model/approving_track_log.rb +4 -0
- data/lib/ting_model/audit_log.rb +5 -0
- data/lib/ting_model/baidu_count.rb +4 -0
- data/lib/ting_model/bind_user.rb +7 -0
- data/lib/ting_model/binding_app.rb +4 -0
- data/lib/ting_model/biting.rb +4 -0
- data/lib/ting_model/black_user.rb +9 -0
- data/lib/ting_model/block_avatar.rb +31 -0
- data/lib/ting_model/block_avatar_node.rb +10 -0
- data/lib/ting_model/block_avatar_origin.rb +24 -0
- data/lib/ting_model/category.rb +20 -0
- data/lib/ting_model/category_icon_version.rb +12 -0
- data/lib/ting_model/chat.rb +31 -0
- data/lib/ting_model/chat_node.rb +10 -0
- data/lib/ting_model/chat_origin.rb +32 -0
- data/lib/ting_model/comment.rb +80 -0
- data/lib/ting_model/comment_node.rb +10 -0
- data/lib/ting_model/comment_origin.rb +116 -0
- data/lib/ting_model/dead_album.rb +8 -0
- data/lib/ting_model/dead_track.rb +8 -0
- data/lib/ting_model/dead_user.rb +7 -0
- data/lib/ting_model/default_follow.rb +6 -0
- data/lib/ting_model/delayed_album.rb +26 -0
- data/lib/ting_model/delayed_publish.rb +4 -0
- data/lib/ting_model/delayed_track.rb +43 -0
- data/lib/ting_model/discovery_page.rb +17 -0
- data/lib/ting_model/editor_recommend.rb +5 -0
- data/lib/ting_model/favorite.rb +59 -0
- data/lib/ting_model/favorite_album.rb +50 -0
- data/lib/ting_model/favorite_album_node.rb +9 -0
- data/lib/ting_model/favorite_album_origin.rb +88 -0
- data/lib/ting_model/favorite_node.rb +10 -0
- data/lib/ting_model/favorite_origin.rb +138 -0
- data/lib/ting_model/feed.rb +159 -0
- data/lib/ting_model/file_upload.rb +4 -0
- data/lib/ting_model/file_upload_record.rb +4 -0
- data/lib/ting_model/focus.rb +16 -0
- data/lib/ting_model/focus_album.rb +9 -0
- data/lib/ting_model/focus_current.rb +10 -0
- data/lib/ting_model/focus_track.rb +17 -0
- data/lib/ting_model/focus_user.rb +7 -0
- data/lib/ting_model/follower.rb +27 -0
- data/lib/ting_model/follower_node.rb +10 -0
- data/lib/ting_model/follower_origin.rb +34 -0
- data/lib/ting_model/follower_tag.rb +27 -0
- data/lib/ting_model/follower_tag_node.rb +10 -0
- data/lib/ting_model/follower_tag_origin.rb +14 -0
- data/lib/ting_model/followerx2_group.rb +27 -0
- data/lib/ting_model/followerx2_group_node.rb +10 -0
- data/lib/ting_model/followerx2_group_origin.rb +12 -0
- data/lib/ting_model/following.rb +57 -0
- data/lib/ting_model/following_group.rb +31 -0
- data/lib/ting_model/following_group_node.rb +10 -0
- data/lib/ting_model/following_group_origin.rb +29 -0
- data/lib/ting_model/following_node.rb +10 -0
- data/lib/ting_model/following_origin.rb +72 -0
- data/lib/ting_model/following_tag.rb +52 -0
- data/lib/ting_model/following_tag_node.rb +10 -0
- data/lib/ting_model/following_tag_origin.rb +59 -0
- data/lib/ting_model/followingx2_group.rb +31 -0
- data/lib/ting_model/followingx2_group_node.rb +10 -0
- data/lib/ting_model/followingx2_group_origin.rb +23 -0
- data/lib/ting_model/human_category.rb +17 -0
- data/lib/ting_model/human_recommend_album.rb +8 -0
- data/lib/ting_model/human_recommend_album_category_tag.rb +4 -0
- data/lib/ting_model/human_recommend_album_tag.rb +4 -0
- data/lib/ting_model/human_recommend_category_album.rb +7 -0
- data/lib/ting_model/human_recommend_category_tag.rb +6 -0
- data/lib/ting_model/human_recommend_category_tag_album.rb +7 -0
- data/lib/ting_model/human_recommend_category_tag_track.rb +11 -0
- data/lib/ting_model/human_recommend_category_tag_user.rb +7 -0
- data/lib/ting_model/human_recommend_category_track.rb +11 -0
- data/lib/ting_model/human_recommend_category_user.rb +7 -0
- data/lib/ting_model/human_recommend_tag.rb +5 -0
- data/lib/ting_model/human_recommend_tag_album.rb +7 -0
- data/lib/ting_model/human_recommend_tag_track.rb +9 -0
- data/lib/ting_model/human_recommend_tag_user.rb +7 -0
- data/lib/ting_model/human_recommend_track.rb +9 -0
- data/lib/ting_model/human_recommend_user.rb +7 -0
- data/lib/ting_model/icon_version.rb +7 -0
- data/lib/ting_model/inbox.rb +31 -0
- data/lib/ting_model/inbox_node.rb +10 -0
- data/lib/ting_model/inbox_origin.rb +59 -0
- data/lib/ting_model/latest_album.rb +9 -0
- data/lib/ting_model/latest_favorite.rb +10 -0
- data/lib/ting_model/latest_track.rb +10 -0
- data/lib/ting_model/linkman.rb +30 -0
- data/lib/ting_model/linkman_node.rb +10 -0
- data/lib/ting_model/linkman_origin.rb +26 -0
- data/lib/ting_model/liteapp.rb +7 -0
- data/lib/ting_model/liteapp_album.rb +4 -0
- data/lib/ting_model/liteapp_tag.rb +4 -0
- data/lib/ting_model/lover.rb +27 -0
- data/lib/ting_model/lover_album.rb +27 -0
- data/lib/ting_model/lover_album_node.rb +9 -0
- data/lib/ting_model/lover_album_origin.rb +39 -0
- data/lib/ting_model/lover_node.rb +10 -0
- data/lib/ting_model/lover_origin.rb +45 -0
- data/lib/ting_model/m_user.rb +8 -0
- data/lib/ting_model/message_log.rb +4 -0
- data/lib/ting_model/message_picture.rb +5 -0
- data/lib/ting_model/meta.rb +4 -0
- data/lib/ting_model/mixing_album.rb +7 -0
- data/lib/ting_model/mobad_stat.rb +9 -0
- data/lib/ting_model/news.rb +16 -0
- data/lib/ting_model/out_link.rb +7 -0
- data/lib/ting_model/outbox.rb +31 -0
- data/lib/ting_model/outbox_node.rb +10 -0
- data/lib/ting_model/outbox_origin.rb +59 -0
- data/lib/ting_model/outlink_stat.rb +4 -0
- data/lib/ting_model/personal_setting.rb +26 -0
- data/lib/ting_model/push_message.rb +4 -0
- data/lib/ting_model/receive_laya.rb +9 -0
- data/lib/ting_model/recommend_album.rb +7 -0
- data/lib/ting_model/recommend_category_album.rb +7 -0
- data/lib/ting_model/recommend_category_tag.rb +5 -0
- data/lib/ting_model/recommend_category_tag_album.rb +7 -0
- data/lib/ting_model/recommend_category_tag_track.rb +9 -0
- data/lib/ting_model/recommend_category_tag_user.rb +7 -0
- data/lib/ting_model/recommend_category_track.rb +9 -0
- data/lib/ting_model/recommend_category_user.rb +7 -0
- data/lib/ting_model/recommend_tag.rb +15 -0
- data/lib/ting_model/recommend_tag_album.rb +7 -0
- data/lib/ting_model/recommend_tag_track.rb +9 -0
- data/lib/ting_model/recommend_tag_user.rb +7 -0
- data/lib/ting_model/recommend_track.rb +9 -0
- data/lib/ting_model/recommend_user.rb +7 -0
- data/lib/ting_model/reject_reason.rb +17 -0
- data/lib/ting_model/report.rb +33 -0
- data/lib/ting_model/report_information.rb +29 -0
- data/lib/ting_model/search_black_uid.rb +7 -0
- data/lib/ting_model/search_key.rb +6 -0
- data/lib/ting_model/send_msg.rb +4 -0
- data/lib/ting_model/shards.rb +2626 -0
- data/lib/ting_model/sms.rb +19 -0
- data/lib/ting_model/special.rb +17 -0
- data/lib/ting_model/special_album.rb +4 -0
- data/lib/ting_model/special_track.rb +4 -0
- data/lib/ting_model/sub_app_advertisement_new.rb +4 -0
- data/lib/ting_model/subappad_stat.rb +9 -0
- data/lib/ting_model/system_configuration.rb +5 -0
- data/lib/ting_model/temp_blob.rb +5 -0
- data/lib/ting_model/track.rb +30 -0
- data/lib/ting_model/track_block.rb +46 -0
- data/lib/ting_model/track_block_node.rb +10 -0
- data/lib/ting_model/track_block_origin.rb +69 -0
- data/lib/ting_model/track_in_record.rb +27 -0
- data/lib/ting_model/track_in_record_node.rb +10 -0
- data/lib/ting_model/track_in_record_origin.rb +134 -0
- data/lib/ting_model/track_node.rb +9 -0
- data/lib/ting_model/track_origin.rb +224 -0
- data/lib/ting_model/track_picture.rb +32 -0
- data/lib/ting_model/track_picture_node.rb +10 -0
- data/lib/ting_model/track_picture_origin.rb +26 -0
- data/lib/ting_model/track_record.rb +31 -0
- data/lib/ting_model/track_record_node.rb +9 -0
- data/lib/ting_model/track_record_origin.rb +64 -0
- data/lib/ting_model/track_rich.rb +30 -0
- data/lib/ting_model/track_rich_node.rb +10 -0
- data/lib/ting_model/track_rich_origin.rb +31 -0
- data/lib/ting_model/track_set.rb +27 -0
- data/lib/ting_model/track_set_node.rb +9 -0
- data/lib/ting_model/track_set_origin.rb +147 -0
- data/lib/ting_model/track_set_rich.rb +30 -0
- data/lib/ting_model/track_set_rich_node.rb +10 -0
- data/lib/ting_model/track_set_rich_origin.rb +24 -0
- data/lib/ting_model/uid_approve_group.rb +4 -0
- data/lib/ting_model/upload_track_share_temp.rb +6 -0
- data/lib/ting_model/user_link.rb +10 -0
- data/lib/ting_model/user_log.rb +33 -0
- data/lib/ting_model/user_tag.rb +31 -0
- data/lib/ting_model/user_tag_node.rb +10 -0
- data/lib/ting_model/user_tag_origin.rb +23 -0
- data/lib/ting_model/user_v_category.rb +8 -0
- data/lib/ting_model/v_application.rb +35 -0
- data/lib/ting_model/v_category.rb +7 -0
- data/lib/ting_model/v_user.rb +7 -0
- data/lib/ting_model/varification_code.rb +6 -0
- data/lib/ting_model/web_advertisement.rb +6 -0
- data/lib/ting_model/web_discovery_page.rb +10 -0
- data/lib/ting_model/web_recommend.rb +6 -0
- data/lib/ting_model/weixin_account.rb +8 -0
- data/lib/ting_model/weixin_keyword.rb +4 -0
- data/lib/ting_model/weixin_monitor.rb +4 -0
- data/ting_model.gemspec +251 -0
- 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,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,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,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,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
|