From 6c651cd8a22f6c6fb8f005b12d4a6bad16faf47c Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Sat, 16 Mar 2024 16:24:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=A1=A5=E8=B4=B4=E5=8F=91?= =?UTF-8?q?=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/Enum.php | 6 +++++ app/controller/api/server/Store.php | 39 +++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/app/common/Enum.php b/app/common/Enum.php index 2b4496f2..dbd0bca4 100644 --- a/app/common/Enum.php +++ b/app/common/Enum.php @@ -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 => '已到账', + ]; } diff --git a/app/controller/api/server/Store.php b/app/controller/api/server/Store.php index c5e81eac..ffcba3d1 100644 --- a/app/controller/api/server/Store.php +++ b/app/controller/api/server/Store.php @@ -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];