调整补贴发放

This commit is contained in:
luofei 2024-03-16 16:24:39 +08:00
parent 29060c709a
commit 6c651cd8a2
2 changed files with 34 additions and 11 deletions

View File

@ -9,5 +9,11 @@ class Enum
const CONSUMPTION_STATUS_AUDIT = 0; //审核中
const CONSUMPTION_STATUS_CONFIRM = 1; //待确认
const CONSUMPTION_STATUS_FINISHED = 2; //已完成
const CONSUMPTION_STATUS_MAP = [
self::CONSUMPTION_STATUS_REPEAL => '未激活',
self::CONSUMPTION_STATUS_AUDIT => '审核中',
self::CONSUMPTION_STATUS_CONFIRM => '待确认',
self::CONSUMPTION_STATUS_FINISHED => '已到账',
];
}

View File

@ -2,6 +2,7 @@
namespace app\controller\api\server;
use app\common\Enum;
use app\common\model\store\consumption\StoreConsumption;
use app\common\model\store\consumption\StoreConsumptionUser;
use app\common\model\system\merchant\FinancialRecord;
@ -78,15 +79,16 @@ class Store extends BaseController
{
$type = $this->request->get('type', 1);
$uid = $this->request->uid();
$merchant = Merchant::where('mer_id', $this->merId)->field('sale_amount,purchase_amount,type_id')->find()->toArray();
$merchant = Merchant::where('mer_id', $this->merId)->field('sale_amount,purchase_amount,official_purchase_amount,type_id')->find()->toArray();
$saleTarget = '0.00';
$purchaseTarget = '0.00';
$officialPurchaseTarget = '0.00';
$userConsumptionStatus = false;
if ($type == 1) {
//春耕采购补贴
$couponId = StoreConsumption::where('type', StoreConsumption::TYPE_PULL_CONSUMPTION)->value('coupon_id');
$userConsumption = StoreConsumptionUser::where('uid', $uid)
->where('coupon_id', $couponId)
->where('status', '<>', -1)
->field('coupon_price,balance')
->find();
if (!empty($userConsumption)) {
@ -95,9 +97,10 @@ class Store extends BaseController
->where('coupon_id', $couponId)
->value('coupon_price');
$saleTarget = $userConsumption['coupon_price'];
$purchaseTarget = $userConsumption['coupon_price'];
$merchant['purchase_amount'] = bcsub($userConsumption['coupon_price'], $userConsumption['balance'], 2);
$purchaseTarget = bcmul($userConsumption['coupon_price'], 0.4, 2);
$officialPurchaseTarget = bcsub($saleTarget, $purchaseTarget, 2);
$merchant['balance'] = $userConsumption['balance'];
$userConsumptionStatus = in_array($userConsumption['status'], [0, 1, 2]);
}
} else {
//增收销售补贴
@ -105,23 +108,26 @@ class Store extends BaseController
if ($consumption) {
$userConsumption = StoreConsumptionUser::where('uid', $uid)
->where('coupon_id', $consumption['coupon_id'])
->where('status', '<>', -1)
->field('coupon_price,balance,status')
->order('coupon_user_id', 'desc')
->find();
$userConsumptionStatus = in_array($userConsumption['status'] ?? -1, [0, 1, 2]);
$subsidyAmount = $userConsumption['coupon_price'] ?? '0.00';
$merchant['balance'] = $userConsumption['balance'] ?? '0.00';
foreach ($consumption['config'] as $k => $item) {
if (empty($userConsumption) && in_array($merchant['type_id'], $item['type_id'])) {
$saleTarget = $item['amount'];
$subsidyAmount = $item['subsidy'];
$purchaseTarget = bcmul($saleTarget, 0.5, 2);
$purchaseTarget = bcmul($saleTarget, 0.2, 2);
$officialPurchaseTarget = bcmul($saleTarget, 0.3, 2);
break;
}
if (!empty($userConsumption) && in_array($merchant['type_id'], $item['type_id'])) {
$nextItem = $consumption['config'][$k + 1] ?? $item;
$saleTarget = $nextItem['amount'];
$subsidyAmount = $nextItem['subsidy'];
$purchaseTarget = bcmul($saleTarget, 0.5, 2);
$purchaseTarget = bcmul($saleTarget, 0.2, 2);
$officialPurchaseTarget = bcmul($saleTarget, 0.3, 2);
break;
}
}
@ -131,17 +137,27 @@ class Store extends BaseController
$saleFinishRate = bcmul(min($saleFinishRate, 1), 100, 0);
$purchaseFinishRate = $purchaseTarget <= 0 ? 0 : bcdiv($merchant['purchase_amount'], $purchaseTarget, 2);
$purchaseFinishRate = bcmul(min($purchaseFinishRate, 1), 100, 0);
$springSubsidyRate = $purchaseTarget <= 0 ? 0 : bcdiv($merchant['purchase_amount'], $purchaseTarget, 2);
$officialPurchaseFinishRate = $officialPurchaseTarget <= 0 ? 0 : bcdiv($merchant['official_purchase_amount'], $officialPurchaseTarget, 2);
$officialPurchaseFinishRate = bcmul(min($officialPurchaseFinishRate, 1), 100, 0);
$springSubsidyRate = $saleTarget <= 0 ? 0 : bcdiv(bcadd($merchant['purchase_amount'], $merchant['official_purchase_amount'], 2), $saleTarget, 2);
$springSubsidyRate = bcmul(min($springSubsidyRate, 1), 100, 0);
if ($type == 1) {
$status = $saleFinishRate >= 100 && $purchaseFinishRate >= 100 && $merchant['balance'] == 0;
} else {
$status = $saleFinishRate >= 100 && $purchaseFinishRate >= 100;
}
return app('json')->success([
'subsidy_amount' => empty($subsidyAmount) ? '0.00' : $subsidyAmount,
'subsidy_status' => $saleFinishRate >= 100 && $purchaseFinishRate >= 100,
'subsidy_status' => $status && $userConsumptionStatus,
'sale_target' => $saleTarget,
'sale_amount' => $merchant['sale_amount'],
'sale_finish_rate' => $saleFinishRate,
'purchase_target' => $purchaseTarget,
'purchase_amount' => $merchant['purchase_amount'],
'purchase_finish_rate' => $purchaseFinishRate,
'official_purchase_target' => $officialPurchaseTarget,
'official_purchase_amount' => $merchant['official_purchase_amount'],
'official_purchase_finish_rate' => $officialPurchaseFinishRate,
'spring_subsidy' => $saleTarget,
'spring_subsidy_amount' => $merchant['purchase_amount'],
'spring_subsidy_rate' => $springSubsidyRate,
@ -170,7 +186,7 @@ class Store extends BaseController
$couponId = StoreConsumption::where('type', $couponType)->value('coupon_id');
$totalAmount = StoreConsumptionUser::where('uid', $userId)
->whereIn('coupon_id', $couponId)
->where('status', StoreConsumptionUser::STATUS_UNUSED)
->whereIn('status', [StoreConsumptionUser::STATUS_UNUSED, StoreConsumptionUser::STATUS_REPEAL])
->sum('balance');
$query = UserBill::field('link_id,create_time,number coupon_price,mark,extra,status')
->where('uid', $userId)
@ -178,13 +194,14 @@ class Store extends BaseController
->where('status', 1)
->whereRaw("extra->'$.coupon_id'=" . $couponId);
$count = $query->count();
$record = $query->page($page)->limit($limit)->select()->toArray();
$record = $query->page($page)->limit($limit)->order('bill', 'desc')->select()->toArray();
foreach ($record as &$item) {
$item['order_amount'] = 0;
if (mb_strpos($item['mark'], '订单金额:') !== false) {
$item['order_amount'] = mb_substr($item['mark'], mb_strpos($item['mark'], '订单金额:') + 5);
}
$item['extra'] = json_decode($item['extra'], true);
$item['extra']['status_cn'] = Enum::CONSUMPTION_STATUS_MAP[$item['extra']['status']];
unset($item['mark']);
}
$result = ['total_amount' => $totalAmount, 'count' => $count, 'record' => $record];