OrderController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Http\Controllers\Api\mini;
  3. use App\Models\Device;
  4. use App\Models\Option;
  5. use App\Models\Order;
  6. use App\Models\OrderDevice;
  7. use App\Models\Project;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Log;
  11. class OrderController extends BaseController
  12. {
  13. protected $model;
  14. public function __construct()
  15. {
  16. $this->model = new Order();
  17. }
  18. public function create(Request $request)
  19. {
  20. $project = Project::find($request->input('project_id'));
  21. if(!$project) return $this->error(['msg' => '找不到项目']);
  22. $user = Auth::guard('mini')->user();
  23. $order = Order::create([
  24. 'work_point_id' => $request->input('work_point_id'),
  25. 'remark' => $request->input('remark'),
  26. 'is_draft' => $request->input('is_draft'),
  27. 'status' => Option::get('orders', 'status', 'checking'),
  28. 'order_number' => $this->model->createOrderNumber(),
  29. 'project_id' => $project->id,
  30. 'user_id' => $user->id
  31. ]);
  32. if(!$order) return $this->error(['msg' => '订单创建失败']);
  33. $devices = $request->input('devices');
  34. $total = 0;
  35. foreach($devices as $device) {
  36. $price = $this->transMoney($device['price']);
  37. OrderDevice::create([
  38. 'name' => $device['name'],
  39. 'order_id' => $order->id,
  40. 'device_id' => $device['type_id'],
  41. 'quantity' => $device['quantity'],
  42. 'price' => $price
  43. ]);
  44. $total = $total + ($price * (int)$device['quantity']);
  45. }
  46. $order->update(['money' => $total]);
  47. return $this->success();
  48. }
  49. public function get(Request $request)
  50. {
  51. $items = $this->model->where('project_id', $request->input('project_id'));
  52. if($request->input('status')) {
  53. $status = Option::get('orders', 'status', $request->input('status'));
  54. if($status) $items = $items->where('status', $status);
  55. }
  56. $items = $items->paginate();
  57. foreach($items as $item) {
  58. $item->devices = OrderDevice::where('order_id', $item->id)->get();
  59. foreach($item->devices as $device) {
  60. $device->type = $device->device ? $device->device->name : '';
  61. }
  62. $item->user_name = $item->user ? $item->user->name : '';
  63. $item->status = Option::getById($item->status, 'name');
  64. $item->date_time = substr($item->created_at, 0, 16);
  65. }
  66. return $this->success(['data' => $items->items()]);
  67. }
  68. }