调整补贴发放
This commit is contained in:
parent
29060c709a
commit
6c651cd8a2
@ -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 => '已到账',
|
||||
];
|
||||
|
||||
}
|
||||
|
@ -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];
|
||||
|
Loading…
x
Reference in New Issue
Block a user