Browse Source

订单状态

lizhen_gitee 2 months ago
parent
commit
e474c14e68
2 changed files with 52 additions and 34 deletions
  1. 2 2
      addons/unishop/controller/Order.php
  2. 50 32
      addons/unishop/model/Order.php

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

@@ -213,7 +213,7 @@ class Order extends Base
     {
         $data = input();
 
-        $pay_type = input('pay_type','alipay');
+        $pay_type = input('pay_type','wechat');
         if(!in_array($pay_type,['wechat','alipay','wallet'])){
             $this->error();
         }
@@ -313,7 +313,7 @@ class Order extends Base
      */
     public function getOrders()
     {
-        // 0=全部,1=待付款,2=待发货,3=待收货,4=待评价,5=售后
+        // 0=全部,1=待付款,3=待核销,4=已完成
         $type = input('type', 0);
         $page = input('page', 1);
         $pagesize = input('pagesize', 10);

+ 50 - 32
addons/unishop/model/Order.php

@@ -69,12 +69,13 @@ class Order extends Model
     // 订单类型
     const TYPE_ALL = 0; // 全部
     const TYPE_PAY = 1; // 待付款
-    const TYPE_DELIVES = 2; // 待发货
-    const TYPE_RECEIVE = 3; // 待发货
-    const TYPE_COMMENT = 4; // 待评价
-    const TYPE_REFUND = 5; // 售后
-    const TYPE_REFUSE = 6; // 拒绝退款
-    const TYPE_OFF = 9; // 订单关闭
+//    const TYPE_DELIVES = 2; // 待发货
+    const TYPE_RECEIVE = 3; // 待核销
+    const TYPE_COMMENT = 4; // 已完成
+//    const TYPE_REFUND = 5; // 售后
+//    const TYPE_REFUSE = 6; // 拒绝退款
+//    const TYPE_OFF = 9; // 订单关闭
+    const TYPE_CANCEL = 20; //订单取消(已支付+未支付)
 
 
     /**
@@ -157,6 +158,7 @@ class Order extends Model
 
     /**
      * 0=全部,1=待付款,2=待发货,3=待收货,4=待评价,5=售后
+     * * 0=全部,1=待付款,3=待核销,4=已完成
      * 获取当前的订单状态
      */
     public function getStateAttr($value, $data)
@@ -165,25 +167,25 @@ class Order extends Model
             case $data['have_paid'] == self::PAID_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_PAY;
                 break;
-            case $data['have_delivered'] == self::DELIVERED_NO && $data['status'] == self::STATUS_NORMAL:
+            /*case $data['have_delivered'] == self::DELIVERED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_DELIVES;
-                break;
-            case $data['have_received'] == self::RECEIVED_NO && $data['status'] == self::STATUS_NORMAL:
+                break;*/
+            case $data['have_paid'] != self::PAID_NO && $data['have_received'] == self::RECEIVED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_RECEIVE;
                 break;
-            case $data['have_commented'] == self::COMMENTED_NO && $data['status'] == self::STATUS_NORMAL:
+            case $data['have_paid'] != self::PAID_NO && $data['have_received'] != self::RECEIVED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_COMMENT;
                 break;
-            case $data['status'] == self::STATUS_REFUND && $data['refund_status'] == self::REFUND_STATUS_AGREE: // TODO 申请退款并且已通过同意,则订单为关闭状态
             case $data['status'] == self::STATUS_CANCEL:
-                $state = self::TYPE_OFF;
+                $state = self::TYPE_CANCEL;
                 break;
-            case $data['status'] == self::STATUS_REFUND && $data['refund_status'] == self::REFUND_STATUS_REFUSE:
+            //case $data['status'] == self::STATUS_REFUND && $data['refund_status'] == self::REFUND_STATUS_AGREE: // TODO 申请退款并且已通过同意,则订单为关闭状态
+            /* case $data['status'] == self::STATUS_REFUND && $data['refund_status'] == self::REFUND_STATUS_REFUSE:
                 $state = self::TYPE_REFUSE;
                 break;
             case $data['status'] == self::STATUS_REFUND:
                 $state = self::TYPE_REFUND;
-                break;
+                break;*/
             default:
                 $state = self::TYPE_ALL;
                 break;
@@ -191,6 +193,21 @@ class Order extends Model
         return $state;
     }
 
+    //获取当前的订单状态,中文
+    public function getStatetextAttr($state,$refund_status){
+        $data = [
+            1 => '待付款',
+            3 => '待核销',
+            4 => '已完成',
+            20 => '已取消',
+        ];
+        if($state == 20 && $refund_status == 3){
+            return '已退款';
+        }
+        return isset($data[$state]) ? $data[$state] : $state;
+    }
+
+
     /**
      * 退款状态
      */
@@ -317,44 +334,44 @@ class Order extends Model
     /**
      * 获取我的订单
      * @param int $userId 用户id
-     * @param int $state 0=全部,1=待付款,2=待发货,3=待收货,4=待评价,5=售后
+     * @param int $state 0=全部,1=待付款,3=待核销,4=已完成
      */
     public function getOrdersByType($userId, $state = 0, $page = 1, $pageSize = 10)
     {
         $condition['user_id'] = ['=', $userId];
         switch ($state) {
-            case self::TYPE_PAY:
+            case self::TYPE_PAY:                                                 //1=待付款
                 $condition['have_paid'] = ['=', self::PAID_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'createtime';
                 break;
-            case self::TYPE_DELIVES:
+            /*case self::TYPE_DELIVES:
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['=', self::DELIVERED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'have_paid';
-                break;
-            case self::TYPE_RECEIVE:
+                break;*/
+            case self::TYPE_RECEIVE:                                                //3=待核销
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
                 $condition['have_received'] = ['=', self::RECEIVED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'have_delivered';
                 break;
-            case self::TYPE_COMMENT:
+            case self::TYPE_COMMENT:                                                //4=已完成
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
                 $condition['have_received'] = ['>', self::RECEIVED_NO];
-                $condition['have_commented'] = ['=', self::COMMENTED_NO];
+//                $condition['have_commented'] = ['=', self::COMMENTED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'have_received';
                 break;
-            case self::TYPE_REFUND:
+            /*case self::TYPE_REFUND:
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['status'] = ['=', self::STATUS_REFUND];
                 $condition['refund_status'] = ['<>', self::REFUND_STATUS_AGREE];
                 $orderBy = 'createtime';
-                break;
+                break;*/
             default: //全部
                 $orderBy = 'createtime';
                 break;
@@ -365,15 +382,15 @@ class Order extends Model
                 'products' => function($query) {
                     $query->field('id,title,image,number,price,spec,order_id,product_id');
                 },
-                'extend' => function($query) {
+                /*'extend' => function($query) {
                     $query->field('order_id,express_number,express_company');
-                },
+                },*/
                 'evaluate' => function($query) {
                     $query->field('id,order_id,product_id');
                 },
-                'refundProducts' => function($query) {
+                /*'refundProducts' => function($query) {
                     $query->field('id,order_id,order_product_id');
-                }
+                }*/
             ])
             ->where($condition)
             ->order([$orderBy => 'desc'])
@@ -381,13 +398,14 @@ class Order extends Model
             ->select();
 
         foreach ($result as &$item) {
-            $item->append(['order_id','state', 'refund_status_text']);
+            $item->append(['order_id','state']);
+            $item['state_text'] = $this->getStatetextAttr($item['state'],$item['refund_status']);//状态中文
             $item = $item->toArray();
 
             $evaluate = array_column($item['evaluate'], 'product_id');
-            $refundProducts = array_column($item['refund_products'], 'order_product_id');
+//            $refundProducts = array_column($item['refund_products'], 'order_product_id');
             unset($item['evaluate']);
-            unset($item['refund_products']);
+//            unset($item['refund_products']);
 
             foreach ($item['products'] as &$product) {
                 $product['image'] = Config::getImagesFullUrl($product['image']);
@@ -399,11 +417,11 @@ class Order extends Model
                 }
 
                 // 是否退货
-                if ($item['refund_status'] == self::REFUND_STATUS_AGREE && in_array($product['order_product_id'], $refundProducts)) {
+                /*if ($item['refund_status'] == self::REFUND_STATUS_AGREE && in_array($product['order_product_id'], $refundProducts)) {
                     $product['refund'] = true;
                 } else {
                     $product['refund'] = false;
-                }
+                }*/
             }
 
         }