解析phpwind团购模块实现

前面我专门解析过phpwind的主题定制化设计,本以为团购功能是基于主题定制化配置出来的,结果看源码和表结构才发现团购是单独来实现的,但实现机理与定制化主题这块类似,可能是不同时期的产物,发现定制化主题满足不了团购的需求,这也许是phpwind设计中不够完善的小瑕疵吧。不扯那么多了,先看看团购这块的表结构设计:

pw_pcfield:团购活动字段表,用于存放团购定制化字段,因此团购和主题定制化一样,可以定制字段

pw_pcvalue1:团购发帖信息表,用于存放团购这块属性的具体值

pw_pcvalue2:活动帖信息表,用于存放团购活动这块属性的具体值

pw_pcmember:团购活动报名信息表,用于存放跟团人的信息

以上是表结构设计,感觉有点怪怪的,既像是可定制化的通用表结构设计,可又定死了一些信息,不但不能定制化,反而搞得清晰专业,我怀疑是为了图省事,直接把定制化主题那块搬过来,改改了事。

下面再看看具体功能的代码实现,先是读团购贴功能,是基于通用读贴read.php上扩展出来的,通过填加上了以下代码实现:

//团购活动主题帖 if ($read['special'] > 20) { $pcid = $read['special'] - 20; //取得团购贴数据库值和拼装后的html显示代码 list($fieldone,$topicvalue) = $postCate->getCatevalue($pcid); //取得搜索版块的html代码 $initSearchHtml = $postCate->initSearchHtml($pcid); //把团购定制化出来的属性值merge到$read中 is_array($fieldone) && $read = array_merge($read,$fieldone); //取得管理权限 $isadminright = $postCate->getAdminright($pcid,$read['authorid']); //取得查看权限 list($pcuid) = $postCate->getViewright($pcid,$tid); //取得付款方式 $payway = $fieldone['payway']; //判断是否团购结束 $ifend = $read['endtime'] < $timestamp ? 1 : 0; } 

通过以上我加的注释能清晰地了解大体流程,再具体看看$postCate->getCatevalue实现逻辑,实际上这块实现就是参考的是定制化主题贴的信息读取,也就是根据pw_pcfield拼装pw_pcvalue了,顺便再带出pw_pcmember信息,其实完全没必要搞得这么复杂,主要可能还是为了能copy定制化主题这块代码吧。

下面看看发起团购页面的功能,主要是通过在postnew.php里添加了一块对团购的支持,代码如下:

//权限审查 if ($postCate) { $postCate->postCheck(); } //获取发帖团购活动右侧模板选择 $selectmodelhtml = $postCate->getPcHtml(); //获取发帖团购活动的html代码 $topichtml = $postCate->getCateHtml($pcid); $special = 0; 

另外有两个小的对第三方应用的集成可以谈谈,一个是对阿里旺旺集成,另一个是支付宝的集成。对旺旺的集成比较简单,通过调用旺旺提供的通用url服务,代码如下:

<a target="_blank" href="http://amos1.taobao.com/msg.ww?v=2&uid='.$wang.'&s=1" mce_href="http://amos1.taobao.com/msg.ww?v=2&uid='.$wang.'&s=1" ><img border="0" src="http://amos1.taobao.com/online.ww?v=2&uid='.$wang.'&s=1" mce_src="http://amos1.taobao.com/online.ww?v=2&uid='.$wang.'&s=1" alt="'.getLangInfo('other','pc_wangwang').'" /></a> 

支付宝也是类似,采用集成支付宝提供的标准的支付服务,这里就不再累述。

 

 

 

 

你可能感兴趣的:(html,数据库,list,活动,border,merge)