文件
mashangyoujiu/Application/Retail/Controller/AdvanceOrderController.class.php

242 行
9.1 KiB
PHP
可执行文件

<?php
namespace Retail\Controller;
use Common\Model\RetailBillAdvanceModel as advanceOrderModel;
use Common\Business\Plug;
use Common\Model\RetailBillOrderModel;
use LittleGift\Business\Order;
//[1.8.68]
/**
* 预售订单管理
* Class AdvanceOrderController
* @package Retail\Controller
*/
class AdvanceOrderController extends BaseController
{
public function index()
{
$this->display();
}
/**
* 预售订单列表
*/
public function order_list()
{
$data = I("post.");
$data['merchant_id'] = $this->merchant_id;
$data['store_id'] = $this->store_id;
$orderModel = new advanceOrderModel();
$parameter = $orderModel->order_condition($data); //查询条件
if ($parameter['status'] == 1) {
$order_list = $orderModel->order_list($parameter['data']); //列表数据
if (!empty($order_list)) {
$count = $orderModel->order_count($parameter['data']); //总条数
$order_list = $orderModel->order_list_conversion($order_list); //转数据
}
$whereRoutine = array(
'b.merchant_id' => $data['merchant_id'],
'b.store_id' => $data['store_id'],
'b.pay_state' => array('neq', 0),
'b.type' => 1,
'b.order_type' => 1,
'o.order_genre' => 4,
'a.state' => array('neq', 0),
'o.status' => 1,
);
$whereOneArray = [
'o.pickup_type' => 1,
];
$whereOne['where'] = array_merge($whereOneArray, $whereRoutine);
$whereTwoArray = [
'o.pickup_type' => 2,
];
$whereTwo['where'] = array_merge($whereTwoArray, $whereRoutine);
$whereThreeArray = [
'o.pickup_type' => 3,
];
$whereThree['where'] = array_merge($whereThreeArray, $whereRoutine);
$pickup_type_one = $orderModel->order_count($whereOne); //待自提数量,预售订单
$pickup_type_two = $orderModel->order_count($whereTwo); //待配送订单数量
$pickup_type_three = $orderModel->order_count($whereThree); //待发货订单数量
}
$plugClass = new Plug();
//订单获取祝福码,判断该门店是否,有,并且开启
$storePlugStatusPost = [
'store_id' => $this->store_id,
'identification_arr' => ['blessing'],
];
$storePlugStatus = $plugClass->plugStoreStatus($storePlugStatusPost);//获取状态
if ($storePlugStatus === true) {
//有权限
$jurisdictionBlessing = 1;
} else {
//无权限
$jurisdictionBlessing = 2;
}
$res = array(
'status' => 1,
'msg' => '查询成功',
'data' => array(
'order_list' => $order_list ? $order_list : array(),
'count' => $count ? $count : 0,
'pickup_type_one' => $pickup_type_one ? $pickup_type_one : 0,//待自提数量
'pickup_type_two' => $pickup_type_two ? $pickup_type_two : 0,//待配送数量
'pickup_type_three' => $pickup_type_three ? $pickup_type_three : 0,//待送货数量
'jurisdiction_blessing' => $jurisdictionBlessing,//1有权限,2无权限
)
);
$this->ajaxReturn($res);
}
/**
* 打印
*/
public function print_option()
{
$store_id = session("storeid");
$bill_id = I("post.bill_id");
if (!$bill_id) {
$res['status'] = 0;
$res['msg'] = '参数缺失';
$this->ajaxReturn($res);
}
$data = A("PayApi/Printer")->linePrinting_v1($store_id, $bill_id, true);
$this->ajaxReturn($data);
}
/**
* 取消订单并进行退款
*/
public function order_cancel()
{
$data = I("post.");
if (empty($data['order_no']) || empty($data['uid'])) {
$res = array('status' => 0, 'msg' => '缺少参数');
$this->ajaxReturn($res);
}
if ($this->role_info['platform_type'] == 2) {
//第三方Q3ERP
$OrderModel = new RetailBillOrderModel();
$third_order = $OrderModel->getFindField([
'order_no' => $data['order_no']
], 'third_order');
if (!empty($third_order)) {
$ThirdClass = new Order();
$ThirdResult = $ThirdClass->orderCancel([
'merchant_id' => $this->merchant_id,
'third_order' => $third_order
]);
if ($ThirdResult['status'] == 0) {
$result['status'] = 0;
$result['msg'] = 'Q3 ERP平台取消订单失败' . $ThirdResult['message'];
$this->ajaxReturn($result);
}
}
}
$parameter = array(
'order_no' => $data['order_no'],
'type' => 1,
'store_id' => $this->store_id,
'merchant_id' => $this->merchant_id,
'store' => session("ls_userinfo"),
'uid' => $data['uid'],
'user_type' => 2
);
$res = A("Api/Customer")->order_cancel($parameter);
if ($res['status'] == 0) {
$this->ajaxReturn($res);
}
$parameter['order_no'] = $res['order_no']; //售后订单
$parameter['user_type'] = 3;
switch ($res['old_online']['pickup_type']) {
case 1:
$parameter['return_delivery_fee'] = 2;
break;
case 2:
// no break
case 3:
$parameter['return_delivery_fee'] = 1;
break;
default:
$parameter['return_delivery_fee'] = 2;
break;
}
if ($this->role_info['platform_type'] == 2) {
//第三方平台支付类型修改
$parameter['platform_type'] = 2;
}
$result = A("PayApi/Refund")->onlineOrderRefund_v2($parameter); //退款
if ($result['status'] == 1) {
$Journal_parameter = array(
'source' => 0,
'type' => 4,
'desc' => "门店预售订单取消",
'request_data' => json_encode($_POST),
);
action_log_v2($Journal_parameter); //日志
} else {
$SellModel = D('RetailSell');
D('RetailBillOrder')->deleteOrder(array('id' => $res['order_id']));
D('RetailBillOnline')->deleteOrder(array('bill_id' => $res['order_id']));
$SellModel->deleteOrder(array('bill_id' => $res['order_id']));
foreach ($res['success_array'] as $value) {
$SellModel->toSetDec(array("id" => $value['sell_id']), "wait_refund_num", $value['num']);
}
switch ($res['old_online']['order_genre']) {
case 4:
//预售订单
D("RetailBillAdvance")->deleteOrder(array("bill_id" => $res['order_id']));
break;
}
}
$this->ajaxReturn($result);
}
/**
* 导出
*/
public function advance_order_export()
{
$data = I("get.");
$data['merchant_id'] = $this->merchant_id;
$data['store_id'] = $this->store_id;
$data['earnest_pay_time'] = $data['earnest_pay_time'] ? explode(',', $data['earnest_pay_time']) : '';
$data['finish_time'] = $data['finish_time'] ? explode(',', $data['finish_time']) : '';
$orderModel = new advanceOrderModel();
$parameter = $orderModel->order_condition($data); //查询条件
$order_list = array();
if ($parameter['status'] == 1) {
$order_list = $orderModel->order_list($parameter['data']); //列表数据
if (!empty($order_list)) {
$order_list = $orderModel->order_list_conversion($order_list); //转数据
}
}
$headArr = array(
array('index', '序号'),
array('order_no', '单号'),
array('vip_phone', '会员手机号'),
array('all_earnest_price', '支付定金金额'),
array('earnest_pay_time', '支付定金时间'),
array('all_money', '支付尾款金额/全额'),
array('finish_time', '支付尾款/全额金额'),
array('pay_coupon_fee', '代金券优惠金额'),
array('advance_name', '预售方式'),
array('pay_state_name', '支付状态'),
array('delivery_name', '配送方式'),
array('status_name', '发货状态'),
array('remark', '买家留言')
);
$name = "预售订单";
$str = $name . '导出时间' . date('Y-m-d H:i:s', time());
getExcel($name, $headArr, $order_list, $str);
}
}