本篇文章向大家介绍PHP基于Thinkphp5的砍价活动相关设计,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
PHP基于Thinkphp5的砍价活动相关设计
近期我们公司项目里陆陆续续有很多为了招引新用户的活动推出,砍价的活动由我来负责,我们的项目是在微信浏览器里供用户浏览访问。
大概描述:进入砍价活动列表页选择有意向的商品,用户点击商品图片可以看到WEB商城中所卖的商品价格与详细参数等信息,点击列表中对应商品标识下的'马上抢购'可以进入砍价页面,该页面有两个主要按钮,一个是'请土豪帮忙'(点击之后起引导分享作用)、'买买买'(砍到一定价位后可以购买),其次包括价格的进度条等信息,用户分享到朋友圈引来朋友帮忙砍价,在触发砍价按钮的同时,如果帮忙的朋友不是本站用户,那么帮忙的朋友会成为本站的会员,同时会是该分享用户的下级,然后根据产品运营采购针对每个商品的讨论,会给商品定义好要砍价的活动价和最低价,以及每砍一次所能砍掉的价格区间和要参与的人数做计算,比如(商品原价3000,最低价1000,那么所能砍掉的价格是2000,规定参与的人数是500人,那么平均一个人砍掉4块钱,可以设定区间为1~7元,来设定砍价的起伏大小,来提高用户的参与兴趣),当用户砍到规定的价格区间内购买时,跳转到订单确认页面,然后下单支付一系列流程。
页面截图:

实现相关:
通过看到几张图片大概我想大家也会考虑到所涉及的相关信息。
想要发布参与活动的商品就有一个商品区分表示,在数据库的设计当中,我没有修改商品表来增加一个区分的字段,而是新创建了一个数据表作为专门放置砍价活动的相关信息。
来看一下后台的前台展示我是这么设计的,没有经过专业前端之手,仅仅在复制了后台商品列表模块代码的基础上自己简单的做了一下布局。

数据表设计:
#活动商品设置表:CREATE TABLE `hp_activity_bargain` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `product_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '商品ID', `product_name` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT '商品名称', `activity_money` decimal(7,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '活动价', `bargain_section` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '砍价区间', `bargain_section2` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '砍价区间2【用户线上砍价(新用户砍价区间)】', #忽略,此处是迭代后期地推而加上的 `join_count` smallint(3) unsigned NOT NULL DEFAULT '0' COMMENT '参与人数', `product_desc` varchar(80) COLLATE utf8_unicode_ci NOT NULL COMMENT '活动商品描述', `attr1_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'attr1属性', `attr2_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'attr2属性', `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0是线上,1是地推', PRIMARY KEY (`id`), KEY `product_id` (`product_id`), KEY `attr2_id` (`attr2_id`), KEY `attr1_id` (`attr1_id`), KEY `type` (`type`)) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
#用户参与进度信息表CREATE TABLE `hp_activity_bargainirg` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `activity_bargain_id` int(10) unsigned NOT NULL COMMENT 'activity_prodcuts主键id', `product_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '参与活动的商品', `attr1_id` smallint(5) unsigned NOT NULL COMMENT 'attr1属性id', `attr2_id` smallint(5) unsigned NOT NULL COMMENT 'attr2属性id', `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '砍价商品发起的用户ID', `bargain_count` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '被砍价次数', `deal_money` decimal(7,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '最终交易价格', `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '发起时间', `is_addorder` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否下单(0:未下单,1已下单)', `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0是线上,1是地推', #可以忽略,后期地推加上去的 PRIMARY KEY (`id`), KEY `activity_bargain_id` (`activity_bargain_id`), KEY `attr1_id` (`attr1_id`), KEY `attr2_id` (`attr2_id`), KEY `product_id` (`product_id`), KEY `user_id` (`user_id`), KEY `is_addorder` (`is_addorder`)) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
#参与砍价详情表CREATE TABLE `hp_activity_bargain_list` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `bargain_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'activity_bargainirg表主键id', `assistor_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '帮助者ID', `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '参与时间', `bargain_money` decimal(5,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '砍掉价格', PRIMARY KEY (`id`), KEY `assistor_id` (`assistor_id`), KEY `bargain_id` (`bargain_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
控制器几个方法:
//线上砍价活动列表public function bargainirgAction() { $type = 0; $way = input('param.way', '','string'); if (is_not_empty_string($way) && $way == 'live') { $type = 1; } $pageSize = 10; if (Request::isAjax()) { &nb

