我们将在第一版网站的基础上予以升级,最终达到以下的效果。
- / 网站主页
- /search 搜索
- /page 页面
1.活动功能
- /activity 我的活动|活动列表
- /activity/create 创建活动
- /activity/delete 删除活动
- /activity/edit 编辑活动
- /activity/join 参加活动
- /activity/like “感兴趣”
- /activity/list 活动列表
- /activity/view 活动页面
2.文章功能
- /article 文章列表(原有的大千世界与推荐资源板块)
- /article/category 分类文章列表
- /article/feed 分类文章RSS输出(可用于电子期刊)
- /article/submit 文章投稿
- /article/view 文章页面
3.博客功能
- /blog 我的博客/博客文章列表
- /blog/create 创建博客文章
- /blog/delete 删除博客文章
- /blog/edit 编辑博客文章
- /blog/list 博客文章列表
- /blog/view 博客文章页面
4.用户主页功能
- /home 用户主页
- /home/friend 朋友列表
- /home/login 用户登录
- /home/logout 用户登出
- /home/lost 找回密码
- /home/profile 基本信息设置
- /home/register 用户注册
- /home/setting 用户设置
5.主办方功能
- /host 主办方列表
- /host/activity 主办方创建的活动
- /host/apply 主办方入驻
- /host/blog 主办方发布的信息
- /host/subscribe 主办方订阅
- /host/view 主办方页面
6.用户页面功能
- /people 普通用户页面
- /people/addfriend 加为好友
- /people/blog 感想列表
- /people/delfriend 取消好友关系
- /people/team 用户发起的团队页面
7.团队功能
- /team 团队列表
- /team/create 创建团队
- /team/dismiss 解散团队
- /team/edit 编辑团队
- /team/join 加入团队
- /team/view 团队页面
- /manager 后台首页
1.活动管理
- /manager/activity 活动列表
- /manager/activity/create 创建活动
- /manager/activity/delete 删除活动
- /manager/activity/edit 编辑活动
2.文章及分类管理
- /manager/article 文章列表
- /manager/article/create 创建文章
- /manager/article/delete 删除文章
- /manager/article/edit 编辑文章
- /manager/article/category 分类列表
- /manager/article/category/create 创建分类
- /manager/article/category/delete 删除分类
- /manager/article/category/edit 编辑分类
3.博客文章管理
- /manager/blog 博客文章列表
- /manager/blog/create 创建博客文章
- /manager/blog/delete 删除博客文章
- /manager/blog/edit 编辑博客文章
4.主办方管理
- /manager/host 主办方列表
- /manager/host/create 创建主办方
- /manager/host/delete 删除主办方
- /manager/host/edit 编辑主办方
5.团队管理
- /manager/team 团队列表
- /manager/team/create 创建团队
- /manager/team/delete 删除团队
- /manager/team/edit 编辑团队
6.用户管理
- /manager/user 用户列表
- /manager/user/create 创建用户
- /manager/user/delete 删除用户
- /manager/user/edit 编辑用户
我们将分多个阶段逐步实现上述功能,保证整个站点的平滑升级。
将现有的“活动信息”板块实现为 活动 功能。同时引入多说评论系统和益播公益404页面。
加入基本的 用户 功能和 主办方 功能
实现全部的 用户 功能和全站顶栏。
- 将现有的“大千世界”和“推荐资源”板块实现为 文章 功能;
- “关于我们”板块实现为 页面 功能;
- “我们的伙伴”和“友方网站组织”实现为 友情链接 功能;
- “首页板块”实现为“首页设置”功能
- 全面翻新后台
加入 用户页面 功能
加入 团队 功能
加入 博客 功能
加入 搜索 功能
加入 推荐系统
当前网站使用PHP语言开发,基于CodeIgniter框架2.1.2版。 第二版网站中,我们将使用PHP 5.2.17作为语言环境,将CodeIgniter框架升级到2.1.4版。
据相关消息,CodeIgniter框架的开发几近停顿,前景很不明朗。因此,不排除在未来更换基础开发框架的可能。
### 使用组件
现有的系统配置功能已经较为齐全,其数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_config` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`value` text,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
仅作以下改动:
- 【删除】id字段
改动后的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_config` (
`name` varchar(50) NOT NULL,
`value` text,
PRIMARY KEY (`name`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
当前的“活动信息”板块使用两张数据表来分别保存来自外部的活动和Junior Ivy自己组织的活动,其结构如下:
CREATE TABLE IF NOT EXISTS `ji_activity_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`text` text,
`place` int(11) NOT NULL DEFAULT '0',
`type1` int(11) NOT NULL DEFAULT '0',
`type2` int(11) NOT NULL DEFAULT '0',
`topic1` int(11) NOT NULL DEFAULT '0',
`topic2` int(11) NOT NULL DEFAULT '0',
`signtime1` datetime NOT NULL,
`signtime2` datetime NOT NULL,
`acttime1` datetime NOT NULL,
`acttime2` datetime NOT NULL,
`createdtime` datetime DEFAULT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `clicks` (`clicks`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=107 ;
CREATE TABLE IF NOT EXISTS `ji_jiact_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`text` text,
`place` int(11) NOT NULL DEFAULT '0',
`type1` int(11) NOT NULL DEFAULT '0',
`type2` int(11) NOT NULL DEFAULT '0',
`topic1` int(11) NOT NULL DEFAULT '0',
`topic2` int(11) NOT NULL DEFAULT '0',
`signtime1` datetime NOT NULL,
`signtime2` datetime NOT NULL,
`acttime1` datetime NOT NULL,
`acttime2` datetime NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `clicks` (`clicks`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
/*话说两个数据表设计成相似的……swordfeng你不觉得迥异么……*/
对其的改动有:
- 【还看什么,果断】合并数据表
- 【更改】signtime1字段改名为sign_begintime,更好地表明其申请开始时间的含义。
- 【更改】signtime2字段改名为sign_endtime,更好地表明其申请结束时间的含义。
- 【更改】acttime1字段改名为act_begintime,更好地表明其活动开始时间的含义。
- 【更改】acttime2字段改名为act_endtime,更好的表明其活动结束时间含义。
- 【删除】place、type1、type2、topic1、topic2字段。使用activity_relation数据表代替。
- 【增加】host_id字段。用于保存主办方数据。 特别定义:0表示无主办方信息,可能由管理员添加或为第一版的遗留数据。
- 【增加】allow_comment字段,用于控制是否允许评论。
此外,还有一些数据表用来保存活动的地点、主题、类型信息,其数据结构如下:
CREATE TABLE IF NOT EXISTS `ji_activity_info_places` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `placename` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=28 ;
CREATE TABLE IF NOT EXISTS `ji_activity_info_topics` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `topicname` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;
CREATE TABLE IF NOT EXISTS `ji_activity_info_types` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `typename` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=47 ;
/*话说三个数据表设计成相同的……我吐槽无力了……*/
对其的改动有:
- 【果断】合并数据表
- 【增加】type字段,用于表述之前以多个数据表区分的place、topic和type三种类型的tag。 (令人遗憾的是,这是个过渡性的设计。)
此外,别忘了:
- 【增加】activity_relation数据表,用于保存活动与标签之间的关系,这样可以实现多个标签
改动之后的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_activity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`host_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`sign_begintime` datetime NOT NULL,
`sign_endtime` datetime NOT NULL,
`act_begintime` datetime NOT NULL,
`act_endtime` datetime NOT NULL,
`createdtime` datetime DEFAULT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`allow_comment` BOOLEAN NOT NULL,
PRIMARY KEY (`id`),
KEY `clicks` (`clicks`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ji_activity_tag` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`type` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `typename` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ji_activity_relation` (
`activity_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
现有的用户系统十分薄弱,仅能提供后台的用户登录、新建功能。其数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_admin_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`logintime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=10 ;
新版用户系统与现有用户系统有很大不同,包含多个部分,根据相关需求分别设计。
基础部分的数据表包含了一个用户最基本的信息,可用于登录、注册、找回密码等功能。分析其需求如下:
设计的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(512) NOT NULL,
`role` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
其中role字段用于记录用户在站点中的角色。 与现实生活类似,一个用户可以分饰多个角色。 具体实现参看“权限部分”。
这是一个全新的功能,分析其需求如下:
- 主办方入驻:由注册用户进行主办方入驻登记
- 发布、编辑活动信息
- 向管理员申请删除活动信息
设计的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_host` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fullname` varchar(50) NOT NULL,
`location` varchar(255) NOT NULL,
`type` text NOT NULL,
`topic` text NOT NULL,
`description` text NOT NULL
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
活动信息部分的功能,参见“活动功能”。 Junior Ivy官方将注册第一个主办方账号,同时其在上一版网站上发布的信息会自动赋host_id值为1。
文章功能是在现有的“大千世界”和“推荐资源”两个板块的基础上合并而成。分析现有的数据库结构如下:
/*大千世界*/
CREATE TABLE IF NOT EXISTS `ji_tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ji_world` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` int(11) NOT NULL COMMENT '0=ftf,1=otr',
`title` varchar(255) NOT NULL,
`author` varchar(50) NOT NULL,
`time` datetime NOT NULL,
`img` varchar(255) NOT NULL,
`text` text NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `type` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=47 ;
CREATE TABLE IF NOT EXISTS `ji_world_tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`index` int(11) NOT NULL,
`tag` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `index` (`index`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
/*推荐资源*/
CREATE TABLE IF NOT EXISTS `ji_srcbag` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL,
`intro` text NOT NULL,
`img` varchar(255) NOT NULL,
`text` mediumtext NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
统一之后,文章功能只有两个表:article用来保存文章数据,category用来保存分类数据。更多的改动有:
- 【设定】一篇文章只能属于一个分类。
- 【增加】allow_comment字段,用于控制是否允许评论。
- 【增加】slug字段,用于url美化。
- 【增加】summary字段,用于保存文章摘要。
新版的数据表结构如下:
CREATE TABLE IF NOT EXISTS `ji_article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category_id` int(11) NOT NULL,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`slug` varchar(255) NULL,
`time` datetime NOT NULL,
`image` varchar(255) NOT NULL,
`summary` varchar(512) NOT NULL,
`content` text NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
`allow_comment` BOOLEAN NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `slug` (`slug`),
KEY `category_id` (`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ji_category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(40) NOT NULL,
`slug` varchar(20) DEFAULT NULL,
`parent_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`,`slug`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
页面功能是在原有的“关于我们”板块上改进而来。分析现有的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_about` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page` varchar(50) NULL,
`title` varchar(50) NOT NULL,
`summary` text NOT NULL,
`content` mediumtext NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `page` (`page`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
对其的改动有:
- 【更改】page字段改名为slug,更好的表示其url美化的作用。
- 【删除】删除intro字段。页面的唯一访问入口是其链接,前台页面中不存在所谓的“页面列表”,因此不需要摘要功能字段。
- 【增加】allow_comment字段,用于控制是否允许评论。
改动之后的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_page` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`slug` varchar(255) NULL,
`title` varchar(555) NOT NULL,
`content` text NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`scorenum` int(11) NOT NULL DEFAULT '0',
`allow_comment` BOOLEAN NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `slug` (`slug`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
友情链接功能是在现有的“我们的伙伴”和“友方网站组织”两个板块的基础上整合而成。现有的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_asso` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` varchar(255) NOT NULL,
`img` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `ji_support` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` varchar(255) NOT NULL,
`img` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
/*话说两个数据表设计成相同的……swordfeng你不觉得迥异么……*/
对其的改动有:
- 【果断】合并数据表
- 【更改】text字段改名为description字段,以免与MySQL关键字text混淆,同时也是更好地体现其描述的含义。
改动之后的数据库结构如下:
CREATE TABLE IF NOT EXISTS `ji_link` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`description` varchar(255) NOT NULL,
`image` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;