| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- namespace App\Http\Controllers;
- use App\Authority;
- use App\Components\AsyncResponse;
- use App\Events\CustomerStored;
- use App\Log;
- use App\Logistic;
- use App\Owner;
- use Exception;
- use Illuminate\Http\Request;
- use Illuminate\Http\Response;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Gate;
- use Illuminate\Support\Facades\Validator;
- class OwnerController extends Controller
- {
- use AsyncResponse;
- /**
- * Display a listing of the resource.
- *
- * @param Request $request
- *
- * @return Response
- */
- public function index(Request $request)
- {
- if (!Gate::allows('货主-查询')) {
- return redirect(url('/'));
- }
- $query = Owner::query()
- ->orderBy('id', 'desc')
- ->whereNull('deleted_at');
- if ($request->has('name')) {
- $query->where('name', 'like', $request->name . '%');
- }
- if ($request->has('code')) {
- $query->where('code', 'like', $request->code . '%');
- }
- $owners = $query->paginate($request->paginate);
- return view('maintenance.owner.index', ['owners' => $owners]);
- }
- public function create()
- {
- if (!Gate::allows('货主-录入')) {
- return redirect(url('/'));
- }
- return view('maintenance.owner.create');
- }
- public function store(Request $request)
- {
- if (!Gate::allows('货主-录入')) {
- return redirect(url('/'));
- }
- $this->validatorCreate($request->all())->validate();
- $owner = new Owner($request->all());
- $owner->save();
- // event(new CustomerStoreEvent($owner));
- event(new CustomerStored($owner));
- $authority = new Authority([
- 'name' => "_{$owner['id']}",
- 'alias_name' => "(货主:{$owner['name']})",
- 'remark' => "(key: _{$owner['id']})",
- ]);
- $authority->save();
- app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
- return redirect('maintenance/owner/create')->with('successTip', $request->input('name') ?? '');
- }
- public function apiStore()
- {
- $this->gate("货主-录入");
- if (request("id"))$errors = $this->validatorUpdate(request()->input(),request("id"))->errors();
- else $errors = $this->validatorCreate(request()->input())->errors();
- if (count($errors)>0)$this->success(["errors"=>$errors]);
- if (request("id")){
- $owner = app("OwnerService")->find(request("id"));
- if (!$owner)$this->error("项目已被删除");
- if ($owner->name == request("name") && $owner->code == request("code"))
- $this->success($owner);
- $owner = app("OwnerService")->update($owner,[
- "name" => request("name"),
- "code" => request("code"),
- ]);
- }else $owner = app("OwnerService")->create([
- "name" => request("name"),
- "code" => request("code"),
- ]);
- $this->success($owner);
- }
- protected function validatorCreate(array $data)
- {
- return Validator::make($data, [
- 'code' => ['required', 'string', 'max:50', "unique:owners,code"],
- 'name' => ['required', 'string', 'max:50'],
- ],[],[
- "code" => "货主代码",
- "name" => "货主名称",
- ]);
- }
- protected function validatorUpdate(array $data, $id)
- {
- return Validator::make($data, [
- 'name' => ['required', 'string', 'max:50'],
- 'code' => ['required', 'string', 'max:50', "unique:owners,code,$id"]
- ],[],[
- "code" => "货主代码",
- "name" => "货主名称",
- ]);
- }
- public function getOwners()
- {
- $owners = app('OwnerService')->getIntersectPermitting(['id', 'code', 'name']);
- return $owners;
- }
- /**
- * Show the form for editing the specified resource.
- *
- * @param Owner $owner
- * @return Response
- */
- public function edit(Owner $owner)
- {
- if (!Gate::allows('货主-编辑')) {
- return redirect(url('/'));
- }
- return view('maintenance.owner.edit', ['owner' => $owner]);
- }
- /**
- * Update the specified resource in storage.
- *
- * @param Request $request
- * @param Owner $owner
- *
- * @return Response
- *
- * @throws Exception
- */
- public function update(Request $request, Owner $owner)
- {
- if (!Gate::allows('货主-编辑')) {
- return redirect(url('/'));
- }
- $this->validatorUpdate($request->all(), $owner->id)->validate();
- $owner->fill($request->all());
- $owner->update();
- event(new CustomerStored($owner));
- app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
- return redirect('maintenance/owner/')->with('successTip', "成功修改货主{$owner['name']}!");
- }
- /**
- * Remove the specified resource from storage.
- *
- * @param Owner $owner
- * @return array|Response
- * @throws Exception
- */
- public function destroy(Owner $owner)
- {
- if (!Gate::allows('货主-删除')) {
- return redirect(url('/'));
- }
- $re = $owner->update([
- "deleted_at" => date('Y-m-d H:i:s'),
- ]);
- app("OwnerService")->deleteAuthority($owner);
- app('LogService')->log(__METHOD__, __FUNCTION__, $owner->toJson(), Auth::user()['id']);
- return ['success' => $re];
- }
- public function recycle()
- {
- if (!Gate::allows('货主-删除')) {
- return redirect(url('/'));
- }
- $owners = Owner::query()->orderBy('id', 'desc')->whereNotNull('deleted_at')->paginate(25);
- return view('maintenance.owner.recycle', ['owners' => $owners]);
- }
- public function restoreSelected(Request $request)
- {
- if (!Gate::allows('货主-删除')) {
- return ['success' => 'false', 'fail_info' => "没有权限"];
- }
- $id = $request->input('id');
- $owner = Owner::query()->whereNotNull('deleted_at')->where('id', $id)->first();
- $owner->update(["deleted_at" => null]);
- app("OwnerService")->createAuthority($owner);
- app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
- return ['success' => 'true', 'owner' => $owner];
- }
- public function get(Request $request)
- {
- $params = [];
- if ($request->has("customer_id"))$params["customer_id"] = $request->input("customer_id");
- return ["success"=>true,"data"=>app("OwnerService")->get($params,null,false)];
- }
- }
|