[IT计算机]首信内容管理系统详细设计说明书.doc
首信内容管理系统详细设计说明书引言51.1 编写目的51.2 背景51.3 定义51.4 参考资料62 程序系统的结构63 修改密码模块93.1 程序描述93.2 功能93.3 性能93.4 输入项93.5 输出项103.6 算法103.7 流程逻辑103.8 接口113.9 存储分配113.10 测试计划123.11 尚未解决的问题124 栏目管理模块设计说明124.1程序描述124.2功能124.3性能124.4输入项134.5输出项134.6算法144.7流程逻辑144.8接口204.9存储分配224.10测试计划244.11尚未解决的问题245 文章管理模块设计说明245.1程序描述245.2功能245.3性能255.4输入项255.5输出项265.6算法265.7流程逻辑275.8接口325.9存储分配355.10测试计划375.11尚未解决的问题376 首页图片管理模块设计说明376.1程序描述376.2功能376.3性能376.4输入项386.5输出项386.6算法386.7流程逻辑386.8接口396.9存储分配416.10测试计划416.11尚未解决的问题417 Banner管理模块设计说明417.1程序描述417.2功能417.3性能427.4输入项427.5输出项427.6算法427.8接口437.9存储分配457.10测试计划467.11尚未解决的问题468 查询日志模块设计说明468.1程序描述468.2功能468.3性能478.4输入项478.5输出项478.6算法478.7流程逻辑488.8接口488.9存储分配508.10测试计划518.11尚未解决的问题519 在线直播模块设计说明519.1程序描述519.2功能519.3性能529.4输入项529.5输出项529.6算法529.7流程逻辑529.8接口539.9存储分配559.10测试计划579.11尚未解决的问题5810 热点调查管理模块设计说明5810.1程序描述5810.2功能5810.3性能5810.4输入项5810.5输出项5910.6算法5910.7流程逻辑5910.8接口6310.9存储分配6510.10测试计划6610.11尚未解决的问题6611 市民邮箱管理模块设计说明6711.1程序描述6711.2功能6711.3性能6711.4输入项6711.5输出项6711.6算法6811.7流程逻辑6811.8接口6911.9存储分配7011.10测试计划7111.11尚未解决的问题7112 访问统计模块设计说明7112.1程序描述7112.2功能7112.3性能7112.4输入项7212.5输出项7212.6算法7212.7流程逻辑7212.8接口7312.9存储分配7312.10测试计划7412.11尚未解决的问题74引言1.1 编写目的 根据内容管理工程,编写此文档供开发人员在短时间内熟悉了解本系统,在此文档的协助下能够对内容管理工程进行开发。1.2 背景软件名称:Capinfo内容管理系统任务提出单位:首都信息发展股份有限公司开发单位:首都信息发展股份有限公司1.3 定义 术语解释JspJava Server Page 网站目录即WEB服务器指向的网站目录,如D盘capinfo/EIP目录。Title网页HTML代码中的<TITLE>显示部份</TITLE>角色Admin(超级用户)和管理员(除Admin外所有用户)CMS内容管理系统RMDBS关系数据库管理系统1.4 参考资料序号资料名称作者出版单位1项目开发计划2计算机软件产品开发文件编制指南3招投标文件2 程序系统的结构内容管理系统普通管理员超级管理员 超级管理员修改密码子用户管理市民信箱结构管理栏目关联设置栏目时间设置栏目时间设置查询生成栏目权限EXCEL表格退出登录普通管理员信息发布热点调查市民信箱管理员工具信息发布栏目管理首页图片管理查询日志在线直播banner管理文章管理文章管理文章编辑文章审核修改文章所在栏目文章复制文章校对文章查询热点调查调查列表添加调查位置列表添加位置市民信箱市民信箱3 修改密码模块3.1 程序描述修改用户的登录密码。3.2 功能用户输入完新密码,提交保存后,该用户下次登录本系统时就得使用刚新提交的密码。3.3 性能无。3.4 输入项对于增加日程功能:输入项名称类型说明密码字符新密码3.5 输出项修改成功显示用户名和新密码;修改失败显示错误界面并给出原因。3.6 算法把以前的密码修改为新输入的密码。3.7 流程逻辑业务流程如图:3.8 接口1) SubUserBol 修改管理员的密码public static void updateAdminPassWord(String adminAccount, String passWord) l 取得AdminUser的pojopublic static AdminUser loadAdminUser(String adminAccount)3.9 存储分配表名称:TBNC_ADMINUSER主键名称:AdminAccount索引:字段名称字段说明数据类型及宽度是否为空主键标志说明AdminUserID管理员IDVarchar2(10)NoYes主键系统自动生成AdminAccount管理员帐号Varchar2(20)NoNoPWD管理员口令Varchar2(20)NoNoAdminPath管理员节点路径VARCHAR2(104)NoNoIsBelongGroup是否有组Varchar2(1)YesNoGroupName组名VARCHAR2(50)YesNoGroupNum组中序号NUMBER(1)YesNoEnableCreateUser能否创建子用户 NUMBER(1)NoNo1可以;0不可以RoleName角色名称VARCHAR2(50)YesNoupdatePswDate最后更新密码时间DateYesNodelflag逻辑删除 NUMBER(5)YesNo1已经删除;3.10 测试计划测试包括:修改管理员的密码。3.11 尚未解决的问题无4 栏目管理模块设计说明4.1程序描述只有一级管理员才可以创建栏目。4.2功能栏目管理功能包括:创建栏目;移动栏目;修改栏目;查看栏目属性;给同级栏目排序;删除栏目;给同级栏目下的文章排序;4.3性能无4.4输入项创建栏目的输入项如下:输入项名称类型说明栏目名称字符不能重复移动栏目的输入项 :输入项名称类型说明栏目名称字符你要移动到的栏目名称修改栏目的输入项:输入项名称类型说明栏目名称字符修改后的栏目名称文章排序字符栏目中文章能的排序方式栏目说明字符对该栏目的说明上传图片CLOB栏目排序的输入项:输入项名称类型说明栏目名称1字符需要排序的栏目栏目名称2字符栏目1排序后新位置文章排序的输入项:输入项名称类型说明文章名称1字符需要排序的文章文章名称2字符文章1排序后新位置查看栏目属性、删除栏目的输入项如下:输入项名称类型说明栏目名称字符4.5输出项创建栏目、移动栏目的输出项:显示所有栏目和栏目的相关操作,创建失败显示错误页面,给出原因。修改栏目的输出项:修改成功给出修改成功提示,修改失败给出失败原因。查看栏目属性的输出项: 显示查看栏目的属性;级栏目排序、文章排序的输出项: 排序成功给出排序成功的提示,若失败给出失败的原因。文章回收站的输出项: 文章恢复成功则提示恢复文章的ID,若失败给出失败原因。4.6算法1)创建栏目中的有关说明: 栏目创建时,栏目名称不能含有”<”、”>”、”,”、” ”、”、”等非法字符并且不能为空;2)移动栏目: 同时移动该栏目下的文章;3)修改栏目: 除了修改该栏目的名称、说明和栏目图片外还要能修改该栏目下文章的排序方式。4)给同级栏目排序: 修改文章栏目表格中的COLUMN_ORDER字段。5)删除栏目: 同时删除该栏目下的文章;6)给同级栏目下的文章排序: 修改文章栏目表格中的COLUMN_AORDER字段。4.7流程逻辑创建栏目:移动栏目:修改栏目:查看栏目属性:给同级栏目排序:删除栏目:同级栏目下的文章排序:4.8接口1) 有关CmsCloumnBo中的说明: /添加栏目l public static String addColumn(String columnId, String columnName,String columnNote) ;/移动栏目l public static void moveColumn(String todoColumnid, String toColumnId);/获取指定id的column对象l public static CmsColumn loadCmsColumnVo(String colId);/更新指定的栏目l public static void updateColumn(CmsColumn col);/取得指定主键的栏目的pojol public static CmsColumn getColunAttribute(String colId);/设置栏目关联l public static void setIndexImg(String colId, String attIds);/设置栏目关联l public static void setColumnRelative(String baseColumn, String toColumn);/取得已经与指定栏目设置关联的栏目l public static String hasRelativeColumn(String colId);/删除已经关联的栏目l public static void deleteRelative(String colId);/生成栏目文章排序的optionsl public static String articleOrderOption(String selectOrder);/逻辑删除栏目l public static void deleteColumn(String colId);/验证同一级目录下同名栏目是否存在l public static boolean nameIsExist(String newName, String parentId);/获得所有逻辑删除标志为假的栏目l public static List getAllColumnList();/将栏目信息写入文件,用于栏目下拉列表的显示l public static void writeColumnOptionFile(HttpServletRequest request);/读取所有栏目并形成<option value=''></option>的形式l public static String getAllColunmOption();/查询该栏目的所有上层栏目,包含该栏目l public static List getAllParentColumns(String columnId);/查询该栏目下的第一层子栏目l public static List getAllCurrLayerColumns(String columnLayer);/修改栏目排序l public static void modcolOrder(String colId, int newOrder,String sql);/2) 有关公共权限类PowerBo中的说明:(权限部分是整个系统中都要用到的)/逐级添加管理员的栏目权限,修改指定funcNodePath的权限字符串将新值添加到scopeStr后l public void addPowerScopeStr(String colId);/获取该管理员拥有权限的栏目的listl public List getColumnPowerList(String funcNodePath);/逐级添加管理员的栏目权限,修改指定funcNodePath的权限字符串将新值添加到scopeStr后l public void addPowerScopeStr(String colId, String funcNodePath);/将数组用“/”作连接组成字符串l private String array2String(String s);/用户选择一级栏目排序时 显示用户权限下所对应的一级栏目SQLl public String getColumnPowerFirstList(String funcNodePath);/更新用户栏目权限l public void saveColumnPower(String scopeStr, String funcNodePath);/取得该管理员tbnc_adminPowerScope表中的ScopeStr字段,并且按照/拆分成数组l public String getColumnScopeStr(String funcNodePath);/取得该管理员tbnc_adminPowerScope表中的编辑、校对、审核权限的ScopeStr字段,并且按照/拆分成数组l public String getColumnEPCScopeStr();/可以为该拥护设置那些功能的栏目权限列表l public List hasPowerScopeList();/读取tbnc_adminFunctionTree中的haveScope字段为1的纪录l private List getHasPowerScopeFuncList();/ 更新FuncNodePathl public void updateFuncNodePath(String funcNodePath);/返回管理员的功能节点FuncNodePath,并转为数组l public String getFuncNodePath();/读取该管理员拥有的传入的功能的栏目并形成<option value=''></option>的形式 l public String getColunmOption(String funcNodePath);/读取该管理员拥有的传入的功能的栏目并形成<option value=''></option>的形式 l public String getIndexImgColunmOption();/读取该管理员拥有的编、校、审功能的栏目并形成<option value=''></option>的形式l public String getColunmEPCOption();/读取该管理员拥有的传入的功能的栏目并形成<option value=''></option>的形式l public String getColunmOption(String funcNodePath, String selectVal);/判断当前管理员是否有对要操作的管理员的操作权限(是否为该管理员直接创建)l public static boolean hasOperateAdminPower(String enableCreateUser,String adminPath, String operateAdminaccount);/获取AdminiFunctionTree中的所有值,并判断要操作的管理员所拥有的FuncNodePath做比较,并继承上级管理员权限l public List getAdminPowerList(String parentAccount, String parentPath);/获取该管理员已经拥有的传入的功能的栏目权限列表l public List getPowerScopeColumnList(String funcNodePath,String parentAccount, String parentPath);4.9存储分配 1) 中文名称:文章栏目表格表名称:TBNC_CMSCOLUMN主键名称:COLUMN_ID索引: 字段名称字段说明数据类型及宽度是否为空主键标志说明COLUMN_ID栏目IDNUMBER(10)NoYes主键COLUMN_NAME栏目名称Varchar2(250)NoNoCOLUMN_LAYER栏目层次标识串Varchar2(250)NoNoCOLUMN_NOTE栏目注释Varchar2(500)YesNoDELFLAG逻辑删除Varchar2(1)YesNoCOLUMN_ORDER栏目顺序Varchar2(6)YesNoCOLUMN_AORDER栏目文章顺序Varchar2(1)YesNoCOLUMN_IMG栏目图片BLOBYesNoCOLUMN_RELATIVE栏目关联CLOBYesNo2) 中文名称:文章表表名称:TBNC_CMSARTICLE主键名称:ARTICLE_ID索引: 字段名称字段说明数据类型及宽度为空主键说明ARTICLE_ID文章idNUMBER(10)NoYes自动增长ARTICLE_TITLE文章标题VARCHAR2(255)NoNoRTICLE_CONTENT文章标题CLOBNoNoCOLUMN_ID栏目idVARCHAR2(255)NoNoARTICLE_KEY文章关键字VARCHAR2(255)YesNoARTICLE_HITS文章点击数NUMBER(10)YesNo默认为0ARTICLE_WRITER文章作者VARCHAR2(255)YesNoARTICLE_DATETIME文章写作时间DATEYesNo默认为当前时间ARTICLE_INDATETIME文章录入时间DATEYesNo当前时间ARTICLE_ORDER文章顺序NUMBER(10)YesNoARTICLE_MENU文章锚点CLOBYesNoARTICLE_BODY文章显示的HTML源码CLOBNoNoARTICLE_ATTACHMENT文章HTML附件CLOBYesNoARTICLE_CHECKID文章审核标志VARCHAR2(1)YesNo0:未审核,1:审核未通过,2:审核通过DELFLAG逻辑删除标志VARCHAR2(1)YesNo0未删除,1:删除ARTICLE_TEMPLET_ID文章模板IDNUMBER(10)YesNoARTICLE_INPUTER文章录入员VARCHAR2(255)NoNoARTICLE_ORIGINAL文章原出处VARCHAR2(255)YesNoARTICLE_VIEW是否允许评论VARCHAR2(1)YesNoARTICLE_VTITLE文章副标题VARCHAR2(255)YesNoARTICLE_PROOFREADID校对标记VARCHAR2(1)YesNo0:未校对,1:已校对,2:已经报审ARTICLE_CHECKTEXT审核意见CLOBYesNoARTICLE_CHECKACCOUNT审核的管理员VARCHAR2(255)YesNoARTICLE_LEVEL文章等级0NUMBER(10)YesNo090,10个等级RELEASE_DATE发布日期DATEINVALIDATION_DATE失效日期DATELOCKACCOUNT当前锁定该文章的管理员账号VARCHAR2(255)4.10测试计划测试包括:添加栏目、修改栏目、删除栏目、移动栏目、查看栏目属性、给栏目和栏目下的文章排序以及文章回收功能。4.11尚未解决的问题无5 文章管理模块设计说明5.1程序描述可对文章做编辑、校对、审核、移动、查询、修改文章所属栏目的操作。5.2功能文章管理功能包括:文章编辑;文章校对;文章审核;文章查询;修改文章所属栏目;文章复制;5.3性能无5.4输入项文章编辑的输入项如下:输入项名称类型说明文章标题字符不能重复文章内容大对象可以重复文章审核的输入项:输入项名称类型说明审核状态字符1 审核通过 0 未通过审核意见字符审核意见文章查询的输入项:输入项名称类型说明文章ID字符标题字符作者字符录入人字符正文字符关键词字符栏目字符日期日期审核状态字符校对状态字符修改文章所属栏目的输入项:输入项名称类型说明文章名称字符准备被修改的文章栏目名称字符准备修改到哪个栏目下文章复制的输入项:输入项名称类型说明文章名称字符准备被复制的文章栏目名称字符准备复制到哪个栏目下5.5输出项文章编辑,文章校对,文章审核输出项:显示所操作文章标题,及文章此刻的状态,如操作失败,给出错误信息。查询的输出项:根据不同查询条件列出相应的文章。修改文章所属栏目的输出项: 显示文章修改后所属栏目的新位置;文章复制的输出项:显示文章被复制到指定栏目下的内容5.6算法1)文章编辑中的有关说明: 文章创建时,文章名称不能含有”<”、”>”、”,”、” ”、”、”等非法字符并且不能为空;2)文章校对: 提供单个校对和批量校对的功能;3)文章审核:提供单个文章的审核和批量文章审核的功能4)文章查询: 通过不同查询条件组成不同的查询语句,显示不同条件下的内容,同时提供相应操作三。5)修改文章所属栏目: 确定文章原来所属栏目及修改后的栏目,修改时将文章的COLUMN_ID修改为新栏目ID;6)文章复制: 将原文章的所有属性保持原来,在新栏目下只改变COLUMN_ID为 新栏目ID。5.7流程逻辑文章编辑:文章校对文章审核:文章查询:修改文章所属栏目:文章复制:5.8接口1) 有关ArticleBo中的说明: /在文章发布时,将文章同时复制到相关栏目public static void relativeArticleRelease(String artId);/计算文章的order值,传入栏目id,查询该栏目下当前最大的article_order并把值加1返回l public static String getOrder(String colId);/修改文章排序l public static void modOrder(String artId, int newOrder);/文章复制,读取现有的一篇文章,将其拷贝一份,并修改拷贝的栏目到制订栏目public static Integer articleCopy(String fromId, String toColId);/根据columnId取得该栏目的层次名称l public static List getColumnNames(String columnId);/取得指定id的栏目名称l public static String getColumnName(String colId);/把columnid替换成名称,还是用的columnid属性l public static List getColunmNameArticleList(List list);/取得传入id的所有子栏目的id,包括传入的idl private static String getSubColumnIds(String colId);/取得传入id的所有子栏目的id,包括传入的id, 生成'123','124','125',.形式的字符串l public static String getColumnIdSqlString(String colId);/批量修文章状态l public static void modArticleColumn(String artIds, String newColumn);/批量修文章状态l public static void updateArticleStat(String artIds, String field,l String fieldValue);/获取制订sql语句的文章id数组l public static String getIds(String sql);/添加文章l public static String addArticle(CmsArticle art);/取得指定id的文章,需实例化该类l public CmsArticle getArticle();/修改文章l public static void updateArticle(CmsArticle art);/逻辑删除文章l public static void deleteArticle(String artIds);/取得指定条件的listl public static List getArticleList(String sql);/计算查询到了多少条记录l public static int count(String sql);/执行分页查询l public static List doQuery(String sql, int page, int pageSize);/取得一行一列的string类型的纪录l private static String dual(String sql);/生成查询语句,与分页pageNav用到的字符串,和查询中文描述l public static String bulidSqlString(String title, String colId,l String inSubColumn, String key, String dateTpye, String beginDate,l String endDate, String content, String inputer, String writer,l String checkId, String prroferadId, String artId, boolean delete);/生成查询条件的中文描述l public static String bulidSqlDepict(String title, String colId,l String inSubColumn, String key, String dateTpye, String beginDate,l String endDate, String content, String inputer, String writer,l String checkId, String prroferadId, String artId, boolean delete);/生成分页中使用的查询字符串l public static String bulidPageNavString(String title, String colId,l String inSubColumn, String key, String dateTpye, String beginDate,l String endDate, String content, String inputer, String writer,l String checkId, String prroferadId, String artId,l String orderField, String orderType);/为生成的sql语句加入排序条件l public static String addOrder(String sql, String orderField,l String orderType);/生成带有权限限制的sql语句l public static String buildPowerSqlStr(String powerStr, String sql);/为vo赋值l public static CmsArticle setValue(String artId, String title,l String columnId, String writer, String inputer, String original,l String body, String contentText, String artDate, String artInDate,l String level, String key, String checkId, String checkAccount,l String checkText, String proofreadId, String vTitle,l String delFlag, String templet, String view, String invalDate,l String relDate, String lockAccount, String order, String menu,l String attachment, String hits);/判断一个字符串是否为空l public static boolean isNotEmptyStr(String str);/ 判断一个字符串是否可以转换成int型数据l public static boolean isIntStr(String str);2) 有关公共权限类PowerBo中的说明:(权限部分是整个系统中都要用到的)/逐级添加管理员的栏目权限,修改指定funcNodePath的权限字符串将新值添加到scopeStr后l public void addPowerScopeStr(String colId);/获取该管理员拥有权限的栏目的listl public List getColumnPowerList(String funcNodePath);/逐级添加管理员的栏目权限,修改指定funcNodePath的权限字符串将新值添加到scopeStr后l public void addPowerScopeStr(String colId, String funcNodePath);/将数组用“/”作连接组成字符串l private String array2String(String s);/用户选择一级栏目排序时 显示用户权限下所对应的一级栏目SQLl public String getColumnPowerFirstList(String funcNodePath);/更新用户栏目权限l public void saveColumn