软件项目开发规范
Posted: 2012年10月17日 Filed under: Company | Tags: cqppz 留下评论规范目的
为了使团队中的每一位成员都形成统一的开发约定,特制定本规范文档,在今后的开发过程中,请严格按照此文档约定的规则进行编码。通过此规范,希望可以给各程序员之间起到沟通的桥梁的作用,并增强程序的可读性。
在使用过程中,如果碰到本文档中没进行约定的规则,待商议后对该文档进行补充完善。
开发管理
项目进度周报表格如下:
项目编号: | |
---|---|
项目名称: | |
汇报人: | |
汇报日期: | |
项目进度详细描述: | |
其他问题: |
项目周期
项目开发周期分为以下几个步骤:
序号 | 步骤 | 说明 | 参与角色 | 生成文档或程序(打*号为可选) |
---|---|---|---|---|
1 | 可行性分析 | 对项目的商务和用户需求进行调研 | 项目核心小组 | 可行性分析报告* |
确定是否需要立项开发 | 核心技术员 | 技术调研报告* | ||
2 | 立项 | 正式立项 | 项目核心小组 | 项目初步计划* |
指定项目经理 | 项目经理 | |||
制定初步计划 | ||||
3 | 需求分析 | 对项目进行详细的需求分析 | 项目经理 | 任务说明书 |
编写需求分析文档 | 项目核心小组 | 项目计划修订版本 | ||
4 | 概要设计 | 划分功能模块和功能点 | 项目经理 | 需求-模块-功能对应表 |
选择项目开发技术 | 项目核心小组 | |||
指定项目开发成员 | ||||
修订项目计划 | ||||
5 | 详细设计 | 进行项目详细设计 | 项目经理 | 详细设计文档 |
确定项目详细任务和进度 | 项目核心小组 | 项目计划确定版本 | ||
确定项目计划 | 开发人员 | |||
6 | 开发 | 实施编码工作 | 项目经理项目 | 项目计划修订版本* |
实施界面优化工作 | 开发人员 | |||
调整项目计划 | 设计人员 | |||
7 | 测试 | 桌面检查 | 项目经理 | 测试申请 |
代码走查 | 开发人员 | 测试计划 | ||
单元测试 | 测试人员 | 测试报告 | ||
集成测试 | ||||
8 | 项目验收 | 项目验收 | 项目核心小组 | 项目所有文档和程序 |
项目归档 | 项目经理 |
文档规范
待补充。
前端开发规范
基本准则
符合 web 标准,语义化 HTML,结构表现行为分离,兼容性优良。页面性能方面,代码要求简洁明了有序,尽可能的减小服务器负载,保证最快的解析速度。
文件规范
- HTML || CSS || JavaScript || Images 文件均归档至本文档约定的目录中。
- HTML 文件命名为英文命名,后缀名为
.html
。- 将对应界面稿放于页面同一目录中。
- 若界面稿命名为中文,请重命名与 HTML 文件同名,以方便后端添加功能时查找对应页面。
- CSS 文件命名为英文命名,后缀名为
.css
。- 共用
base.css
,首页index.css
。 - 其他页面依实际模块需求命名。
- 共用
- JavaScript 文件命名为英文命名,后缀名为
.js
。- 共用
common.js
。 - 其他依实际模块需求命名。
- 共用
HTML 书写规范
- 文档类型声明及编码: 统一为 HTML5 声明类型
<!DOCTYPE html>
; 编码统一为<meta charset="utf-8" />
,书写时利用 IDE 实现层次分明的缩进。 - 非特殊情况下样式文件必须外链至
<head>...</head>
之间;非特殊情况下 JavaScript 文件必须外链至页面底部。 - 引入样式文件或 JavaScript 文件时,须略去默认类型声明。
<link rel="stylesheet" href="..." /> <style>...</style> <script src="..."></script>
- 引入 JavaScript 库文件,文件名须包含库名称及版本号及是否为压缩版,比如
jquery-1.4.1.min.js
。 - 引入 jQuery 插件,文件名格式为库名称+插件名称,比如
jquery.cookie.js
; - 所有编码均遵循 XHTML 标准,标签 || 属性 || 属性命名必须由小写字母及下划线数字组成,且所有标签必须闭合,包括
br
(<br />
),hr
(<hr />
)等,属性值必须用双引号包括。 - 充分利用无兼容性问题的 HTML 自身标签,比如 span、em、strong、optgroup、label 等等。
需要为 HTML 元素添加自定义属性的时候,首先要考虑下有没有默认的已有的合适标签去设置,如果没有,可以使用须以"data-"为前缀来添加自定义属性,避免使用"data:"等其他命名方式。
- 语义化 HTML,如标题根据重要性用 h*(同一页面只能有一个 h1),段落标记用 p,列表用 ul,内联元素中不可嵌套块级元素。
- 尽可能减少 div 嵌套。
错误编写:<div class="box"> <div class="welcome">欢迎访问 XXX,您的用户名是<div class="name">用户名</div></div> </div>
正确编写:
<div class="box"> <p>欢迎访问 XXX,您的用户名是<span>用户名</span></p> </div>
- 书写链接地址时,必须避免重定向,须在 URL 地址后面加上
/
。例如<a href="http://itaolun.com/">测试链接</a>
- 在页面中尽量避免使用
style
属性。<div style="…"> ... </div>
- 必须为含有描述性表单元素
input
||textarea
添加label
。
错误编写:<p>姓名: <input type="text" id="name" name="name" /></p>
正确编写:
<p> <label for="name">姓名: </label> <input type="text" id="name" /> </p>
- 能以背景形式呈现的图片,尽量写入 CSS 样式中。
- 重要图片必须加上
alt
属性,给重要的元素和截断的元素加上title
。 - 给区块代码及重要功能(比如循环)加上注释,方便后台添加功能。
- 特殊符号使用,尽可能使用代码替代。比如
<(<)
||>(>)
||空格( )
||»(»)
等等。 - 书写页面过程中,请考虑向后扩展性。
- class & id 参见 CSS 书写规范。
CSS 书写规范
- 编码统一为 utf-8 。
- 协作开发及分工:
- 根据各个模块和页面相似程序,拟定大体框架文件。
- 交由前端人员实现内部结构&表现&行为
- 共用 CSS 文件
base.css
包含 reset 及头部底部样式,此文件不可随意修改。 - 协作开发过程中,每个页面请务必都要引入
base.css
。
- class 与 id 的使用:
- id 是唯一的并是父级的
- id 仅使用在大的模块上
- id 原则上都是由我分发框架文件时命名的(为 JavaScript 预留钩子的除外)
- class 是可以重复的并是子级的
- class 可用在重复使用率高及子级中
- 为 JavaScript 预留钩子的 id 命名,请以
js_
起始。例如:js_hide
,js_show
。 - class 与 id 命名:
- 大的框架命名比如
header
||footer
||wrapper
||left
||right
之类在拟定大体框架文件时统一命名。 - 其他样式名称由 小写英文 || 数字|| _ 来组合命名。例如
i_comment
,fontred
,width200
。 - 避免使用中文拼音,尽量使用简易的单词组合
- 命名要语义化,简明化
- 大的框架命名比如
- 规避 class 与 id 命名(此条重要,若有不明白请及时沟通):
例如要在框架页面的页面代码- 通过从属写法规避
- HTML 写法:
<div id="mainnav"> <div class="firstnav"> ... </div> </div>
- 样式写法:
#mainnav .firstnav{.......}
- HTML 写法:
- 取父级元素 id || class 命名部分命名
- 按 b 命名法则:
<div id="mainnav"> <div class="main_firstnav"> ... </div> </div>
- 样式写法:
.main_firstnav{.......}
- 按 b 命名法则:
- 以上两条规则只适用于已建好大体框架的页面
- 重复使用率高的命名,请以自己代号加下划线起始,比如
i_clear
。
- 通过从属写法规避
- 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
- 以上列举的属性只是最常用到的,并不代表全部属性
- 书写代码前,考虑并提高样式重复使用率。
- 充分利用 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}
- 样式表中中文字体名,请务必转码成
unicode
码,以避免编码错误时乱码。 - 背景图片请尽可能使用 sprite 技术,减小 http 请求,考虑到多人协作开发,sprite 按模块制作。
- 使用 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;}
- 杜绝使用
<meta http-equiv="X-UA-Compatible" content="IE=7" />
兼容 ie8。 - 用 png 图片做图片时,要求图片格式为 png-8 格式,若 png-8 实在影响图片质量或其中有半透明效果,请为 ie6 单独定义背景:
_background:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src='img/bg.png');
- 避免兼容性属性的使用,比如
text-shadow
|| CSS3 的相关属性。 - 减少使用影响性能的属性,比如
position:absolute
||float
。 - 必须为大区块样式添加注释,小区块适量注释。
- 代码缩进与格式: 建议单行书写,可根据自身习惯,后期优化安排统一处理。
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 书写规范
- 文件编码统一为 utf-8 。
- 书写过程过,每行代码结束必须有分号。
- 原则上所有功能均根据项目需求原生开发,以避免网上 down 下来的代码造成的代码污染。
例如沉冗代码、与现有代码冲突、浏览器兼容问题等。
- 库引入: 原则上仅引入 jQuery 库。若需引入第三方库,须与团队其他人员讨论决定。
- 变量命名: 驼峰式命名。
- 要求变量集中声明,避免全局变量。
- 原生 JavaScript 变量要求是纯英文字母,首字母须小写。例如
iTaoLun
。 - jQuery 变量要求首字符为’_’,其他与原生 JavaScript 规则相同。例如如:
_iTaoLun
。
- 类命名: 首字母大写,驼峰式命名。例如
ITaoLun
。 - 函数命名: 首字母小写驼峰式命名。例如
iTaoLun()
。 - 命名语义化,尽可能利用英文单词或其缩写。
- 尽量避免使用存在兼容性及消耗资源的方法或属性,比如
eval_r()
&innerText
。 - 后期优化中,JavaScript 非注释类中文字符须转换成
unicode
编码使用,以避免编码错误时乱码显示。 - 代码结构明了,加适量注释。提高函数重用率。
- 注重与 HTML 分离,减小 reflow,注重性能。
图片规范
- 所有页面元素类图片均放入
img
文件夹,测试用图片放入img/testing
文件夹。 - 图片格式仅限于 gif || png || jpg。
- 命名全部用 小写英文字母 || 数字 || _ 的组合,其中不得包含 汉字 || 空格 || 特殊字符。尽量用易懂的词汇,便于团队其他成员理解。命名分头尾两部分,用下划线隔开。例如 adleft01.gif || btnsubmit.gif。
- 在保证视觉效果的情况下选择最小的图片格式与图片质量,以减少加载时间。
- 尽量避免使用半透明的 png 图片(若使用,请参考 CSS 规范相关说明)。
- 运用 CSS sprite 技术集中小的背景图或图标,减小页面 http 请求.
注意:请务必在对应的 sprite psd 源图中划参考线,并保存至 img 目录下.
注释规范
- HTML 注释: 注释格式 <!–这儿是注释–>,
'--'只能在注释的始末位置,不可置入注释文字区域。
- CSS 注释: 注释格式暂无。
- JavaScript 注释。
- 单行注释使用
//这儿是单行注释
- 多行注释使用
/* ... */
- 单行注释使用
开发及测试工具约定
建议使用 Aptana
|| Dreamweaver
|| Vim
,亦可根据自己喜好选择,但须遵循如下原则:
- 不可利用 IDE 的视图模式’画’代码。
- 不可利用 IDE 生成相关功能代码,比如
Dreamweaver
内置的一些功能 js。 - 编码必须格式化,比如缩进。
测试工具: 前期开发仅测试 FireFox || IE9 || IE8 || IE7,后期优化时加入 Safari || Chrome || IE6。 建议测试顺序: FireFox–>IE9–>IE8–>IE7–>Safari–>Chrome–>IE6,建议安装 firebug 及 IE Tab Plus 插件。
其他规范
- 开发过程中严格按分工完成页面,以提高 CSS 复用率,避免重复开发。
- 减小沉冗代码,书写所有人都可以看的懂的代码。
- 简洁易懂是一种美德。为用户着想,为服务器着想。
后台开发规范
命名规范
项目编号命名规范
项目缩写为 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.csPublic 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()。选择正确名称时的困难可能表明需要进一步分析或定义项的目的。使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。表现力强的名称是为了帮助人们阅读,因此,提供人们可以理解的名称是有意义的。
以下几点是推荐的命名方法:
- 在类属性的名称中包含类名是多余的,如 Book.BookTitle。而是应该使用 Book.Title;
- 只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index);
- 在变量名中使用互补对,如 min/max、begin/end 和 open/close;
- 布尔变量名应该包含 Is,这意味着 Yes/No 或 True/False 值,如 fileIsFound;但若变量名已经明确表明了“是”或“否”的含义,则应不再使用“Is”,例如:Enable、Exists;
- 在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag,而是使用更具描述性的名称,如 documentFormatType。 (此项只供参考)
- 即使对于可能仅出现在几个代码行中的生存期很短的变量,仍应使用有意义的名称。仅对于短循环索引使用单字母变量名,如 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
- 缩写
为了避免混淆和保证跨语言交互操作,有关区缩写的使用草看下列规则:- 不要使用计算机领域中未被普遍接受的缩写。
- 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 缩写,用 OLAP 作为 On-line Analytical Processing 的缩写。
- 在使用缩写时,对于超过两个字符长度的缩写请使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 HTMLButton。对于仅含两个字符的缩写应全部大写,如:System.IO,而不是 System.Io。
- 命名空间
- 对于核心平台项目中开发代码所使用的命名空间一般为:
PPZ. [模块名][.子分类]
例如:
namespace PPZ.SysFramework namespace PPZ.IBMP.Portals.Gather
- 命名空间使用 Pascal 大小写,用逗号分隔开。
- 命名空间和类不能使用同样的名字。例如,有一个类被命名为 Debug 后,就不要再使用 Debug 作为一个名称空间名。
- 对于核心平台项目中开发代码所使用的命名空间一般为:
- 类
- 类的命名使用名词或名词短语,采用 Pascal 大小写。
- 使用全称避免缩写,除非缩写已是一种公认的约定,如 URL、HTML。
- 类的命名不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。
- 类的命名中不要使用下划线字符 (_)。
- 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 是适当的。在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。
public class FileStream public class Button public class String
- 接口
- 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词;
- 使用 Pascal 大小写,少用缩写;
- 给接口名称加上字母 I 前缀,以指示该类型为接口。在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。
- 不要使用下划线字符 (_)。
以下是正确命名的接口的示例:
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 { }
- 参数
以下规则概述参数的命名指南:- 使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。
- 对参数名称使用 Camel 大小写。
- 使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此,通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
- 不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。
- 不要给参数名称加匈牙利语类型表示法的前缀。以下是正确命名的参数的示例:
Type GetType(string typeName)
- 方法
以下规则概述方法的命名指南:- 使用动词或动词短语命名方法。
- 使用 Pascal 大小写。
以下是正确命名的方法的实例:
RemoveAll() GetCharArray() Invoke()
- 属性 (property)
以下规则概述属性的命名指南:- 使用名词或名词短语命名属性。
- 使用 Pascal 大小写。
- 考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为 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 } }
- 事件
以下规则概述事件的命名指南:- 对事件处理程序名称使用 EventHandler 后缀。
- 指定两个名为 sender 和 e 的参数。sender 参数表示引发事件的对象,sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类。
- 用 EventArgs 后缀命名事件参数类。
- 考虑用动词命名事件。
- 使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的 Close 事件应当具有 Closing 事件和 Closed 事件。尽量不要使用 BeforeXxx/AfterXxx 命名模式。
- 不要在类型的事件声明上使用前缀或者后缀。例如,使用 Close,而不要使用 OnClose。
- 通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 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";
- 字段
以下规则概述字段的命名指南:- private、protected 使用 Camel 大小写。
- public 使用 Pascal 大小写。
- 拼写出字段名称中使用的所有单词。仅在开发人员一般都能理解时使用缩写。字段名称不要使用大写字母。下面是正确命名的字段的示例。
class SampleClass { string url; string destinationUrl; }
- 不要对字段名使用匈牙利语表示法。好的名称描述语义,而非类型。
- 不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来区分静态和非静态字段。例如,应用 g_ 或 s_ 前缀是不合适的。
- 对预定义对象实例使用公共静态只读字段。如果存在对象的预定义实例,则将它们声明为对象本身的公共静态只读字段。使用 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; } } }
- 静态字段
以下规则概述静态字段的命名指南:- 使用名词、名词短语或者名词的缩写命名静态字段。
- 使用 Pascal 大小写。
- 对静态字段名称使用匈牙利语表示法前缀。
- 建议尽可能使用静态属性而不是公共静态字段。
- 集合
集合是一组组合在一起的类似的类型化对象,如哈希表、查询、堆栈、字典和列表,集合的命名建议用复数。
- 措词
避免使用与常用的 .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--; // 不推荐
- 复合语句
复合语句是指包含“父语句{子语句;子语句;}”的语句,使用复合语句应遵循以下几点:- 子语句要缩进。
- 左花括号“{” 在复合语句父语句的下一行并与之对齐,单独成行。
- 即使只有一条子语句要不要省略花括号“ {}”。 如
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; }
注意:
- 在循环过程中不要修改循环计数器。
- 对每个空循环体给出确认性注释。
- 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; } }
注意:
- 语句 switch 中的每个 case 各占一行。
- 语句 switch 中的 case 按字母顺序排列。
- 为所有 switch 语句提供 default 分支。
- 所有的非空 case 语句必须用 “break;” 语句结束。
- 每个 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 个空格。
注释规范
- 注释原则
- 修改代码时,须使代码周围的注释保持最新。
- 尽量避免在代码行的末尾添加注释,因行尾注释使代码更难阅读。但在批注变量声明时,行尾注释是合适的,只需将所有行尾注释在公共制表位处对齐。
- 避免杂乱的注释和不必要的注释。注释应保持条理清晰,当代码本身已能足够说明代码的含义时,无须再加注释。
- 在部署发布之前,移除所有临时的或无关的注释,以避免在日后的维护工作中产生混乱。
- 如果需要用注释来解释复杂的代码节,请检查此代码以确定是否应该将它重写。尽一切可能不注释难以理解的代码,而应该重写它,提高代码的自解释能力。
- 在编写注释时使用完整的句子,注释应该阐明代码,而不应该增加多义性。
- 在编写代码时就注释,因为以后很可能没有时间这样做。另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了。
- 避免多余的或不适当的注释,如幽默的不主要的备注。
- 使用注释是用来解释代码的意图,而不应作为代码的联机翻译。
- 若代码中含有不十分明显的内容或容易被阅读者忽略的隐含重要逻辑,应加以注释。
- 为了防止问题反复出现,对错误修复和解决方法代码总是使用注释。
- 在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释;
- 在所有的代码修改处加上修改标识的注释。例如:
// by 张果 20120919
- 一般注释
- 注释必须使用中文及中文的标点符号。
- 每行注释的最大长度不能超过 1024*800 的宽度,且需要与代码对齐。
- 将注释与注释分隔符用一个空格分开。
- 编码的同时书写注释。
- 重要变量必须有注释。
- 变量注释和变量在同一行,所有注释必须对齐,与变量分开至少两个 Tab 键。
- 典型算法必须有注释。
- 在循环和逻辑分支的地方必须写上注释。
- 程序段或语句的注释在程序段或语句的上一行。
- 在代码交付之前,必须删掉临时的或无关的注释。
- 文件与函数的注释
- 文件和函数的头部都必须有概述注释信息。
- 文件和函数的概述注释应缩进 1 个空格。
- 文件概述注释信息必须包括以下内容:
- 文件名
- 属性
- 创建人
- 创建日期
- 函数概述注释信息必须包括以下内容:
- 功能
- 输入参数,标明意义和类型
- 返回值,标明意义和类型
- 作者
- 日期
操作符规范
操作符左右各用一个空格分隔。例如:
int a = b; if (a > 0);
SQL 语句规范
代码中书写的 sql 语句要求 sql 关键字全部大写,表名和字段名小写。例如:
SELECT user_id, name FROM account WHERE user_id > ? AND depart = ? ORDER BY name
其他规范
待补充。
PPZ网站建设规范
Posted: 2012年10月16日 Filed under: Company | Tags: cqppz 留下评论版本:1.0
时间:2012-10-06
作者:重庆宸基信息技术有限公司
目标定位
- 目标关键词
- 重庆/电影/分享/选座
- 定位关键词
- 在重庆/玩电影
战略规划
- 本土电影购票 专业电商 的运营
- 本土影视文化 专业社区 的运营
- 本土影视行业 新媒体门户 运营
- 本土时尚热点 社交平台 的运营
- 本土影视 行业数据智库 的运营
- 本土文化 关联产业电商 的运营
商务功能
网站及渠道用户商务功能
- 影票实时选座服务
- 电影资讯信息服务
- 电影文化交流分享服务
- 电影用户社交服务
- 电影活动参与体验服务
- 电影文化延伸产品及服务
- 电影作品发布和创作服务
影院合作伙伴商务功能
- 新媒体品牌营销传播
- 行业数据挖掘分析智库服务
- 传统客户维挽和互动服务
- 院线资源整合共享和统一策略服务
媒体合作伙伴商务功能
- 电影新闻资讯内容互动功能
- 本土线上线下电影活动联动功能
- 媒体品牌整合传播功能
- 新媒体合作广告经营功能
通信运营商伙伴商务功能
暂略。
商务需求
用户需求分解
- 多入口选座订票系统和快捷简便流程设计开发,使用指南和用户引导传播。
- 电影资讯发布和推送模块设计开发,建立用户资讯互动路径。
- 多(社交)账号参与分享电影文化及社交资讯的模块和路径设计开发,确保互动性简便、传播性强大。
- 电影文化延伸产品和服务模块的设计开发,提供用户更全面电影相关服务功能。
- 电影作品发布和创作模块功能,提供用户 玩电影 平台价值。
合作伙伴需求分解
- 后台资讯信息发布管理平台服务提供,限权编辑发布和管理,实现影院新媒体宣传需求。
- 细分区域和专属影院市场数据挖掘分析智库服务提供,引导合作伙伴调整管理和营销策略,促进排排坐网站整体运营策略实现。
- 提供影院原有客户互动服务,引导老客户进入网站平台参与分享交流和转化成交。
- 网站提供统一营销活动策略,整合院线及接入影院资源,规模化定制促销活动和品牌推广活动。
- 提供院线及所属影院体系覆盖全城的电影“通服务”线上体系和服务。
媒体伙伴需求分解
- 相互置换的网站宣传和品牌互助推广模块策略设计开发。
- 线上和线下活动的同步企划传播和整合实施。
- 广告经营的互动和共享。
建设规划
建设目标
结合电影行业服务和市场拓展需要,创新电影行业销售业务模式,开发网上选座购买电影票平台。完全实现网上/手机查看影讯、自助选座、网银支付、自助验票全自助化营运模式。
实现电影票务经营全流程的电子化、数字化,为消费者提供了一种全新的服务方式。彻底改变影院现场排队买票的传统低效率购票方式,为广大电影消费者提供最便捷、最高效的全新服务,从而产生巨大的社会效益和商业效益。
业务需求
以网上电影订票为核心的本地化生活服务网站。
- 电子票票务务系统
- 根据满天星票务系统的系统接口,开发对应于满天星票务系统数据库的数据接口。实时操作满天星票务系统数据库,实现网上订票功能。
- 电影订票网站
- 建设以网上电影订票为核心的本地化生活服务网站。在网站上实现实时查询影讯、自助选座、网银支付、自助验票的一站式电影订票服务。
用户分类
技术平台
技术平台选择基于 ASP.NET + SQL平台构建。
技术架构
网站采用三层架构:
- 数据访问层(DAL)
- 业务逻辑层(BLL)
- 数据表现层(UI)
是否考虑负载均衡?
系统架构图如下:
数据访问层
数据访问层主要用于直接操作数据库,针对数据的增添、删除、修改、查找等。
系统使用的外部数据接口也属于数据访问层。
业务逻辑层
数据处理层主要用于处理具体问题,实现具体功能。例如:
- 影院座位信息处理
- 订票查询处理
- 业务数据处理
- 用户数据分析
数据表现层
数据表现层主要用于呈现界面,处理用户交互。
系统结构图
系统流程图
开发周期
项目预计开发时间为30~45个工作日。
建设原则
界面原则
- 色调必须优化至符合电商用户体验需求。
- 功能模块应能易于辨识。
- 用户触点应醒目易见。
- 界面力求最简单突出营销重心。
- 用户浏览、使用和交易路径要求傻瓜式。
- 用户交易步骤精简至最优化频次。
内容原则
- 抓住排排坐定位。
- 专注排排坐个性价值的素材和事件。
- 文字风格独立、时尚、青春。
- 涉及电影的内容要求规范、专业、独立。
- 营销推广的文案简洁直白。
- 品牌包装的文案感性煽情。
- 互动分享的文案围绕排排坐定位、个性和电影主题,具有连续性和关联性。
建设进度
- 建设原则
- 分阶段、分主次,先推出、次完善、再调整、后升级。
第一阶段
时间要求
2012年9月下旬至2012年11月下旬,为期2个月,含节假日。
进度目标
- 实现网站选座订票基本电商功能。
- 实现网站用户订购交易支付功能。
- 实现网站电影内容展示模块基本功能。
- 实现网站合作伙伴基本发布模块功能。
- 实现网站用户多(社交)账号简易上线和互动分享功能。
- 实现网站用户数据管理功能。
- 实现网站广告发布功能。
第二阶段
时间要求
2012年11月下旬至2013年2月8日(除夕前),为期2个半月,含节假日。
进度目标
- 优化网站选座订票电商功能,新增VIP用户快捷服务特权。
- 优化用户订购交易支付功能界面体验。
- 升级网站电影内容模块,新建电影内容库,开放用户上传功能。
- 升级网站合作伙伴发布模块功能,新增促销置顶更新功能,优化合作伙伴发布体验。
- 升级优化第一阶段用户互动分享模块,新增细分人群“电影圈”社交功能。
- 升级网站用户数据库管理,建立分类数据库架构和分析体系。
- 优化网站广告发布方式和界面效果。
第三阶段
时间要求
2013年2月下旬至2013年4月30日,为期2个半月,含节假日。
进度目标
- 汇总前期用户体验,优化网站选座订票电商功能,新增“排排团”专场订购服务功能。
- 汇总前期用户体验,进一步优化用户订购交易支付功能界面体验。
- 细化升级网站电影内容模块,电影内容库进行细致分类升级,开放VIP用户下载功能。
- 汇总前期用户体验,优化网站合作伙伴发布模块原有功能,升级优化合作伙伴发布管理界面。
- 升级优化第二阶段用户互动分享模块,优化“电影圈”社交功能,新增“排排坐”配对分享社交功能。
- 优化网站用户数据库管理,新增分析数据格式化图标报告生成功能。
- 持续优化网站广告发布方式和界面效果。
- 新增网站电影文化相关延伸产品和服务推荐互动模块,开展周边体验营销服务。
第四阶段
时间要求
2013年5月上旬至2013年9月30日,为期5个月,含节假日。
进度目标:
总目标 进行排排坐完整的二次升级改版。
- 汇总前三个阶段用户体验,重点优化网站用户交互界面和各种用户浏览、参与路径。
- 联动满天星系统和合作影院,升级和优化选座订票系统接口功能,特别是调整排片时间和订座保留时间标准。
- 新增“任我排”VIP选片团购服务功能。
- 新增合作媒体专栏模块,扩展网站内容和实时信息量。
- 新增“志愿排”社区模块,召集活跃用户参与“电影、爱、生活”系列活动,建设和放大网站美誉。
第五阶段
暂略。
界面设计
界面设计要求自适应网页设计,即可以自动识别屏幕宽度、并做出相应调整的网页设计。
首页
热映
左侧栏目:
- 海报
- 简介
- 评分
- 价格
- 购票
- 话题
- 海报活动标签
- 热度对应抓取总观映人数,用数字标识
- 本周热度抓取本周观映人数,用图表表示
- 排序按照本周热度排序
- 电影需要置顶功能
右侧栏目:
- 影片活动
- 票房排行榜
详细热映
影院
左侧栏目:
- 区域选择
- 影院列表
- 海报
- 交通图标+IMAX图标
- 评分
- 影院简介
- 购票按钮
- 评论
右侧栏目
- 影院活动
- 观映指南
详细影院
院线
- LOGO
- 名称
- 图片
- 简介
- 媒体信息
- 公告
- 活动
- 联络方式
活动
左侧栏目:
- 标签
- 时间
- 类型
- 线上、线下
- 活动列表
- 活动图片
- 活动介绍
- 参与数
- 评论数
- 活动剩余时间 开始时间
- 费用模式
活动按照热度排序、可以置顶。
右侧栏目:
- 用户互动
- 获奖公告(活动结果)
详细活动
社交
帮助
公共页面
选座页面
地图页面
电影票平台渠道接口规范
Posted: 2012年10月16日 Filed under: Company | Tags: cqppz 留下评论时间: 2012-09-28
版本: 1.1
修订者: 雷悦
目录
- 1 接口位置
- 2 分配参数
- 3 检验信息生成方法
- 4 函数说明
- 4.1 GetCinema 获取电影院信息
- 4.2 GetCinemaPlan 获取对应影院对应日期的排期
- 4.3 GetCinemaAllPlan 获取对应影院所有可读排期
- 4.4 GetHall 获取影院对应的影厅信息
- 4.5 GetHallSite 获取影厅对应的所有座位信息
- 4.6 GetHallSiteArea 获取影厅对应的所有座区信息
- 4.7 GetPlanSiteState 获取对应排期的座位图的状态
- 4.8 RealCheckSeatState 检查需要定票的座位状态情况,并定票锁定座位
- 4.9 SellTicket 卖票(带座位票)
- 4.10 GetOrderStatus 查询定单的售票结果
- 4.11 UnLockOrder 解锁订单座位
- 4.12 GetFeatureFilm 查询所有影院当前可售排期上映影片
- 4.13 GetOrderInfo 平台手工工单明细查询接口
- 5 附录A 返回结果号说明
- 6 附录B 小额支付错误状态说明
- 7 附录C 订单状态说明
接口位置
分配参数
分配参数
验证密钥
检验信息生成方法
把应用编码和方法参数字符串集合和验证密钥组合成新字符串,把合并的字符串转换小写,取新字符串的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 结果值(最低限价+加价) StateString[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 | 已确认,订单付款成功,购票成功 |
数据实体设计
Posted: 2012年10月11日 Filed under: Company | Tags: cqppz 留下评论用户信息 UserInfo
- UserID PK
- UserPhone 电话号码
- Email 邮件地址
- UserName 名称
- Password 密码
- CreateTime 创建时间
- ActiveCode 激活码
- ActiveType 激活类型
- Photo 头像
- RealName 真名
- Location 所在地
- Birthday 生日
- Gander 性别
- Mark 个人签名
- QQAcount QQ帐号
- SinaAcount 新浪帐号
- Money 余额
- Score 积分
登录日志 LoginLog
- LoginLogID PK
- UserID 用户ID
- LoginTime 登录时间
- LogoutTime 登出时间
- IP 地址
- No 入口编号
圈子 Cricle
- CricleID PK
- CricleName
用户圈子 UserCricle
- UserCricleID
- UserID
- CricleID
管理员信息 AdminInfo
- AdminID PK
- UserName
- Password
- IsSystem 是否为系统帐号
- RealName 真名
- IDCard 身份证号
管理员日志 AdminLog
- AdminLogID
- Content 日志详情
- AdminID
管理员权限 AdminPermition
- AdminPermitionID
- Name 权限名称
- AdminPermitionFID
管理员和管理员权限 AdminAdminPermition
- AdminAdminPermitionID
- AdminID
- AdminPermitionID
院方用户 Company
- CompanyID PK
- Name
- Password
- RealName 院方称呼
- Role 角色
院方管线范围 CompanyCinerma
- CompanyCinermaID PK
- CompanyID
- CinermaID
院方日志 CompanyLog
- CompanyLogID PK
- Time
- Content 日志详情
- CompanyID
影院 Cinema
- CinemaID PK 索引
- Name 影院名称
- LocationID 地域分区
- Content 电影院的基本信息
- Score 影院等级
地区 Location
- LocationID PK
- Name 地区名字
- Level 地区等级
- LocationFID 父区域ID
电影 Moive
- MovieID PK 索引
- Name 电影名称
- Content 电影的其他信息
用户现金记录 UserMoneyLog
- UserMoneyLogID PK
- Time 发生时间
- UserID
- Account 金额
- Other 交易其他信息
用户货币变更记录 UserCurrencyLog
- UserCurrencyLogID PK
- Account 金额
- Time 发生时间
- Other 其他信息
- UserID
- AdminID
系统额外成本记录 SystemCostLog
- SystemCostLogID PK
- Account 金额
- Time 发生时间
- Other 其他信息
- UserID
- AdminID
TODO 交易队列表
话题节点 PostNode
- PostNodeID PK 索引
- PostName 节点名
- Priority 优先级
- PostNodeFID 父节点
话题 Post
- PostID PK 索引
- Content 文字内容
- Time 发布话题时间
- PostNodeID
- UserID
- IsActive 是否审核通过
- IsDelete 是否被删除
- AdminID
- ImageUrl http图片地址
- LinkUrl 外链地址
- LinkType 外链类型
- Up 顶
- Down 踩
- IsVote 是否为投票
- Title 投票话题
- Limit Ip和用户次数 default(1)
- IsAnonymous 是否允许匿名
- IsMuliple 是否为多选
话题和标签 PostLabel
- PostLabelID PK
- PostID
- LabelID
标签 Label
- LabelID PK 索引
- LabelName 标签名
- Priority 优先级
评论 Comment
- CommentID PK 索引
- Content 评论内容
- Time 发布评论时间
- PostID
- VoteID
- UserID
- IsActive 是否审核通过
- IsDelete 是否被删除
- AdminID
- Up
- Down
投票选项 VoteOption
- VoteOptionID PK 索引
- Content 选项文字
- VoteID
用户投票 UserVote
- UserVoteID
- UserID
- PostID
- IP 投票时的IP
用户投票选项 UserVoteOption
- UserVoteOptionID
- UserVoteID
- OptionID