红包计算

$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;

-- ----------------------------
-- Table structure for cash_bonus
-- ----------------------------
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='现金红包';

-- ----------------------------
-- Table structure for cash_bonus_record
-- ----------------------------
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;

猜你喜欢

转载自blog.csdn.net/wangzhae/article/details/107489306
今日推荐