1]; $where['orderStatus'] = ['in',[-1,-3]]; $orderNo = input('orderNo'); $shopName = input('shopName'); $deliverType = (int)input('deliverType',-1); $areaId1 = (int)input('areaId1'); if($areaId1>0){ $where['s.areaIdPath'] = ['like',"$areaId1%"]; $areaId2 = (int)input("areaId1_".$areaId1); if($areaId2>0)$where['s.areaIdPath'] = ['like',$areaId1."_"."$areaId2%"]; $areaId3 = (int)input("areaId1_".$areaId1."_".$areaId2); if($areaId3>0)$where['s.areaId'] = $areaId3; } $isRefund = (int)input('isRefund',-1); if($orderNo!='')$where['orderNo'] = ['like','%'.$orderNo.'%']; if($shopName!='')$where['shopName|shopSn'] = ['like','%'.$shopName.'%']; if($deliverType!=-1)$where['o.deliverType'] = $deliverType; if($isRefund!=-1)$where['o.isRefund'] = $isRefund; if($startDate!='' && $endDate!=''){ $where['orf.createTime'] = ['between',[$startDate.' 00:00:00',$endDate.' 23:59:59']]; }else if($startDate!=''){ $where['orf.createTime'] = ['>=',$startDate.' 00:00:00']; }else if($endDate!=''){ $where['orf.createTime'] = ['<=',$endDate.' 23:59:59']; } // 排序 $sort = input('sort'); $order = []; if($sort!=''){ $sortArr = explode('.',$sort); $order[$sortArr[0]] = $sortArr[1]; } $page = Db::name('orders')->alias('o')->join('__SHOPS__ s','o.shopId=s.shopId','left') ->join('__USERS__ u','o.userId=u.userId','left') ->join('__ORDER_REFUNDS__ orf ','o.orderId=orf.orderId and refundStatus in (0,1,2)') ->where($where) ->field('orf.id refundId,o.orderId,o.orderNo,s.shopName,s.shopId,s.shopQQ,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,refundStatus, o.orderStatus,u.loginName,o.deliverType,payType,payFrom,o.orderStatus,orderSrc,orf.backMoney,orf.backProductNum,orf.backCouponsNum,orf.backWangNum,orf.refundRemark,isRefund,orf.createTime,o.orderCode,o.useScore') ->order($order) ->order('orf.createTime', 'desc') ->paginate(input('limit/d'))->toArray(); if(count($page['Rows'])>0){ foreach ($page['Rows'] as $key => $v){ $page['Rows'][$key]['payType'] = WSTLangPayType($v['payType']); $page['Rows'][$key]['deliverType'] = WSTLangDeliverType($v['deliverType']==1); $page['Rows'][$key]['status'] = WSTLangOrderStatus($v['orderStatus']); $page['Rows'][$key]['orderCodeTitle'] = WSTOrderCodeTitle($v['orderCode']); } } return $page; } /** * 获取退款资料 */ public function getInfoByRefund(){ return $this->alias('orf')->join('__ORDERS__ o','orf.orderId=o.orderId')->where(['orf.id'=>(int)input('get.id'),'isRefund'=>0,'orderStatus'=>['in',[-1,-3]],'refundStatus'=>['in',[0,1]]]) ->field('orf.id refundId,orderNo,o.orderId,goodsMoney,refundReson,refundOtherReson,totalMoney,realTotalMoney,deliverMoney,payType,payFrom,backMoney,o.useScore,o.scoreMoney,tradeNo,orf.backProductNum,orf.backCouponsNum,orf.backWangNum,o.productNum,o.couponsNum,o.wangNum,o.moneyNum') ->find(); } /** * 退款 */ public function orderRefund(){ $id = (int)input('post.id'); if($id==0)return WSTReturn("操作失败!"); $refund = $this->get($id); //if(empty($refund) || $refund->refundStatus!=1)return WSTReturn("该退款订单不存在或已退款!"); if(empty($refund))return WSTReturn("该退款订单不存在或已退款!"); $order = model('orders')->get($refund->orderId); // dump($order->payFrom); if($order->payType==1 && $order->payFrom=='wallets'){ return $this->saveOrderRefund($refund,$order); } if($order->payType==1 && $order->payFrom=='ect'){ return $this->ectOrderRefund($refund,$order); } if($order->payType==1 && $order->payFrom=='qlgpay'){ return $this->qlgOrderRefund($refund,$order); } $content = input('post.content'); $refundId = (int)input('post.id'); $request_no = $order['orderNo'].$order['userId']; $backMoney = $refund["backMoney"]; $tradeNo = $order['tradeNo']; $refund_reason = "订单【".$order['orderNo']."】退款"; Loader::import('alipay.aop.AopClient', EXTEND_PATH,'.php'); Loader::import('alipay.aop.request.AlipayTradeRefundRequest', EXTEND_PATH,'.php'); // require Env::get('root_path') . 'extend/alipay/aop/AopClient.php'; // require Env::get('root_path') . 'extend/alipay/aop/request/AlipayTradeRefundRequest.php'; $payment = model('common/payments')->getPayment("app_alipays"); //dump($payment); $aop = new \AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = $payment["appId"]; $aop->rsaPrivateKey = $payment["rsaPrivateKey"]; $aop->alipayrsaPublicKey=$payment["alipayrsaPublicKey"]; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset='UTF-8'; $aop->format='json'; $request = new \AlipayTradeRefundRequest (); $request->setBizContent("{" . "\"trade_no\":\"$tradeNo\"," . "\"refund_amount\":\"$backMoney\"," . "\"refund_reason\":\"$refund_reason\"," . "\"out_request_no\":\"$request_no\"" . " }"); $result = $aop->execute ( $request); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if(!empty($resultCode) && $resultCode == 10000){ if($result->$responseNode->fund_change=="Y"){ $obj = array(); $obj['refundTradeNo'] = $request_no;//退款单号 $obj['content'] = $content; $obj['refundId'] = $refundId; $rs = $this->complateOrderRefund($obj); if($rs['status']==1){ return WSTReturn("退款成功",1); }else{ return WSTReturn("退款失败",1); } } } else { $msg = $result->$responseNode->sub_msg; //dump($msg); return WSTReturn($msg,-1); } } public function complateOrderRefund($obj){ Db::startTrans(); try{ $content = $obj['content']; $refundTradeNo = $obj['refundTradeNo']; $refundId = $obj['refundId']; $refund = $this->get($refundId); $order = model('orders')->get($refund->orderId); if(!(in_array($order->orderStatus,[-1,-3]) && $order->isRefund==0 && ($order->isPay==1 || ($order->payType==0 && $order->useScore>0))))return WSTReturn("无效的退款订单!"); //修改退款单信息 $refund->refundRemark = $content; $refund->refundTime = date('Y-m-d H:i:s'); $refund->refundStatus = 2; $refund->refundTradeNo = $refundTradeNo; $refund->save(); //修改订单状态 $order->isRefund = 1; $order->save(); if($order->useScore>0){ $score = []; $score['userId'] = $order->userId; $score['score'] = $order->useScore; $score['dataSrc'] = 4; $score['dataId'] = $refund['id']; $score['dataRemarks'] = "返还订单【".$order->orderNo."】积分".$order->useScore."个"; $score['scoreType'] = 1; model('common/UserScores')->add($score); } //发送一条用户信息 $tpl = WSTMsgTemplates('ORDER_REFUND_SUCCESS'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${REMARK}']; $replace = [$order->orderNo,$content]; WSTSendMsg($order->userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>1,'dataId'=>$order->orderId]); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); WSTWxMessage(['CODE'=>'WX_ORDER_REFUND_SUCCESS','userId'=>$order->userId,'params'=>$params]); } //如果有钱剩下,那么就退回到商家钱包 $shopMoneys = $order->realTotalMoney-$refund->backMoney; if($shopMoneys>0){ //创建商家资金流水 $lm = []; $lm['targetType'] = 1; $lm['targetId'] = $order->shopId; $lm['dataId'] = $order->orderId; $lm['dataSrc'] = 1; $lm['remark'] = '订单【'.$order->orderNo.'】退款,返回商家金额¥'.$shopMoneys."。"; $lm['moneyType'] = 1; $lm['money'] = $shopMoneys; $lm['payType'] = 0; $lm['createTime'] = date('Y-m-d H:i:s'); model('LogMoneys')->add($lm); //发送商家信息 $tpl = WSTMsgTemplates('ORDER_SHOP_REFUND'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${MONEY}']; $replace = [$order->orderNo,$shopMoneys]; $msg = array(); $msg["shopId"] = $order->shopId; $msg["tplCode"] = $tpl["tplCode"]; $msg["msgType"] = 1; $msg["content"] = str_replace($find,$replace,$tpl['tplContent']) ; $msg["msgJson"] = ['from'=>1,'dataId'=>$order->orderId]; model("common/MessageQueues")->add($msg); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['SHOP_MONEY'] = $shopMoneys; $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); $msg = array(); $tplCode = "WX_ORDER_SHOP_REFUND"; $msg["shopId"] = $order->shopId; $msg["tplCode"] = $tplCode; $msg["msgType"] = 4; $msg["paramJson"] = ['CODE'=>'WX_ORDER_SHOP_REFUND','params'=>$params]; $msg["msgJson"] = ""; model("common/MessageQueues")->add($msg); } } Db::commit(); return WSTReturn("退款成功",1); }catch (\Exception $e) { Db::rollback();errLog($e); } return WSTReturn("退款失败,请刷新后再重试"); } public function saveOrderRefund($refund,$order){ $content = input('post.content'); $lockCashMoney = $order["lockCashMoney"]; if(!(in_array($order->orderStatus,[-1,-3]) && $order->isRefund==0 && ($order->isPay==1 || ($order->payType==0 && $order->useScore>0))))return WSTReturn("无效的退款订单!"); Db::startTrans(); try{ //修改退款单信息 $refund->refundRemark = $content; $refund->refundTime = date('Y-m-d H:i:s'); $refund->refundStatus = 2; $refund->save(); //修改订单状态 $order->isRefund = 1; $order->save(); //创建用户资金流水记录 if($refund->backMoney>0){ $lm = []; $lm['targetType'] = 0; $lm['targetId'] = $order->userId; $lm['dataId'] = $order->orderId; $lm['dataSrc'] = 1; $lm['remark'] = '订单【'.$order->orderNo.'】退款¥'.$refund->backMoney."。".(($content!='')?"【退款备注】:".$content:''); $lm['moneyType'] = 1; $lm['money'] = $refund->backMoney; $lm['payType'] = 0; $lm['createTime'] = date('Y-m-d H:i:s'); model('common/LogMoneys')->add($lm); //修改用户充值金额 model('users')->where(["userId"=>$order->userId])->setInc("rechargeMoney",($lockCashMoney>$refund->backMoney)?$refund->backMoney:$lockCashMoney); } if($order->useScore>0) { $score = []; $score['userId'] = $order->userId; $score['score'] = $order->useScore; $score['dataSrc'] = 4; $score['dataId'] = $refund['id']; $score['dataRemarks'] = "返还订单【" . $order->orderNo . "】积分" . $order->useScore . "个"; $score['scoreType'] = 1; model('common/UserScores')->add($score); } //发送一条用户信息 $tpl = WSTMsgTemplates('ORDER_REFUND_SUCCESS'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${REMARK}']; $replace = [$order->orderNo,$content]; WSTSendMsg($order->userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>1,'dataId'=>$order->orderId]); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); WSTWxMessage(['CODE'=>'WX_ORDER_REFUND_SUCCESS','userId'=>$order->userId,'params'=>$params]); } //如果有钱剩下,那么就退回到商家钱包 $shopMoneys = $order->realTotalMoney-$refund->backMoney; if($shopMoneys>0){ //创建商家资金流水 $lm = []; $lm['targetType'] = 1; $lm['targetId'] = $order->shopId; $lm['dataId'] = $order->orderId; $lm['dataSrc'] = 1; $lm['remark'] = '订单【'.$order->orderNo.'】退款,返回商家金额¥'.$shopMoneys."。"; $lm['moneyType'] = 1; $lm['money'] = $shopMoneys; $lm['payType'] = 0; $lm['createTime'] = date('Y-m-d H:i:s'); model('LogMoneys')->add($lm); //dump($lm); //发送商家信息 $tpl = WSTMsgTemplates('ORDER_SHOP_REFUND'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${MONEY}']; $replace = [$order->orderNo,$shopMoneys]; $msg = array(); $msg["shopId"] = $order->shopId; $msg["tplCode"] = $tpl["tplCode"]; $msg["msgType"] = 1; $msg["content"] = str_replace($find,$replace,$tpl['tplContent']) ; $msg["msgJson"] = ['from'=>1,'dataId'=>$order->orderId]; model("common/MessageQueues")->add($msg); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['SHOP_MONEY'] = $shopMoneys; $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); $msg = array(); $tplCode = "WX_ORDER_SHOP_REFUND"; $msg["shopId"] = $order->shopId; $msg["tplCode"] = $tplCode; $msg["msgType"] = 4; $msg["paramJson"] = ['CODE'=>'WX_ORDER_SHOP_REFUND','params'=>$params]; $msg["msgJson"] = ""; model("common/MessageQueues")->add($msg); } } // die; Db::commit(); return WSTReturn("退款成功",1); }catch (\Exception $e) { Db::rollback();errLog($e); } return WSTReturn("退款失败,请刷新后再重试"); } public function qlgOrderRefund($refund,$order){ $content = input('post.content'); //dump($refund); if(!(in_array($order->orderStatus,[-1,-3]) && $order->isRefund==0 && ($order->isPay==1 || ($order->payType==0 && $order->useScore>0))))return WSTReturn("无效的退款订单!"); Db::startTrans(); try{ //修改退款单信息 $refund->refundRemark = $content; $refund->refundTime = date('Y-m-d H:i:s'); $refund->refundStatus = 2; //修改订单状态 $order->isRefund = 1; $order->save(); $userId = $order->userId; //创建用户资金流水记录 $um = Db::name('users'); $lmm = Db::name('log_moneys'); $nowTime = time(); //记录各个券支出 //产品券 if($refund->backProductNum > 0){ Model('common/LogMoneys')->addMoneyLog(0,$userId,$order->orderId,1,'交易订单【'.$order->orderNo.'】退款¥'.$refund->backProductNum,1,$refund->backProductNum,'qlgpay',1); } //优惠券 if($refund->backCouponsNum > 0){ Model('common/LogMoneys')->addMoneyLog(0,$userId,$order->orderId,1,'交易订单【'.$order->orderNo.'】退款¥'.$refund->backCouponsNum,1,$refund->backCouponsNum,'qlgpay',2); } //旺旺券 if($refund->backWangNum > 0){ Model('common/LogMoneys')->addMoneyLog(0,$userId,$order->orderId,1,'交易订单【'.$order->orderNo.'】退款¥'.$refund->backWangNum,1,$refund->backWangNum,'qlgpay',3); } //发送一条用户信息 $tpl = WSTMsgTemplates('ORDER_REFUND_SUCCESS'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${REMARK}']; $replace = [$order->orderNo,$content]; WSTSendMsg($order->userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>1,'dataId'=>$order->orderId]); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); WSTWxMessage(['CODE'=>'WX_ORDER_REFUND_SUCCESS','userId'=>$order->userId,'params'=>$params]); } //如果有钱剩下,那么就退回到商家钱包 $userId=Db::name('shops')->where('shopId',$order->shopId)->value('userId'); $backShopNum = round($order->productNum - $refund->backProductNum,2); if($backShopNum > 0){ Model('common/LogMoneys')->addMoneyLog(1,$order->shopId,$order->orderId,1,'交易订单【'.$order->orderNo.'】退款剩余收入¥'.$backShopNum,1,$backShopNum,'qlgpay',1); } $backShopNum = round($order->couponsNum - $refund->backCouponsNum,2); if($backShopNum > 0){ Model('common/LogMoneys')->addMoneyLog(1,$order->shopId,$order->orderId,1,'交易订单【'.$order->orderNo.'】退款剩余收入¥'.$backShopNum,1,$backShopNum,'qlgpay',2); } $backShopNum = round($order->wangNum - $refund->backWangNum,2); if($backShopNum > 0){ Model('common/LogMoneys')->addMoneyLog(1,$order->shopId,$order->orderId,1,'交易订单【'.$order->orderNo.'】退款剩余收入¥'.$backShopNum,1,$backShopNum,'qlgpay',3); } Db::commit(); return WSTReturn("退款成功",1); }catch (\Exception $e) { dump($e); Db::rollback();errLog($e); } return WSTReturn("退款失败,请刷新后再重试"); } public function ectOrderRefund($refund,$order){ $content = input('post.content'); $lockCashMoney = $order["lockCashMoney"]; //dump($refund); if(!(in_array($order->orderStatus,[-1,-3]) && $order->isRefund==0 && ($order->isPay==1 || ($order->payType==0 && $order->useScore>0))))return WSTReturn("无效的退款订单!"); Db::startTrans(); try{ //修改退款单信息 $refund->refundRemark = $content; $refund->refundTime = date('Y-m-d H:i:s'); $refund->refundStatus = 2; //修改订单状态 $order->isRefund = 1; $order->save(); //创建用户资金流水记录 $ectInfo=db('orders_ect')->where('orderId',$order['orderId'])->field('ectPrice,orderEctNum')->find(); //获取退还给用户的ECT数量 $ectNum=round(($refund->backMoney/$ectInfo['ectPrice']),2); if($ectNum>0){ $lm = []; $lm['targetType'] = 0; $lm['targetId'] = $order->userId; $lm['dataId'] = $order->orderId; $lm['dataSrc'] = 1; $lm['remark'] = '订单【'.$order->orderNo.'】退ECT数量'.$ectNum."。".(($content!='')?"【退款备注】:".$content:''); $lm['moneyType'] = 1; $lm['money'] = $ectNum; $lm['payType'] = "ect"; $lm['createTime'] = date('Y-m-d H:i:s'); model('common/LogMoneys')->add($lm); } if($order->useScore>0){ $score = []; $score['userId'] = $order->userId; $score['score'] = $order->useScore; $score['dataSrc'] = 4; $score['dataId'] = $refund['id']; $score['dataRemarks'] = "返还订单【".$order->orderNo."】积分".$order->useScore."个"; $score['scoreType'] = 1; model('common/UserScores')->add($score); } //发送一条用户信息 $tpl = WSTMsgTemplates('ORDER_REFUND_SUCCESS'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${REMARK}']; $replace = [$order->orderNo,$content]; WSTSendMsg($order->userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>1,'dataId'=>$order->orderId]); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); WSTWxMessage(['CODE'=>'WX_ORDER_REFUND_SUCCESS','userId'=>$order->userId,'params'=>$params]); } //如果有钱剩下,那么就退回到商家钱包,先获取总的ECT数量 $backShopEctNum=round(($ectInfo['orderEctNum']-$ectNum),2); if($backShopEctNum>0){ //创建商家资金流水 $userId=db('shops')->where('shopId',$order['shopId'])->value('userId'); $l = []; $l['targetType'] = 1; $l['targetId'] = $userId; $l['dataId'] = $order->orderId; $l['dataSrc'] = 1; $l['remark'] = '订单【'.$order->orderNo.'】退款,返回商家ect数量:'.$backShopEctNum."。"; $l['moneyType'] = 1; $l['money'] = $backShopEctNum; $l['payType'] = "ect"; $l['createTime'] = date('Y-m-d H:i:s'); model('LogMoneys')->add($l); //dump(Db::getlastsql());die; //发送商家信息 $tpl = WSTMsgTemplates('ORDER_SHOP_REFUND'); if( $tpl['tplContent']!='' && $tpl['status']=='1'){ $find = ['${ORDER_NO}','${MONEY}']; $replace = [$order->orderNo,$backShopEctNum]; $msg = array(); $msg["shopId"] = $order->shopId; $msg["tplCode"] = $tpl["tplCode"]; $msg["msgType"] = 1; $msg["content"] = str_replace($find,$replace,$tpl['tplContent']) ; $msg["msgJson"] = ['from'=>1,'dataId'=>$order->orderId]; model("common/MessageQueues")->add($msg); } //微信消息 if((int)WSTConf('CONF.wxenabled')==1){ $reasonData = WSTDatas('REFUND_TYPE',$refund->refundReson); $params = []; $params['ORDER_NO'] = $order->orderNo; $params['REASON'] = $reasonData['dataName'].(($refund->refundReson==10000)?" - ".$refund->refundOtherReson:""); $params['SHOP_MONEY'] = $backShopEctNum; $params['MONEY'] = $refund->backMoney.(($order['useScore']>0)?("【退回积分:".$order['useScore']."】"):""); $msg = array(); $tplCode = "WX_ORDER_SHOP_REFUND"; $msg["shopId"] = $order->shopId; $msg["tplCode"] = $tplCode; $msg["msgType"] = 4; $msg["paramJson"] = ['CODE'=>'WX_ORDER_SHOP_REFUND','params'=>$params]; $msg["msgJson"] = ""; model("common/MessageQueues")->add($msg); } } Db::commit(); return WSTReturn("退款成功",1); }catch (\Exception $e) { Db::rollback();errLog($e); } return WSTReturn("退款失败,请刷新后再重试"); } /** * 导出订单 */ public function toExport(){ $name='退款订单表'; $startDate = input('startDate'); $endDate = input('endDate'); $where = ['o.dataFlag'=>1]; $where['orderStatus'] = ['in',[-1,-3]]; $orderNo = input('orderNo'); $shopName = input('shopName'); $deliverType = (int)input('deliverType',-1); $areaId1 = (int)input('areaId1'); if($startDate!='' && $endDate!=''){ $where['orf.createTime'] = ['between',[$startDate.' 00:00:00',$endDate.' 23:59:59']]; }else if($startDate!=''){ $where['orf.createTime'] = ['>=',$startDate.' 00:00:00']; }else if($endDate!=''){ $where['orf.createTime'] = ['<=',$endDate.' 23:59:59']; } $isRefund = (int)input('isRefund',-1); if($orderNo!='')$where['orderNo'] = ['like','%'.$orderNo.'%']; if($shopName!='')$where['shopName|shopSn'] = ['like','%'.$shopName.'%']; if($deliverType!=-1)$where['o.deliverType'] = $deliverType; if($isRefund!=-1)$where['o.isRefund'] = $isRefund; if($areaId1>0){ $where['s.areaIdPath'] = ['like',"$areaId1%"]; $areaId2 = (int)input("areaId1_".$areaId1); if($areaId2>0)$where['s.areaIdPath'] = ['like',$areaId1."_"."$areaId2%"]; $areaId3 = (int)input("areaId1_".$areaId1."_".$areaId2); if($areaId3>0)$where['s.areaId'] = $areaId3; } $isRefund = (int)input('isRefund',-1); // 排序 $sort = input('sort'); $order = []; if($sort!=''){ $sortArr = explode('.',$sort); $order[$sortArr[0]] = $sortArr[1]; } $page = Db::name('orders')->alias('o')->join('__SHOPS__ s','o.shopId=s.shopId','left') ->join('__USERS__ u','o.userId=u.userId','left') ->join('__ORDER_REFUNDS__ orf ','o.orderId=orf.orderId and refundStatus in (1,2)') ->where($where) ->field('orf.id refundId,o.orderId,o.orderNo,s.shopName,s.shopId,s.shopQQ,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney, o.orderStatus,u.loginName,o.deliverType,payType,o.payFrom,o.orderStatus,orderSrc,orf.backMoney,orf.refundRemark,isRefund,orf.createTime,o.orderCode,o.useScore') ->order($order) ->order('orf.createTime', 'desc') ->select(); if(count($page)>0){ foreach ($page as &$v){ $v['payType'] = WSTLangPayType($v['payType']); $v['deliverType'] = WSTLangDeliverType($v['deliverType']==1); $v['status'] = WSTLangOrderStatus($v['orderStatus']); $v['orderCodeTitle'] = WSTOrderCodeTitle($v['orderCode']); } } unset($v); Loader::import('phpexcel.PHPExcel.IOFactory'); $objPHPExcel = new \PHPExcel(); // 设置excel文档的属性 $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人 ->setLastModifiedBy("heyuanhui")//最后修改人 ->setTitle($name)//标题 ->setSubject($name)//题目 ->setDescription($name)//描述 ->setKeywords("退款订单")//关键字 ->setCategory("Test result file");//种类 // 开始操作excel表 $objPHPExcel->setActiveSheetIndex(0); // 设置工作薄名称 $objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet')); // 设置默认字体和大小 $objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '')); $objPHPExcel->getDefaultStyle()->getFont()->setSize(11); $styleArray = array( 'font' => array( 'bold' => true, 'color'=>array( 'argb' => 'ffffffff', ) ), 'borders' => array ( 'outline' => array ( 'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式 'color' => array ('argb' => 'FF000000'), //设置border颜色 ) ) ); //设置宽 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(35); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12); $objPHPExcel->getActiveSheet()->getStyle('A1:T1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1:T1')->getFill()->getStartColor()->setARGB('333399'); $objPHPExcel->getActiveSheet() ->setCellValue('A1', '订单编号') ->setCellValue('B1', '申请人') ->setCellValue('C1', '店铺名称') ->setCellValue('D1', '订单来源') ->setCellValue('E1', '配送方式') ->setCellValue('F1', '支付方式') ->setCellValue('G1', '实收金额') ->setCellValue('H1', '申请退款金额') ->setCellValue('I1', '申请时间') ->setCellValue('J1', '退款状态') ->setCellValue('K1', '退款备注'); $objPHPExcel->getActiveSheet()->getStyle('A1:R1')->applyFromArray($styleArray); $reRefundInfo=['0'=>'未退款','1'=>'已退款']; for ($row = 0; $row < count($page); $row++){ if($page[$row]['payFrom'] =='ect'){ $page[$row]['payFrom'] = 'ECT'; }else if($page[$row]['payFrom'] =='wallets'){ $page[$row]['payFrom'] = '余额'; }else if($page[$row]['payFrom'] =='app_alipays' || $page[$row]['payFrom'] =='alipays'){ $page[$row]['payFrom'] = '支付宝'; }else if($page[$row]['payFrom'] =='weixinpays'){ $page[$row]['payFrom'] = '微信'; }else if($page[$row]['payFrom'] =='cod'){ $page[$row]['payFrom'] = '货到付款'; } $i = $row+2; $objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, $page[$row]['orderNo']) ->setCellValue('B'.$i, $page[$row]['loginName']) ->setCellValue('C'.$i, $page[$row]['shopName']) ->setCellValue('D'.$i, $page[$row]['orderCodeTitle']) ->setCellValue('E'.$i, $page[$row]['deliverType']) ->setCellValue('F'.$i, $page[$row]['payFrom']) ->setCellValue('G'.$i, $page[$row]['realTotalMoney']) ->setCellValue('H'.$i, $page[$row]['backMoney']) ->setCellValue('I'.$i, $page[$row]['createTime']) ->setCellValue('J'.$i, $reRefundInfo[$page[$row]['isRefund']]) ->setCellValue('K'.$i, $page[$row]['refundRemark']); } //输出EXCEL格式 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // 从浏览器直接输出$filename header('Content-Type:application/csv;charset=UTF-8'); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-excel;"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header('Content-Disposition: attachment;filename="'.$name.'.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); } }