优化:合伙人佣金结算 - 添加已退款信息处理
This commit is contained in:
parent
b1d3c95c4f
commit
dfc2785eb5
|
|
@ -32,18 +32,20 @@ class LegumesRepository extends BaseRepository{
|
|||
// 获取周期时间
|
||||
[$startTime,$endTime] = getTimeStamp('yesterday');// 天
|
||||
// 获取周期内基金池金额
|
||||
$totalIntegralReleaseMoney = (float)app()->make(RecordRepository::class)->getTotalIntegralReleaseMoney($startTime,$endTime);
|
||||
if($totalIntegralReleaseMoney <= 0) throw new Exception('基金池金额为0');
|
||||
[$totalIntegralReleaseMoney,$refundMoney,$realityMoney] = app()->make(RecordRepository::class)->getTotalIntegralReleaseMoney($startTime,$endTime);
|
||||
if($realityMoney <= 0) throw new Exception('基金池金额为0');
|
||||
$legumesPrice = $set['legumes_price'] <= 0 ? 0.5 : $set['legumes_price'];
|
||||
// 计算豆豆数量 文创豆=平台抽成的销售额10%➗首次价格0.5
|
||||
$legumesNum = (float)sprintf("%.2f",$totalIntegralReleaseMoney / $legumesPrice);
|
||||
$legumesNum = (float)sprintf("%.2f",$realityMoney / $legumesPrice);
|
||||
// 明日价格 下次文创豆价格=基金池金额(消费者的70%)➗ 文创豆数量
|
||||
$allIntegralReleaseMoney = (float)app()->make(RecordRepository::class)->getTotalIntegralReleaseMoney();
|
||||
[$allTotalIntegralReleaseMoney,$allRefundMoney,$allRealityMoney] = app()->make(RecordRepository::class)->getTotalIntegralReleaseMoney();
|
||||
$allLegumes = (float)$this->dao->getSearch([])->sum('legumes_num');
|
||||
$tomorrowLegumesPrice = sprintf("%.2f",$allIntegralReleaseMoney / ($allLegumes + $legumesNum));
|
||||
$tomorrowLegumesPrice = sprintf("%.2f",$allRealityMoney / ($allLegumes + $legumesNum));
|
||||
// 记录
|
||||
$recordId = Legumes::insertGetId([
|
||||
'total_platform_commission_money' => $totalIntegralReleaseMoney,
|
||||
'refund_money' => $refundMoney,
|
||||
'reality_money' => $realityMoney,
|
||||
'legumes_price' => $legumesPrice,
|
||||
'legumes_num' => $legumesNum,
|
||||
'tomorrow_legumes_price' => $tomorrowLegumesPrice,
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ class PartnerSettlementCycleRepository extends BaseRepository{
|
|||
protected $dao;
|
||||
private $set;
|
||||
private $startTime,$endTime;
|
||||
private $totalCommission;
|
||||
private $totalCommission,$refundTotalCommission,$realityMoney;
|
||||
|
||||
public function __construct(PartnerSettlementCycleDao $dao){
|
||||
$this->dao = $dao;
|
||||
|
|
@ -102,8 +102,9 @@ class PartnerSettlementCycleRepository extends BaseRepository{
|
|||
throw new Exception("执行时间错误(上一个周期结束时间{$upCycleEndDate},下一个周期结束时间{$nextCycleEndDate})");
|
||||
}
|
||||
// 判断:分红总金额是否大于0
|
||||
$this->totalCommission = (float)app()->make(RecordRepository::class)->getTotalCommission($this->startTime,$this->endTime);
|
||||
if($this->totalCommission <= 0) throw new Exception('分红总金额为0');
|
||||
[$this->totalCommission,$this->refundTotalCommission,$this->realityMoney] = (float)app()->make(RecordRepository::class)->getTotalCommission($this->startTime,$this->endTime);
|
||||
|
||||
if($this->realityMoney <= 0) throw new Exception('分红总金额为0');
|
||||
}
|
||||
/**
|
||||
* Common: 合伙人结算 - 佣金计算并且记录
|
||||
|
|
@ -125,6 +126,8 @@ class PartnerSettlementCycleRepository extends BaseRepository{
|
|||
// 记录周期分红信息
|
||||
$cycleId = PartnerSettlementCycle::insertGetId([
|
||||
'total_commission' => $this->totalCommission,
|
||||
'refund_money' => $this->refundTotalCommission,
|
||||
'reality_money' => $this->realityMoney,
|
||||
'total_weight_value' => $totalWeightValue,
|
||||
'total_people' => count($userList),
|
||||
'start_time' => $this->startTime,
|
||||
|
|
@ -135,7 +138,7 @@ class PartnerSettlementCycleRepository extends BaseRepository{
|
|||
foreach($userList as $userId => $weightValue){
|
||||
// 添加贡献分享分红信息记录 这里必须进行100的偏移计算
|
||||
$radio = (float)sprintf("%.2f",($weightValue / $totalWeightValue) * 100);// 佣金比例
|
||||
$money = (float)sprintf("%.2f",($this->totalCommission * $radio) / 100);// 实际获得佣金
|
||||
$money = (float)sprintf("%.2f",($this->realityMoney * $radio) / 100);// 实际获得佣金
|
||||
if($money > 0){
|
||||
$logInsertData[] = [
|
||||
'uid' => $userId,
|
||||
|
|
|
|||
|
|
@ -116,13 +116,28 @@ class RecordRepository extends BaseRepository{
|
|||
* Time: 2023/12/28 14:22
|
||||
* @param $startTime
|
||||
* @param $endTime
|
||||
* @return float
|
||||
* @return float[]
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function getTotalCommission($startTime,$endTime):float{
|
||||
return (float)$this->dao->getSearch([])
|
||||
public function getTotalCommission($startTime,$endTime):array{
|
||||
// 获取总数量
|
||||
$totalMoney = (float)$this->dao->getSearch([])
|
||||
->whereBetweenTime('create_time', $startTime, $endTime)
|
||||
->where('commission_partner_status',0)
|
||||
->sum('commission_partner_money');
|
||||
// 获取退款金额
|
||||
$refundMoneyInfo = $this->dao->getSearch([])
|
||||
->field('sum((commission_partner_money * refund_ratio / 100)) as refund_money')
|
||||
->whereBetweenTime('create_time', $startTime, $endTime)
|
||||
->where('commission_partner_status',0)
|
||||
->find();
|
||||
$refundMoney = sprintf("%.2f",$refundMoneyInfo->refund_money ?? 0);
|
||||
// 实际金额
|
||||
$realityMoney = sprintf("%.2f",$totalMoney - $refundMoney);
|
||||
|
||||
return [(float)$totalMoney,(float)$refundMoney,(float)$realityMoney];
|
||||
}
|
||||
/**
|
||||
* Common: 修改指定时间内 合伙人佣金结算状态
|
||||
|
|
@ -144,14 +159,31 @@ class RecordRepository extends BaseRepository{
|
|||
* Time: 2023/12/28 18:49
|
||||
* @param int $startTime
|
||||
* @param int $endTime
|
||||
* @return float
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function getTotalIntegralReleaseMoney($startTime = 0,$endTime = 0){
|
||||
return (float)$this->dao->getSearch([])
|
||||
public function getTotalIntegralReleaseMoney(int $startTime = 0,int $endTime = 0):array{
|
||||
// 获取总数量
|
||||
$totalIntegralReleaseMoney = (float)$this->dao->getSearch([])
|
||||
->when($startTime > 0 && $endTime > 0,function($query) use ($startTime,$endTime){
|
||||
$query->whereBetweenTime('create_time', $startTime, $endTime);
|
||||
})
|
||||
->sum('commission_integral_release_money');
|
||||
// 获取退款金额
|
||||
$refundTotalIntegralReleaseMoney = $this->dao->getSearch([])
|
||||
->field('sum((commission_integral_release_money * refund_ratio / 100)) as refund_money')
|
||||
->when($startTime > 0 && $endTime > 0,function($query) use ($startTime,$endTime){
|
||||
$query->whereBetweenTime('create_time', $startTime, $endTime);
|
||||
})
|
||||
->find();
|
||||
$refundMoney = sprintf("%.2f",$refundTotalIntegralReleaseMoney->refund_money ?? 0);
|
||||
// 实际金额
|
||||
$realityMoney = sprintf("%.2f",$totalIntegralReleaseMoney - $refundMoney);
|
||||
|
||||
|
||||
return [(float)$totalIntegralReleaseMoney,(float)$refundMoney,(float)$realityMoney];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue