软件项目开发规范

规范目的

为了使团队中的每一位成员都形成统一的开发约定,特制定本规范文档,在今后的开发过程中,请严格按照此文档约定的规则进行编码。通过此规范,希望可以给各程序员之间起到沟通的桥梁的作用,并增强程序的可读性。

在使用过程中,如果碰到本文档中没进行约定的规则,待商议后对该文档进行补充完善。

开发管理

项目进度周报表格如下:

项目编号:                
项目名称:
汇报人:
汇报日期:
项目进度详细描述:
其他问题:

项目周期

项目开发周期分为以下几个步骤:

序号 步骤 说明 参与角色 生成文档或程序(打*号为可选)
1 可行性分析 对项目的商务和用户需求进行调研 项目核心小组 可行性分析报告*
确定是否需要立项开发 核心技术员 技术调研报告*
2 立项 正式立项 项目核心小组 项目初步计划*
指定项目经理 项目经理
制定初步计划
3 需求分析 对项目进行详细的需求分析 项目经理 任务说明书
编写需求分析文档 项目核心小组 项目计划修订版本
4 概要设计 划分功能模块和功能点 项目经理 需求-模块-功能对应表
选择项目开发技术 项目核心小组
指定项目开发成员
修订项目计划
5 详细设计 进行项目详细设计 项目经理 详细设计文档
确定项目详细任务和进度 项目核心小组 项目计划确定版本
确定项目计划 开发人员
6 开发 实施编码工作 项目经理项目 项目计划修订版本*
实施界面优化工作 开发人员
调整项目计划 设计人员
7 测试 桌面检查 项目经理 测试申请
代码走查 开发人员 测试计划
单元测试 测试人员 测试报告
集成测试
8 项目验收 项目验收 项目核心小组 项目所有文档和程序
项目归档 项目经理

文档规范

待补充。

前端开发规范

基本准则

符合 web 标准,语义化 HTML,结构表现行为分离,兼容性优良。页面性能方面,代码要求简洁明了有序,尽可能的减小服务器负载,保证最快的解析速度。

文件规范

  1. HTML || CSS || JavaScript || Images 文件均归档至本文档约定的目录中。
  2. HTML 文件命名为英文命名,后缀名为 .html
    • 将对应界面稿放于页面同一目录中。
    • 若界面稿命名为中文,请重命名与 HTML 文件同名,以方便后端添加功能时查找对应页面。
  3. CSS 文件命名为英文命名,后缀名为 .css
    • 共用 base.css ,首页 index.css
    • 其他页面依实际模块需求命名。
  4. JavaScript 文件命名为英文命名,后缀名为 .js
    • 共用 common.js
    • 其他依实际模块需求命名。

HTML 书写规范

  1. 文档类型声明及编码: 统一为 HTML5 声明类型 <!DOCTYPE html> ; 编码统一为 <meta charset="utf-8" /> ,书写时利用 IDE 实现层次分明的缩进。
  2. 非特殊情况下样式文件必须外链至 <head>...</head> 之间;非特殊情况下 JavaScript 文件必须外链至页面底部。
  3. 引入样式文件或 JavaScript 文件时,须略去默认类型声明。
    <link rel="stylesheet" href="..." />
    <style>...</style>
    <script src="..."></script>
    
  4. 引入 JavaScript 库文件,文件名须包含库名称及版本号及是否为压缩版,比如 jquery-1.4.1.min.js
  5. 引入 jQuery 插件,文件名格式为库名称+插件名称,比如 jquery.cookie.js ;
  6. 所有编码均遵循 XHTML 标准,标签 || 属性 || 属性命名必须由小写字母及下划线数字组成,且所有标签必须闭合,包括 br ( <br /> ), hr ( <hr /> )等,属性值必须用双引号包括。
  7. 充分利用无兼容性问题的 HTML 自身标签,比如 span、em、strong、optgroup、label 等等。
    需要为 HTML 元素添加自定义属性的时候,首先要考虑下有没有默认的已有的合适标签去设置,如果没有,可以使用须以"data-"为前缀来添加自定义属性,避免使用"data:"等其他命名方式。
    
  8. 语义化 HTML,如标题根据重要性用 h*(同一页面只能有一个 h1),段落标记用 p,列表用 ul,内联元素中不可嵌套块级元素。
  9. 尽可能减少 div 嵌套。
    错误编写:
    <div class="box">
      <div class="welcome">欢迎访问 XXX,您的用户名是<div class="name">用户名</div></div>
    </div>
    

    正确编写:

    <div class="box">
      <p>欢迎访问 XXX,您的用户名是<span>用户名</span></p>
    </div>
    
  10. 书写链接地址时,必须避免重定向,须在 URL 地址后面加上 / 。例如
    <a href="http://itaolun.com/">测试链接</a>
    
  11. 在页面中尽量避免使用 style 属性。
    <div style="…">
      ...
    </div>
    
  12. 必须为含有描述性表单元素 input || textarea 添加 label
    错误编写:
    <p>姓名: <input type="text" id="name" name="name" /></p>
    

    正确编写:

    <p>
      <label for="name">姓名: </label>
      <input type="text" id="name" />
    </p>
    
  13. 能以背景形式呈现的图片,尽量写入 CSS 样式中。
  14. 重要图片必须加上 alt 属性,给重要的元素和截断的元素加上 title
  15. 给区块代码及重要功能(比如循环)加上注释,方便后台添加功能。
  16. 特殊符号使用,尽可能使用代码替代。比如 <(&lt;) || >(&gt;) || 空格(&nbsp;) || »(&raquo;) 等等。
  17. 书写页面过程中,请考虑向后扩展性。
  18. class & id 参见 CSS 书写规范。

CSS 书写规范

  1. 编码统一为 utf-8
  2. 协作开发及分工:
    • 根据各个模块和页面相似程序,拟定大体框架文件。
    • 交由前端人员实现内部结构&表现&行为
    • 共用 CSS 文件 base.css 包含 reset 及头部底部样式,此文件不可随意修改。
    • 协作开发过程中,每个页面请务必都要引入 base.css
  3. class 与 id 的使用:
    • id 是唯一的并是父级的
    • id 仅使用在大的模块上
    • id 原则上都是由我分发框架文件时命名的(为 JavaScript 预留钩子的除外)
    • class 是可以重复的并是子级的
    • class 可用在重复使用率高及子级中
  4. 为 JavaScript 预留钩子的 id 命名,请以 js_ 起始。例如: js_hidejs_show
  5. class 与 id 命名:
    • 大的框架命名比如 header || footer || wrapper || left || right 之类在拟定大体框架文件时统一命名。
    • 其他样式名称由 小写英文 || 数字|| _ 来组合命名。例如 i_commentfontredwidth200
    • 避免使用中文拼音,尽量使用简易的单词组合
    • 命名要语义化,简明化
  6. 规避 class 与 id 命名(此条重要,若有不明白请及时沟通):
    例如要在框架页面的页面代码

    中加入新的 div 元素

    • 通过从属写法规避
      • HTML 写法:
        <div id="mainnav">
          <div class="firstnav">
            ...
          </div>
        </div>
        
      • 样式写法:
        #mainnav  .firstnav{.......}
        
    • 取父级元素 id || class 命名部分命名
      • 按 b 命名法则:
        <div id="mainnav">
          <div class="main_firstnav">
            ...
          </div>
        </div>
        
      • 样式写法:
        .main_firstnav{.......}
        
    • 以上两条规则只适用于已建好大体框架的页面
    • 重复使用率高的命名,请以自己代号加下划线起始,比如 i_clear
  7. CSS 属性书写顺序,建议遵循布局定位属性–>自身属性–>文本属性–>其他属性。
    此条可根据自身习惯书写,但尽量保证同类属性写在一起。
    属性列举:
    • 布局定位属性主要包括: display & list-style & position(相应的 top,right,bottom,left) & float & clear & visibility & overflow
    • 自身属性主要包括: width & height & margin & padding & border & background;
    • 文本属性主要包括:color & font & text-decoration & text-align & vertical-align & white- space & 其他 & content
    • 以上列举的属性只是最常用到的,并不代表全部属性
  8. 书写代码前,考虑并提高样式重复使用率。
  9. 充分利用 HTML 自身属性及样式继承原理减少代码量。例如:
    实现列表中的日期居右显示。
    <ul class="list">
      <li>
        这儿是标题列表<span>2010-09-15</span>
      </li>
    </ul>
    

    样式定义:

    ul.list li{position:relative}
    ul.list li span{position:absolute; right:0}
    
  10. 样式表中中文字体名,请务必转码成 unicode 码,以避免编码错误时乱码。
  11. 背景图片请尽可能使用 sprite 技术,减小 http 请求,考虑到多人协作开发,sprite 按模块制作。
  12. 使用 table 标签时(尽量避免使用 table 标签),请不要用 width || height || cellspacing || cellpadding 等 table 属性直接定义表现,应尽可能的利用 table 自身私有属性分离结构与表现,如 thead || tr || th || td || tbody || tfoot || colgroup || scope。
    base.css 文件中将初始化表格样式,cellspaing 及 cellpadding 的 CSS 控制方法:
    table{border:0;margin:0;border-collapse:collapse;} table th,table td{padding:0;}
    
  13. 杜绝使用 <meta http-equiv="X-UA-Compatible" content="IE=7" /> 兼容 ie8。
  14. 用 png 图片做图片时,要求图片格式为 png-8 格式,若 png-8 实在影响图片质量或其中有半透明效果,请为 ie6 单独定义背景:
    _background:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src='img/bg.png');
    
  15. 避免兼容性属性的使用,比如 text-shadow || CSS3 的相关属性。
  16. 减少使用影响性能的属性,比如 position:absolute || float
  17. 必须为大区块样式添加注释,小区块适量注释。
  18. 代码缩进与格式: 建议单行书写,可根据自身习惯,后期优化安排统一处理。

CSS样式常用命名

页面结构

页头
header
导航
nav
内容
content
容器
container/wrap
整体宽度
wrapper
页面主体
main
栏目
column
中间内容
center
侧栏
sidebar
页尾
footer

导航

导航
nav || mainbav || globalnav
顶导航
topnav
子导航
subnav
边导航
sidebar
左导航
leftsidebar
右导航
rightsidebar
边导航图标
sidebaricon
菜单
menu
子菜单
submenu

功能

标题
title
标志
logo
登陆
login
登录条
loginbar
注册
regsiter
电影
movie
影院
cinema
话题
tweet
评论
comment
标签
label
价格
price
定票
order
广告 || 标语
banner
品牌
brand
摘要
summary
常见问题
faqs
关键词
keyword
博客
blog
论坛
forum
搜索
search
搜索输入框
searchinput
搜索输出
searchoutput
搜索结果
searchresults
状态
status
按钮
btn
滚动
scroll
标签页
tab
文章列表
list
提示信息
msg || message
当前的
current
小技巧
tips
皮肤
skin
充值
pay
活动
activity
推广
promotion
公告
announcement
排行
ranking
电影简介
movieprofile
影院简介
cinemaprofile
在线交流
onlinecommunication
加入我们
joinus
联系我们
contactus
信息发布
information
返回首页
homepage
邮编
zipcode || postalcode
建设中
inconstruction
证书
certificate
地址
add
电话
tel
传真
fax
论坛
Forum
综述
general
业绩
achievements
大事
greatevent
动态
trends
服务
service
环境
environment
发送
delivery
提交
submit
重写
reset
社区
community
业务
business
在线调查
onlineinquiry
下载中心
download
意见反馈
feedback
图标
icon
注释
note
指南
guide
服务
service
热点
hot
新闻
news
下载
download
投票
vote
当前位置
loc
购物车
shop
标签
tag
网站信息
siteinfo
法律声明
legalnotice
合作伙伴
partner
友情链接
friendlink
版权
copyright

JavaScript 书写规范

  1. 文件编码统一为 utf-8
  2. 书写过程过,每行代码结束必须有分号。
  3. 原则上所有功能均根据项目需求原生开发,以避免网上 down 下来的代码造成的代码污染。
    例如沉冗代码、与现有代码冲突、浏览器兼容问题等。
    
  4. 库引入: 原则上仅引入 jQuery 库。若需引入第三方库,须与团队其他人员讨论决定。
  5. 变量命名: 驼峰式命名。
    • 要求变量集中声明,避免全局变量。
    • 原生 JavaScript 变量要求是纯英文字母,首字母须小写。例如 iTaoLun
    • jQuery 变量要求首字符为’_’,其他与原生 JavaScript 规则相同。例如如: _iTaoLun
  6. 类命名: 首字母大写,驼峰式命名。例如 ITaoLun
  7. 函数命名: 首字母小写驼峰式命名。例如 iTaoLun()
  8. 命名语义化,尽可能利用英文单词或其缩写。
  9. 尽量避免使用存在兼容性及消耗资源的方法或属性,比如 eval_r() & innerText
  10. 后期优化中,JavaScript 非注释类中文字符须转换成 unicode 编码使用,以避免编码错误时乱码显示。
  11. 代码结构明了,加适量注释。提高函数重用率。
  12. 注重与 HTML 分离,减小 reflow,注重性能。

图片规范

  1. 所有页面元素类图片均放入 img 文件夹,测试用图片放入 img/testing 文件夹。
  2. 图片格式仅限于 gif || png || jpg。
  3. 命名全部用 小写英文字母 || 数字 || _ 的组合,其中不得包含 汉字 || 空格 || 特殊字符。尽量用易懂的词汇,便于团队其他成员理解。命名分头尾两部分,用下划线隔开。例如 adleft01.gif || btnsubmit.gif。
  4. 在保证视觉效果的情况下选择最小的图片格式与图片质量,以减少加载时间。
  5. 尽量避免使用半透明的 png 图片(若使用,请参考 CSS 规范相关说明)。
  6. 运用 CSS sprite 技术集中小的背景图或图标,减小页面 http 请求.
    注意:请务必在对应的 sprite psd 源图中划参考线,并保存至 img 目录下.
    

注释规范

  1. HTML 注释: 注释格式 <!–这儿是注释–>,
    '--'只能在注释的始末位置,不可置入注释文字区域。
    
  2. CSS 注释: 注释格式暂无。
  3. JavaScript 注释。
    • 单行注释使用 //这儿是单行注释
    • 多行注释使用 /* ... */

开发及测试工具约定

建议使用 Aptana || Dreamweaver || Vim ,亦可根据自己喜好选择,但须遵循如下原则:

  1. 不可利用 IDE 的视图模式’画’代码。
  2. 不可利用 IDE 生成相关功能代码,比如 Dreamweaver 内置的一些功能 js。
  3. 编码必须格式化,比如缩进。

测试工具: 前期开发仅测试 FireFox || IE9 || IE8 || IE7,后期优化时加入 Safari || Chrome || IE6。 建议测试顺序: FireFox–>IE9–>IE8–>IE7–>Safari–>Chrome–>IE6,建议安装 firebug 及 IE Tab Plus 插件。

其他规范

  1. 开发过程中严格按分工完成页面,以提高 CSS 复用率,避免重复开发。
  2. 减小沉冗代码,书写所有人都可以看的懂的代码。
  3. 简洁易懂是一种美德。为用户着想,为服务器着想。

后台开发规范

命名规范

项目编号命名规范

项目缩写为 PPZ。项目任务编号以 PPZ-001 格式开始。

如果 PPZ-001 是一个 40 小时的可拆分的任务。将分解为 PPZ-001:1、PPZ-001:2 等合计为 40 小时的任务。

  • PPZ-001:BUG:1 表示在这个任务中发现的确定的 BUG。
  • PPZ-001:S:1 表示这个任务中发生的不适用的行为。

当 PPZ-001:以后的任务全部完成了,才能表示 PPZ-001 任务完成。无法确定相关性的 BUG,采用 BUG-001 的格式编写。或者是编为新的 PPZ。

文件命名规范

  • 类文件
    命名和其中的类名字一致。 比如 ClsLogin.cs
    Public Class ClsLogin
    
    
  • SQL 初始化文件。
    初始化文件为 Init.sql。升级文件为 [V1]-[V2].sql。比如 1.0-1.1.sql。
  • 文件头
    在每个文件头必须包含以下注释说明。
    /*----------------------------------------------------------------
    // 功能描述:
    // 创 建 者:
    // 创建日期:
    // 修改记录:
    //----------------------------------------------------------------*/
    

页面命名规范

待补充。

数据库命名规范

PK 值必须加上表名前缀,其他字段和数据实体定义保持一致。

代码命名规范

  • 基本约定
    所有的命名名称都必须使用能直接体现具体含义的名字。

    不能使用 X,Y,Z,等无意义的名称进行定义,除循环变量除外。

    所有的成员变量必须在所有成员方法前面声明,用一个换行把它和方法分开。例如:

    public class ClsLogin
    {
        TextBox txtUserName;//
        TextBox txtPassWord;//
    
        public Login()
        {
        }
    }
    

    类文件名的名称必须要能反应类的内容,最好是和类同名,一个文件只写一个类,文件和文件夹的名称也应该精确地说明它们的用途。例如:

    文件名:Login.cs
    类名:public class ClsLogin
    大括号"{"要新起一行。
    

    正确编写:

    public class ClsLogin
    {
    }
    

    错误编写:

    public class ClsLogin{
    }
    

    switch 语句一定要有 default 来处理意外情况。

    同程序外部连接(如连接数据库、接口、文件等)一定要捕获任何类型的异常(try)给出友好的消息给用户,必要时用日志记录错误的细节,包括发生的时间,和相关方法,类名等。

    始终使用”{ }”包含 if/else 下的语句,即使只有一条语句。

    正确编写:

    if (true)
    {
        // 语句。
    }
    

    错误编写:

    if (true)
        // 语句。
    

    把引用的系统的 namespace 和自定义或第三方的分开。例如:

    using System;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using MYNameSpace.NameSpace;
    

    不同函数或方法之间,需要用空行来分开。例如:

    public class ClsLogin
    {
        public Login()
        {
        }
    
        Public ~Login()
        {
        }
    }
    

    不在代码中使用具体的路径和驱动器名,必须使用相对路径。

    代码的缩进用 Tab,而不要用 space。

    使用某个控件的值时,尽量命名局部变量。

    public string GetTitle()
    {
        string StrTitle = lblTitle.Text;
        StrTitle += StrTitle;
        return StrTitle;
    }
    

    一个方法只完成一个任务。不要把多个任务组合到一个方法中。

    避免使用大文件。如果一个文件里的代码超过 300 ~ 400 行,必须考虑将代码分开到不同类中。

  • 命名原则
    名称应该说明的是“什么”而不是“如何”,通过避免使用公开基础实现(它们会发生改变)的名称,可以保留简化复杂性的抽象层。例如,可以使用 GetNextStudent(),而不是 GetNextArrayElement()。

    选择正确名称时的困难可能表明需要进一步分析或定义项的目的。使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。表现力强的名称是为了帮助人们阅读,因此,提供人们可以理解的名称是有意义的。

    以下几点是推荐的命名方法:

    1. 在类属性的名称中包含类名是多余的,如 Book.BookTitle。而是应该使用 Book.Title;
    2. 只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index);
    3. 在变量名中使用互补对,如 min/max、begin/end 和 open/close;
    4. 布尔变量名应该包含 Is,这意味着 Yes/No 或 True/False 值,如 fileIsFound;但若变量名已经明确表明了“是”或“否”的含义,则应不再使用“Is”,例如:Enable、Exists;
    5. 在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag,而是使用更具描述性的名称,如 documentFormatType。 (此项只供参考)
    6. 即使对于可能仅出现在几个代码行中的生存期很短的变量,仍应使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i 或 j。 可能的情况下,尽量不要使用原义数字或原义字符串。例如:
      For i = 1 To 7
      

      而是使用命名常数,以便于维护和理解。例如:

      For i = 1 To NUM_DAYS_IN_WEEK
      
  • 大小写规则
    对于仅由两个或者更少字母组成的标识符,所有字母都大写。例如:
    System.IO
    System.Web.UI
    

    下表汇总了大写规则,并提供了不同类型的标识符的示例。

    标识符 大小写 示例
    Pascal AppDomain
    枚举类型 Pascal ErrorLevel
    枚举值 Pascal FatalError
    事件 Pascal ValueChange
    异常类 Pascal WebException(总是以 Exception 后缀结尾)
    只读的静态字段 Pascal RedValue
    接口 Pascal IDisposable(总是以 I 前缀开始)
    方法 Pascal ToString
    命名空间 Pascal System.Drawing
    属性 Pascal BackColor
    公共成员变量 Pascal RedValue(原则上不使用公共成员变量)
    私有成员变量 Camel mRedValue
    参数 Camel typeName
    方法内的变量 Camel backColor
  • 缩写
    为了避免混淆和保证跨语言交互操作,有关区缩写的使用草看下列规则:
    1. 不要使用计算机领域中未被普遍接受的缩写。
    2. 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 缩写,用 OLAP 作为 On-line Analytical Processing 的缩写。
    3. 在使用缩写时,对于超过两个字符长度的缩写请使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 HTMLButton。对于仅含两个字符的缩写应全部大写,如:System.IO,而不是 System.Io。
  • 命名空间
    1. 对于核心平台项目中开发代码所使用的命名空间一般为:
      PPZ. [模块名][.子分类]
      

      例如:

      namespace PPZ.SysFramework
      namespace PPZ.IBMP.Portals.Gather
      
    2. 命名空间使用 Pascal 大小写,用逗号分隔开。
    3. 命名空间和类不能使用同样的名字。例如,有一个类被命名为 Debug 后,就不要再使用 Debug 作为一个名称空间名。

    1. 类的命名使用名词或名词短语,采用 Pascal 大小写。
    2. 使用全称避免缩写,除非缩写已是一种公认的约定,如 URL、HTML。
    3. 类的命名不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。
    4. 类的命名中不要使用下划线字符 (_)。
    5. 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 是适当的。在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。
      public class FileStream
      public class Button
      public class String
      
  • 接口
    1. 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词;
    2. 使用 Pascal 大小写,少用缩写;
    3. 给接口名称加上字母 I 前缀,以指示该类型为接口。在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。
    4. 不要使用下划线字符 (_)。

    以下是正确命名的接口的示例:

    public interface IServiceProvider
    public interface IFormatable
    

    以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类:

    public interface IComponent
    {
        // Implementation code goes here.
    }
    
    public class Component: IComponent
    {
        // Implementation code goes here.
    }
    
  • 属性(Attribute)
    这个属性主要是用在反射的时候。

    应该总是将后缀 Attribute 添加到自定义属性类。以下是正确命名的属性类的示例。

    public class ObsoleteAttribute
    {
    }
    
  • 参数
    以下规则概述参数的命名指南:
    1. 使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。
    2. 对参数名称使用 Camel 大小写。
    3. 使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此,通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
    4. 不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。
    5. 不要给参数名称加匈牙利语类型表示法的前缀。以下是正确命名的参数的示例:
      Type GetType(string typeName)
      
  • 方法
    以下规则概述方法的命名指南:
    1. 使用动词或动词短语命名方法。
    2. 使用 Pascal 大小写。

    以下是正确命名的方法的实例:

    RemoveAll()
    GetCharArray()
    Invoke()
    
  • 属性 (property)
    以下规则概述属性的命名指南:
    1. 使用名词或名词短语命名属性。
    2. 使用 Pascal 大小写。
    3. 考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为 Color 的属性,则属性的类型同样应该是 Color。请参阅本主题中后面的示例。

    以下代码示例阐释正确的属性命名。

    public class SampleClass
    {
         public Color BackColor
         {
              // Code for Get and Set accessors goes here.
         }
    }
    

    以下代码示例阐释提供其名称与类型相同的属性。

    public enum Color
    {
        // Insert code for Enum here.
    }
    
    
    public class Control
    {
        public Color Color
        {
            get
            {
                // Insert code here.
            }
            set
            {
                // Insert code here.
            }
        }
    }
    

    以下代码示例不正确,原因是 Color 属性是 Integer 类型的。

    public enum Color
    {
        // Insert code for Enum here.
    }
    
    
    public class Control
    {
        public int Color
        {
            // Insert code here
        }
    }
    
  • 事件
    以下规则概述事件的命名指南:
    1. 对事件处理程序名称使用 EventHandler 后缀。
    2. 指定两个名为 sender 和 e 的参数。sender 参数表示引发事件的对象,sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类。
    3. 用 EventArgs 后缀命名事件参数类。
    4. 考虑用动词命名事件。
    5. 使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的 Close 事件应当具有 Closing 事件和 Closed 事件。尽量不要使用 BeforeXxx/AfterXxx 命名模式。
    6. 不要在类型的事件声明上使用前缀或者后缀。例如,使用 Close,而不要使用 OnClose。
    7. 通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 OnXxx)。此方法只应具有事件参数 e,因为发送方总是类型的实例。

    以下示例阐释具有适当名称和参数的事件处理程序:

    public delegate void MouseEventHandler(object sender, MouseEventArgs e);
    

    以下示例阐释正确命名的事件参数类:

    public class MouseEventArgs : EventArgs
    {
        int x;
        int y;
    
        public MouseEventArgs(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    
        public int X
        {
            get
            {
                return x;
            }
        }
    
        public int Y
        {
            get
            {
                return y;
            }
        }
    }
    
  • 常量 (const)
    所有单词均大写,多个单词之间用 “_” 隔开。 例如:
    public const string PAGE_TITLE = "Welcome";
    
  • 字段
    以下规则概述字段的命名指南:
    1. private、protected 使用 Camel 大小写。
    2. public 使用 Pascal 大小写。
    3. 拼写出字段名称中使用的所有单词。仅在开发人员一般都能理解时使用缩写。字段名称不要使用大写字母。下面是正确命名的字段的示例。
      class SampleClass
      {
          string url;
          string destinationUrl;
      }
      
    4. 不要对字段名使用匈牙利语表示法。好的名称描述语义,而非类型。
    5. 不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来区分静态和非静态字段。例如,应用 g_ 或 s_ 前缀是不合适的。
    6. 对预定义对象实例使用公共静态只读字段。如果存在对象的预定义实例,则将它们声明为对象本身的公共静态只读字段。使用 Pascal 大小写,原因是字段是公共的。下面的代码示例阐释公共静态只读字段的正确使用。
    public struct Color
    {
        public static readonly Color Red = new Color(0x0000FF);
    
        public Color(int rgb)
        {
            // Insert code here.
        }
        public Color(byte r, byte g, byte b)
        {
            // Insert code here.
        }
    
        public byte RedValue
        {
            get
            {
                return Color;
            }
        }
    }
    
  • 静态字段
    以下规则概述静态字段的命名指南:
    1. 使用名词、名词短语或者名词的缩写命名静态字段。
    2. 使用 Pascal 大小写。
    3. 对静态字段名称使用匈牙利语表示法前缀。
    4. 建议尽可能使用静态属性而不是公共静态字段。
  • 集合
    集合是一组组合在一起的类似的类型化对象,如哈希表、查询、堆栈、字典和列表,集合的命名建议用复数。
  • 措词
    避免使用与常用的 .NET 框架命名空间重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms 或 UI。有关 .NET 框架命名空间的列表,请参阅类库。

    另外,避免使用和以下关键字冲突的标识符。

    AddHandler AddressOf Alias And Ansi
    As Assembly Auto Base Boolean
    ByRef Byte ByVal Call Case
    Catch CBool CByte Cchar CDate
    CDec CDbl Char Cint Class
    CLng CObj Const Cshort CSng
    CStr CType Date Decimal Declare
    Default Delegate Dim Do Double
    Each Else ElseIf End Enum
    Erase Error Event Exit ExternalSource
    False Finalize Finally Float For
    Friend Function Get GetType Goto
    Handles If Implements Imports In
    Inherits Integer Interface Is Let
    Lib Like Long Loop Me
    Mod Module MustInherit MustOverride MyBase
    MyClass Namespace New Next Not
    Nothing NotInheritable NotOverridable Object On
    Option Optional Or Overloads Overridable
    Overrides ParamArray Preserve Private Property
    Protected Public RaiseEvent ReadOnly ReDim
    Region REM RemoveHandler Resume Return
    Select Set Shadows Shared Short
    Single Static Step Stop String
    Structure Sub SyncLock Then Throw
    To True Try TypeOf Unicode
    Until volatile When While With
    WithEvents WriteOnly Xor Eval extends
    instanceof package var
  • 语句
    • 每行一个语句
      每行最多包含一个语句。例如:
      a++;       // 推荐
      b--;       // 推荐
      a++; b--;  // 不推荐
      
    • 复合语句
      复合语句是指包含“父语句{子语句;子语句;}”的语句,使用复合语句应遵循以下几点:
      1. 子语句要缩进。
      2. 左花括号“{” 在复合语句父语句的下一行并与之对齐,单独成行。
      3. 即使只有一条子语句要不要省略花括号“ {}”。 如
        while  (d + =  s++)
        {
            n++;
        }
        
    • return 语句
      return 语句中不使用括号,除非它能使返回值更加清晰。例如:
      return;
      return myDisk.size();
      return (size ? size : defaultSize);
      
    • if、if-else、if else-if 语句
      if、if-else、if else-if 语句使用格式:
      if ( condition )
      {
          statements;
      }
      if ( condition )
      {
          statements;
      }
      else
      {
          statements;
      }
      
      if (condition)
      {
          statements;
      }
      else if (condition)
      {
          statements;
      }
      else
      {
          statements;
      }
      
    • for、foreach 语句
      for 语句使用格式:
      for (initialization; condition; update)
      {
          statements;
      }
      

      空的 for 语句(所有的操作都在 initialization、condition 或 update 中实现)使用格式

      for (initialization; condition; update);    // update user id
      

      foreach 语句使用格式:

      foreach (object obj in array)
      {
          statements;
      }
      

      注意:

      1. 在循环过程中不要修改循环计数器。
      2. 对每个空循环体给出确认性注释。
    • while 语句
      while 语句使用格式:
      while (condition)
      {
          statements;
      }
      

      空的 while 语句使用格式:

      while (condition);
      
    • do – while 语句
      do – while 语句使用格式:
      do
      {
          statements;
      } while (condition);
      
    • switch – case 语句
      switch – case 语句使用格式:
      switch (condition)
      {
          case 1:
              {
                  statements;
                  break;
              }
      
          case 2:
              {
                  statements;
                  break;
              }
      
          default:
              {
                  statements;
                  break;
              }
      }
      

      注意:

      1. 语句 switch 中的每个 case 各占一行。
      2. 语句 switch 中的 case 按字母顺序排列。
      3. 为所有 switch 语句提供 default 分支。
      4. 所有的非空 case 语句必须用 “break;” 语句结束。
      5. 每个 case 和 default 分支的语句块必须用“{ }”括起来。
    • try – catch 语句
      try – catch 语句使用格式:
      try
      {
          statements;
      }
      catch (ExceptionClass e)
      {
          statements;
      }
      finally
      {
        statements;
      }
      
    • using 块语句
      using 块语句使用格式:
      using (object)
      {
          statements;
      }
      
  • 控件命名规范
    以下控件为常用的控件命名规范,按英文字母进行升序排列。在此列表中未定义的控件,将后期补充完善。
    控件类型 命名前缀 举例
    3D Panel pnl pnlGroup
    ADO Data ado adoBiblio
    Animated button ani aniMailBox
    Button btn btnOK
    Check box chk chkReadOnly
    Combo box cbo cboEnglish
    Dropdown list box ddl ddlUser
    Command button cmd cmdExit
    Common dialog dlg dlgFileOpen
    Communications com comFax
    Control ctr ctrCurrent
    Data dat datBiblio
    Data-bound combo box dbcbo dbcboLanguage
    Data-bound grid dbgrd dbgrdQueryResult
    Data-bound list box dblst dblstJobType
    Data combo dbc dbcAuthor
    Data grid dgd dgdTitles
    Data list dbl dblPublisher
    Data repeater drp drpLocation
    Date picker dtp dtpPublished
    Directory list box dir dirSource
    Drive list box drv drvTarget
    File list box fil filSource
    Flat scroll bar fsb fsbMove
    Form frm frmEntry
    Frame fra fraLanguage
    Gauge gau gauStatus
    Graph gra graRevenue
    Grid grd grdPrices
    Hierarchical flexgrid flex flexOrders
    Horizontal scroll bar hsb hsbVolume
    Image img imgIcon
    Image combo imgcbo imgcboProduct
    ImageList ils ilsAllIcons
    Label lbl lblHelpMessage
    Lightweight check box lwchk lwchkArchive
    Lightweight combo box lwcbo lwcboGerman
    Lightweight command button lwcmd lwcmdRemove
    Lightweight frame lwfra lwfraSaveOptions
    Lightweight horizontal scroll bar lwhsb lwhsbVolume
    Lightweight list box lwlst lwlstCostCenters
    Lightweight option button lwopt lwoptIncomeLevel
    Lightweight text box lwtxt lwoptStreet
    Lightweight vertical scroll bar lwvsb lwvsbYear
    Line lin linVertical
    List box lst lstPolicyCodes
    ListView lvw lvwHeadings
    MAPI message mpm mpmSentMessage
    MAPI session mps mpsSession
    MCI mci mciVideo
    Menu mnu mnuFileOpen
    Month view mvw mvwPeriod
    MS Chart ch chSalesbyRegion
    MS Flex grid msg msgClients
    MS Tab mst mstFirst
    OLE container ole oleWorksheet
    Option button opt optGender
    Picture box pic picVGA
    Picture clip clp clpToolbar
    ProgressBar prg prgLoadFile
    Remote Data rd rdTitles
    RichTextBox rtf rtfReport
    Shape shp shpCircle
    Slider sld sldScale
    Spin spn spnPages
    StatusBar sta staDateTime
    SysInfo sys sysMonitor
    TabStrip tab tabOptions
    Text box txt txtLastName
    Timer tmr tmrAlarm
    Toolbar tlb tlbActions
    TreeView tre treOrganization
    UpDown upd updDirection
    Vertical scroll bar vsb vsbRate
  • ADO.NET 控件命名规范

    类型 前缀 示例
    Connection con conNorthwind
    Command cmd cmdReturnProducts
    Parameter parm parmProductID
    DataAdapter dad dadProducts
    DataReader dtr dtrProducts
    DataSet dst dstNorthWind
    DataTable dtbl dtblProduct
    DataRow drow drowRow
    DataColumn dcol dcolProductID
    DataRelation drel drelMasterDetail
    DataView dvw dvwFilteredProducts
  • 自定义控件命名规范
    自定义控件注册时,必须以“Custom“申明。例如:
    <%@ Register TagPrefix = "Custom" Namespace = "CustomComponents" %>
    

    使用时:

    <Custom:CreditCardForm runat = "server" ID = "customCreditCard” />
    
  • 类型声明
    在定义变量时,以前缀开头,再加上变量声明符,为了不与系统控件命名起冲突,类型命名时,前缀第一个字母大写。
    • 整型

      类型 前缀 示例
      Sbyte Sby SbySex
      Short Shr ShrAverage
      Int Int IntRowCounter
      Long Lng LngBillGatesIncome
      Byte Byt BytPixelValue
      Ushort Ushr UshrMoney
      Uint Uint UintCount
      Ulong Ulng UlngCount
    • 浮点型

      类型 前缀 示例
      Flost Fot FotMoney
      Double Dou DouMoney
      Decimal Dec DecMoney
    • Bool 类型

      类型 前缀 示例
      Bool Boo BooIsPostBack
    • 字符类型

      类型 前缀 示例
      Char Chr ChrSelectSex
    • 引用类型

      类型 前缀 示例
      Object Obj ObjReturnValue
      String Str StrName
  • 常量
    全部大写,单词之间以 “ 分隔,例:USERPASSWORD。
  • 类的命名
    类名必须以 Cls 前缀开头。例如:
    public class ClsTextBox
    {
        public void DataBind()
        {
        }
    }
    
  • 抽象类定义
    抽象类必须以 AbsCls 前缀开头。例如:
    public abstract class AbsClsTextBox
    {
    }
    
  • 密封类定义
    密封类必须以 SeaCls 前缀开头。例如:
    public sealed class SeaClsTextBox
    {
    }
    
  • 方法定义
    大小写形式,一般将其命名为动宾短语。例如:
    ShowDialog()
    CreateFile()
    
  • 虚方法定义
    在方法定义的基础上,加上 Vir 前缀来表示虚方法。例如:
    public virtual string VirShowDialog ()
    {
    }
    
    public virtual string VirCreateFile ()
    {
    }
    
  • 类的成员定义
    参照类型声明。
  • 结构定义
    结构名必须以 Srt 前缀开头。例如:
    public struct SrtDimensions
    {
        public string StrName;
        public string StrPassword;
    }
    
  • 结构成员定义
    参照类型声明。
  • 接口定义
    接口名称前加 I 前缀开头。例如:
    interface ICompare
    {
    }
    
  • 接口的方法和成员定义
    参照类的方法和成员的定义规则。
  • 自定义异常定义
    自定义异常类型以 Cls 前缀开头,以 Exception 作为后缀命名。例如:
    public class ClsMyException : Exception
    {
    }
    

代码规范

缩进规范

缩进使用 tab,或者完成编码后使用 IDE 自带的格式调整功能。

换行规范

页宽应该设置为 80 字符。源代码一般不会超过这个宽度,并导致无法完整显示,但这一设置也可以灵活调整。

在任何情况下,超长的语句应该在一个逗号或者一个操作符后换行。一条语句换行后,应该比原来的语句再缩进 4 个空格。

注释规范

  • 注释原则
    1. 修改代码时,须使代码周围的注释保持最新。
    2. 尽量避免在代码行的末尾添加注释,因行尾注释使代码更难阅读。但在批注变量声明时,行尾注释是合适的,只需将所有行尾注释在公共制表位处对齐。
    3. 避免杂乱的注释和不必要的注释。注释应保持条理清晰,当代码本身已能足够说明代码的含义时,无须再加注释。
    4. 在部署发布之前,移除所有临时的或无关的注释,以避免在日后的维护工作中产生混乱。
    5. 如果需要用注释来解释复杂的代码节,请检查此代码以确定是否应该将它重写。尽一切可能不注释难以理解的代码,而应该重写它,提高代码的自解释能力。
    6. 在编写注释时使用完整的句子,注释应该阐明代码,而不应该增加多义性。
    7. 在编写代码时就注释,因为以后很可能没有时间这样做。另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了。
    8. 避免多余的或不适当的注释,如幽默的不主要的备注。
    9. 使用注释是用来解释代码的意图,而不应作为代码的联机翻译。
    10. 若代码中含有不十分明显的内容或容易被阅读者忽略的隐含重要逻辑,应加以注释。
    11. 为了防止问题反复出现,对错误修复和解决方法代码总是使用注释。
    12. 在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释;
    13. 在所有的代码修改处加上修改标识的注释。例如:
      // by 张果 20120919
      
  • 一般注释
    1. 注释必须使用中文及中文的标点符号。
    2. 每行注释的最大长度不能超过 1024*800 的宽度,且需要与代码对齐。
    3. 将注释与注释分隔符用一个空格分开。
    4. 编码的同时书写注释。
    5. 重要变量必须有注释。
    6. 变量注释和变量在同一行,所有注释必须对齐,与变量分开至少两个 Tab 键。
    7. 典型算法必须有注释。
    8. 在循环和逻辑分支的地方必须写上注释。
    9. 程序段或语句的注释在程序段或语句的上一行。
    10. 在代码交付之前,必须删掉临时的或无关的注释。
  • 文件与函数的注释
    1. 文件和函数的头部都必须有概述注释信息。
    2. 文件和函数的概述注释应缩进 1 个空格。
    3. 文件概述注释信息必须包括以下内容:
    4. 文件名
      • 属性
      • 创建人
      • 创建日期
    5. 函数概述注释信息必须包括以下内容:
      • 功能
      • 输入参数,标明意义和类型
      • 返回值,标明意义和类型
      • 作者
      • 日期

操作符规范

操作符左右各用一个空格分隔。例如:

int a = b;
if (a > 0);

SQL 语句规范

代码中书写的 sql 语句要求 sql 关键字全部大写,表名和字段名小写。例如:

SELECT user_id, name FROM account WHERE user_id > ? AND depart = ? ORDER BY name

其他规范

待补充。


PPZ网站建设规范

版本:1.0
时间:2012-10-06
作者:重庆宸基信息技术有限公司

目标定位

目标关键词
重庆/电影/分享/选座
定位关键词
在重庆/玩电影

战略规划

  1. 本土电影购票 专业电商 的运营
  2. 本土影视文化 专业社区 的运营
  3. 本土影视行业 新媒体门户 运营
  4. 本土时尚热点 社交平台 的运营
  5. 本土影视 行业数据智库 的运营
  6. 本土文化 关联产业电商 的运营

商务功能

网站及渠道用户商务功能

  1. 影票实时选座服务
  2. 电影资讯信息服务
  3. 电影文化交流分享服务
  4. 电影用户社交服务
  5. 电影活动参与体验服务
  6. 电影文化延伸产品及服务
  7. 电影作品发布和创作服务

影院合作伙伴商务功能

  1. 新媒体品牌营销传播
  2. 行业数据挖掘分析智库服务
  3. 传统客户维挽和互动服务
  4. 院线资源整合共享和统一策略服务

媒体合作伙伴商务功能

  1. 电影新闻资讯内容互动功能
  2. 本土线上线下电影活动联动功能
  3. 媒体品牌整合传播功能
  4. 新媒体合作广告经营功能

通信运营商伙伴商务功能

暂略。

商务需求

用户需求分解

  1. 多入口选座订票系统和快捷简便流程设计开发,使用指南和用户引导传播。
  2. 电影资讯发布和推送模块设计开发,建立用户资讯互动路径。
  3. 多(社交)账号参与分享电影文化及社交资讯的模块和路径设计开发,确保互动性简便、传播性强大。
  4. 电影文化延伸产品和服务模块的设计开发,提供用户更全面电影相关服务功能。
  5. 电影作品发布和创作模块功能,提供用户 玩电影 平台价值。

合作伙伴需求分解

  1. 后台资讯信息发布管理平台服务提供,限权编辑发布和管理,实现影院新媒体宣传需求。
  2. 细分区域和专属影院市场数据挖掘分析智库服务提供,引导合作伙伴调整管理和营销策略,促进排排坐网站整体运营策略实现。
  3. 提供影院原有客户互动服务,引导老客户进入网站平台参与分享交流和转化成交。
  4. 网站提供统一营销活动策略,整合院线及接入影院资源,规模化定制促销活动和品牌推广活动。
  5. 提供院线及所属影院体系覆盖全城的电影“通服务”线上体系和服务。

媒体伙伴需求分解

  1. 相互置换的网站宣传和品牌互助推广模块策略设计开发。
  2. 线上和线下活动的同步企划传播和整合实施。
  3. 广告经营的互动和共享。

建设规划

建设目标

结合电影行业服务和市场拓展需要,创新电影行业销售业务模式,开发网上选座购买电影票平台。完全实现网上/手机查看影讯、自助选座、网银支付、自助验票全自助化营运模式。

实现电影票务经营全流程的电子化、数字化,为消费者提供了一种全新的服务方式。彻底改变影院现场排队买票的传统低效率购票方式,为广大电影消费者提供最便捷、最高效的全新服务,从而产生巨大的社会效益和商业效益。

业务需求

以网上电影订票为核心的本地化生活服务网站。

电子票票务务系统
根据满天星票务系统的系统接口,开发对应于满天星票务系统数据库的数据接口。实时操作满天星票务系统数据库,实现网上订票功能。
电影订票网站
建设以网上电影订票为核心的本地化生活服务网站。在网站上实现实时查询影讯、自助选座、网银支付、自助验票的一站式电影订票服务。

用户分类

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-user_classification.png

技术平台

技术平台选择基于 ASP.NET + SQL平台构建。

技术架构

网站采用三层架构:

  1. 数据访问层(DAL)
  2. 业务逻辑层(BLL)
  3. 数据表现层(UI)
是否考虑负载均衡?

系统架构图如下:

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-system_architecture.png

数据访问层

数据访问层主要用于直接操作数据库,针对数据的增添、删除、修改、查找等。

系统使用的外部数据接口也属于数据访问层。

业务逻辑层

数据处理层主要用于处理具体问题,实现具体功能。例如:

  1. 影院座位信息处理
  2. 订票查询处理
  3. 业务数据处理
  4. 用户数据分析

数据表现层

数据表现层主要用于呈现界面,处理用户交互。

系统结构图

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-system_structure.png

系统流程图

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-system_flow.png

开发周期

项目预计开发时间为30~45个工作日。

建设原则

界面原则

  1. 色调必须优化至符合电商用户体验需求。
  2. 功能模块应能易于辨识。
  3. 用户触点应醒目易见。
  4. 界面力求最简单突出营销重心。
  5. 用户浏览、使用和交易路径要求傻瓜式。
  6. 用户交易步骤精简至最优化频次。

内容原则

  1. 抓住排排坐定位。
  2. 专注排排坐个性价值的素材和事件。
  3. 文字风格独立、时尚、青春。
  4. 涉及电影的内容要求规范、专业、独立。
  5. 营销推广的文案简洁直白。
  6. 品牌包装的文案感性煽情。
  7. 互动分享的文案围绕排排坐定位、个性和电影主题,具有连续性和关联性。

建设进度

建设原则
分阶段、分主次,先推出、次完善、再调整、后升级。

第一阶段

时间要求

2012年9月下旬至2012年11月下旬,为期2个月,含节假日。

进度目标

  1. 实现网站选座订票基本电商功能。
  2. 实现网站用户订购交易支付功能。
  3. 实现网站电影内容展示模块基本功能。
  4. 实现网站合作伙伴基本发布模块功能。
  5. 实现网站用户多(社交)账号简易上线和互动分享功能。
  6. 实现网站用户数据管理功能。
  7. 实现网站广告发布功能。

第二阶段

时间要求

2012年11月下旬至2013年2月8日(除夕前),为期2个半月,含节假日。

进度目标

  1. 优化网站选座订票电商功能,新增VIP用户快捷服务特权。
  2. 优化用户订购交易支付功能界面体验。
  3. 升级网站电影内容模块,新建电影内容库,开放用户上传功能。
  4. 升级网站合作伙伴发布模块功能,新增促销置顶更新功能,优化合作伙伴发布体验。
  5. 升级优化第一阶段用户互动分享模块,新增细分人群“电影圈”社交功能。
  6. 升级网站用户数据库管理,建立分类数据库架构和分析体系。
  7. 优化网站广告发布方式和界面效果。

第三阶段

时间要求

2013年2月下旬至2013年4月30日,为期2个半月,含节假日。

进度目标

  1. 汇总前期用户体验,优化网站选座订票电商功能,新增“排排团”专场订购服务功能。
  2. 汇总前期用户体验,进一步优化用户订购交易支付功能界面体验。
  3. 细化升级网站电影内容模块,电影内容库进行细致分类升级,开放VIP用户下载功能。
  4. 汇总前期用户体验,优化网站合作伙伴发布模块原有功能,升级优化合作伙伴发布管理界面。
  5. 升级优化第二阶段用户互动分享模块,优化“电影圈”社交功能,新增“排排坐”配对分享社交功能。
  6. 优化网站用户数据库管理,新增分析数据格式化图标报告生成功能。
  7. 持续优化网站广告发布方式和界面效果。
  8. 新增网站电影文化相关延伸产品和服务推荐互动模块,开展周边体验营销服务。

第四阶段

时间要求

2013年5月上旬至2013年9月30日,为期5个月,含节假日。

进度目标:

总目标 进行排排坐完整的二次升级改版。

  1. 汇总前三个阶段用户体验,重点优化网站用户交互界面和各种用户浏览、参与路径。
  2. 联动满天星系统和合作影院,升级和优化选座订票系统接口功能,特别是调整排片时间和订座保留时间标准。
  3. 新增“任我排”VIP选片团购服务功能。
  4. 新增合作媒体专栏模块,扩展网站内容和实时信息量。
  5. 新增“志愿排”社区模块,召集活跃用户参与“电影、爱、生活”系列活动,建设和放大网站美誉。

第五阶段

暂略。

界面设计

界面设计要求自适应网页设计,即可以自动识别屏幕宽度、并做出相应调整的网页设计。

首页

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-index_interface_design.png

热映

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-movie_interface_design.png

左侧栏目:

  1. 海报
  2. 简介
  3. 评分
  4. 价格
  5. 购票
  6. 话题
  7. 海报活动标签
  8. 热度对应抓取总观映人数,用数字标识
  9. 本周热度抓取本周观映人数,用图表表示
  10. 排序按照本周热度排序
  11. 电影需要置顶功能

右侧栏目:

  1. 影片活动
  2. 票房排行榜

详细热映

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-movie_detail_interface_design.png

影院

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-cinema_interface_design.png

左侧栏目:

  1. 区域选择
  2. 影院列表
    • 海报
    • 交通图标+IMAX图标
    • 评分
    • 影院简介
    • 购票按钮
    • 评论

右侧栏目

  1. 影院活动
  2. 观映指南

详细影院

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-cinema_detail_interface_design.png

院线

  1. LOGO
  2. 名称
  3. 图片
  4. 简介
  5. 媒体信息
  6. 公告
  7. 活动
  8. 联络方式

活动

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-activity_interface_design.png

左侧栏目:

  1. 标签
    • 时间
    • 类型
    • 线上、线下
  2. 活动列表
    • 活动图片
    • 活动介绍
    • 参与数
    • 评论数
    • 活动剩余时间 开始时间
    • 费用模式
活动按照热度排序、可以置顶。

右侧栏目:

  1. 用户互动
  2. 获奖公告(活动结果)

详细活动

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-activity_detail_interface_design.png

社交

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-tweet_interface_design.png

帮助

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-help_interface_design.png

公共页面

选座页面

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-seat_interface_design.png

地图页面

https://leiyue.wordpress.com/wp-content/uploads/2012/10/wpid-map_interface_design.png


电影票平台渠道接口规范

时间: 2012-09-28
版本: 1.1
修订者: 雷悦

接口位置

分配参数

分配参数

验证密钥

检验信息生成方法

$$校验信息 = MD5( 转换成小写( 参数1 + 参数2 + …… + 验证密钥)$$

把应用编码和方法参数字符串集合和验证密钥组合成新字符串,把合并的字符串转换小写,取新字符串的MD5码,得到校验信息。

如果接口参数只有一个XML格式的参数,则除应用编码和检验信息外,从上到下取XML第二层参数组成方法参数字符串集合;否则除应用编码和检验信息外,从左到右取接口参数组合成方法参数字符串集合。

若接口无参数,则方法参数字符串集合取空字符串。如果参数是数字型,直接转换成字符型;如果参数是布尔类型,转换成true或false作为参数字符串;如果参数为数组类型,取数组长度再转换成字符串。

生成MD5的C#代码例子:

/// <summary>
/// 获取字符串的MD5验证码
/// </summary>
/// <param name="ConvertString"></param>
/// <returns></returns>
public static string GetMd5Str(string ConvertString)
{
   ConvertString = ConvertString.ToLower();
   MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
   string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
   t2 = t2.Replace("-", "");

   return t2;
}

函数说明

接口返回值说明:如果返回包解析不到ResultCode也作为异常失败处理。

GetCinema 获取电影院信息

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetCinemaResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <Cinemas>
    <Cinema>
      <PlaceNo>XXXX</PlaceNo>
      <PlaceName>XXXX</PlaceName>
      <CityNo>XXXX</CityNo>
      <Provinceno>XXXX</Provinceno>
      <Areacode>XXXX</Areacode>
      <State>XXXX</State>
    </Cinema>
    <Cinema>
      <PlaceNo>XXXX</PlaceNo>
      <PlaceName>XXXX</PlaceName>
      <CityNo>XXXX</CityNo>
      <Provinceno>XXXX</Provinceno>
      <Areacode>XXXX</Areacode>
      <State>XXXX</State>
    </Cinema>
  </Cinemas>
</GetCinemaResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:电影院不存在
    100500:调用过程发生异常
    PlaceNo String[10字节] 影院编号
    PlaceName String[30字节] 影院名称
    CityNo String[10字节] 城市编码
    Provinceno String[10字节] 省编码
    Areacode String[10字节] 区县编码
    State String[2字节] 1正常,其他不正常

GetCinemaPlan 获取对应影院对应日期的排期

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pCinemaID String[10字节] 电影院编号
    pPlanDate String[10字节] 获取排期的日期 格式(yyyy-mm-dd)
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetCinemaPlanResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <CinemaPlans>
    <CinemaPlan>
      <FeatureAppNo>XXXX</FeatureAppNo>
      <FeatureNo>XXXX</FeatureNo>
      <FeatureDate>XXXX</FeatureDate>
      <FeatureTime>XXXX</FeatureTime>
      <TotalTime>XXXX</FeatureDate>
      <FilmNo>XXXX</FeatureDate>
      <FilmName>XXXX</FilmName>
      <HallNo>XXXX</HallNo>
      <PlaceNo>XXXX</PlaceNo>
      <UseSign>XXXX</UseSign>
      <SetClose>XXXX</SetClose>
      <AppPric>XXXX</AppPric>
      <StandPric>XXXX</StandPric>
      <BasePric>XXXX</BasePric>
    </CinemaPlan>
  </CinemaPlans>
</GetCinemaPlanResult>
  • 详细返回说明 :BasePric :UseSign :SetClose

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:应用排期不存在
    100500:调用过程发生异常
    FeatureNo
    FeatureAppNo String[10字节] 排期编号
    FeatureDate String[10字节] 排期日期(yyyy-MM-dd)
    FeatureTime String[5字节] 排期时间(hh:mm)
    TotalTime String[5字节] 结束时间(hh:mm)
    FilmNo String[12字节] 影片编号
    FilmName String[60字节] 影片名称
    HallNo String[2字节] 影厅编号
    PlaceNo String[10字节] 影院编号
    UseSign
    SetClose
    AppPric Number[10,2] 院方最低票价
    StandPric Number[10,2] 标准价格(影院窗口价)
    BasePric 结果值(最低限价+加价)
    State String[1字节] 状态(1 :可卖票; 0 不可卖票)

GetCinemaAllPlan 获取对应影院所有可读排期

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pCinemaID String[10字节] 电影院编号
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetCinemaPlanResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <CinemaPlans>
    <CinemaPlan>
    <FeatureAppNo>XXXX</FeatureAppNo>
    <FeatureDate>XXXX</FeatureDate>
    <FeatureTime>XXXX</FeatureTime>
    <TotalTime>XXXX</FeatureDate>
    <FilmNo>XXXX</FeatureDate>
    <FilmName>XXXX</FilmName>
    <HallNo>XXXX</HallNo>
    <PlaceNo>XXXX</PlaceNo>
    <AppPric>XXXX</AppPric>
    <StandPric>XXXX</StandPric>
    <State>XXXX</State>
    </CinemaPlan>
  </CinemaPlans>
</GetCinemaPlanResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:应用排期不存在
    100500:调用过程发生异常
    FeatureAppNo String[10字节] 排期编号
    FeatureDate String[10字节] 排期日期(yyyy-MM-dd)
    FeatureTime String[5字节] 排期时间(hh:mm)
    TotalTime String[5字节] 结束时间(hh:mm)
    FilmNo String[12字节] 影片编号
    FilmName String[60字节] 影片名称
    HallNo String[2字节] 影厅编号
    PlaceNo String[10字节] 影院编号
    AppPric Number[10,2] 票价
    StandPric Number[10,2] 标准价格
    State String[1字节] 状态(1 :可卖票; 0 不可卖票)

GetHall 获取影院对应的影厅信息

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pCinemaID String[10字节] 电影院编号
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetHallResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <Halls>
    <Hall>
    <HallNo>XXXX</HallNo>
    <HallName>XXXX</HallName>
    </Hall>
  </Halls>
</GetHallResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:影院影厅信息不存在
    100500:调用过程发生异常
    HallNo String[2字节] 影厅编号
    HallName String[10字节] 影厅名称

GetHallSite 获取影厅对应的所有座位信息

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pCinemaID String[10字节] 电影院编号
    pHallID String[2字节] 影厅编号
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetHallSiteResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <HallSites>
    <HallSite>
    <SeatNo>XXXX</SeatNo>
    <SeatRow>XXXX</SeatRow>
    <SeatCol>XXXX</SeatCol>
    <GraphRow>XXXX</GraphRow>
    <GraphCol>XXXX</GraphCol>
    <SeatPieceNo>XXXX</SeatPieceNo>
    </HallSite>
  </HallSites>
</GetHallSiteResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:影厅对应的座位不存在
    100500:调用过程发生异常
    SeatNo String[15字节] 座位编号
    SeatRow String[3字节]
    SeatCol String[3字节]
    GraphRow String[2字节] 屏幕行
    GraphCol String[2字节] 屏幕列
    SeatPieceNo String[2字节] 座区编号

GetHallSiteArea 获取影厅对应的所有座区信息

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pCinemaID String[10字节] 电影院编号
    pHallID String[2字节] 影厅编号
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

返回为XmlDocument对象。例如:

<?xml version="1.0"?>
<GetHallSiteAreaResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <HallSiteAreas>
    <HallSiteArea>
    <SeatPieceNo>XXXX</SeatPieceNo>
    <SeatPieceName>XXXX</SeatPieceName>
    </HallSiteArea>
  </HallSiteAreas>
</GetHallSiteAreaResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:影厅对应的座区不存在
    100500:调用过程发生异常
    SeatPieceNo String[2字节] 座区编号
    SeatPieceName String[20字节] 座区名称

GetPlanSiteState 获取对应排期的座位图的状态

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pFeatureAppNo String[10字节] 排期编号
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

返回为XmlDocument对象。例如:

<?xml version="1.0"?>
<GetPlanSiteStateResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <PlanSiteStates>
    <PlanSiteState>
    <SeatNo>XXXX</SeatNo>
    <SeatPieceNo>XXXX</SeatPieceNo>
    <GraphRow>XXXX</GraphRow>
    <GraphCol>XXXX</GraphCol>
    <SeatRow>XXXX</SeatRow>
    <SeatCol>XXXX</SeatCol>
    <SeatState>XXXX</SeatState>
</PlanSiteState>
<PlanSiteState>
     <SeatNo>XXXX</SeatNo>
    <SeatPieceNo>XXXX</SeatPieceNo>
    <GraphRow>XXXX</GraphRow>
    <GraphCol>XXXX</GraphCol>
    <SeatRow>XXXX</SeatRow>
    <SeatCol>XXXX</SeatCol>
    <SeatState>XXXX</SeatState>
</PlanSiteState>
  </PlanSiteStates>
</GetPlanSiteStateResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    1:对应排期座位图不存在
    100500:调用过程发生异常
    SeatNo String[15字节] 座位编号,是影厅的物理座位号(在同步座位图时的唯一ID号)
    SeatPieceNo String[2字节] 坐区号
    GraphRow String[2字节] 屏幕行
    GraphCol String[2字节] 屏幕列
    SeatRow String[3字节] 坐行
    SeatCol String[3字节] 坐列
    SeatState String[1字节] 状态(-1不可售,0可售,1已售,3锁定)

RealCheckSeatState 检查需要定票的座位状态情况,并定票锁定座位

参数说明

<?xml version="1.0"?>
<RealCheckSeatStateParameter>   <FeatureAppNo>XXXX</FeatureAppNo>
  <SerialNum>XXXX</SerialNum>
  <OldSerialNum>XXXX</OldSerialNum>
  <SeatInfos>
    <SeatInfo>
      <SeatNo>XXXX</SeatNo>
      <TicketPrice>XXXX</TicketPrice>
    </SeatInfo>
    <SeatInfo>
      <SeatNo>XXXX</SeatNo>
      <TicketPrice>XXXX</TicketPrice>
    </SeatInfo>
  </SeatInfos>
  <PayType>XXXX</PayType>
  <RecvMobilePhone>XXXX</RecvMobilePhone>
</RealCheckSeatStateParameter>
  • 详细参数说明

    XML标记 类型[最大长度] 默认值 描述
    FeatureAppNo String[10字节] 排期编号
    SerialNum String[20字节] 流水号EMOV+YYYYMMDD+7位数字
    OldSerialNum String[20字节] OldSerialNum 为NO就不是重选 流水号EMOV+YYYYMMDD+7位数字
    SeatInfo String 座位信息,要卖的座位数组(即使是自动选座,也要传相应的座位结构过来)
    SeatNo String[15字节] 影厅座位号(自动选座,seatno写-1)
    TicketPrice Number[10,2] 显示票价(取排期返回的AppPric)
    PayType String[15字节] 付费类型(填1)
    RecvpMobilePhone String[20字节] 接收二唯码手机号码(填11111111111)

返回说明

<RealCheckSeatStateResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <OrderNo>0</OrderNo>
<SeatInfos>
<SeatInfo>
  <SeatNo>XXX</SeatNo>
  <TicketPrice>XXX</TicketPrice>
  <SeatRow>XXX</SeatRow>
  <SeatCol>XXX</SeatCol>
  <SeatNo>XXX</SeatNo>
</SeatInfo>
<SeatInfo>
  <SeatNo>XXX</SeatNo>
  <TicketPrice>XXX</TicketPrice>
  <SeatRow>XXX</SeatRow>
  <SeatCol>XXX</SeatCol>
  <SeatNo>XXX</SeatNo>
</SeatInfo>
  </SeatInfos>
</RealCheckSeatStateResult>
  • TODO 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    OrderNo String[10字节] 订单编号
    SeatInfos String 包含一个或多个座位信息
    SeatInfo String 包含一个座位信息
    SeatNo String[11字节] 锁定的座位编号
    TicketPrice Number[10,2] 锁定的座位价格
    SeatRow String[3字节] 锁定的座位行
    SeatCol String[3字节] 锁定的座位列
    HallNo String[2字节] 影厅编号

SellTicket 卖票(带座位票)

参数说明

<?xml version="1.0"?>
<SellTicketParameter>
  <FeatureAppNo>XXXX</FeatureAppNo>
  <SerialNum>XXXX</SerialNum>
   <PayType></PayType>
   <PayResult></PayResult>
<ChannelAccount></ChannelAccount>
<ChannelPass></ChannelPass>
</SellTicketParameter>
  • 详细参数说明

    XML标记 类型[最大长度] 描述
    FeatureAppNo String[10字节] 排期编号
    SerialNum String[20字节] 流水号 ECH+YYYYMMDD+7位数字
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码
    PayType String[2字节] 付费类型(填71)
    PayResult String[1字节] 支付结果(0成功1失败)

返回说明

<?xml version="1.0"?>
<SellTicketResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
  <OrderNo>XXXX</OrderNo>
  <ValidCode>XXXX</ValidCode>
</SellTicketResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    OrderNo String[15字节] 订单编号
    ValidCode String[30字节] 订单验证码

GetOrderStatus 查询定单的售票结果

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    SerialNum String[20字节] 合作商方定单号(流水号) ECH+YYYYMMDD+7位数字
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetOrderStatusResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
<OrderNo>XXXX</OrderNo>
<ValidCode>XXXX</ValidCode>
<OrderStatus>XXXX</OrderStatus>
</GetOrderStatusResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    OrderNo String[10字节] 订单编号
    ValidCode String[20字节] 订单验证码
    OrderStatus String[2字节] 见附录C

UnLockOrder 解锁订单座位

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pOrderNO: String[10字节] 订单号
    ECH+YYYYMMDD+7位数字
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<UnLockOrderResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResultCode>0</ResultCode>
</UnLockOrderResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    100500:调用过程发生异常

GetFeatureFilm 查询所有影院当前可售排期上映影片

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetFeatureFilmResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <ResultCode>0</ResultCode>
<Films>
<Film>
<FilmNo>05110404</FilmNo>
<FilmName>冰川时代2</FilmName>
</Film>
</Films>
</GetFeatureFilmResult >
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    100500:调用过程发生异常
    FilmNo String[12字节] 电影编码
    FilmName String[60字节] 电影名称

GetOrderInfo 平台手工工单明细查询接口

参数说明

  • 详细参数说明

    参数名 类型[最大长度] 说明
    pBeginDate: String[10字节] 开始日期(yyyy-MM-dd)
    pEndDate String[10字节] 结束日期(yyyy-MM-dd)
    ChannelAccount String[20字节] 电影票系统分配给渠道的账号
    ChannelPass String[8字节] 电影票系统分配给渠道账号对应的密码

返回说明

<?xml version="1.0"?>
<GetOrderInfoResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ResultCode>0</ResultCode>
<OrderInfos>
<OrderNo>2509511</OrderNo>
<MobileNo>13705942450</MobileNo>
<BuyDate>2011-06-16 10:59</BuyDate>
<FeatureDate>2011-06-16 17:25</FeatureDate>
<TicketSum>1</TicketSum>
<OrderStatus>0</OrderStatus>
<PlaceName>cmts电影城</PlaceName>
<FilmName>冰川时代2</FilmName>
<HallName>八号厅</HallName>
<SeatInfos>
<SeatRow>1</SeatRow>
<SeatCol>16</SeatCol>
<SeatPieceNo>01</SeatPieceNo>
</SeatInfos>
</OrderInfos>
</GetOrderInfoResult>
  • 详细返回说明

    XML标记 类型[最大长度] 描述
    ResultCode String 返回结果号,详细见【返回结果号说明】
    0:成功返回
    100500:调用过程发生异常
    OrderNo String[10字节] 订单号
    MobileNo String[20字节] 手机号码
    BuyDate String 订购日期 yyyy-MM-dd hh:mm
    FeatureDate String 放映日期 yyyy-MM-dd hh:mm
    TicketSum int 订票数量
    OrderStatus String[2字节] 订单状态
    PlaceName String[30字节] 影院
    FilmName String[60字节] 影院
    HallName String[10字节] 影厅
    SeatRow String[3字节] 座位行
    SeatCol String[3字节] 座位列
    SeatPieceNo String[2字节] 座区号

附录A 返回结果号说明

类型 类型号 返回结果号 说明
0 返回成功
参数校验类 1001 100101 参数校验信息错误
参数校验类 1001 100102 XML参数解释错误
鉴权类 1002 100201 对外合作应用编码不存在
鉴权类 1002 100202 对外合作应用密码错误
鉴权类 1002 100203 对外合作应用没权限访问
鉴权类 1002 100204 接入IP无权访问
调用异常类 1005 100500 通用异常错误
配置读取错误 1005 100501 AppConfig配置读取错误
100502 Sql执行错误
100503 手机钱包支付失败
设置价格类 1000 100050 参数格式错误:AppPric
(不符合定义格式,譬如空值,长度错误,类型错误)
设置价格类 1000 100051 参数格式错误:BalancePric
锁座位错误类 1011 101101 获取地面影院信息出错
锁座位错误类 1011 101102 中心锁座位出错
锁座位错误类 1011 101103 排期截止
锁座位错误类 1011 101104 座位数不够
锁座位错误类 1011 101105 座位参数出错
锁座位错误类 1011 101106 流水号已经存在
锁座位错误类 1011 101107 地面锁坐失败(实时琐座错误)
锁座位错误类 1011 101108 影院与中心平台的网络异常
锁座位错误类 1011 101150 参数格式错误:FeatureAppNo
(不符合定义格式,譬如空值,长度错误,类型错误)
锁座位错误类 1011 101151 参数格式错误:SerialNum
锁座位错误类 1011 101152 参数格式错误:SeatNo
锁座位错误类 1011 101153 参数格式错误:TicketPrice
锁座位错误类 1011 101154 参数格式错误:PayType
锁座位错误类 1011 101155 参数格式错误:RecvpMobilePhone
锁座位错误类 1011 101156 参数格式错误:SeatInfos
卖座位票错误类 1012 101201 没有对应的定单
卖座位票错误类 1012 101202 中心卖票出错
卖座位票错误类 1012 101203 中心发送二唯码失败
卖座位票错误类 1012 101204 售票流水号已经存在
卖座位票错误类 1012 101205 锁座的流水号不存在
卖座位票错误类 1012 101207 地面卖票失败
卖座位票错误类 1012 101208 座位已售
卖座位票错误类 1012 101209 中心解锁失败
卖座位票错误类 1012 101260 中心锁座成功,同步到中通失败!
卖座位票错误类 1012 101250 参数格式错误:FeatureAppNo
(不符合定义格式,譬如空值,长度错误,类型错误)
卖座位票错误类 1012 101251 参数格式错误:支付方式
卖座位票错误类 1012 101252 参数格式错误:PaySeqNo
卖座位票错误类 1012 101254 参数格式错误:RecvpMobilePhone
小额支付错误类 1013 101301 当月已经有支付记录
小额支付错误类 1013 101302 应用商非法
小额支付错误类 1013 101303 小额支付出错
卖通票错误类 1014 101401 支付成功,但发二维码和更新订单状态出错,退费成功
卖通票错误类 1014 101402 支付成功,但发二维码和更新订单状态出错,但退费不成功
卖通票错误类 1014 101405 生成订单失败
卖通票错误类 1014 101406 单个号码票数受限制
卖通票错误类 1014 101407 活动已经结束
卖通票错误类 1014 101408 活动票数不够
卖通票错误类 1014 101409 不明错误
验票打印接口类 1006 100600 打印机出错(没有票机)
验票打印接口类 1006 100601 调用远程服务器出错
验票打印接口类 1006 100603 验证码出错

附录B 小额支付错误状态说明

返回值 说明
99999 本地数据库操作异常
600101 用户已被列入黑名单
600102 用户已被冻结
600103 用户非本地手机
600111 子账户已被冻结
600112 子账户已被销户
600113 子账户不存在
600114 子账户已存在
600115 用户已销户
600116 用户不存在
600117 用户剩余信用额度不足
600118 用户不存在
600119 指定的账户类型错误
600201 指定SP不存在
600202 指定的SP已存在
600203 指定的SP已被冻结
600204 指定的SP已被销户
600205 修改SP时,所设定的sp状态错误
600206 SP密码错误
600207 SP的IP地址检验错误
600210 指定的业务已注销
600211 指定的业务不存在
600212 指定的业务已冻结
600213 指定的业务没有在用户的开户银行开户
600214 业务状态错误
600215 指定的业务已存在
600216 指定的业务支持银行不存在
600217 指定的业务支持银行已存在
800001 SPID为空
800002 SPPIN为空
800003 SPID或SPPIN非法,即SP为非法用户
800004 SP的IP地址有误
800005 SP的业务代码为空
800006 SP的业务代码不对
800007 SP的业务状态不正常
800008 交易类型不正确,或无此交易
800009 SP状态为冻结
800010 操作超时
800011 短信发送失败
800012 XML报文数据验证失败
800013 SQL错误
800014 bean返回为null
800015 上传文件失败
800016 支付方式不被支持
821001 订单无法找到
821003 订单导出错误
821011 订单批量导出错误
821012 自动取消预授权错误
830000 帐务性交易流水表查询错
830002 帐务性交易流水表创建错
830003 非帐务性交易流水表创建错
830010 TOBOSS SAF记录没找到
830012 TOBOSS SAF记录创建错
830014 TOBOSS SAF删除数据错
830021 对帐总笔数错
830022 对帐总金额错
831002 订单不一致
860001 SYSTEM RUNTIME 出错
860004 生成流水号错
860005 记录重复
860010 不支持事务
860011 事务异常
860012 事务回滚错
860013 事务已回滚
860014 事务相关更新已被全部回滚
860015 事务相关更新已被部分回滚部分提交
860040 取得数据库连接失败
860041 系统日切错
861000 SYSTEM 名称服务错
861001 SYSTEM 远程错误
862001 数据库访问错误
870001 贷方总金额错
870010 贷方总笔数错
870011 贷方总笔数错&贷方总金额错
870100 借方总金额错
871000 借方总笔数错
871100 借方总笔数错&借方总金额错
871110 借方总笔数错&借方总金额错&贷方总笔数错
871111 借方总笔数错&借方总金额错&贷方总笔数错&贷方总金额错
880001 读取配置文件错误
880002 无法取得系统参数
880003 数据库更新出错
880004 手机用户不存在
880005 用户虚拟货币不足
880006 读取本地数据文件出错
880007 写本地数据文件出错
880008 ftp读取文件错误
880009 ftp写文件错误
880010 生成流水号错误
880011 数据库访问错误
880012 积分平台信息错误记录文件不存在
880013 写积分平台信息错误记录文件产生异常
880014 读取积分平台文件时产生异常,该文件没有被处理
880015 读取积分文件某一行时产生异常,该记录不被处理
880016 转换时间字符串出错
880017 取得流水号或虚拟 货币出错
888888 系统未知异常
890001 配置文件不存在
890002 源文件不存在
890003 备份文件已存在
890004 io异常
890005 系统其他异常

附录C 订单状态说明

返回值 说明
0 订单未确认
1 已退款,订单已退款
2 已付订金,已付预订票款订单
3 已预订,预订影票订单成功
4 全额支付,订单已付款,但购票未成功
5 订单已取消
6 无效订单
7 已退票,订单已退票
8 已打票,订单已到影院兑换纸质票
9 已确认,订单付款成功,购票成功


数据实体设计

用户信息 UserInfo

  1. UserID PK
  2. UserPhone 电话号码
  3. Email 邮件地址
  4. UserName 名称
  5. Password 密码
  6. CreateTime 创建时间
  7. ActiveCode 激活码
  8. ActiveType 激活类型
  9. Photo 头像
  10. RealName 真名
  11. Location 所在地
  12. Birthday 生日
  13. Gander 性别
  14. Mark 个人签名
  15. QQAcount QQ帐号
  16. SinaAcount 新浪帐号
  17. Money 余额
  18. Score 积分

登录日志 LoginLog

  1. LoginLogID PK
  2. UserID 用户ID
  3. LoginTime 登录时间
  4. LogoutTime 登出时间
  5. IP 地址
  6. No 入口编号

圈子 Cricle

  1. CricleID PK
  2. CricleName

用户圈子 UserCricle

  1. UserCricleID
  2. UserID
  3. CricleID

管理员信息 AdminInfo

  1. AdminID PK
  2. UserName
  3. Password
  4. IsSystem 是否为系统帐号
  5. RealName 真名
  6. IDCard 身份证号

管理员日志 AdminLog

  1. AdminLogID
  2. Content 日志详情
  3. AdminID

管理员权限 AdminPermition

  1. AdminPermitionID
  2. Name 权限名称
  3. AdminPermitionFID

管理员和管理员权限 AdminAdminPermition

  1. AdminAdminPermitionID
  2. AdminID
  3. AdminPermitionID

院方用户 Company

  1. CompanyID PK
  2. Name
  3. Password
  4. RealName 院方称呼
  5. Role 角色

院方管线范围 CompanyCinerma

  1. CompanyCinermaID PK
  2. CompanyID
  3. CinermaID

院方日志 CompanyLog

  1. CompanyLogID PK
  2. Time
  3. Content 日志详情
  4. CompanyID

影院 Cinema

  1. CinemaID PK 索引
  2. Name 影院名称
  3. LocationID 地域分区
  4. Content 电影院的基本信息
  5. Score 影院等级

地区 Location

  1. LocationID PK
  2. Name 地区名字
  3. Level 地区等级
  4. LocationFID 父区域ID

电影 Moive

  1. MovieID PK 索引
  2. Name 电影名称
  3. Content 电影的其他信息

用户现金记录 UserMoneyLog

  1. UserMoneyLogID PK
  2. Time 发生时间
  3. UserID
  4. Account 金额
  5. Other 交易其他信息

用户货币变更记录 UserCurrencyLog

  1. UserCurrencyLogID PK
  2. Account 金额
  3. Time 发生时间
  4. Other 其他信息
  5. UserID
  6. AdminID

系统额外成本记录 SystemCostLog

  1. SystemCostLogID PK
  2. Account 金额
  3. Time 发生时间
  4. Other 其他信息
  5. UserID
  6. AdminID

TODO 交易队列表

话题节点 PostNode

  1. PostNodeID PK 索引
  2. PostName 节点名
  3. Priority 优先级
  4. PostNodeFID 父节点

话题 Post

  1. PostID PK 索引
  2. Content 文字内容
  3. Time 发布话题时间
  4. PostNodeID
  5. UserID
  6. IsActive 是否审核通过
  7. IsDelete 是否被删除
  8. AdminID
  9. ImageUrl http图片地址
  10. LinkUrl 外链地址
  11. LinkType 外链类型
  12. Up 顶
  13. Down 踩
  14. IsVote 是否为投票
  15. Title 投票话题
  16. Limit Ip和用户次数 default(1)
  17. IsAnonymous 是否允许匿名
  18. IsMuliple 是否为多选

话题和标签 PostLabel

  1. PostLabelID PK
  2. PostID
  3. LabelID

标签 Label

  1. LabelID PK 索引
  2. LabelName 标签名
  3. Priority 优先级

评论 Comment

  1. CommentID PK 索引
  2. Content 评论内容
  3. Time 发布评论时间
  4. PostID
  5. VoteID
  6. UserID
  7. IsActive 是否审核通过
  8. IsDelete 是否被删除
  9. AdminID
  10. Up
  11. Down

投票选项 VoteOption

  1. VoteOptionID PK 索引
  2. Content 选项文字
  3. VoteID

用户投票 UserVote

  1. UserVoteID
  2. UserID
  3. PostID
  4. IP 投票时的IP

用户投票选项 UserVoteOption

  • UserVoteOptionID
  • UserVoteID
  • OptionID