jh-admin/addon/supply/shop/controller/Supplyorder.php

184 lines
7.0 KiB
PHP

<?php
namespace addon\supply\shop\controller;
use addon\supply\model\order\OrderCommon as OrderCommonModel;
use addon\supply\model\CloudApi;
use addon\supply\model\order\OrderCreate;
use app\shop\controller\BaseShop;
class Supplyorder extends BaseShop
{
public function lists()
{
if (request()->isAjax()) {
$order_common_model = new OrderCommonModel();
$condition = array(
["buyer_shop_id", "=", $this->site_id],
);
$order_status = input('order_status', 'all');
switch ($order_status) {
case "waitpay"://待付款
$condition[] = ["order_status", "=", 0];
break;
case "waitsend"://待发货
$condition[] = ["order_status", "=", 1];
break;
case "waitconfirm"://待收货
$condition[] = ["order_status", "=", 3];
break;
case "waitrate"://待评价
$condition[] = ["order_status", "in", [4, 10]];
$condition[] = ["is_evaluate", "=", 1];
break;
}
$page_index = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$res = $order_common_model->getMemberOrderPageList($condition, $page_index, $page_size, "create_time desc");
$shop_order_ids=array_column($res['data']['list'],'shop_order_id');
$goods_order_ids = model('order_goods')->getColumn([['site_id', '=', $this->site_id],['order_id', 'in', $shop_order_ids]],'goods_money', 'order_id');
foreach ($res['data']['list'] as $key => &$value) {
if(isset($goods_order_ids[$value['shop_order_id']])){
$value['shop_goods_money']=$goods_order_ids[$value['shop_order_id']];
}
}
return $res;
} else {
$this->forthMenu();
return $this->fetch("supply_order/lists");
}
}
public function seeSubOrder()
{
$order_id = input('order_id', 0);
$channel_type = input('channel_type', '');
if (request()->isAjax()) {
$order_common_model = new OrderCommonModel();
$search = request()->all();
$info=$order_common_model->getOrderInfo(['order_id'=>$order_id],'shop_order_id');
$res = $order_common_model->getSubOrder($this->site_id, $info['data']['shop_order_id'], $search);
return $res;
}
return $this->fetch('supply_order/sub_list', ['order_id' => $order_id,'channel_type'=>$channel_type]);
}
/****
* 取消订单
* @return void
*/
public function cancelOrder()
{
$order_id = input('order_id', 0);
$cancelReason = input('cancelReason', '');
if (request()->isAjax()) {
$order_common_model = new OrderCommonModel();
$res = $order_common_model->getMemberOrderDetail($order_id)['data'];
$order_from_name = explode('|', $res['order_from_name']);
if ($res['order_from'] == 'api') {
$cloudModel = new CloudApi($order_from_name[1]);
$data = [
'outTradeNo' => $res['out_trade_no'],
'cancelReason' => $cancelReason,
];
$payData = $cloudModel->cancelOrder($data);
if ($payData['code'] == 0) {
$up = [
'reason_failure' => $cancelReason,
'request_content' => '卖家主动取消订单'
];
$outTradeNo = $data['outTradeNo'];
$order_common_model->orderUpdate($up, ['out_trade_no' => $outTradeNo]);
}
return $payData;
}
return $res;
}
}
/***
* 发起密码支付
* @return void
*/
public function buyPay()
{
$order_id = input('order_id', 0);
if (request()->isAjax()) {
$order_common_model = new OrderCommonModel();
$res = $order_common_model->getMemberOrderDetail($order_id)['data'];
if (!$res['pay_status'] == 1) {
return error('该订单已支付');
} else {
$order_from_name = explode('|', $res['order_from_name']);
if ($res['order_from'] == 'api') {
$cloudModel = new CloudApi($order_from_name[1]);
$data = [
'outTradeNo' => $res['out_trade_no'],
];
$qres = $cloudModel->pBalancePay($data);
$payData = $qres['data'];
if ($payData['code'] != 0) {
if ($payData['message'] == '订单已支付') {
$up = [
'pay_status' => 1,
'three_pay_status' => 1
];
$outTradeNo = $data['outTradeNo'];
$order_common_model->orderUpdate($up, ['out_trade_no' => $outTradeNo]);
return success(0, '支付成功');
}
return $payData;
} else {
if ($payData['isPay'] == 1) {
$up = [
'pay_status' => 1,
'three_pay_status' => 1
];
$outTradeNo = $data['outTradeNo'];
$order_common_model->orderUpdate($up, ['out_trade_no' => $outTradeNo]);
return success(0, '支付成功');
}
}
return $res;
}
}
return $res;
}
}
/***
* 获取在线支付信息
* @return array|void
*/
public function onlinePay()
{
$order_id = input('order_id', 0);
if (request()->isAjax()) {
$order_common_model = new OrderCommonModel();
$res = $order_common_model->getMemberOrderDetail($order_id)['data'];
$order_from_name = explode('|', $res['order_from_name']);
if ($res['order_from'] == 'api') {
$cloudModel = new CloudApi($order_from_name[1]);
$data = [
'outTradeNo' => $res['out_trade_no'],
];
$qres = $cloudModel->getPayOnlineInfo($data);
return $qres;
}
}
}
public function resetOrder()
{
if (request()->isAjax()) {
$order_id = input('order_id', 0);
$orderInfo=model('order')->getInfo(['order_id'=>$order_id]);
if($orderInfo){
return (new OrderCreate())->orderPay($orderInfo);
}else{
return error(-1,'订单不存在');
}
}
}
}