做拼团功能首先我对需求看了一下,对于单个的拼团商品要求有拼团的人数限制,拼团的活动时间倒计时,以及开团后参团时间倒计时等需求。开团人是团长与参团人加以区分,同时一个拼团有多人参加,付款与未付款对拼团成功的影响,以及未付款订单(微信支付接口要求同一个订单的支付价格必须相同,否则再次调用时返回订单重复的报错)再次支付时价格改变问题等,研究后设了四个表如下:
拼团表的设计:拼团商品表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=’拼团商品规格表’;