You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
5.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Models\Order;
use Validator;
use App\Models\OrderGood;
use App\Logic\OrderLogic;
class OrderInfoController extends ApiController
{
private $statusConfig = [
[10], [22], [26, 32], [40]
];
// 订单列表
public function getMyOrderList(Request $request)
{
// 先获取当前登录的用户信息
$user_id = \Auth::user()->id;
if (empty($user_id)) {
return $this->failed('用户未登录', 401);
}
$condition['uid'] = $user_id;
$conditionIn= $this->statusConfig[$request->input('status', 0)];
$orders_info = Order::getOrderAndOrderGoodsList($condition,$conditionIn);
$out_info = [];
foreach ($orders_info as $k => &$order) {
$out_info['logisticsMap'][$order->id] = [
"address" => $order->addr_detail,
"cityId" => $order->aid_c,
"dateUpdate" => $order->updated_at->format('Y-m-d H:i:s'),
"districtId" => $order->aid_a,
"id" => $order->id,
"linkMan" => $order->user_name,
"mobile" => $order->user_mobile,
"provinceId" => $order->aid_p,
"status" => $order->status,
"type" => 0
];
$out_info['orderList'][] = [
"amount" => $order->total_price,
"amountLogistics" => 0.00,
"amountReal" => $order->pay_price,
"dateAdd" => $order->created_at->format('Y-m-d H:i:s'),
"dateClose" => $order->pay_date,
"goodsNumber" => $order->orderGoods->sum('num'),
"hasRefund" => false,
"id" => $order->id,
"isPay" => false,
"orderNumber" => $order->order_sn,
"remark" => $order->remark,
"status" => $order->status,
"statusStr" => Order::getStatusDisplayMap()[$order->status],
"type" => 0,
"uid" => $order->uid,
];
$order_goods = [];
foreach ($order->orderGoods as $goods_k => $goods) {
$order_goods[] = [
"amount" => $goods->goods_price,
"goodsId" => $goods->goods_id,
"goodsName" => $goods->goods_name,
"id" => $goods->id,
"number" => $goods->num,
"orderId" => $order->id,
"pic" => config('filesystems.disks.oss.url') . '/' . $goods->goods_image,
"uid" => $order->uid,
];
}
$out_info['goodsMap'][$order->id] = $order_goods;
}
if ($out_info) {
// 返回订单信息
return $this->success($out_info);
}
// 没有查到订单信息 返回空数据错误
//add_my_log('Orderinfo','用户id:'.\Auth::user()->id.')没有符合条件的订单',1,'订单内容:没有符合条件的订单','OrderinfoController@list');
return $this->failed('没有符合条件的订单', 401);
}
/**
* 取消订单
* @param Request $request
*/
public function cancelOrder(Request $request)
{
// 验证规则
$validator = Validator::make($request->all(),
[
'orderId' => 'required'
],
[
'orderId.required' => '订单号缺失'
]
);
if ($validator->fails()) {
// add_my_log('Orderinfo','用户id:'.\Auth::user()->id.')操作订单不存在',1,'订单号:'.$order_id,'OrderinfoController@cancelOrder');
return $this->failed($validator->errors(), 401);
}
$condition['id'] = $request->orderId;
$condition['uid'] = \Auth::user()->id;
$order_info = Order::where($condition)->first();
$order_info_arr = $order_info->toArray();
if (empty($order_info_arr)) {
// add_my_log('Orderinfo','用户id:'.\Auth::user()->id.')操作订单不存在',1,'订单内容:空','OrderinfoController@cancelOrder');
return $this->failed('订单不存在', 401);
}
$order_info->status = Order::STATUS_INVALID;
$order_info->save();
return $this->message('取消成功');
}
/**
* 我的订单统计
* @param Request $request
*/
public function getMyOrderStatistics(Request $request)
{
// 先获取当前登录的用户信息
$user_id = \Auth::user()->id;
if (empty($user_id)) {
return $this->failed('用户未登录', 401);
}
$statistics = [
"count_id_no_transfer" => Order::countOrder(['uid' => $user_id, 'status' => Order::STATUS_ALREADY_PAID]),
"count_id_close" => Order::countOrder(['uid' => $user_id, 'status' => Order::STATUS_INVALID]),
"count_id_no_pay" => Order::countOrder(['uid' => $user_id, 'status' => Order::STATUS_WAIT_PAY]),
"count_id_no_confirm" => Order::countOrder(['uid' => $user_id, 'status' => Order::STATUS_DELIVERING]),
"count_id_success" => Order::countOrder(['uid' => $user_id, 'status' => Order::STATUS_COMPLETED])
];
return $this->success($statistics);
}
}