From f05f50f50f65d888309cff305660f3176928be83 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 14 Dec 2020 21:48:37 +0800 Subject: [PATCH] DEBUG --- hyhproject/common/model/UserVouchers.php | 86 ++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/hyhproject/common/model/UserVouchers.php b/hyhproject/common/model/UserVouchers.php index 776a8a6..16cd8de 100755 --- a/hyhproject/common/model/UserVouchers.php +++ b/hyhproject/common/model/UserVouchers.php @@ -7,6 +7,7 @@ use think\Db; */ class UserVouchers extends Base{ public function startGiveVouchers(){ + $LOG = "=========================================".PHP_EOL; if('127.0.0.1' != $ip = request()->ip(0) ) return $ip; set_time_limit(0); $sm = Model('common/SysSummary'); @@ -26,6 +27,14 @@ class UserVouchers extends Base{ $paySlow = round($toPaySlow * (dataConf('slowPayDayScale')*0.01),5); //应释放总额 $toPaySum = $payFast + $paySlow; + $LOG .= <<getSum($where,'expectedCouponsNum'); //最大释放总额 预代付值 * 比例 $maxPayNum = round(($allPreProduct + $allPreCoupons) * (dataConf('couponsMaxGiveSacle')*0.01),2); + $LOG .= "3、最大释放总额:{$maxPayNum}".PHP_EOL; + $LOG .= "4、转换前预代付值:".($allPreProduct + $allPreCoupons).PHP_EOL; if($toPaySum > $maxPayNum){ //加入代慢付值 + $LOG .= "6、成立".PHP_EOL; $addPaySlow = round($toPaySum - $maxPayNum,5); + $LOG .= "6、代慢付增加:{$addPaySlow}【应释放总额大于最大释放总额】".PHP_EOL; $sm->addSysSummary(0,$addPaySlow,1,'应释放总额大于最大释放总额'); } //扣减系统释放值 if ($paySlow < 0) $paySlow = 0; if ($payFast < 0) $payFast = 0; $minusSysNum = $payFast+$paySlow; + $LOG .= "---系统扣除:快:{$payFast};慢:{$paySlow}【扣减系统释放值】".PHP_EOL; $sm->addSysSummary($payFast,$paySlow,2,'扣减系统释放值'); //取最小值作为总释放额 $payNum = min($maxPayNum,$toPaySum); if($payNum==0) return; //每人应释放数 $personNum = $payNum / ($allPreProduct + $allPreCoupons); + $LOG .= "8、计算基数1:{$personNum}".PHP_EOL; //将所有未释放的的isGive设为0 //获取今日0点时间戳 $today = strtotime(date("Y-m-d"),time()); @@ -81,7 +96,10 @@ class UserVouchers extends Base{ giveDay '); $time = time(); + $LOG .= "=============开始循环=============".PHP_EOL; foreach ($list as &$v) { + $LOG .= "===========当前用户#【{$v['userId']}】==========".PHP_EOL; + $LOG .= "当前用户预获优惠券:{$v['expectedCouponsNum']};预获产品券:{$v['expectedProductNum']}".PHP_EOL; unset($data); $minNumer = 15; //都小于15不统计,直接加入代慢付 @@ -90,47 +108,76 @@ class UserVouchers extends Base{ $couponsScale = dataConf('hasCoupousScale');//优惠券比例 $productScale = 100 - $couponsScale;//产品券比例 if($v['expectedProductNum'] <= $minNumer && $v['expectedCouponsNum'] <= $minNumer){ + $LOG .= "9、预获优惠券:{$v['expectedCouponsNum']};预获产品券:{$v['expectedProductNum']},均小于15".PHP_EOL; $toSlowNum = round($personNum * ($v['expectedProductNum'] + $v['expectedCouponsNum']),2); + $LOG .= "9、退回系统慢值:{$toSlowNum}".PHP_EOL; $sm->addSysSummary(0,$toSlowNum,1,'用户ID['.$v['userId'].']双预获券都小于15/日转换退回'); + $LOG .= "=========当前用户#【{$v['userId']}】结束========".PHP_EOL; continue; }else if($v['expectedProductNum'] <= $minNumer){//预获产品券小于15; + $LOG .= "10、预获产品券:{$v['expectedProductNum']}小于15".PHP_EOL; $personAlreadyProductNum = 0; $personAlreadyCouponsNum = round($personNum * ($v['expectedProductNum'] + $v['expectedCouponsNum']),2); + $LOG .= "10、用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "10、用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; }else if($v['expectedCouponsNum'] <= $minNumer){//预获优惠券小于15 + $LOG .= "11、预获优惠券:{$v['expectedCouponsNum']}小于15".PHP_EOL; $personAlreadyCouponsNum = 0; $personAlreadyProductNum = round($personNum * ($v['expectedProductNum'] + $v['expectedCouponsNum']),2); + $LOG .= "10、用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "10、用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; }else{//都大于15 $personAlreadyProductNum = $personNum * round(($v['expectedProductNum'] + $v['expectedCouponsNum']) * ($productScale*0.01),2); $personAlreadyCouponsNum = $personNum * round(($v['expectedProductNum'] + $v['expectedCouponsNum']) * ($couponsScale*0.01),2); + $LOG .= "8.1、用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "8.2、用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; } + $LOG .= "--->用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "--->用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; //都小于就算了 if($v['expectedProductNum'] < $personAlreadyProductNum && $v['expectedCouponsNum'] < $personAlreadyCouponsNum){ + $LOG .= "12、用户需要获得的已获产品券:{$personAlreadyProductNum} < 预获产品券:{$v['expectedProductNum']}".PHP_EOL; + $LOG .= "12、用户需要获得的已获优惠券:{$personAlreadyCouponsNum} < 预获优惠券:{$v['expectedCouponsNum']}".PHP_EOL; $personAlreadyProductNum = 0; $personAlreadyCouponsNum = 0; + $LOG .= "---用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "---用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; } //实际有预获产品券小于应给值 if($v['expectedProductNum'] < $personAlreadyProductNum){ + $LOG .= "13、用户需要获得的已获产品券:{$personAlreadyProductNum} < 预获产品券:{$v['expectedProductNum']}".PHP_EOL; $personAlreadyCouponsNum += $personAlreadyProductNum; $personAlreadyProductNum = 0; + $LOG .= "---用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "---用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; } //实际有预获优惠券小于应给值 if($v['expectedCouponsNum'] < $personAlreadyCouponsNum){ + $LOG .= "14、用户需要获得的已获优惠券:{$personAlreadyCouponsNum} < 预获优惠券:{$v['expectedCouponsNum']}".PHP_EOL; $personAlreadyProductNum += $personAlreadyCouponsNum; $personAlreadyCouponsNum = 0; + $LOG .= "---用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "---用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; } - + $LOG .= "最终:用户需要获得的已获产品券:{$personAlreadyProductNum}".PHP_EOL; + $LOG .= "最终:用户需要获得的已获优惠券:{$personAlreadyCouponsNum}".PHP_EOL; + if($personAlreadyProductNum >= 0.01){ + $LOG .= "用户扣预获产品券:{$personAlreadyProductNum}【预获产品券日转换所扣】".PHP_EOL; $this->insertVouchersNotice($v['userId'],0,$personAlreadyProductNum,0,$desc='预获产品券日转换所扣',0,0);//预获产品券减 //加入变动记录,最后一位//1产品券2优惠券3旺旺券4现金券 + $LOG .= "用户加已获产品券:{$personAlreadyProductNum}【预获产品券日转换所得】".PHP_EOL; $this->insertAlreadyVouchersNotice($v['userId'],0,$personAlreadyProductNum,0,'预获产品券日转换所得',1,1); // Model('common/LogMoneys')->addMoneyLog(0,$v['userId'],0,2,'预获产品券日转换所得',1,$personAlreadyProductNum,'dayPay',1); $data['alreadyProductNum'] = $v['alreadyProductNum'] + $personAlreadyProductNum;//已获产品券加 } if($personAlreadyCouponsNum >= 0.01){ + $LOG .= "用户扣预获优惠券:{$personAlreadyCouponsNum}【预获优惠券日转换所扣】".PHP_EOL; $this->insertVouchersNotice($v['userId'],0,0,$personAlreadyCouponsNum,$desc='预获优惠券日转换所扣',0,0);//预获优惠券减 //加入变动记录,最后一位//1产品券2优惠券3旺旺券4现金券 + $LOG .= "用户加已获优惠券:{$personAlreadyCouponsNum}【预获优惠券日转换所得】".PHP_EOL; $this->insertAlreadyVouchersNotice($v['userId'],0,0,$personAlreadyCouponsNum,'预获优惠券日转换所得',1,1); // Model('common/LogMoneys')->addMoneyLog(0,$v['userId'],0,2,'预获优惠券日转换所得',1,$personAlreadyCouponsNum,'dayPay',2); $data['alreadyCouponsNum'] = $v['alreadyCouponsNum'] + $personAlreadyCouponsNum;//已获优惠券加 @@ -139,26 +186,45 @@ class UserVouchers extends Base{ $data['giveDate'] = $time; $data['giveDay'] = $v['giveDay'] + 1; Db::name('user_vouchers_summary')->where(['id'=>$v['id']])->update($data); + $LOG .= "=========当前用户#【{$v['userId']}】结束========".PHP_EOL; } Db::commit(); + $LOG .= "=============循环结束=============".PHP_EOL; Db::startTrans(); // 每次所得值(费、税前)同时扣减“助购预获”值和“预获产品券”值,直至减为负数为止,负数部分按每天0.1%耗损。 // A、当“助购预获”值为负数时,每天0.1%耗损在“预获产品券”值扣减。 // B、当“预获产品券”值为负数时,每天0.1%耗损在“预获优惠券”值扣减。 // C、当“助购预获”值和“预获产品券”值同为负数时,每天0.1%耗损在“预获优惠券”值同时扣减。 $data = Db::name('user_vouchers_summary')->whereOr(["helpSaleNum"=>["lt", 0]])->whereOr(["expectedProductNum"=>["lt", 0]])->select(); + $LOG .= "=============开始循环=============".PHP_EOL; foreach ($data as $_each){ + $LOG .= "===========当前用户#【{$_each['userId']}】==========".PHP_EOL; + $LOG .= "当前用户预获优惠券:{$_each['expectedCouponsNum']};预获产品券:{$_each['expectedProductNum']};助购券值:{$_each["helpSaleNum"]}".PHP_EOL; if($_each["expectedProductNum"]<0){ + $LOG .= "17.1、成立".PHP_EOL; $count = abs((float)$_each["expectedProductNum"]); - if($_each["helpSaleNum"] < 0)$count+=abs((float)$_each["helpSaleNum"]); - model('common/UserVouchers')->insertVouchersNotice($_each["userId"], 0, 0, $count*((float)dataConf("deductionRateWhennegPreCoupons")/100), + $LOG .= "17.1、负数值:{$count}".PHP_EOL; + if($_each["helpSaleNum"] < 0) { + $LOG .= "17.2、成立".PHP_EOL; + $count += abs((float)$_each["helpSaleNum"]); + $LOG .= "17.2、负数值:{$count}".PHP_EOL; + } + $val = $count*((float)dataConf("deductionRateWhennegPreCoupons")/100); + $LOG .= "17.3、:扣除预获优惠券:{$val}【助购券负值预获优惠券日损耗所扣】".PHP_EOL; + model('common/UserVouchers')->insertVouchersNotice($_each["userId"], 0, 0, $val, "助购券负值预获优惠券日损耗所扣", 0); }else{ + $LOG .= "17.4、成立".PHP_EOL; $count = abs((float)$_each["helpSaleNum"]); - model('common/UserVouchers')->insertVouchersNotice($_each["userId"], 0, $count*((float)dataConf("deductionRateWhennegPreCoupons")/100), + $LOG .= "17.4、负数值:{$count}".PHP_EOL; + $val = $count*((float)dataConf("deductionRateWhennegPreCoupons")/100); + $LOG .= "17.5、:扣除预获优惠券:{$val}【助购券负值预获优惠券日损耗所扣】".PHP_EOL; + model('common/UserVouchers')->insertVouchersNotice($_each["userId"], 0, $val, 0, "助购券负值预获产品券日损耗所扣", 0); } + $LOG .= "=========当前用户#【{$v['userId']}】结束========".PHP_EOL; } + $LOG .= "=============循环结束=============".PHP_EOL; Db::commit(); $sm = Model('common/SysSummary'); $sysData= $sm->getInfo('toPayFast,toPaySlow'); @@ -171,7 +237,19 @@ class UserVouchers extends Base{ $deltaSlow = $HistoryToPaySlow - $toPaySlow; $deltaConv = $HistoryVouchersSummarySum - $vouchersSummarySum; $unConv = $minusSysNum - $deltaConv; + $LOG .= << 0) $sm->addSysSummary(0, $unConv, 1, "加入系统未转换值"); + \think\Log::write($LOG); \think\Log::write(<<