2018/6/13 山东大学学习资源聚合平台工作总结(一)

我们的工作基本已经完成,今天主要回顾一下在主系统中我所做的工作:

在主系统中,我负责的是课程中知识内容模块的构建,在git中统计的总代码量为:


主要做的工作如下:

首先对Knowledge类的建模,Knowledge下分三大类知识:分别是专栏区(blog)、问题区(question)、和资源区(resource),其中,专栏区用来发布博客文章,需要教师进行审核、而问题区是大家交流学习的地方,无需审核、资源区用来上传文件资源,用于保存同学们的资料。

我在数据库层面采用单表继承的方式来存储数据:

数据库建表代码如下:

class CreateKnowledges < ActiveRecord::Migration[5.0]
  def change
    create_table :knowledges do |t|
      t.integer :creator_id
      t.integer :topic_id
      
      t.string :title
      t.string :type
      t.string :content
      t.string :attachment
      t.string :knowledge_digest      
      t.integer :good,default: 0
      t.integer :bad,default: 0

      t.integer :visit_count,default: 0
      t.integer :download_count,default: 0

      t.timestamps
    end
  end
end

最终生成的schema表结构信息:

  create_table "knowledges", force: :cascade do |t|
    t.integer  "user_id"
    t.integer  "knowledge_id"
    t.string   "title"
    t.string   "type"
    t.string   "content"
    t.string   "attachment"
    t.string   "knowledge_digest"
    t.integer  "good",             default: 0
    t.integer  "bad",              default: 0
    t.integer  "visit_count",      default: 0
    t.integer  "download_count",   default: 0
    t.datetime "created_at",                   null: false
    t.datetime "updated_at",                   null: false
    t.datetime "last_reply_at"
    t.integer  "check_state"
    t.string   "label"
    t.text     "content_digest"
    t.integer  "score",            default: 0
    t.integer  "score_yesterday",  default: 0
  end

在主页中进入课程页面,就进入到了我负责完成的模块:


主页显示的是课程基本信息和简介,以及精品推荐,精品推荐是基于点赞数、浏览数等指标进行的排序。可以点击任一精品进入其中:


可以观看博客信息,同时有该文章的作者信息和其发布的知识信息列表,在主体部分,我们可以解析HTML代码,所以可以显示更加丰富的内容信息,比如图片等信息,其中的实现过程在前面博文中已经讲述。

文章底部是评论区域和该文章所属类别:


这篇文章的评论为空,我们找一篇有评论的如下:


点击查看更多就可以查看更多的博客内容,同时我没有采用直观的树形显示方式,而是参照知乎的实现方式,采用BFS算法在树中进行遍历,然后按照发布时间进行排序显示。

当然我们可以通过课程的主页进入不同的分区,观看该课程下的所有知识,如专栏区:


当我们想要评论时就会被导向登录界面:


当登录后,我们就可以重新进入课程模块界面:


可以看到已经登录,这时我们可以评论、或者点赞等操作:


左边按钮为点赞,当已经点赞后再次点击赞的话,就会取消点赞。同时在赞的情况下点击踩的话,也会变赞为踩:


同时也可以评论:


同时我们也可以评论回复,会出现评论成功的提示:



当用户想发布时点击发布按钮也可以进入发布界面:


然后进入发布界面:

书写标题、内容简介、并上传文件:


同时在文本内容输入框中是可以插入图片,点击插入图片,就可以插入图片,比如:


图片默认插入在尾部,拖动可以移动位置。

编辑完正文内容后,来到发布页面的最下部,输入标签(最多5个),选择分类、选择相关联课程:


点击发布就可以完成发布:


我们发布完成的资源,点击资源下载就会弹出对话框,完成下载:


如果我们对自己发布的资源不满意,就可以点击修改资源:

比如我们再插入一张图:


如果我们不再想保留这个资源,可以点击删除按钮,删除资源:


综上所述,我的基本工作就是完成一个类似于可以上传文件的博客,我负责这一模块从前端到后台的整个过程,除了最初的构建模型外,我还编写了四个controller负责完成页面的各种操作,以及多种按钮的ajax操作,因为在数据库层面无法直接表达多对多关系,所以其中还涉及了多种中间表的操作,前端界面主要采用了bootstrap框架,通过我的博客记录,可以看到我在中间的实现过程中经历了许多推导重来的工作,无论在前端界面的设计、还是后台模型的修改,导致我的代码量波动巨大,虽然总共写了近万行代码,但其中删除了4000行。

通过本次实训吧,我对系统级的工程有了更深的认识,明白初始的软件需求和软件设计和最后的产品之间的巨大变化,更让我理解到软件开发过程管理的重量性,系统的设计是至关重要的,如果一开始在某个方面没有设计清楚就开始动工,后面推翻重来的风险极大,而且开发过程中人员的协作是至关重要的,虽说我们的分工方式是一人一个模块,但模块之间并不是独立的,比如我的知识模块就需要与用户模块、后台模块紧密交互,这个过程中对于接口、模型的协商就显得至为关键,而且本次依托于github完成了版本的控制,让我明白版本控制的重要性,当现在的代码被改的面目全非时,备份真的能救自己一命。总的来说,系统级的程序和我们平时的实验是不一样的,它不仅仅关注代码的逻辑,更有整个项目的管理和团队的分工协作等非技术性问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值