CREATE TABLE IF NOT EXISTS `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
`order_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '订单id',
`open_id` varchar(124) NOT NULL,
`is_repeat` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否重复,0为有效,1为无效',
`money` decimal(4,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '每次用户收益,只有is_repeat=0才加收益',
`add_time` int(10) NOT NULL COMMENT '时间',
PRIMARY KEY (`id`),
KEY `idx_open_id` (`open_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
逻辑我现在这么写的:
$orderData = $db->query("SELECT * FROM order WHERE open_id ='useropenid AND is_repeat = 0 );
//开启事务
if(empty($orderData )){
INSERT INTO VALUE ('', 1,1,'useropenid',1)//加订单纪录 这里最主要是看openid跟is_repeat 两个字段
UPDATE user SET amount = amount + 0.3 ..... //用户账户加收益
//提交事务
} else{
INSERT INTO VALUE ('', 1,1,'useropenid',1)//加订单纪录 这里 is_repeat 变为1
//回滚
}
如果上端触发这里多次,可能会操作多次。。。特别是这个open_id只提交一次这个订单但是给这个open_id用户加了多次收益
请问得各位前辈,教我这个处理逻辑 感激不尽!!!