admin/app/backend/modules/order/controllers/MultiplePackagesOrderGoodsC...

128 lines
5.0 KiB
PHP

<?php
/**
* Created by PhpStorm.
* Author:
* Date: 2017/3/4
* Time: 上午9:09
*/
namespace app\backend\modules\order\controllers;
use app\backend\modules\order\models\Order;
use app\backend\modules\order\models\OrderExpress;
use app\backend\modules\order\models\OrderGoods;
use app\backend\modules\goods\models\Goods;
use app\backend\modules\order\services\OrderPackageService;
use app\common\components\BaseController;
use app\common\models\order\OrderPackage;
class MultiplePackagesOrderGoodsController extends BaseController
{
/**
* 获取可选择的商品 用户多包裹发货
*/
public function getOrderGoods()
{
$order_id = intval(request()->input('order_id'));
//查询这个订单没有发货的商品
// $where[] = ['order_id','=',$order_id];
// $where[] = ['order_express_id','=',null];
$select = ['id','goods_id','order_id','thumb','title','goods_option_title','goods_sn','goods_market_price','payment_amount','total'];
$orderGoodsCollection = OrderGoods::uniacid()->select($select)->where('order_id', $order_id)
->whereNull('order_express_id')->with(['expressPackage','manyRefundedGoodsLog'])->get()->makeVisible('order_id');
$orderGoodsCollection->makeHidden(['after_sales','expressPackage','manyRefundedGoodsLog','goods']);
$order_goods = $orderGoodsCollection->map(function (OrderGoods $orderGoods) {
$not_number = $orderGoods->getRefundTotal() + $orderGoods->expressPackage->sum('total');
$orderGoods->origin_total = $orderGoods->total;
$orderGoods->total = $orderGoods->origin_total - $not_number;
return $orderGoods;
})->filter(function ($orderGoods) {
return $orderGoods->total > 0;
})->values()->toArray();
// $order_package = OrderPackage::uniacid()->where('order_id', $order_id)->whereNotNull('order_express_id')->get();
// $order_goods = OrderPackageService::filterGoods($order_goods,$order_package);
// $order_goods = array_values($order_goods->toArray());
return $this->successJson('操作成功',$order_goods);
}
public function orderExpress()
{
$order_id = intval(request()->input('order_id'));
$orderExpress = OrderExpress::where('order_id', $order_id)
->with(['hasManyOrderPackage'])->get();
if ($orderExpress->isNotEmpty()) {
$orderExpress->makeHidden(['hasManyOrderPackage']);
$orderExpress->map(function ($orderExpress, $key) {
$orderExpress->active_name = '包裹-'. ($key + 1);
$orderExpress->package_goods = $orderExpress->hasManyOrderPackage->map(function ($package) {
return [
'order_goods_id' => $package->order_goods_id,
'total' => $package->total,
'goods_title' => $package->orderGoods->title,
'goods_thumb' =>$package->orderGoods->thumb,
'goods_option_title' => $package->orderGoods->goods_option_title,
];
})->toArray();
});
}
return $this->successJson('list', [
'have_package'=> $orderExpress->isNotEmpty(),
'order_package'=> $orderExpress
]);
}
/**
* 用来修复多包裹发货默认值为1(部分发货) 之后批量发货造成默认值不会更改 造成用户无法收货的问题
*/
public function repairMultiplePackages()
{
$where[] = ['status','!=',2];
$where[] = ['is_all_send_goods','=',1];
Order::where($where)->update(['is_all_send_goods'=>0]); //修改所有状态不等于发货的状态为0
$where = [];
$where[] = ['status','=',2];
$where[] = ['is_all_send_goods','=',1];
$data = Order::where($where)->with(['hasManyOrderGoods'])->get();
foreach ($data as $k=>$v){
$order_data = $v->toArray();
if(count($order_data['has_many_order_goods'])==1){
$v->is_all_send_goods = 0;
$v->save();
}else{
$order_goods_express_id_is_null = 0; //计数 如果订单商品所有该字段都是空 则状态变为全部发货
$order_goods_express_id_num = 0;//计数 如果订单商品所有该字段都不为空则变为全部发货
foreach ($order_data['has_many_order_goods'] as $k1=>$v1){
if(empty($v1['order_express_id'])){
$order_goods_express_id_is_null++;
}else{
$order_goods_express_id_num++;
}
}
if($order_goods_express_id_is_null == count($order_data['has_many_order_goods'])){
$v->is_all_send_goods = 0;
$v->save();
}
if($order_goods_express_id_num == count($order_data['has_many_order_goods'])){
$v->is_all_send_goods = 0;
$v->save();
}
}
}
return $this->successJson();
}
}