ソースを参照

订单支付,回调,订单列表状态组合

lizhen_gitee 7 ヶ月 前
コミット
99c07b3929

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

@@ -306,7 +306,7 @@ class Order extends Base
      */
     public function getOrders()
     {
-        // 0=全部,1=待付款,2=待发货,3=待收货,4=待评价,5=售后
+        // 0=全部,1=待付款,3=待核销,4=已完成,20=已取消
         $type = input('type', 0);
         $page = input('page', 1);
         $pagesize = input('pagesize', 10);
@@ -664,6 +664,7 @@ class Order extends Base
 
 //                unset($order['evaluate']);
                 unset($order['extend']);
+                unset($order['pay_out_trade_no']);
 
                 //预约日期
                 $week_data = [

+ 35 - 24
addons/unishop/model/Order.php

@@ -70,11 +70,12 @@ class Order extends Model
     const TYPE_ALL = 0; // 全部
     const TYPE_PAY = 1; // 待付款
     const TYPE_DELIVES = 2; // 待发货
-    const TYPE_RECEIVE = 3; // 待发货
+    const TYPE_RECEIVE = 3; // 待核销
     const TYPE_COMMENT = 4; // 待评价
     const TYPE_REFUND = 5; // 售后
     const TYPE_REFUSE = 6; // 拒绝退款
     const TYPE_OFF = 9; // 订单关闭
+    const TYPE_CANCEL = 20; //订单取消(已支付+未支付)
 
 
     /**
@@ -165,16 +166,16 @@ 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;
+                break;*/
             case $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:
                 $state = self::TYPE_COMMENT;
                 break;
-            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_AGREE: // TODO 申请退款并且已通过同意,则订单为关闭状态
             case $data['status'] == self::STATUS_CANCEL:
                 $state = self::TYPE_OFF;
                 break;
@@ -183,6 +184,9 @@ class Order extends Model
                 break;
             case $data['status'] == self::STATUS_REFUND:
                 $state = self::TYPE_REFUND;
+                break;*/
+            case $data['status'] == self::STATUS_CANCEL:
+                $state = self::TYPE_CANCEL;
                 break;
             default:
                 $state = self::TYPE_ALL;
@@ -319,7 +323,7 @@ class Order extends Model
     /**
      * 获取我的订单
      * @param int $userId 用户id
-     * @param int $state 0=全部,1=待付款,2=待发货,3=待收货,4=待评价,5=售后
+     * @param int $state 0=全部,1=待付款,3=待核销,4=已完成,20=已取消
      */
     public function getOrdersByType($userId, $state = 0, $page = 1, $pageSize = 10)
     {
@@ -330,12 +334,12 @@ class Order extends Model
                 $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;
+                break;*/
             case self::TYPE_RECEIVE:
                 $condition['have_paid'] = ['>', self::PAID_NO];
                 $condition['have_delivered'] = ['>', self::DELIVERED_NO];
@@ -347,15 +351,20 @@ class Order extends Model
                 $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;*/
+            case self::TYPE_CANCEL:
+//                $condition['have_paid'] = ['>', self::PAID_NO];
+                $condition['status'] = ['=', self::STATUS_CANCEL];
+                $orderBy = 'createtime';
                 break;
             default: //全部
                 $orderBy = 'createtime';
@@ -367,15 +376,15 @@ class Order extends Model
                 'products' => function($query) {
                     $query->field('id,title,image,number,price,spec,order_id,product_id');
                 },
-                'extend' => function($query) {
-                    $query->field('order_id,express_number,express_company');
-                },
-                'evaluate' => function($query) {
-                    $query->field('id,order_id,product_id');
-                },
-                'refundProducts' => function($query) {
-                    $query->field('id,order_id,order_product_id');
-                }
+                /* 'extend' => function($query) {
+                     $query->field('order_id,express_number,express_company');
+                 },
+                 'evaluate' => function($query) {
+                     $query->field('id,order_id,product_id');
+                 },
+                 'refundProducts' => function($query) {
+                     $query->field('id,order_id,order_product_id');
+                 }*/
             ])
             ->where($condition)
             ->order([$orderBy => 'desc'])
@@ -386,26 +395,28 @@ class Order extends Model
             $item->append(['order_id','state', 'refund_status_text']);
             $item = $item->toArray();
 
-            $evaluate = array_column($item['evaluate'], 'product_id');
+            unset($item['pay_out_trade_no']);
+
+            /*$evaluate = array_column($item['evaluate'], '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']);
                 // 是否已评论
-                if (in_array($product['id'], $evaluate)) {
+                /*if (in_array($product['id'], $evaluate)) {
                     $product['evaluate'] = true;
                 } else {
                     $product['evaluate'] = false;
-                }
+                }*/
 
                 // 是否退货
-                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;
-                }
+                }*/
             }
 
         }

+ 17 - 31
application/api/controller/Unishop.php

@@ -22,8 +22,10 @@ class Unishop extends Api
         if(!$apilimit){
             $this->error('操作频繁');
         }
-        $pay_type = input('pay_type','alipay');
-        $platform = input('platform','app');
+//        $pay_type = input('pay_type','wechat');
+        $pay_type = 'wechat';
+//        $platform = input('platform','mini');
+        $platform = 'mini';
         $orderid = input('order_id',0);
 
         if(empty($orderid)){
@@ -47,34 +49,7 @@ class Unishop extends Api
             $this->error('请刷新重试');
         }
 
-        //余额支付
-        if($pay_type == 'wallet'){
-            Db::startTrans();
-
-            //扣钱
-            $rs_wallet = model('wallet')->lockChangeAccountRemain($this->auth->id,'money',-$orderinfo['total_price'],31,'商城购物','unishop_order',$orderid);
-            if($rs_wallet['status'] == false){
-                Db::rollback();
-                $this->error($rs_wallet['msg']);
-            }
-
-            //订单改为已支付
-            $order_update['pay_type'] = 2;
-            $order_update['have_paid'] = time();
-            $update_rs = Db::name('unishop_order')->where($map)->update($order_update);
-            if(!$update_rs){
-                Db::rollback();
-                $this->error('支付失败,重试一下吧');
-            }
-
-            Db::commit();
-
-            $result = [
-                'pay_type' => $pay_type,
-                'pay_params' => '',
-            ];
-            $this->success(1,$result);
-        }
+
 
         //创建订单
         $data = [];
@@ -119,11 +94,19 @@ class Unishop extends Api
         $this->success(1,$result);
     }
 
+    public function test(){
+        $out_trade_no = input('out_trade_no','');
+        $paytype = 'wechat';
+        $rs = $this->order_notify_do($out_trade_no,$paytype);
+        echo '完成';
+    }
+
     //异步回调对外方法
     public function order_notify_base(){
 
         //验签
-        $paytype = input('paytype','alipay');
+//        $paytype = input('paytype','wechat');
+        $paytype = 'wechat';
         $notify_file = $this->notify_log_start($paytype);
         $pay = Service::checkNotify($paytype);
         if (!$pay) {
@@ -192,6 +175,9 @@ class Unishop extends Api
             'have_paid'=>$nowtime,
             'pay_type' =>$paytype_enum[$paytype],
             'pay_out_trade_no' =>$out_trade_no,
+
+            //游艇项目自动发货
+            'have_delivered' => $nowtime
         ];
         $rs_order = Db::name('unishop_order')->where('id',$orderInfo['table_id'])->update($update);
         if($rs_order === false){