wupengfei 3 years ago
parent
commit
26d6e3b7c5
2 changed files with 178 additions and 16 deletions
  1. 10 3
      application/api/common.php
  2. 168 13
      application/api/controller/Order.php

+ 10 - 3
application/api/common.php

@@ -30,9 +30,16 @@ function get_goods_spec($goods_id,$goods_no)
     }
     return  $goods_spec;
 }
-
-
-
+// 获取退款理由
+function get_refund_cause()
+{
+    $list = Db::table('store_order_cause')
+        ->field('id,title')
+        ->where(['status'=>1])
+        ->order('sort desc , id asc')
+        ->select();
+    return $list;
+}
 
 
 

+ 168 - 13
application/api/controller/Order.php

@@ -485,27 +485,182 @@ class Order extends Base
      * @return name:id type:int default:-- desc:记录id
      * @return name:title type:string default:-- desc:退款原因描述
      */
-    public function getRefundCause()
-    {
-        $list = Db::table('store_order_cause')
-            ->field('id,title')
-            ->where(['status'=>1])
-            ->order('sort desc , id asc')
-            ->select();
+    public function getRefundCause(){
+        $list = get_refund_cause();
         $this->success('ok',['list'=>$list]);
     }
 
 
     /**
-     * 获取退款订单详情
-     * @param $order_id
+     * @title 提交订单退款
+     * @desc  提交订单退款
+     * @author  qc
+     * @url /api/Order/refundOrder
+     * @method POST
+     * @header name:Authorization require:1 desc:Token
+     * @param  name:order_id type:int  : default:1 desc:订单id
+     * @param  name:cause_id type:int  : default:1 desc:退款原因id
+     * @param  name:apply_type type:int  : default:1 desc:申请类型 1退款,2退货退款
+     * @param  name:apply_money type:float  : default:1 desc:申请退回金额
+     * @param  name:re_desc type:string  : default:-- desc:描述
+     * @param  name:re_images type:string  : default:-- desc:退款图片最多三张(多张用逗号隔开)
+     * @return  name:re_id type:int require:0 default:0 desc:成功时返回退款记录id
+     */
+    public function refundOrder()
+    {
+        $order_id = input('post.order_id');
+        $cause_id = input('post.cause_id');
+        $apply_type = input('post.apply_type',1);
+        $apply_money = input('post.apply_money');
+        $re_desc = input('post.re_desc');
+        $re_images = input('post.re_images');
+        $ck_refund = Db::table('order_refund')
+            ->where(['order_id'=>$order_id,'ck_status'=>0])
+            ->value('id');
+        if($ck_refund)  $this->error('审核中,请勿重新申请');
+        $ref_data = [
+            'uid' => $this->uid,
+            'order_id' => $order_id,
+            'apply_type' => $apply_type,
+            'apply_money' => $apply_money,
+            'create_at' => date("Y-m-d H:i:s"),
+            'cause_id' => $cause_id,
+            're_desc' => $re_desc,
+            're_images' => $re_images,
+        ];
+        Db::table('order_refund')->insert($ref_data);
+        $re_id = Db::getLastInsID();
+        // 更新订单表退款申请状态
+        Db::table('store_order')->where('id',$order_id)->update(['refund_state'=>1]);
+        $this->success('ok',['re_id'=>$re_id]);
+    }
+
+    /**
+     * @title 获取提交订单退款详情
+     * @desc  获取提交订单退款详情
+     * @author  qc
+     * @url /api/Order/getRefundInfo
+     * @method GET
+     * @header name:Authorization require:1 desc:Token
+     * @param  name:id type:int  : default:1 desc:退款记录id
+     * @return  name:cause_id type:int  : default:1 desc:退款原因id
+     * @return  name:apply_type type:int  : default:1 desc:申请类型 1退款,2退货退款
+     * @return  name:apply_money type:float  : default:1 desc:申请退回金额
+     * @return  name:create_at type:string  : default:1 desc:申请时间
+     * @return  name:re_desc type:string  : default:-- desc:描述
+     * @return  name:re_images type:string  : default:-- desc:退款图片
+     * @return  name:pro_info type:string  : default:-- desc:申请订单的商品详情
+     * @return  name:goods_num type:string  : default:-- desc:购买的商品数量
+     * @return  name:ck_status type:int  default:0 desc:审核状态(0待审核 ,1 审核通过 , 2 审核不通过),
+     * @return  name:refund_money type:float  default:0 desc:审核退款金额,
+     * @return  name:refund_state type:int  default:0 desc:同意退款后的退款状态(0未退款,1待退款,2已退款,3退款失败)
+     * @return  name:refund_desc type:int  default:0 desc:退款描述
+     * @return  name:wl_no type:string  default:0 desc:退货物流单号 ( apply_type = 2)
+     * @return  name:wl_company type:string  default:0 desc:退货物流公司( apply_type = 2)
+     */
+    public function getRefundInfo()
+    {
+        $id = input('post.id');
+        $detail = Db::table('order_refund')
+            ->field('r.*,o.pro_info,o.goods_num')
+            ->alias('r')
+            ->join('store_order o','r.order_id = o.id','LEFT')
+            ->where(['r.order_id'=>$id])
+            ->find();
+        $re_cause = get_refund_cause();
+        $detail['refund_desc'] = array_column($re_cause,null,'id')[$detail['cause_id']]['title'];
+        $this->success('ok',['refund_detail'=>$detail]);
+    }
+
+    /**
+     * @title 完善退货物流信息
+     * @desc  完善退货物流信息
+     * @author  qc
+     * @url /api/Order/completeLogistics
+     * @method POST
+     * @header name:Authorization require:1 desc:Token
+     * @param  name:id type:int  default:1 desc:退款记录id
+     * @param  name:wl_no type:string   default:-- desc:物流单号
+     * @param  name:wl_company type:string  default:1 desc:物流公司
+     */
+    public function completeLogistics()
+    {
+        $id = input('post.id');
+        $wl_no = input('post.wl_no');
+        $wl_company = input('post.wl_company');
+        $info =   $detail = Db::table('order_refund')->find($id);
+        if($info['apply_type'] == 1) $this->error('申请类型不符合,无需物流信息');
+        // 更新物流信息
+        Db::table('order_refund')->where(['id'=>$id])->update(['wl_no'=>$wl_no,'wl_company'=>$wl_company]);
+        $this->success('ok');
+    }
+
+    /**
+     * @title 修改订单退款(退货)申请信息
+     * @desc   修改订单退款(退货)申请信息
+     * @author  qc
+     * @url /api/Order/modifyRefundInfo
+     * @method POST
+     * @header name:Authorization require:1 desc:Token
+     * @param  name:id type:int   default:1 desc:需要修改的退款申请id
+     * @param  name:cause_id type:int   default:1 desc:退款原因id
+     * @param  name:apply_type type:int   default:1 desc:申请类型 1退款,2退货退款
+     * @param  name:apply_money type:float   default:1 desc:申请退回金额
+     * @param  name:re_desc type:string   default:-- desc:描述
+     * @param  name:re_images type:string   default:-- desc:退款图片最多三张(多张用逗号隔开)
+     * @param  name:wl_no  type:string   default:-- desc:物流单号
+     * @param  name:wl_company type:string   default:1 desc:物流公司
+     */
+    public function modifyRefundInfo()
+    {
+        $id = input('post.id');
+        $detail = Db::table('order_refund')->find($id);
+        if($detail['ck_status'] != 0) $this->error('已审核无法修改,请重新提交');
+        $up_data = [];
+        if(input('post.cause_id')) $up_data['cause_id'] = input('post.cause_id');
+        if(input('post.apply_type')) $up_data['apply_type'] = input('post.apply_type');
+        if(input('post.apply_money')) $up_data['apply_money'] = input('post.apply_money');
+        if(input('post.re_desc')) $up_data['re_desc'] = input('post.re_desc');
+        if(input('post.re_images')) $up_data['re_images'] = input('post.re_images');
+        if(input('post.wl_no')) $up_data['wl_no'] = input('post.wl_no');
+        if(input('post.wl_company')) $up_data['wl_company'] = input('post.wl_company');
+        if(!empty($up_data)) {
+            Db::table('order_refund')->where(['id'=>$id])->update($up_data);
+        }
+        $this->success('修改成功');
+    }
+
+    /**
+     * @title 取消申请退款(退货)
+     * @desc  取消申请退款(退货)
+     * @author  qc
+     * @url /api/Order/cancelRefund
+     * @method POST
+     * @header name:Authorization require:1 desc:Token
+     * @param  name:order_id type:int  : default:1 desc:订单id
+     */
+    public function cancelRefund(){
+        $order_id = input('post.order_id');
+        $re_info = Db::table('order_refund')->where(['uid'=>$this->uid,'order_id'=>$order_id,'ck_status'=>0])->count();
+        if(!$re_info) $this->error('退款记录不存在');
+        // 删除记录
+        Db::table('order_refund')->where(['order_id'=>$order_id,'ck_status'=>0])->delete();
+        $ck = Db::table('order_refund')->where(['order_id'=>$order_id])->find();
+        $stat = empty($ck) ? 0 : 2 ;
+        Db::table('store_order')->where(['id'=>$order_id])->update(['refund_state'=>$stat]);
+    }
+
+    /**
+     * @title 获取提交订单退款列表 ???
+     * @desc  获取提交订单退款列表 ???
      */
-    public function getReturnDetail($order_id)
+    public function getRefundList()
     {
-        $return_detail = Db::table('order_return')
-            ->find($order_id);
-        return $return_detail;
+
     }
 
 
+
+
+
 }