Browse Source

增加一个订单状态,待确认收货

lizhen_gitee 2 months ago
parent
commit
2e903fbf3e

+ 13 - 8
addons/unishop/controller/Order.php

@@ -313,7 +313,7 @@ class Order extends Base
      */
     public function getOrders()
     {
-        // 0=全部,1=待付款,3=待核销,4=已完成,40=待评价
+        // 0=全部,1=待付款,3=待核销,4=待收货,5=已完成,40=待评价
         $type = input('type', 0);
         $page = input('page', 1);
         $pagesize = input('pagesize', 10);
@@ -331,7 +331,7 @@ class Order extends Base
 
     //订单各个状态的数量
     public function getOrders_num(){
-        // 0=全部,1=待付款,3=待核销,4=已完成,40=待评价
+        // 0=全部,1=待付款,3=待核销,4=待收货,5=已完成,40=待评价
         $status = [
             [
                 'status' => 1,
@@ -345,6 +345,11 @@ class Order extends Base
             ],
             [
                 'status' => 4,
+                'status_text' => '待收货',
+                'number' => 0,
+            ],
+            [
+                'status' => 5,
                 'status_text' => '已完成',
                 'number' => 0,
             ],
@@ -400,7 +405,7 @@ class Order extends Base
         if ($order['have_paid'] != \addons\unishop\model\Order::PAID_NO) {
             $this->error('此订单已支付,无法取消');
         }
-        if ($order['have_received'] != \addons\unishop\model\Order::RECEIVED_NO) {
+        if ($order['have_hexiao'] != \addons\unishop\model\Order::HEXIAO_NO) {
             $this->error('此订单已核销,无法取消');
         }
 
@@ -443,12 +448,12 @@ class Order extends Base
         if ($order['have_paid'] == \addons\unishop\model\Order::PAID_NO) {
             $this->error('未支付订单,直接取消即可');
         }
-        if ($order['have_received'] != \addons\unishop\model\Order::RECEIVED_NO) {
+        if ($order['have_hexiao'] != \addons\unishop\model\Order::HEXIAO_NO) {
             $this->error('此订单已核销,无法退订');
         }
 
         Db::startTrans();
-        if ($order['status'] == \addons\unishop\model\Order::STATUS_NORMAL && $order['have_received'] == \addons\unishop\model\Order::RECEIVED_NO) {
+        if ($order['status'] == \addons\unishop\model\Order::STATUS_NORMAL && $order['have_hexiao'] == \addons\unishop\model\Order::HEXIAO_NO) {
 
             $refund_amount = $order['total_price'];
             $refund_status = 3; //申请售后状态 0=无,1=申请中,2=通过(让用户发货),3=通过,4=拒绝
@@ -691,8 +696,8 @@ class Order extends Base
             $this->error(__('Order not exist'));
         }
 
-        if ($order->have_delivered == 0) {
-            $this->error('未发货,不能确认收货');
+        if ($order->have_hexiao == 0) {
+            $this->error('未核销,不能确认收货');
         }
 
         $order->have_received = time();
@@ -736,7 +741,7 @@ class Order extends Base
             $this->error(__('Order not exist'));
         }
         if ($order->have_received == $orderModel::RECEIVED_NO) {
-            $this->error(__('未核销,不可评价'));
+            $this->error(__('未确认收货,不可评价'));
         }
         $images_arr = explode(',',$images);
         if(count($images_arr) > 5){

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

@@ -62,6 +62,9 @@ class Order extends Model
     // 是否评论
     const COMMENTED_NO = 0; // 否
 
+    // 是否核销
+    const HEXIAO_NO = 0; // 否
+
     // 是否收货
     const RECEIVED_NO = 0; // 否
 
@@ -70,8 +73,9 @@ class Order extends Model
     const TYPE_ALL = 0; // 全部
     const TYPE_PAY = 1; // 待付款
 //    const TYPE_DELIVES = 2; // 待发货
-    const TYPE_RECEIVE = 3; // 待核销
-    const TYPE_FINISH = 4; // 已完成
+    const TYPE_HEXIAO = 3; // 待核销
+    const TYPE_RECEIVE = 4; // 已核销,待收货
+    const TYPE_FINISH = 5; // 已完成
     const TYPE_NOCOMMENT = 40; // 待评价
     const TYPE_COMMENTED = 41; // 已评价
 //    const TYPE_REFUND = 5; // 售后
@@ -109,6 +113,15 @@ class Order extends Model
     }
 
     /**
+     * 格式化时间 hexiaotime
+     * @return false|int|string
+     */
+    public function getHexiaotimeAttr($value, $data)
+    {
+        return $data['have_hexiao'] > 0 ? date('Y-m-d H:i:s', $data['have_hexiao']) : '';
+    }
+
+    /**
      * 格式化时间 receivedtime
      * @return false|int|string
      */
@@ -171,13 +184,16 @@ class Order extends Model
             /*case $data['have_delivered'] == self::DELIVERED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_DELIVES;
                 break;*/
-            case $data['have_paid'] != self::PAID_NO && $data['have_received'] == self::RECEIVED_NO && $data['status'] == self::STATUS_NORMAL:
+            case $data['have_paid'] != self::PAID_NO && $data['have_hexiao'] == self::HEXIAO_NO && $data['status'] == self::STATUS_NORMAL:
+                $state = self::TYPE_HEXIAO;
+                break;
+            case $data['have_paid'] != self::PAID_NO && $data['have_hexiao'] != self::HEXIAO_NO  && $data['have_received'] == self::RECEIVED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_RECEIVE;
                 break;
-            case $data['have_paid'] != self::PAID_NO && $data['have_received'] != self::RECEIVED_NO && $data['have_commented'] == self::COMMENTED_NO && $data['status'] == self::STATUS_NORMAL:
+            case $data['have_paid'] != self::PAID_NO && $data['have_hexiao'] != self::HEXIAO_NO  && $data['have_received'] != self::RECEIVED_NO && $data['have_commented'] == self::COMMENTED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_NOCOMMENT;
                 break;
-            case $data['have_paid'] != self::PAID_NO && $data['have_received'] != self::RECEIVED_NO && $data['have_commented'] != self::COMMENTED_NO && $data['status'] == self::STATUS_NORMAL:
+            case $data['have_paid'] != self::PAID_NO && $data['have_hexiao'] != self::HEXIAO_NO  && $data['have_received'] != self::RECEIVED_NO && $data['have_commented'] != self::COMMENTED_NO && $data['status'] == self::STATUS_NORMAL:
                 $state = self::TYPE_COMMENTED;
                 break;
             case $data['status'] == self::STATUS_CANCEL:
@@ -202,6 +218,7 @@ class Order extends Model
         $data = [
             1 => '待付款',
             3 => '待核销',
+            4 => '待收货',
             41 => '已评价',
             40 => '待评价',
             20 => '已取消',
@@ -339,7 +356,7 @@ class Order extends Model
     /**
      * 获取我的订单
      * @param int $userId 用户id
-     * @param int $state 0=全部,1=待付款,3=待核销,4=已完成,40=待评价
+     * @param int $state 0=全部,1=待付款,3=待核销,4=已核销,待收货,5=已完成,40=待评价
      */
     public function getOrdersByType($userId, $state = 0, $page = 1, $pageSize = 10)
     {
@@ -356,16 +373,26 @@ class Order extends Model
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'have_paid';
                 break;*/
-            case self::TYPE_RECEIVE:                                                //3=待核销
+            case self::TYPE_HEXIAO:                                                //3=待核销
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
-                $condition['have_received'] = ['=', self::RECEIVED_NO];
+                $condition['have_hexiao'] = ['=', self::HEXIAO_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'have_delivered';
                 break;
-            case self::TYPE_FINISH:                                                //4=已完成
+            case self::TYPE_RECEIVE:                                                //4=已核销,待收货
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
+                $condition['have_hexiao'] = ['>', self::HEXIAO_NO];
+                $condition['have_received'] = ['=', self::RECEIVED_NO];
+//                $condition['have_commented'] = ['=', self::COMMENTED_NO];
+                $condition['status'] = ['=', self::STATUS_NORMAL];
+                $orderBy = 'have_hexiao';
+                break;
+            case self::TYPE_FINISH:                                                //5=已完成
+                $condition['have_paid'] = ['>', self::PAID_NO];
+                $condition['have_delivered'] = ['>', self::DELIVERED_NO];
+                $condition['have_hexiao'] = ['>', self::HEXIAO_NO];
                 $condition['have_received'] = ['>', self::RECEIVED_NO];
 //                $condition['have_commented'] = ['=', self::COMMENTED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
@@ -374,6 +401,7 @@ class Order extends Model
             case self::TYPE_NOCOMMENT:                                                //40=待评价
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
+                $condition['have_hexiao'] = ['>', self::HEXIAO_NO];
                 $condition['have_received'] = ['>', self::RECEIVED_NO];
                 $condition['have_commented'] = ['=', self::COMMENTED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
@@ -452,13 +480,23 @@ class Order extends Model
             case self::TYPE_RECEIVE:                                                //3=待核销
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
-                $condition['have_received'] = ['=', self::RECEIVED_NO];
+                $condition['have_hexiao'] = ['=', self::HEXIAO_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
                 $orderBy = 'have_delivered';
                 break;
-            case self::TYPE_FINISH:                                                //4=已完成
+            case self::TYPE_HEXIAO:                                                //4=已核销,待收货
+                $condition['have_paid'] = ['>', self::PAID_NO];
+                $condition['have_delivered'] = ['>', self::DELIVERED_NO];
+                $condition['have_hexiao'] = ['>', self::HEXIAO_NO];
+                $condition['have_received'] = ['=', self::RECEIVED_NO];
+//                $condition['have_commented'] = ['=', self::COMMENTED_NO];
+                $condition['status'] = ['=', self::STATUS_NORMAL];
+                $orderBy = 'have_hexiao';
+                break;
+            case self::TYPE_FINISH:                                                //5=已完成
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
+                $condition['have_hexiao'] = ['>', self::HEXIAO_NO];
                 $condition['have_received'] = ['>', self::RECEIVED_NO];
 //                $condition['have_commented'] = ['=', self::COMMENTED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];
@@ -467,6 +505,7 @@ class Order extends Model
             case self::TYPE_NOCOMMENT:                                                //40=待评价
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
+                $condition['have_hexiao'] = ['>', self::HEXIAO_NO];
                 $condition['have_received'] = ['>', self::RECEIVED_NO];
                 $condition['have_commented'] = ['=', self::COMMENTED_NO];
                 $condition['status'] = ['=', self::STATUS_NORMAL];

+ 9 - 9
application/api/controller/Hexiao.php

@@ -55,7 +55,7 @@ class Hexiao extends Api
         if($order_info['have_paid'] == 0){
             $this->error('未支付的订单');
         }
-        if($order_info['have_received'] != 0){
+        if($order_info['have_hexiao'] != 0){
             $this->error('该订单已核销');
         }
 
@@ -114,14 +114,14 @@ class Hexiao extends Api
             Db::rollback();
             $this->error('未支付的订单');
         }
-        if($order['have_received'] != 0){
+        if($order['have_hexiao'] != 0){
             Db::rollback();
             $this->error('该订单已核销');
         }
 
 
         $update = [
-            'have_received' => time(),
+            'have_hexiao' => time(),
             'hexiao_uid'    => $this->auth->id,
         ];
         $order_rs = Db::name('unishop_order')->where('id',$order['id'])->update($update);
@@ -162,10 +162,10 @@ class Hexiao extends Api
             'status'     => 1,
             'have_paid'         => ['gt',0],
             'have_delivered'    => ['gt',0],
-            'have_received'     => ['gt',0],
+            'have_hexiao'     => ['gt',0],
         ];
-        $count = Db::name('unishop_order')->where($condition)->where('have_received','BETWEEN',[$starttime,$endtime])->count();
-        $total_price = Db::name('unishop_order')->where($condition)->where('have_received','BETWEEN',[$starttime,$endtime])->sum('total_price');
+        $count = Db::name('unishop_order')->where($condition)->where('have_hexiao','BETWEEN',[$starttime,$endtime])->count();
+        $total_price = Db::name('unishop_order')->where($condition)->where('have_hexiao','BETWEEN',[$starttime,$endtime])->sum('total_price');
 
         $rs = [
             'count' => $count,
@@ -189,7 +189,7 @@ class Hexiao extends Api
             'status'     => 1,
             'have_paid'         => ['gt',0],
             'have_delivered'    => ['gt',0],
-            'have_received'     => ['gt',0],
+            'have_hexiao'     => ['gt',0],
         ];
         $result = $orderModel
             ->with([
@@ -199,8 +199,8 @@ class Hexiao extends Api
 
             ])
             ->where($condition)
-            ->where('have_received','BETWEEN',[$starttime,$endtime])
-            ->order(['have_received' => 'desc'])
+            ->where('have_hexiao','BETWEEN',[$starttime,$endtime])
+            ->order(['have_hexiao' => 'desc'])
             ->autopage()
             ->select();