dggjimai/application/admin/controller/ConsignmentOrderController.php

439 lines
16 KiB
PHP
Executable File

<?php
/**
* 寄卖订单控制器
*/
namespace app\admin\controller;
use think\Request;
use app\common\model\Goods;
use app\common\model\ConsignmentOrder;
use app\common\model\ConsignmentOrderGoods;
use app\common\model\ConsignmentOrderLog;
use app\common\model\Notice;
use app\common\model\MallImage;
use app\common\validate\OrderValidate;
use app\common\validate\ConsignmentOrderValidate;
class ConsignmentOrderController extends Controller
{
//列表
public function index(Request $request, ConsignmentOrder $model)
{
$param = $request->param();
$where = [];
//订单搜素
if (!empty($param['search_key']) && !empty($param['keyword'])) {
$keyword = $param['keyword'];
switch ($param['search_key']) {
case 'order_sn':
$where[] = ['o.order_sn', 'like', '%' . $keyword . '%'];
break;
case 'user_sn':
$where[] = ['u.sn', 'like', '%' . $keyword . '%'];
break;
case 'nickname':
$where[] = ['u.nickname', 'like', '%' . $keyword . '%'];
break;
case 'user_mobile':
$where[] = ['u.mobile', 'like', '%' . $keyword . '%'];
break;
}
}
//商品名称
if (isset($param['goods_name']) && $param['goods_name'] != '') {
$where[] = ['g.goods_name', 'like', '%' . $param['goods_name'] . '%'];
}
//订单类型
if (isset($param['order_type']) && $param['order_type'] != '') {
$where[] = ['o.order_status', '=', $param['order_type']];
}
//下单时间
if (isset($param['start_time']) && $param['start_time'] != '') {
$where[] = ['o.create_time', '>=', strtotime($param['start_time'])];
}
if (isset($param['end_time']) && $param['end_time'] != '') {
$where[] = ['o.create_time', '<=', strtotime($param['end_time'])];
}
$model = $model
->alias('o')
->field('o.*,u.mobile,u.nickname,u.sn,u.avatar')
->join('user u', 'u.id = o.user_id')
->join('consignment_order_goods g', 'g.order_id = o.id')
->with(['consignment_order_goods'])
->append(['delivery_address'])
->where($where)
->order('o.id desc')
->group('o.id')
->scope('where', $param);
$data = $model->paginate($this->admin['per_page'], false, ['query'=>$request->get()]);
//关键词,排序等赋值
$this->assign($request->get());
$this->assign([
'data' => $data,
'page' => $data->render(),
'total' => $data->total(),
]);
return $this->fetch();
}
/**
* Desc: 订单详情
*/
public function detail($id, Request $request, ConsignmentOrder $model, MallImage $mimodel)
{
$order = new ConsignmentOrder();
$data = $order
->with(['user', 'consignment_order_goods','logs'])
->where('id', $id)
->find();
foreach ($data['consignment_order_goods'] as &$consignment_order_goods){
$mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select();
$consignment_order_goods['img_list']=$mi_list;
}
$this->assign([
'detail' => $data,
]);
return $this->fetch();
}
/**
* Desc: 订单审核
*/
public function examine($id, Request $request, ConsignmentOrder $model, MallImage $mimodel)
{
$order = new ConsignmentOrder();
$data = $order
->with(['user', 'consignment_order_goods','logs'])
->where('id', $id)
->find();
foreach ($data['consignment_order_goods'] as &$consignment_order_goods){
$mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select();
$consignment_order_goods['img_list']=$mi_list;
}
$this->assign([
'detail' => $data,
]);
return $this->fetch();
}
/**
* Desc: 同意
*/
public function agree(Request $request)
{
if ($this->request->isAjax()) {
$param = $request->param();
// 启动事务
ConsignmentOrderGoods::startTrans();
try{
$order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]);
$order_goods->refund_status = 1;
$order_goods->evaluation_price =$param['evaluation_price'];
$order_goods->save();
$goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>0))->count();
$quanbu=0;
if($goods_count==0){
$order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]);
$order->order_status = 3;
$order->total_amount =$order['total_amount']+$param['evaluation_price'];
$order->update_time = time();
$order->save();
//记录日志
ConsignmentOrderLog::record(
$order['id'],
'平台已估价'
);
$data_info=[
'user_id' => $order['user_id'],
'jm_order_id' => $order['id'],
'scene' =>102,
'time' => date('Y-m-d H:i:s')
];
Notice::noticeByScene($order['user_id'],$data_info);
$quanbu=1;
}
// 提交事务
ConsignmentOrderGoods::commit();
}catch(\Exception $e){
// 回滚事务
ConsignmentOrderGoods::rollback();
return error($e->getMessage());
}
return success('操作成功','',$quanbu);
}
}
/**
* Desc: 拒绝
*/
public function refuse(Request $request, ConsignmentOrder $model)
{
if ($this->request->isAjax()) {
$param = $request->param();
// 启动事务
ConsignmentOrderGoods::startTrans();
try{
$order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]);
$order_goods->refund_status = 2;
$order_goods->refund_remarks =$param['remark'];
$order_goods->save();
$goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>0))->count();
$quanbu=0;
if($goods_count==0){
$order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]);
$order->order_status = 1;
$order->update_time = time();
$order->save();
//记录日志
ConsignmentOrderLog::record(
$order['id'],
'平台已估价'
);
$data_info=[
'user_id' => $order['user_id'],
'jm_order_id' => $order['id'],
'scene' =>102,
'time' => date('Y-m-d H:i:s')
];
Notice::noticeByScene($order['user_id'],$data_info);
$quanbu=1;
}
// 提交事务
ConsignmentOrderGoods::commit();
}catch(\Exception $e){
// 回滚事务
ConsignmentOrderGoods::rollback();
return error($e->getMessage());
}
return success('操作成功','',$quanbu);
}
}
/**
* Desc: 订单取货
*/
public function pickup($id, Request $request, ConsignmentOrder $model, MallImage $mimodel)
{
$order = new ConsignmentOrder();
$data = $order
->with(['user', 'consignment_order_goods','logs'])
->where('id', $id)
->find();
foreach ($data['consignment_order_goods'] as &$consignment_order_goods){
$mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select();
$consignment_order_goods['img_list']=$mi_list;
}
$this->assign([
'detail' => $data,
]);
return $this->fetch();
}
/**
* Desc: 取货操作
*/
public function pickuphandle(Request $request, ConsignmentOrder $model, OrderValidate $validate)
{
if ($request->isAjax()) {
$param = $request->param();
$validate_result = $validate->scene('hansle')->check($param);
if (!$validate_result) {
return error($validate->getError());
}
$order_id = $param['order_id'];
$order = ConsignmentOrder::get(['id' => $order_id]);
if ($order['order_status']!='4'){
return error('该订单状态下,无法进行取货操作');
}
// 启动事务
ConsignmentOrder::startTrans();
try{
//更新订单下商品的发货状态
$order->update_time = time();
$order->order_status = 5;
$order->save();
//记录日志
ConsignmentOrderLog::record(
$order['id'],
'平台安排取货',
'物流公司:'.$param['invoice_name'].',物流单号:'.$param['invoice_no']
);
$data_info=[
'user_id' => $order['user_id'],
'jm_order_id' => $order['id'],
'scene' =>103,
'shipping_name' => $param['invoice_name'],
'invoice_no' => $param['invoice_no'],
'time' => date('Y-m-d H:i:s')
];
Notice::noticeByScene($order['user_id'],$data_info);
// 提交事务
ConsignmentOrder::commit();
}catch(\Exception $e){
// 回滚事务
ConsignmentOrder::rollback();
return error($e->getMessage());
}
return success('操作成功');
}
}
/**
* Desc: 订单商品退回
*/
public function return($id, Request $request, ConsignmentOrder $model, MallImage $mimodel)
{
$order = new ConsignmentOrder();
$data = $order
->with(['user', 'consignment_order_goods','logs'])
->where('id', $id)
->find();
foreach ($data['consignment_order_goods'] as &$consignment_order_goods){
$mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select();
$consignment_order_goods['img_list']=$mi_list;
}
$this->assign([
'detail' => $data,
]);
return $this->fetch();
}
/**
* Desc: 退回操作
*/
public function returnhandle(Request $request)
{
if ($this->request->isAjax()) {
$param = $request->param();
// 启动事务
ConsignmentOrderGoods::startTrans();
try{
$order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]);
$order_goods->refund_status = 3;
$order_goods->refund_remarks ='物流公司:'.$param['invoice_name'].',物流单号:'.$param['invoice_no'];
$order_goods->save();
$goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>1))->count();
$order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]);
$order->order_status = 6;
$quanbu=0;
if($goods_count==0){
$quanbu=1;
$order->order_status = 7;
}
$order->total_amount =$order['total_amount']-$order_goods['evaluation_price'];
$order->update_time = time();
$order->save();
//记录日志
ConsignmentOrderLog::record(
$order['id'],
'平台退回商品',
'商品名称:'.$order_goods['goods_name'].',物流公司:'.$param['invoice_name'].',物流单号:'.$param['invoice_no']
);
$data_info=[
'user_id' => $order['user_id'],
'jm_order_id' => $order['id'],
'scene' =>104,
'shipping_name' => $param['invoice_name'],
'invoice_no' => $param['invoice_no'],
'time' => date('Y-m-d H:i:s')
];
Notice::noticeByScene($order['user_id'],$data_info);
// 提交事务
ConsignmentOrderGoods::commit();
}catch(\Exception $e){
// 回滚事务
ConsignmentOrderGoods::rollback();
return error($e->getMessage());
}
return success('操作成功','',$quanbu);
}
}
/**
* Desc: 订单商品上架
*/
public function shelves($id, Request $request, ConsignmentOrder $model, MallImage $mimodel)
{
$order = new ConsignmentOrder();
$data = $order
->with(['user', 'consignment_order_goods','logs'])
->where('id', $id)
->find();
foreach ($data['consignment_order_goods'] as &$consignment_order_goods){
$mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select();
$consignment_order_goods['img_list']=$mi_list;
}
$this->assign([
'detail' => $data,
]);
return $this->fetch();
}
/**
* Desc: 上架操作
*/
public function shelveshandle(Request $request)
{
if ($this->request->isAjax()) {
$param = $request->param();
$order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]);
$goods = Goods::get(['code' =>$param['goods_sn']]);
if(!$goods){
return error('该商品未上架,无法找到给商品信息');
}
$goods_l_count=ConsignmentOrderGoods::where(array('goods_id'=>$goods['id']))->count();
if($goods_l_count>0){
return error('该商品已上架,无需重复上架该商品');
}
// 启动事务
ConsignmentOrderGoods::startTrans();
try{
$order_goods->refund_status = 4;
$order_goods->goods_id =$goods['id'];
$order_goods->save();
$goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>1))->count();
$order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]);
$quanbu=0;
if($goods_count==0){
$quanbu=1;
$order->order_status = 2;
$order->update_time = time();
$order->save();
}
//记录日志
ConsignmentOrderLog::record(
$order['id'],
'平台上架商品',
'商品名称:'.$order_goods['goods_name']
);
$data_info=[
'user_id' => $order['user_id'],
'jm_order_id' => $order['id'],
'scene' =>105,
'time' => date('Y-m-d H:i:s')
];
Notice::noticeByScene($order['user_id'],$data_info);
// 提交事务
ConsignmentOrderGoods::commit();
}catch(\Exception $e){
// 回滚事务
ConsignmentOrderGoods::rollback();
return error($e->getMessage());
}
return success('操作成功','',$quanbu);
}
}
}