做拼团功能首先我对需求看了一下,对于单个的拼团商品要求有拼团的人数限制,拼团的活动时间倒计时,以及开团后参团时间倒计时等需求。开团人是团长与参团人加以区分,同时一个拼团有多人参加,付款与未付款对拼团成功的影响,以及未付款订单(微信支付接口要求同一个订单的支付价格必须相同,否则再次调用时返回订单重复的报错)再次支付时价格改变问题等,研究后设了四个表如下:
拼团表的设计:拼团商品表jkd_ptgoods 用户拼团表 jkd_ptcode 拼团商品规格表 jkd_ptgoods_norm 规格表 jkd_norm
CREATE TABLE `jkd_norm` (
`norm_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`norm_name` varchar(50) DEFAULT NULL COMMENT '规格名',
`is_show` tinyint(1) DEFAULT NULL COMMENT '是否显示 0 隐藏 1 显示',
`sort` smallint(5) DEFAULT NULL COMMENT '排序 越打越靠后',
PRIMARY KEY (`norm_id`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COMMENT='规格详情表';
CREATE TABLE `jkd_ptcode` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) DEFAULT NULL COMMENT '团长id',
`ptgoods_id` int(11) DEFAULT NULL COMMENT '拼团商品id',
`ptcode` varchar(50) DEFAULT NULL COMMENT '拼团编号',
`ptnumber` int(11) DEFAULT NULL COMMENT '拼团人数',
`addtime` datetime DEFAULT NULL COMMENT '创建日期',
`endtime` datetime DEFAULT NULL COMMENT '结束时间',
`ptstatus` tinyint(1) DEFAULT '0' COMMENT '0:未付款 1:拼团中,2:拼团成功, 3:拼团失败, ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8 COMMENT='用户拼团表';
CREATE TABLE `jkd_ptcode_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) DEFAULT NULL COMMENT '用户id',
`ptgoods_norm_id` int(11) DEFAULT NULL COMMENT '拼团商品规格id',
`pid` varchar(50) DEFAULT NULL COMMENT '拼团id',
`ptcode` varchar(50) DEFAULT NULL COMMENT '拼团编号',
`ptordercodeTrue` varchar(52) DEFAULT NULL,
`ptordercode` varchar(50) DEFAULT NULL COMMENT '拼团虚拟订单',
`ptrefundcode` varchar(50) DEFAULT NULL COMMENT '退款单编号',
`ptgoods_name` varchar(250) DEFAULT NULL COMMENT '商品名称',
`norm_name` varchar(250) DEFAULT NULL COMMENT '规格名称',
`per_price` varchar(20) DEFAULT NULL COMMENT '单价',
`price` varchar(20) DEFAULT NULL COMMENT '付款金额',
`name` varchar(20) DEFAULT NULL COMMENT '收货人',
`addtime` datetime DEFAULT NULL COMMENT '参团日期',
`province` varchar(50) DEFAULT NULL COMMENT '省',
`city` varchar(50) DEFAULT NULL COMMENT '市',
`county` varchar(50) DEFAULT NULL COMMENT '县',
`address` varchar(255) DEFAULT NULL COMMENT '详细地址',
`tel` varchar(15) DEFAULT NULL COMMENT '手机号码',
`orderstatus` tinyint(1) DEFAULT '0' COMMENT '0:初始,1:已付款, 2-已发货 3-已收货 4-已评价,5:已退款',
`is_header` tinyint(1) DEFAULT '0' COMMENT '是否团长 0-不是 1-是',
`lack` tinyint(1) DEFAULT '0' COMMENT '是否缺货(0:否,1:是)',
`number` int(10) DEFAULT '0' COMMENT '数量',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8 COMMENT='拼团明细表';
CREATE TABLE `jkd_ptgoods` (
`ptgoods_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '拼团商品自增id',
`ptgoods_name` varchar(120) DEFAULT '' COMMENT '拼团商品名称',
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品价格(默认价格)',
`pt_price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '拼团价格',
`pt_size` int(10) DEFAULT '2' COMMENT '拼团人数(2-10)',
`pt_validhours` int(10) DEFAULT '24' COMMENT '拼团有效期(默认24小时)',
`start_time` datetime NOT NULL COMMENT '拼团开始时间',
`end_time` datetime NOT NULL COMMENT '拼团结束时间',
`ptgoods_number` smallint(5) NOT NULL DEFAULT '0' COMMENT '商品库存数量',
`description` varchar(255) NOT NULL DEFAULT '' COMMENT '商品剪短描述',
`content` text COMMENT '商品详细描述',
`ptgoods_thumb` varchar(255) DEFAULT NULL COMMENT '商品微缩图',
`ptgoods_imgs` varchar(255) DEFAULT NULL COMMENT '商品详情轮播图',
`sort` smallint(4) DEFAULT '0' COMMENT '该商品显示顺序(越大越靠后)',
`addtime` int(11) DEFAULT '0' COMMENT '商品添加时间',
`uptime` int(10) DEFAULT '0' COMMENT '修改时间',
`is_sale` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '销售,1,是;0,否',
`pt_times` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '拼团次数',
PRIMARY KEY (`ptgoods_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='商品表';
CREATE TABLE `jkd_ptgoods_norm` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`ptgoods_id` int(11) unsigned NOT NULL COMMENT '商品自增id',
`norm_id` int(10) DEFAULT NULL COMMENT '规格id',
`number` varchar(50) DEFAULT '' COMMENT '规格商品数量',
`is_show` tinyint(1) DEFAULT NULL COMMENT '是否显示 0 隐藏 1 显示',
`price` varchar(50) DEFAULT NULL COMMENT '规格价格',
`pt_price` varchar(50) DEFAULT NULL COMMENT '拼团价格',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='拼团商品规格表';
建立这几个表后基本可以满足拼团功能的要求了。下篇说说我具体实现的过程。。。。。。。。。。