1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace App\Http\Controllers\Api\mini;
- use App\Models\Device;
- use App\Models\Option;
- use App\Models\Order;
- use App\Models\OrderDevice;
- use App\Models\Project;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Log;
- class OrderController extends BaseController
- {
- protected $model;
- public function __construct()
- {
- $this->model = new Order();
- }
- public function create(Request $request)
- {
- $project = Project::find($request->input('project_id'));
- if(!$project) return $this->error(['msg' => '找不到项目']);
- $user = Auth::guard('mini')->user();
- $order = Order::create([
- 'work_point_id' => $request->input('work_point_id'),
- 'remark' => $request->input('remark'),
- 'is_draft' => $request->input('is_draft'),
- 'status' => Option::get('orders', 'status', 'checking'),
- 'order_number' => $this->model->createOrderNumber(),
- 'project_id' => $project->id,
- 'user_id' => $user->id
- ]);
- if(!$order) return $this->error(['msg' => '订单创建失败']);
- $devices = $request->input('devices');
- $total = 0;
- foreach($devices as $device) {
- $price = $this->transMoney($device['price']);
- OrderDevice::create([
- 'name' => $device['name'],
- 'order_id' => $order->id,
- 'device_id' => $device['type_id'],
- 'quantity' => $device['quantity'],
- 'price' => $price
- ]);
- $total = $total + ($price * (int)$device['quantity']);
- }
- $order->update(['money' => $total]);
- return $this->success();
- }
- public function get(Request $request)
- {
- $items = $this->model->where('project_id', $request->input('project_id'));
- if($request->input('status')) {
- $status = Option::get('orders', 'status', $request->input('status'));
- if($status) $items = $items->where('status', $status);
- }
- $items = $items->paginate();
- foreach($items as $item) {
- $item->devices = OrderDevice::where('order_id', $item->id)->get();
- foreach($item->devices as $device) {
- $device->type = $device->device ? $device->device->name : '';
- }
- $item->user_name = $item->user ? $item->user->name : '';
- $item->status = Option::getById($item->status, 'name');
- $item->date_time = substr($item->created_at, 0, 16);
- }
- return $this->success(['data' => $items->items()]);
- }
- }
|