拼吾爱程序人生

首页 » 编程应用 » 应用系统 » DiscuzNT 交易插件设计之商品添加,编辑和删除(CUD)
cobra - 2008-8-12 13:04:00
在上一篇文章中,大略说明了一个商品交易插件的一些功能上的东西和具体的文件分布。本文章将会
以上文中的“管理商品”用例来说明一下商品的添加,编辑和删除方面的设计。



    首先看一下商品添加功能。我们打开一个商品添加页面如下:



 附件: 您所在的用户组无法下载或查看附件





 
    上图中说明了发布商品时要填写的内容和数据约束项,其中的"商品类目"一侧的“选择”链接点击后效果如下图所示:


 附件: 您所在的用户组无法下载或查看附件



   

      当填写完相应的商品信息,并通过JS和aspx.cs数据校验之后,就会在postgoods.aspx.cs中执行下面

语句,以便向商品列表中添加数据:

Code


其中的CreateGoods方法内容如下(discuz.mall项目的App_Code文件夹下的Goods.cs文件)

Code


而上面方法中的DbProvider.GetInstance().CreateGoods(goodsinfo)即是向数据库中添加相应商品的
sql语句(相应内容参见discuz.mall项目的Data文件夹下的SqlDataProvider.cs文件中的相应方法).

    上面代码中还包括一个更新当前添加商品所属分类的商品数的语句。这里面有必要介绍一个商品分类表,

因为要更新的字段即是该表中的goodscount字段(分类的商品数),见下图:


 附件: 您所在的用户组无法下载或查看附件





    当然到这里只是完成了初始化添加商品数据的功能。而商品标签,附件等功能还需要通过上面方法的

返回值即新创建的商品id来进行添加,请看下面代码(postgoods.aspx.cs):

Code


上面代码即是将当前商品的标签添加到商品标签列表中的语句(注:这部分代码将来可能要重构)。
    其中的CreateGoodsTags方法是直接向数据库中插入指定商品的标签,并根据标签是否已存在来更新已有标签的使用数。
   
    而第二个方法即:GoodsTags.WriteGoodsTagsCacheFile(goodsinfo.Goodsid)则是将标签写入缓存文件,以便加快
页面浏览速度。其方法内容如下:

Code


完成了标签(文件)的创建之后。下面是商品附件的上传和数据添加(postgoods.aspx.cs):

Code


因为使用了与版块下上传附件所相似的逻辑代码,这里就不多加说明了,要注意的是因为商品交易
  插件也支持远程附件功能,因此我们也需要在后台设置相应的FTP信息后才会启用,而有关这部分的内
  容请参见我之前的一篇文章。
   
      这样,“添加商品”的主要的流程应该就走的差不多了,当然还有一些功能如添加HTML标题,商品所在
  地数据js文件绑定,商品分类的js数据绑定等就暂不介绍了,大家找到相应的js文件或CS文件一看便知。


(文/代震军  出处/博客园)

 您可能对 [应用系统] 的这些文章也感兴趣:

EAI概述
Web Farm中异步、高效的用户登录解决方案
走出企业内部 ERP和ERPII已经进入平台阶段
2007年企业物流调查报告
在SOA中实现业务规则和业务流程
第二人生发布基于Mono平台的测试版本
IE8开发者白皮书(pdf格式,附下载)
Microsoft System Center Operations Manager (SCOM) 的部署
ERP实施失败,且慢“炒人”!
谷歌(Google)神话探索系列之八:竞争对手的表现——雅虎
cobra - 2008-8-12 13:10:00
下面要介绍是“编辑商品”这个功能。当我们正常发布商品(选择“上架”且不需“审核”)时,该商品

  在发布之后,会重定向到“商品显示”页面,如下图:



 附件: 您所在的用户组无法下载或查看附件


      当我们点击“编辑商品”链接后,会进入商品编辑页面,如下:



 附件: 您所在的用户组无法下载或查看附件


     
      大家可能看出了,这个页面与添加页面的差异不大,主要是(如果有附件的话)多了编辑附件的功能。
  而这部分差异也体现在了editgoods.cs文件中,因为这里面的代码逻辑有些复杂,主要是判断用户是否修
  改过附件信息(如阅读权限,上传文件)等,以便进行更新或删除已废掉的附件内容等:

Code


当然,如果我们修改了商品分类,则在我们编辑完商品并提交后,系统会对商品原来所在分类进行减1操作,而对所选择
的目标分类进行加1操作,如下所示(discuz.mall项目的App_Code文件夹下的Goods.cs文件):

Code


当然,如果商品发生“上架”或“下架”变化时,也会执行类似的操作,以确保前台商品列表页面中的商品分类数准备。
如下(discuz.mall项目的Pages文件夹下的editgoods.cs文件):

Code


当然,我们在管理后台还提供了“分类商品数”数据维护的功能,以确保其数值准确。如下图:


 附件: 您所在的用户组无法下载或查看附件



     

   

    到这时,编辑商品的主要功能介绍完了。下面说一下删除商品的功能。



    我们可以在“用户中心”中的“我的商品”下的全部商品中找到删除商品的功能(批量删除),如下图:



 附件: 您所在的用户组无法下载或查看附件


   
   
    当系统确认当前用户即是该商品的发布人时,会执行的如下逻辑:

Code


其中的DeleteGoods方法将会运行如下操作:

Code


主要是对商品附件的删除,用户积分以及分类商品数等的相关操作,代码比较简单,这里就不多说了:)
     
   
      好了,今天的内容就先到这里了,因为一些细节暂未详细描述,只是粗略的浏览了一遍,如果大家感兴趣
欢迎在回复中讨论。

   


    作者:代震军,daizhj

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

    原文链接:http://www.cnblogs.com/daizhj/archive/2008/08/12/1260333.html
1
查看完整版本: DiscuzNT 交易插件设计之商品添加,编辑和删除(CUD)
Modify by pin5i DZNT_ExpandPackage 2.1.3237 2007-2008 pin5i.com