AuthenticationController.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Area;
  4. use App\Models\Authentication;
  5. use App\Models\Category;
  6. use App\Models\Tag;
  7. use App\Models\User;
  8. use Carbon\Carbon;
  9. use Illuminate\Http\Request;
  10. use App\Http\Requests;
  11. use Illuminate\Support\Facades\Storage;
  12. class AuthenticationController extends AdminController
  13. {
  14. protected $validateRules = [
  15. 'real_name' => 'required|max:64',
  16. 'title' => 'required|max:128',
  17. 'description' => 'sometimes|max:9999',
  18. 'id_card' => 'required|max:64|unique:authentications',
  19. 'id_card_image' => 'sometimes|image|max:2048',
  20. 'skill' => 'required|max:128',
  21. 'skill_image' => 'sometimes|image|max:2048',
  22. ];
  23. /**
  24. * Display a listing of the resource.
  25. *
  26. * @return \Illuminate\Http\Response
  27. */
  28. public function index(Request $request)
  29. {
  30. $query = Authentication::query();
  31. $filter = $request->all();
  32. $filter['category_id'] = $request->input('category_id',-1);
  33. /*认证申请状态过滤*/
  34. if(isset($filter['status']) && $filter['status'] > -1){
  35. $query->where('status','=',$filter['status']);
  36. }
  37. if( isset($filter['id_card']) && $filter['id_card']){
  38. $query->where('id_card','=',$filter['id_card']);
  39. }
  40. /*分类过滤*/
  41. if( $filter['category_id']> 0 ){
  42. $category = Category::findFromCache($filter['category_id']);
  43. if($category){
  44. $query->whereIn('category_id',$category->getSubIds());
  45. }
  46. }
  47. $authentications = $query->orderBy('updated_at','desc')->paginate(20);
  48. return view('admin.authentication.index')->with(compact('filter','authentications'));
  49. }
  50. public function create(){
  51. $provinces = Area::provinces();
  52. return view('admin.authentication.create')->with(compact('provinces'));
  53. }
  54. public function store(Request $request){
  55. $request->flash();
  56. $this->validateRules['user_id'] = 'required|integer|unique:authentications';
  57. $this->validate($request,$this->validateRules);
  58. $userId = $request->input('user_id');
  59. $authUser = User::find($userId);
  60. if(!$authUser){
  61. return $this->error(route('admin.authentication.create'),'申请认证的用户不存在,请核实user_id');
  62. }
  63. $data = $request->all();
  64. if(isset($data['is_recommend']) && $data['is_recommend'] ==1){
  65. $data['recommend_at'] = Carbon::now();
  66. }
  67. if($request->hasFile('id_card_image')){
  68. $file = $request->file('id_card_image');
  69. $path = 'avatar/' . date("Ym/d", time());
  70. $data['id_card_image'] = $this->upload_image($path, $file);
  71. }
  72. if($request->hasFile('skill_image')){
  73. $file = $request->file('skill_image');
  74. $path = 'avatar/' . date("Ym/d", time());
  75. $data['skill_image'] = $this->upload_image($path, $file);
  76. }
  77. $authentication = Authentication::create($data);
  78. if($authentication){
  79. Tag::multiSave($request->input('skill'),$request->user());
  80. }
  81. return $this->success(route('admin.authentication.index'),'行家认证信添加成功');
  82. }
  83. function upload_image($path, $file, $drive = 'oss')
  84. {
  85. $disk = Storage::disk($drive);
  86. //将图片上传到OSS中,并返回图片路径信息 值如:avatar/WsH9mBklpAQUBQB4mL.jpeg
  87. $path = $disk->put($path, $file);
  88. //由于图片不在本地,所以我们应该获取图片的完整路径,
  89. //值如:https://test.oss-cn-hongkong.aliyuncs.com/avatar/8GdIcz1NaCZ.jpeg
  90. return $disk->url($path);
  91. }
  92. /**
  93. * Show the form for editing the specified resource.
  94. *
  95. * @param int $id
  96. * @return \Illuminate\Http\Response
  97. */
  98. public function edit($id)
  99. {
  100. $authentication = Authentication::find($id);
  101. $provinces = Area::provinces();
  102. $cities = Area::cities($authentication->province);
  103. $data = [
  104. 'provinces' => $provinces,
  105. 'cities' => $cities,
  106. ];
  107. return view('admin.authentication.edit')->with(compact('authentication','data'));
  108. }
  109. /**
  110. * Update the specified resource in storage.
  111. *
  112. * @param \Illuminate\Http\Request $request
  113. * @param int $id
  114. * @return \Illuminate\Http\Response
  115. */
  116. public function update(Request $request, $id)
  117. {
  118. $authentication = Authentication::find($id);
  119. if(!$authentication){
  120. return $this->error(route('admin.authentication.index'),'行家认证信息不存在,请核实');
  121. }
  122. $request->flash();
  123. $oldStatus = $authentication->status;
  124. $this->validateRules['id_card'] = 'required|max:64|unique:authentications,id_card,'.$authentication->user_id.',user_id';
  125. $this->validate($request,$this->validateRules);
  126. $data = $request->all();
  127. $data['recommend_at'] = null;
  128. if(isset($data['is_recommend']) && $data['is_recommend'] ==1){
  129. $data['recommend_at'] = Carbon::now();
  130. }
  131. if ($request->hasFile('id_card_image')) {
  132. $file = $request->file('id_card_image');
  133. $path = 'avatar/' . date("Ym/d", time());
  134. $data['id_card_image'] = $this->upload_image($path, $file);
  135. }
  136. if ($request->hasFile('skill_image')) {
  137. $file = $request->file('skill_image');
  138. $path = 'avatar/' . date("Ym/d", time());
  139. $data['skill_image'] = $this->upload_image($path, $file);
  140. }
  141. $result = $authentication->update($data);
  142. if($result){
  143. Tag::multiSave($request->input('skill'),$request->user());
  144. }
  145. return $this->success(route('admin.authentication.index'),'行家认证信息修改成功');
  146. }
  147. /*修改分类*/
  148. public function changeCategories(Request $request){
  149. $ids = $request->input('ids','');
  150. $categoryId = $request->input('category_id',0);
  151. if($ids){
  152. Authentication::whereIn('user_id',explode(",",$ids))->update(['category_id'=>$categoryId]);
  153. }
  154. return $this->success(route('admin.authentication.index'),'分类修改成功');
  155. }
  156. /**
  157. * Remove the specified resource from storage.
  158. *
  159. * @param int $id
  160. * @return \Illuminate\Http\Response
  161. */
  162. public function destroy(Request $request)
  163. {
  164. $ids = $request->input('id');
  165. Authentication::destroy($ids);
  166. return $this->success(route('admin.authentication.index'),'行家认证信息删除成功');
  167. }
  168. public function recommend(Request $request){
  169. $ids = $request->input('id');
  170. Authentication::whereIn('user_id', $ids)->where('status','>', 0)->update(['recommend_at'=>Carbon::now()]);
  171. return $this->success(route('admin.authentication.index'),'行家推荐显示成功!');
  172. }
  173. }