xieruidong 2 gadi atpakaļ
vecāks
revīzija
77866c41f1

+ 8 - 0
application/api/controller/mall/GoodsCart.php

@@ -6,6 +6,7 @@ use app\common\controller\Api;
 use app\common\model\Coupon;
 use app\common\model\GoodsSku;
 use app\common\service\CouponService;
+use app\common\service\InstallService;
 use think\Db;
 
 /**
@@ -99,6 +100,7 @@ class GoodsCart extends Api
      * @ApiParams (name=coupon_id,description=优惠券id)
      * @ApiReturnParams (name=amount_total,description=总金额)
      * @ApiReturnParams (name=amount_coupon,description=优惠券优惠金额)
+     * @ApiReturnParams (name=amount_install,description=安装费)
      * @ApiReturnParams (name=num,description=购买件数)
      * @ApiReturnParams (name=num_install,description=安装件数)
      * @ApiReturnParams (name=goods,description=商品列表)
@@ -111,6 +113,7 @@ class GoodsCart extends Api
         $info=[
             'amount_total'=>0,
             'amount_coupon'=>0,
+            'amount_install'=>0,
             'num'=>0,
             'num_install'=>0,
             'goods'=>[]
@@ -127,6 +130,11 @@ class GoodsCart extends Api
             $info['amount_total']=bcadd($info['amount_total'],$amount);
         }
 
+        #安装费
+        $info['amount_install']=InstallService::getFee(array_column($info['goods'],null,'goods_sku_id'),'num_install');
+        $info['amount_total']=bcadd($info['amount_total'],$info['amount_install']);
+
+        #优惠券
         $couponAmount=0;
         if(!empty($data['coupon_use'])){
             $use=false;

+ 45 - 0
application/common/model/GoodsInstall.php

@@ -15,4 +15,49 @@ class GoodsInstall extends Model
     public function link(){
         return $this->hasMany(GoodsInstallLink::class);
     }
+
+    public function getFee($num){
+        foreach ($this['fee'] as $fee){
+            if($num>=$fee['num_min'] && $num<$fee['num_max']){
+                return $fee['amount'];
+            }
+       }
+        return 0;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    public static function init()
+    {
+        self::afterDelete(function (self $goodsInstall){
+            $goodsInstall->link()->delete();
+        });
+    }
 }

+ 16 - 1
application/common/model/GoodsInstallLink.php

@@ -5,7 +5,9 @@ namespace app\common\model;
 use think\db\Query;
 use think\Model;
 
-
+/**
+ * @property GoodsInstall install
+ */
 class GoodsInstallLink extends Model
 {
     public function scopeSku(Query $query,$sku_id,$goods_id=null){
@@ -14,4 +16,17 @@ class GoodsInstallLink extends Model
             $query->where('goods_id',$goods_id);
         }
     }
+    public function install(){
+        return $this->belongsTo(GoodsInstall::class);
+    }
+
+    public static function getFee($sku_id,$num){
+        $installLink=self::where('goods_sku_id',$sku_id)->find();
+        $fee=0;
+        if($installLink){
+            $install=$installLink->install;
+            $fee=$install->getFee($num);
+        }
+        return $fee;
+    }
 }

+ 17 - 0
application/common/service/InstallService.php

@@ -0,0 +1,17 @@
+<?php
+namespace app\common\service;
+
+use app\common\model\GoodsInstallLink;
+
+class InstallService{
+    /**
+     * sku_id=>[num=>1,]
+     */
+   public static function getFee($goods,$numKey='num'){
+       $fee=0;
+       foreach ($goods as $sku_id=>$info){
+           $fee=bcadd($fee,GoodsInstallLink::getFee($sku_id,$info[$numKey]));
+       }
+       return $fee;
+   }
+}