DiscuzNT 商品交易插件设计之用例模型

在今年年初,本人接受了商品交易插件设计和开发任务。在开始的那段时间里,主要是开发一系列商品交易的基本功能,包括: 商品管理(CUD),在线交易,商品分类管理,定单(交易单)管理等。如下面的图中所示(普通权限用户):

而下面这张则是有管理权限的用户(管理员或版主之类)用例图。

目前我们开源的商品交易插件基本上完成了上面所绘制的用例功能。

下面简单介绍一下主要的数据库表之间的关系,结构。请看下图:

这里的商品表(goods)为交易的“核心”,其结构也相对复杂一些,这里引用我们开源时的官方数据库字典来加以说明:

目前商品交易的代码布局如下:

1.商品交易实体类位于: Discuz.Entity 项目下的Mall文件夹

2.商品交易业务逻辑层代码位于:Discuz.Mall 下的App_Code文件夹

3.前台访问和后台访问页面的cs代码分别位于上图的Pages和Admin文件夹

4.支付宝在线支付模块以及交易插件数据访问接口分别位于Discuz.Plugin项目的Payment和Mall文件夹下

而相应的支付宝配置信息类声明在了Discuz.Config项目中(TradeConfigFileManager.cs,

TradeConfigInfo.cs,TradeConfigs.cs), 其中的TradeConfigInfo.cs为配置信息类,内容如下所示:

///<summary>///交易配置信息类///</summary>[Serializable]publicclassTradeConfigInfo:IConfigInfo{///<summary>///支付宝配置信息///</summary>privateAliPayConfigInfo_alipayconfiginfo;///<summary>///支付宝配置信息///</summary>publicAliPayConfigInfoAlipayconfiginfo{get{return_alipayconfiginfo;}set{_alipayconfiginfo=value;}}}///<summary>///支付宝配置信息类///</summary>[Serializable]publicclassAliPayConfigInfo{#region私有字段privatestring_inputCharset=”utf-8″;privatestring_partner=”2088002052150939″;//DiscuzPartnerIDprivatestring_sign=”gh0bis45h89m5mwcoe85us4qrwispes0″;//Discuz交易安全校验码(key)privatestring_acount=””;//支付宝帐号(用于兑换或交易功能)#endregion#region属性///<summary>///参数编码字符集,默认为”utf-8″(Alipay文档默认值为”GBK”)///</summary>publicstringInputcharset{get{if(_inputCharset==null){return”utf-8″;}else{return_inputCharset;}}set{if(value!=null&&value.Length>50){thrownewArgumentOutOfRangeException(“无效的Input_Charset(参数编码字符集)”,value,value.ToString());}_inputCharset=value;}}#region注释的代码//privatestring_agent=””;/////<summary>/////如果一些交易网站的交易,有一定的“代理”所属关系,代理商可以在交易中传递该参数,来表明代理的身份。这里传送的值,请使用代理商所属支付宝账户的PartnerID/////</summary>//publicstringAgent//{//get{return_agent;}//set//{//if(value!=null&&value.Length>16)//thrownewArgumentOutOfRangeException(“无效的Agent(代理)”,value,value.ToString());//_agent=value;//}//}#endregion///<summary>///合作伙伴在支付宝的用户ID///Alipay文档类型:string(16)///</summary>publicstringPartner{get{if(_partner==null){thrownewArgumentNullException(_partner);}return_partner;}set{if(value!=null&&value.Length>16)thrownewArgumentOutOfRangeException(“无效的Partner(合作伙伴ID)”,value,value.ToString());_partner=value;}}///<summary>///签名,在此输入交易安全校验码(key),不同于支付宝文档的Sign///</summary>publicstringSign{get{if(_sign==null){thrownewArgumentNullException(_sign);}return_sign;}set{if(value!=null&&value.Length>50)thrownewArgumentOutOfRangeException(“无效的Sign(签名)”,value,value.ToString());_sign=value;}}///<summary>///支付宝帐号(用于兑换或交易功能)///</summary>publicstringAcount{get{if(_acount==null){thrownewArgumentNullException(_acount);}return_acount;}set{if(value!=null&&value.Length>16)thrownewArgumentOutOfRangeException(“无效的支付宝帐号”,value,value.ToString());_acount=value;}}#endregion}

序列化保存后的结果如下(位于discuz.web/config/trade.config):

<?xmlversion=”1.0″?><TradeConfigInfoxmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns:xsd=”http://www.w3.org/2001/XMLSchema”><Alipayconfiginfo><Inputcharset>utf-8</Inputcharset><Partner>208800******</Partner><Sign>zwdr8lv1uaj4b******</Sign><Acount/></Alipayconfiginfo></TradeConfigInfo>

而有关我们产品配置文件的实现方式请参见这篇文章:Discuz!NT之配置文件类[discuz.config] 其中介绍了相应文件的对应关系。

好了,因为想说的东西不少,只能放到以后慢慢加以介绍了(想以”用例”为单元进行说明)。

今天的内容就先到这里了。

最后附上我们产品的最新下载(源码)地址:

Discuz!NT v2.5 源码包 Discuz!NT 2.5 Source(Visual Studio 2008) :本地下载

Discuz!NT v2.5 类库说明文档:本地下载

Discuz!NT v2.5 SQL Server版数据库字段说明文档:本地下载

Discuz!NT v2.5 API说明及整合文档:本地下载

Discuz!NT v2.5 API Client:

本地下载

作者:代震军,daizhj

网站:http://daizhj.cnblogs.com/

原文链接:http://www.cnblogs.com/daizhj/archive/2008/08/04/1259645.html

也不要说曾经失去,失去的不是永远失去,得到的不是永远拥有,

DiscuzNT 商品交易插件设计之用例模型

相关文章:

你感兴趣的文章:

标签云: