CustomerBaseController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Owner;
  4. use App\Services\LogService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Http\Response;
  7. use Illuminate\Support\Facades\Gate;
  8. use Illuminate\Support\Facades\Validator;
  9. class CustomerBaseController extends Controller
  10. {
  11. /**
  12. * Display a listing of the resource.
  13. *
  14. * @param Request $request
  15. * @return Response
  16. */
  17. public function index(Request $request)
  18. {
  19. if(!Gate::allows('客户-查询')){ return redirect('denied'); }
  20. $customers = app('CustomerService')->paginate($request->input(),["owners.contracts.files"]);
  21. $owners = app("OwnerService")->getIntersectPermitting(['id','name','customer_id']);
  22. return response()->view('customer.customer.index',compact("customers","owners"));
  23. }
  24. /**
  25. * Show the form for creating a new resource.
  26. *
  27. * @return Response
  28. */
  29. public function create()
  30. {
  31. if(!Gate::allows('客户-录入')){ return redirect('denied'); }
  32. return response()->view('customer.customer.create');
  33. }
  34. /**
  35. * Store a newly created resource in storage.
  36. *
  37. * @param Request $request
  38. * @return Response
  39. * @throws
  40. */
  41. public function store(Request $request)
  42. {
  43. if(!Gate::allows('客户-录入')){ return redirect('denied'); }
  44. $this->validator($request->input())->validate();
  45. app('CustomerService')->create([
  46. "code"=>$request->input("code"),
  47. "name"=>$request->input("name"),
  48. "company_name"=>$request->input("company_name"),
  49. "invoice_address"=>$request->input("invoice_address"),
  50. "contact_man"=>$request->input("contact_man"),
  51. "phone"=>$request->input("phone"),
  52. "remark"=>$request->input("remark"),
  53. ]);
  54. LogService::log(__METHOD__,"录入客户",json_encode($request->input(),JSON_UNESCAPED_UNICODE));
  55. return response()->redirectTo("customer/customer")->with("successTip","成功创建客户“".$request->input("name")."”");
  56. }
  57. /**
  58. * Show the form for editing the specified resource.
  59. *
  60. * @param int $id
  61. * @return Response
  62. */
  63. public function edit($id)
  64. {
  65. if(!Gate::allows('客户-编辑')){ return redirect('denied'); }
  66. $customer = app('CustomerService')->find($id);
  67. return response()->view('customer.customer.create',compact("customer"));
  68. }
  69. /**
  70. * Update the specified resource in storage.
  71. *
  72. * @param Request $request
  73. * @param int $id
  74. * @return Response
  75. * @throws
  76. */
  77. public function update(Request $request, $id)
  78. {
  79. if(!Gate::allows('客户-编辑')){ return redirect('denied'); }
  80. $this->validator($request->input(),$id)->validate();
  81. $result = app('CustomerService')->update(["id"=>$id],[
  82. "code"=>$request->input("code"),
  83. "name"=>$request->input("name"),
  84. "company_name"=>$request->input("company_name"),
  85. "invoice_address"=>$request->input("invoice_address"),
  86. "contact_man"=>$request->input("contact_man"),
  87. "phone"=>$request->input("phone"),
  88. "remark"=>$request->input("remark"),
  89. ]);
  90. if ($result == 1){
  91. LogService::log(__METHOD__,"修改客户",json_encode($request->input(),JSON_UNESCAPED_UNICODE));
  92. return response()->redirectTo("customer/customer")->with("successTip","成功修改客户“".$request->input("name")."”的信息");
  93. }
  94. return response()->view("exception.default",["code"=>"509"]);
  95. }
  96. /**
  97. * Remove the specified resource from storage.
  98. *
  99. * @param int $id
  100. * @return array
  101. */
  102. public function destroy($id)
  103. {
  104. if(!Gate::allows('客户-删除')){ return ["success"=>false,"data"=>"无权操作!"]; }
  105. $result = app('CustomerService')->destroy($id);
  106. if ($result == 1){
  107. LogService::log(__METHOD__,"删除客户",$id);
  108. return ["success"=>true];
  109. }
  110. return ["success"=>false,"data"=>"删除了“".$result."”行"];
  111. }
  112. private function validator(array $params, $id = null)
  113. {
  114. return Validator::make($params,[
  115. 'code'=>['required',$id?"unique:customers,code,$id":'unique:customers,code','max:20'],
  116. 'name'=>['required','max:20'],
  117. ],[
  118. 'required'=>':attribute 为必填项',
  119. 'max'=>':attribute 字符过多或输入值过大',
  120. 'unique'=>':attribute 已存在',
  121. ],[
  122. 'code'=>'客户代码',
  123. 'name'=>'客户名称',
  124. ]);
  125. }
  126. public function relatedOwner(Request $request)
  127. {
  128. $ids = $request->input("ids") ?? [];
  129. $id = $request->input("customer_id");
  130. $row = Owner::query()->whereIn("id",$ids)->update(["customer_id"=>$id]);
  131. if ($row==count($ids))return ["success"=>true];
  132. return ["success"=>false,"data"=>"修改错误,影响了“".$row."”个项目"];
  133. }
  134. }