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