Bladeren bron

善豆支付

lizhen_gitee 1 maand geleden
bovenliggende
commit
22f0bc1b92
2 gewijzigde bestanden met toevoegingen van 31 en 4 verwijderingen
  1. 29 4
      addons/shopro/service/order/OrderCreate.php
  2. 2 0
      application/extra/site.php

+ 29 - 4
addons/shopro/service/order/OrderCreate.php

@@ -74,6 +74,11 @@ class OrderCreate
     protected $money = 0;
 
     /**
+     * 善豆抵扣(余额和 微信|支付宝,混合支付时使用了)
+     */
+    protected $bean = 0;
+
+    /**
      * 发票配置
      */
     protected $invoiceConfig = [];
@@ -157,6 +162,7 @@ class OrderCreate
         $this->remark = $params['remark'] ?? '';
 
         $this->money = (isset($params['money']) && $params['money'] > 0) ? $params['money'] : 0;
+        $this->bean  = (isset($params['bean']) && $params['bean'] > 0) ? $params['bean'] : 0;
 
         // 获取商品信息
         $this->goodsListInit();
@@ -295,6 +301,8 @@ class OrderCreate
         foreach ($this->goodsList as $key => &$buyInfo) {
             $goods = $buyInfo['goods'];
 
+            //dd(json_decode(json_encode($buyInfo),true));
+
             // 当前商品原始总价
             $current_goods_original_amount = bcmul($goods->original_price, $buyInfo['goods_num'], 2);
             $this->orderData['goods_original_amount'] = bcadd($this->orderData['goods_original_amount'], $current_goods_original_amount, 2);
@@ -303,8 +311,13 @@ class OrderCreate
             $current_goods_amount = bcmul($buyInfo['current_sku_price']->price, $buyInfo['goods_num'], 2);
             $this->orderData['goods_amount'] = bcadd($this->orderData['goods_amount'], $current_goods_amount, 2);
 
-            //当前商品的善豆抵扣价
-            $bean_rate = $goods['bean_rate'] ?: 0;
+            //当前商品的善豆抵扣价,商品没有就拿分类
+            $bean_rate = floatval($goods->bean_rate) > 0 ? $goods->bean_rate : 0;
+            if($bean_rate == 0){
+                $bean_rate = Db::name('shopro_category')->where('id',$goods->category_ids)->value('bean_rate');
+                $bean_rate = floatval($bean_rate) > 0 ? $bean_rate : 0;
+            }
+
             $current_goods_bean_amount = bcdiv(bcmul($current_goods_amount,$bean_rate,2),100,2);
             $this->orderData['goods_bean_amount'] = bcadd($this->orderData['goods_bean_amount'],$current_goods_bean_amount,2);
 
@@ -958,13 +971,24 @@ class OrderCreate
             }
         }
 
-        $temp_remain_pay_fee = bcsub($this->orderData['pay_fee'], $this->money, 2);
+        //善豆抵扣不能高于善豆余额
+        $user_bean = model('wallet')->getWalletBak($this->user->id,'bean');
+        $this->orderData['goods_bean_amount'] = $this->orderData['goods_bean_amount'] > $user_bean ? $user_bean : $this->orderData['goods_bean_amount'];
+
+        //$temp_remain_pay_fee = bcsub($this->orderData['pay_fee'], $this->money, 2);
+
+        $this->bean = $this->bean > $this->orderData['goods_bean_amount'] ? $this->orderData['goods_bean_amount'] : $this->bean;
+        $temp_remain_pay_fee = bcsub($this->orderData['pay_fee'], $this->bean, 2);
 
         $result = [
             'goods_original_amount' => $this->orderData['goods_original_amount'],
             'goods_old_amount' => $this->orderData['goods_old_amount'],
             'goods_amount' => $this->orderData['goods_amount'],
-            'goods_bean_amount' => $this->orderData['goods_bean_amount'],
+
+            'goods_bean_amount' => $this->orderData['goods_bean_amount'],  //最大可抵扣善豆
+            'user_bean_amount'  => $user_bean,                                      //用户善豆余额
+            'min_bean_amount' => config('site.shopro_min_bean_amount'),               //最小可使用善豆数量
+
             'dispatch_amount' => $this->orderData['dispatch_amount'],
             'real_dispatch_amount' => $this->orderData['real_dispatch_amount'],
             'order_amount' => $this->orderData['order_amount'],
@@ -974,6 +998,7 @@ class OrderCreate
             'coupon_discount_fee' => $this->orderData['coupon_discount_fee'],
             'promo_discount_fee' => $this->orderData['promo_discount_fee'],     // 包含包邮的运费优惠
             'money' => $this->money,                                             // 余额支付部分
+            'bean'  => $this->bean,                                             // 善豆支付部分
             "invoice_amount" => $this->orderData[$this->invoiceConfig['amount_type']]       // 可开票金额
         ];
 

+ 2 - 0
application/extra/site.php

@@ -33,6 +33,7 @@ return array (
     'explain' => '说明配置',
     'keyword' => '关键词',
     'live' => '直播配置',
+    'wallet' => '财务配置',
   ),
   'mail_type' => '1',
   'mail_smtp_host' => 'smtp.qq.com',
@@ -70,4 +71,5 @@ return array (
   'examine_bg_image' => '/uploads/20241211/811f53e60d4eb8f976373b6f4e22d107.png',
   'keyword_filter' => '毛泽东|邓小平|江泽民|胡锦涛|共产党|习大大|大法|微信',
   'live_notice' => '欢迎来到直播间直播间内严禁出现违法违规、低俗色情、吸烟酗酒、人身伤害等内容。请大家注意财产安全,理性消费,谨防网络诈骗。',
+  'min_bean_amount' => '0.01',
 );