$total = 100;
$min = 1;
$num = 10;
$i=1;
for ($i=1;$i<$num;$i++)
{
$safe_total=($total-($num-$i)*$min)/($num-$i);
$money=mt_rand($min*100,$safe_total*100)/100;
$total=$total-$money;
echo '第'.$i.'个红包:'.$money.' 分 ';
echo "<br>";
}
echo '第'.$num.'个红包:'.$total.' 分,余额:0 分';
$total = 100;
$min = 1;
$num = 10;
$i=1;
for ($i=1;$i<$num;$i++)
{
$safe_total=($total-($num-$i)*$min)/($num-$i);
$money=mt_rand($min*100,$safe_total*100)/100;
$total=$total-$money;
$arr[]=["i"=>$i,"money"=>$money];
}
$arr[]=["i"=>$num,"money"=>$total]
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `cash_bonus`;
CREATE TABLE `cash_bonus` (
`id` int(11) NOT NULL,
`num` int(11) DEFAULT NULL COMMENT '红包数量',
`total` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '红包金额',
`min` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '最小红包金额',
`balance` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '余额',
`already_sent` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '已发送数量',
`createtime` int(11) DEFAULT NULL COMMENT '创建时间',
`updatetime` int(11) DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='现金红包';
DROP TABLE IF EXISTS `cash_bonus_record`;
CREATE TABLE `cash_bonus_record` (
`id` int(11) NOT NULL,
`sorting` int(11) DEFAULT NULL COMMENT '第几个获取红包的',
`before_balance` decimal(11,2) DEFAULT NULL COMMENT '获取前红包余额',
`after_balance` decimal(11,2) DEFAULT NULL COMMENT '余额',
`amount` decimal(11,2) DEFAULT NULL COMMENT '获取金额',
`createtime` int(11) DEFAULT NULL COMMENT '创建时间',
`updatetime` int(11) DEFAULT NULL COMMENT '修改时间',
`bonus_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='现金红包记录';
$bonus_id=1;
$user_id=1;
$cash_bonus=Db::table('cash_bonus') ->where("state=1")->where("id=".$bonus_id) ->find();
$total = $cash_bonus["balance"];
$num = $cash_bonus["num"];
$i = $cash_bonus["already_sent"]+1;
if($i>$num){
echo("哥,你歇歇吧,来晚了不说,累啊");die;
}else if($i==$num){
$money=$cash_bonus["balance"];
}else{
$safe_total=($total-($num-$i)*$min)/($num-$i);
$money=mt_rand($min*100,$safe_total*100)/100;
}
$cash_bonusupdate= [
"balance"=>$cash_bonus["balance"]-$money,
"already_sent"=>$cash_bonus["already_sent"]+1
];
if($i==$num){
$cash_bonusupdate["state"]="2";
}
Db::table('cash_bonus') ->where("state=1")->where("id=".$bonus_id)->update($cash_bonusupdate);
$cash_bonus_recordp["sorting"]=$i ;
$cash_bonus_recordp["before_balance"]=$cash_bonus["balance"] ;
$cash_bonus_recordp["after_balance"]=$cash_bonus["balance"]-$money ;
$cash_bonus_recordp["amount"]= $money ;
$cash_bonus_recordp["bonus_id"]= $bonus_id ;
$cash_bonus_recordp["user_id"]= $user_id ;
$cash_ = Db::table('cash_bonus_record') ->insert($cash_bonus_recordp);
die;