mindpin / slider

移动课程/演示文稿编辑发布服务,slider 是暂定名
0 stars 0 forks source link

具体实现的设计方案 #4

Open fushang318 opened 9 years ago

fushang318 commented 9 years ago

我觉得模板本身就是一个story(场景) 可以规定某一个用户创建的story(场景)就是模板 创建story(场景)时,使用某一个模板就是对某一个模板进行clone

场景建模

class Story
  include Mongoid::Document
  include Mongoid::Timestamps

  # logo title desc 这三个字段的内容用来生成类似 infocard 的显示效果
  # 在朋友圈,微博分享的时候显示这个 infocard

  # 封面(一张图片)
  field :logo, type: String

  # 标题
  field :title, type: String

  # 简介
  field :desc, type: String

  # 页面正文
  # 目前预想的只有一个html页面
  # 这个字段保存 body 中的内容
  field :html_body

  # 是否发布
  field :is_published, type: Boolean

  # 创建者
  belongs_to :user

end

个人资源库

class Bucket
  include Mongoid::Document
  include Mongoid::Timestamps

  # 收藏夹的名字
  field :name, type: String

  # 收藏夹的简介
  field :desc, type: String

  # 创建者
  belongs_to :user

end

class Resource
  include Mongoid::Document
  include Mongoid::Timestamps

  # 资源类型
  field :kind, type: String

  # 纯文本类型的内容
  field :text, type: String

  # 图片 视频 音频 上传到七牛以后的访问url的 path 部分
  # host 部分由配置文件提供(因为有可能修改自定义域名)
  # 通过 img4ye api 上传音频视频图片到 qiniu,然后获取 qiniu_path 保存在这个字段
  field :qiniu_path, type: String

  # 地理位置信息
  field :location, type: Hash

  # 创建者
  belongs_to :user

  belongs_to :bucket
end

另外我的一些想法 我觉得有必要支持手机扫码不登录查看浏览(没有发布的情况下)

理论上可以实现,发布以后,进行编辑时,不影响其他人浏览发布的内容,可以做成 发布后可以随便编辑,但是要让编辑生效,必须做重新发布这个动作

ben7th commented 9 years ago

手机扫码不登录查看的话,比较担心用户会分不清发布不发布有什么区别。

fushang318 commented 9 years ago

经过 6/1 早上和宋亮的讨论,新的建模如下

场景建模

class Story
  include Mongoid::Document
  include Mongoid::Timestamps
  # 可以引用多个模板
  has_and_belongs_to_many :templates

  # logo title desc 这三个字段的内容用来生成类似 infocard 的显示效果
  # 在朋友圈,微博分享的时候显示这个 infocard

  # 封面(一张图片)
  field :logo, type: String

  # 标题
  field :title, type: String

  # 简介
  field :desc, type: String

  # 页面正文
  # 目前预想的只有一个html页面
  # 这个字段保存 body 中的内容
  field :html_body

  # 是否发布
  field :is_published, type: Boolean

  # 创建者
  belongs_to :user

end

模板建模

class Template
  include Mongoid::Document
  include Mongoid::Timestamps
  # 可以被多个 story 引用
  has_and_belongs_to_many :stories

  # 封面(一张图片)
  field :logo, type: String

  # 标题
  field :title, type: String

  # 简介
  field :desc, type: String

  # 正文的表现形式不明,先不设计
end

收藏夹

class Folder
  include Mongoid::Document
  include Mongoid::Timestamps

  # 收藏夹的名字
  field :name, type: String

  # 收藏夹的简介
  field :desc, type: String

  # 创建者
  belongs_to :user
  # 可以包含多个资源
  has_and_belongs_to_many :resources
end

资源

class Resource
  include Mongoid::Document
  include Mongoid::Timestamps

  # 资源类型
  field :kind, type: String

  # 纯文本类型的内容
  field :text, type: String

  # 图片 视频 音频 上传到七牛以后的访问url的 path 部分
  # host 部分由配置文件提供(因为有可能修改自定义域名)
  # 通过 img4ye api 上传音频视频图片到 qiniu,然后获取 qiniu_path 保存在这个字段
  field :qiniu_path, type: String

  # 地理位置信息
  field :location, type: Hash

  # 创建者
  belongs_to :user

  # 可以属于多个多藏夹
  has_and_belongs_to_many :folder
end