PackageLogisticController.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\UpdateOrderPackageExceptionListenerEvent;
  4. use App\Filters\OrderPackageFilters;
  5. use App\Logistic;
  6. use App\OrderPackage;
  7. use App\Owner;
  8. use App\Services\UserService;
  9. use Illuminate\Database\Eloquent\Builder;
  10. use Illuminate\Http\Request;
  11. class PackageLogisticController extends Controller
  12. {
  13. /**
  14. * PackageLogisticsController constructor.
  15. */
  16. public function __construct()
  17. {
  18. $this->middleware('auth');
  19. }
  20. public function index(Request $request, OrderPackageFilters $filters)
  21. {
  22. /** @var UserService $userService */
  23. $userService = app('UserService');
  24. $owner_ids = $userService->getPermittingOwnerIds(auth()->user());
  25. $paginateParams = $request->input();
  26. $orderPackages = OrderPackage::query()
  27. ->filter($filters)
  28. ->whereIn('owner_id', $owner_ids)->with(['order.logistic', 'order.owner', 'order.issue' => function ($query) {
  29. $query->with(['issueType', 'logs'=>function($query) {
  30. $query->with('user')->orderBy('created_at', 'DESC');
  31. }]);
  32. }])->orderByDesc('id')->paginate($request->paginate ?? 50);
  33. $logistics = Logistic::all();
  34. $owners = Owner::find($owner_ids);
  35. return view('package.logistic.index', compact('orderPackages', 'logistics', 'owners', 'paginateParams'));
  36. }
  37. public function update(Request $request)
  38. {
  39. $data = [];
  40. if ('无' == $request->input('exception_type')) {
  41. $data['exception_type'] = $request->input('exception_type');
  42. $data['exception'] = "否";
  43. } else {
  44. $data['exception_type'] = $request->input('exception_type');
  45. }
  46. OrderPackage::query()->where('id', $request['id'])->update($data);
  47. //更新统计数据
  48. event(new UpdateOrderPackageExceptionListenerEvent([$request['id']]));
  49. }
  50. public function batchUpdate(Request $request)
  51. {
  52. $data = [];
  53. if (array_key_exists('exception_type',$request->all())) {
  54. if ('无' == $request->input('exception_type')) {
  55. $data['exception_type'] = $request->input('exception_type');
  56. $data['exception'] = "否";
  57. } else {
  58. $data['exception_type'] = $request->input('exception_type');
  59. }
  60. }else if (array_key_exists('status',$request->all())) {
  61. $data['status'] = $request->input('status');
  62. }
  63. $logistic_numbers = $request->input('logistic_numbers');
  64. OrderPackage::query()->whereIn('logistic_number', $logistic_numbers)->update($data);
  65. //更新统计数据
  66. event(new UpdateOrderPackageExceptionListenerEvent($logistic_numbers));
  67. }
  68. }