Переглянути джерело

消耗优惠券,订单状态中文

lizhen_gitee 6 місяців тому
батько
коміт
70a90e7992

+ 9 - 2
addons/unishop/behavior/Order.php

@@ -25,6 +25,7 @@ class Order
      * 创建订单之后
      * 行为一:根据订单减少商品库存 增加"已下单未支付数量"
      * 行为二:如果选了购物车的就删除购物车的信息
+     * 行为三:如果选了优惠券的就修改掉购物券的状态
      * @param array $params 商品属性
      * @param array $extra [specNumber] => ['spec1' => 'number1','spec2' => 'number2']
      */
@@ -103,6 +104,12 @@ class Order
             Db::execute('DELETE FROM ' . $prefix . "unishop_cart WHERE id IN ($cart) AND user_id = $extra[userId]");
         }
 
+        // 行为三
+        $coupon = $extra['coupon'];
+        if (!empty($coupon)) {
+            Db::name('unishop_coupon_user')->where('id',$coupon['cu_id'])->update(['status'=>1]);
+        }
+
         // More ...
     }
 
@@ -196,7 +203,7 @@ class Order
 //            $coupon = Coupon::get($extra['coupon_id']);
 
             $coupon = Db::name('unishop_coupon_user')->alias('cu')
-                ->field(['c.id','c.title','c.least','c.value','c.starttime','c.endtime'])
+                ->field(['cu.id as cu_id','c.id','c.title','c.least','c.value','c.starttime','c.endtime'])
                 ->join('unishop_coupon c','cu.coupon_id = c.id','LEFT')
                 ->where('cu.user_id',$extra['userId'])
                 ->where('cu.status',0)
@@ -204,7 +211,7 @@ class Order
                 ->where('c.switch',Coupon::SWITCH_ON)
 //                ->where('c.starttime','<',time())
 //                ->where('c.endtime','>',time())
-                ->where('c.id',$extra['coupon_id'])
+                ->where('cu.id',$extra['coupon_id'])
                 ->find();
 
             if(!empty($coupon)){

+ 1 - 1
addons/unishop/controller/Order.php

@@ -163,7 +163,7 @@ class Order extends Base
             }
 
             $coupon = Db::name('unishop_coupon_user')->alias('cu')
-                ->field(['c.id','c.title','c.least','c.value','c.starttime','c.endtime'])
+                ->field(['cu.id','c.title','c.least','c.value','c.starttime','c.endtime'])
                 ->join('unishop_coupon c','cu.coupon_id = c.id','LEFT')
                 ->where('cu.user_id',$this->auth->id)
                 ->where('cu.status',0)

+ 14 - 0
addons/unishop/model/Order.php

@@ -158,6 +158,7 @@ class Order extends Model
 
     /**
      * 0=全部,1=待付款,2=待发货,3=待收货,4=待评价,5=售后
+     * 0=全部,1=待付款,3=待核销,4=已完成,20=已取消
      * 获取当前的订单状态
      */
     public function getStateAttr($value, $data)
@@ -195,6 +196,17 @@ class Order extends Model
         return $state;
     }
 
+    //获取当前的订单状态,中文
+    public function getStatetextAttr($state){
+        $data = [
+            1 => '待付款',
+            3 => '待核销',
+            4 => '已完成',
+            20 => '已取消',
+        ];
+        return isset($data[$state]) ? $data[$state] : $state;
+    }
+
     /**
      * 退款状态
      */
@@ -312,6 +324,7 @@ class Order extends Model
 
         $data['specNumber'] = $specNumber;
 
+        $data['coupon'] = $coupon;//消耗掉优惠券
         Hook::listen('create_order_after', $products, $data);
 
         return [
@@ -393,6 +406,7 @@ class Order extends Model
 
         foreach ($result as &$item) {
             $item->append(['order_id','state', 'refund_status_text']);
+            $item['state_text'] = $this->getStatetextAttr($item['state']);//状态中文
             $item = $item->toArray();
 
             unset($item['pay_out_trade_no']);