<?php
|
|
namespace app\common\model\branch;
|
|
use app\common\enum\order\OrderPayStatusEnum;
|
use app\common\model\BaseModel;
|
use app\shop\model\order\Order as OrderModel;
|
use app\shop\model\user\User as UserModel;
|
use app\shop\service\order\ExportService;
|
|
/**
|
* 参与活动的下单记录模型
|
* @property int $id
|
* @property int $activity_id 活动id
|
* @property int $order_id 订单id
|
* @property int $app_id 小程序id
|
* @property int $shop_supplier_id 商户id
|
* @property string $create_time 创建时间
|
* @property string $update_time 更新时间
|
*/
|
class ActivityOrder extends BaseModel
|
{
|
protected $name = 'branch_activity_order';
|
protected $pk = 'id';
|
|
/**
|
* 订单列表
|
*/
|
public function getList($params=[])
|
{
|
$order_model = new OrderModel();
|
//搜索时间段
|
if (isset($params['create_time']) && $params['create_time'] != '') {
|
$params['start_time'] = strtotime(array_shift($params['create_time'])) ;
|
$params['end_time'] = strtotime(array_pop($params['create_time']));
|
}
|
$list = $order_model->alias('order')
|
->join('user', 'user.user_id=order.user_id')
|
->with(['product' => ['image', 'refund'], 'user', 'supplier', 'advance','address','extractStore'])
|
->where('order.is_delete', '=', 0)
|
->where($this->transferDataType($params['dataType']))
|
->where('salesactivity_id','=',$params['activity_id'])
|
->when(isset($params['shop_supplier_id']) && $params['shop_supplier_id']!=='',function($query) use($params){
|
$query->where('order.shop_supplier_id','=',$params['shop_supplier_id']);
|
})
|
->when(isset($params['search']) && $params['search'],function($query) use($params){
|
$query->where('user.user_id|user.nickName|user.mobile', 'like', '%' . $params['search'] . '%');
|
})
|
->when(isset($params['style_id']) && $params['style_id']!=='',function($query) use($params){
|
$query->where('order.delivery_type', '=', $params['style_id']);
|
})
|
->when(isset($params['order_no']) && $params['order_no'],function($query) use($params){
|
$query->where('order_no', 'like', '%' . trim($params['order_no']) . '%');
|
})
|
->when(isset($params['start_time']) && empty($params['end_time']), function($query) use ($params) {
|
$query->where('order.create_time', '>=', $params['start_time']);
|
})
|
->when(isset($params['end_time']) && empty($params['start_time']), function($query) use ($params) {
|
$query->where('order.create_time', '<=', $params['end_time']);
|
})
|
->when(isset($params['end_time']) && !empty($params['start_time']), function($query) use ($params) {
|
$query->whereBetween('order.create_time',[$params['start_time'],$params['end_time']]);
|
})->field('order.*')->order('create_time desc')->paginate($params);
|
|
if(!empty($list)){
|
foreach ($list as &$v){
|
$product = $v['product'];
|
$product = $product->toArray();
|
$v['product_price_total'] = array_sum(array_column($product, 'total_price'));
|
if(!empty($v["user"]["referee_id"])){
|
$v["referee_user"] = UserModel::detail($v["user"]["referee_id"]);
|
}
|
$v["pay_time_text"] = empty($v["pay_time"]) ? '' : date("Y-m-d H:i:s",$v["pay_time"]);
|
$v["receipt_time_text"] = empty($v["receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["receipt_time"]);
|
$v["auto_receipt_time_text"] = empty($v["auto_receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["auto_receipt_time"]);
|
}
|
}
|
|
return $list;
|
}
|
|
/**
|
* 订单列表(全部)
|
*/
|
public function getListAll($dataType, $params = [])
|
{
|
//搜索时间段
|
if (isset($params['create_time']) && $params['create_time'] != '') {
|
$params['start_time'] = array_shift($params['create_time']);
|
$params['end_time'] = array_pop($params['create_time']);
|
}
|
$order_model = new OrderModel();
|
$list = $order_model->alias('order')
|
->join('user', 'user.user_id=order.user_id')
|
->with(['product' => ['image', 'refund'], 'user', 'supplier', 'advance','address','extractStore'])
|
->where('order.is_delete', '=', 0)
|
->where('salesactivity_id','=',$params['activity_id'])
|
->when(isset($params['shop_supplier_id']) && $params['shop_supplier_id']!=='',function($query) use($params){
|
$query->where('order.shop_supplier_id','=',$params['shop_supplier_id']);
|
})
|
->when(isset($params['search']) && $params['search'],function($query) use($params){
|
$query->where('user.user_id|user.nickName|user.mobile', 'like', '%' . $params['search'] . '%');
|
})
|
->when(isset($params['style_id']) && $params['style_id']!=='',function($query) use($params){
|
$query->where('order.delivery_type', '=', $params['style_id']);
|
})
|
->when(isset($params['order_no']) && $params['order_no'],function($query) use($params){
|
$query->where('order_no', 'like', '%' . trim($params['order_no']) . '%');
|
})
|
->when(!empty($params['start_time']) && empty($params['end_time']), function($query) use ($params) {
|
$query->where('order.create_time', '>=', $params['start_time']);
|
})
|
->when(!empty($params['end_time']) && empty($params['start_time']), function($query) use ($params) {
|
$query->where('order.create_time', '<=', $params['end_time']);
|
})
|
->when(!empty($params['end_time']) && !empty($params['start_time']), function($query) use ($params) {
|
$query->whereBetween('order.create_time',[$params['start_time'],$params['end_time']]);
|
})->field('order.*')->select();
|
if(!empty($list)){
|
foreach ($list as &$v){
|
if(!empty($v["user"]["referee_id"])){
|
$v["referee_user"] = UserModel::detail($v["user"]["referee_id"]);
|
}
|
$v["pay_time_text"] = empty($v["pay_time"]) ? '' : date("Y-m-d H:i:s",$v["pay_time"]);
|
$v["receipt_time_text"] = empty($v["receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["receipt_time"]);
|
$v["auto_receipt_time_text"] = empty($v["auto_receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["auto_receipt_time"]);
|
}
|
}
|
return $list;
|
}
|
|
/**
|
* 订单导出
|
*/
|
public function exportList($dataType, $query)
|
{
|
// 获取订单列表
|
$list = $this->getListAll($dataType, $query);
|
// 导出excel文件
|
return (new Exportservice)->orderList($list);
|
}
|
|
/**
|
* 转义数据类型条件
|
*/
|
private function transferDataType($dataType)
|
{
|
$filter = [];
|
// 订单数据类型
|
switch ($dataType) {
|
case 'all':
|
break;
|
case 'payment';
|
$filter['pay_status'] = OrderPayStatusEnum::PENDING;
|
$filter['order_status'] = 10;
|
break;
|
case 'delivery';
|
$filter['pay_status'] = OrderPayStatusEnum::SUCCESS;
|
$filter['delivery_status'] = 10;
|
$filter['order_status'] = 10;
|
break;
|
case 'received';
|
$filter['pay_status'] = OrderPayStatusEnum::SUCCESS;
|
$filter['delivery_status'] = 20;
|
$filter['receipt_status'] = 10;
|
$filter['order_status'] = 10;
|
break;
|
case 'comment';
|
$filter['is_comment'] = 0;
|
$filter['order_status'] = 30;
|
break;
|
case 'complete';
|
// $filter['is_comment'] = 1;
|
$filter['order_status'] = 30;
|
break;
|
case 'cancel';
|
$filter['order_status'] = 21;
|
break;
|
case 'close';
|
$filter['order_status'] = 20;
|
break;
|
}
|
return $filter;
|
}
|
|
}
|