全部
常见问题
产品动态
精选推荐

多店版订单支付抽奖,当奖品库存为0后,还能中奖

管理 管理 编辑 删除

【产品名称】:CRMEB多店版

【产品版本】:v2.6

【部署方式】:linux宝塔面板

【部署环境】: 线上环境

【php版本】:7.3

【Mysql版本】:5.7

【使用终端】:例:小程序/ H5 / 公众号/ PC / APP / 后台

代码位置:

/**

* 随机奖品

* @param array $data

* @return array|mixed

*/

public function getLuckPrize(array $data)

{

   $prize = [];

   if (!$data) return $prize;

   $coupon = [];

   $coupon_ids = array_unique(array_column($data, 'coupon_id'));

   if ($coupon_ids) {

       /** @var StoreCouponIssueServices $couponServices */

       $couponServices = app()->make(StoreCouponIssueServices::class);

       $coupon = $couponServices->getGiveCoupon([['id', 'IN', $coupon_ids]]);

       if ($coupon) $coupon = array_combine(array_column($coupon, 'id'), $coupon);

   }

   $totalChance = (int)array_sum(array_column($data, 'chance'));

   if (!$totalChance) return $prize;

   $startChance = 0;

   mt_srand();

   $prizeChance = rand(0, $totalChance - 1);

   $newPrize = array_combine(array_column($data, 'type'), $data);

   foreach ($data as $item) {

       $newStartChance = (int)bcadd((string)$item['chance'], (string)$startChance);

       //随机数在这个基数端内 且该商品数量大于0 中奖

       if ($prizeChance >= $startChance && $prizeChance < $newStartChance) {

           //奖品权重<=0 || 随机到不是未中奖奖品-》设置了奖品数量-》数量不足时 返回未中奖奖品   || 抽到优惠券 数量不足

           if ((int)$item['chance'] <= 0 ||

               (

                   $item['type'] != 1 &&

                   $item['total'] != -1 &&

                   $item['total'] <= 0 &&

                   CacheService::popStock((string)$item['id'], 1, 6)

               )

               ||

               (

                   $item['coupon_id'] &&

                   $coupon &&

                   !isset($coupon[$item['coupon_id']])

               )

           ) {

               $prize = $newPrize[1] ?? [];

           } else {

               $prize = $item;

           }

           break;

       }

       $startChance = $newStartChance;

   }

   return $prize;

}


改成如下:

/**

* 随机奖品

* @param array $data

* @return array|mixed

*/

public function getLuckPrize(array $data)

{

   $prize = [];

   if (!$data) return $prize;

   $coupon = [];

   $coupon_ids = array_unique(array_column($data, 'coupon_id'));

   if ($coupon_ids) {

       /** @var StoreCouponIssueServices $couponServices */

       $couponServices = app()->make(StoreCouponIssueServices::class);

       $coupon = $couponServices->getGiveCoupon([['id', 'IN', $coupon_ids]]);

       if ($coupon) $coupon = array_combine(array_column($coupon, 'id'), $coupon);

   }

   $totalChance = (int)array_sum(array_column($data, 'chance'));

   if (!$totalChance) return $prize;

   $startChance = 0;

   mt_srand();

   $prizeChance = rand(0, $totalChance - 1);

   $newPrize = array_combine(array_column($data, 'type'), $data);

   foreach ($data as $item) {

       $newStartChance = (int)bcadd((string)$item['chance'], (string)$startChance);

       //随机数在这个基数端内 且该商品数量大于0 中奖

       if ($prizeChance >= $startChance && $prizeChance < $newStartChance) {

           //奖品权重<=0 || 随机到不是未中奖奖品-》设置了奖品数量-》数量不足时 返回未中奖奖品   || 抽到优惠券 数量不足

           if ((int)$item['chance'] <= 0 ||

               (

                   $item['type'] != 1 &&

                   $item['total'] != -1 &&

                   $item['total'] <= 0

               )

               ||

               (

                   $item['coupon_id'] &&

                   $coupon &&

                   !isset($coupon[$item['coupon_id']])

               )

           ) {

               $prize = $newPrize[1] ?? [];

           } else {

               if (CacheService::popStock((string)$item['id'], 1, 6)){

                   $prize = $item;

               }else{

                   $prize = [];

               }


           }

           break;

       }

       $startChance = $newStartChance;

   }

   return $prize;

}



请登录后查看

独行者 最后编辑于2024-10-21 14:28:04

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
180
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服