AuthenticationController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace App\Http\Controllers\Account;
  3. use App\Models\Area;
  4. use App\Models\Attention;
  5. use App\Models\Authentication;
  6. use App\Models\Tag;
  7. use Illuminate\Http\Request;
  8. use App\Http\Requests;
  9. use App\Http\Controllers\Controller;
  10. class AuthenticationController extends Controller
  11. {
  12. protected $validateRules = [
  13. 'real_name' => 'required|max:64',
  14. 'title' => 'required|max:128',
  15. 'description' => 'sometimes|max:9999',
  16. 'id_card' => 'required|max:64|unique:authentications',
  17. 'id_card_image' => 'required|image|max:2048',
  18. 'skill' => 'required|max:128',
  19. 'skill_image' => 'required|image|max:2048',
  20. 'captcha' => 'required|captcha',
  21. ];
  22. protected $validateMessages = [
  23. 'real_name.required' => '真实姓名不能为空',
  24. 'real_name.max' => '真实姓名长度不能超过:max个字符',
  25. 'title.required' => '身份职业不能为空',
  26. 'title.max' => '身份职业不能超过:max个字符',
  27. 'description.max' => '个人介绍不能超过:max个字符',
  28. 'id_card.required' => '身份号码不能为空',
  29. 'id_card.max' => '身份证号码不能超过:max个字符',
  30. 'id_card_image.required' => '身份证正面图片不能为空',
  31. 'skill.required' => '认证领域不能为空',
  32. 'skill_image.required' => '认证领域图片不能为空',
  33. 'captcha.required' => '验证码不能为空',
  34. 'captcha.captcha' => '验证码错误',
  35. ];
  36. /**
  37. * 显示认证信息
  38. */
  39. public function getIndex(Request $request)
  40. {
  41. $provinces = Area::provinces();
  42. $cities = Area::cities($request->user()->province);
  43. $areaData = [
  44. 'provinces' => $provinces,
  45. 'cities' => $cities,
  46. ];
  47. return view('theme::authentication.index')->with(compact('areaData'));
  48. }
  49. /**
  50. * 认证信息提交
  51. */
  52. public function postStore(Request $request)
  53. {
  54. $this->validate($request,$this->validateRules,$this->validateMessages);
  55. $data = $request->all();
  56. $data['user_id'] = $request->user()->id;
  57. if($request->hasFile('id_card_image')){
  58. $savePath = storage_path('app/authentications');
  59. $file = $request->file('id_card_image');
  60. $fileName = uniqid(str_random(8)).'.'.$file->getClientOriginalExtension();
  61. $target = $file->move($savePath,$fileName);
  62. if($target){
  63. $data['id_card_image'] = 'authentications-'.$fileName;
  64. }
  65. }
  66. if($request->hasFile('skill_image')){
  67. $savePath = storage_path('app/authentications');
  68. $file = $request->file('skill_image');
  69. $fileName = uniqid(str_random(8)).'.'.$file->getClientOriginalExtension();
  70. $target = $file->move($savePath,$fileName);
  71. if($target){
  72. $data['skill_image'] = 'authentications-'.$fileName;
  73. }
  74. }
  75. Authentication::create($data);
  76. $this->attendToTags(explode(",",$data['skill']),$request->user()->id);
  77. return $this->success(route('auth.authentication.index'),'您的申请已经提交成功!我们会在3个工作日内完成审核,请耐心等待!');
  78. }
  79. /*修改认证信息*/
  80. public function anyEdit(Request $request)
  81. {
  82. if($request->isMethod('post')) {
  83. $this->validateRules['id_card'] = 'required|max:64|unique:authentications,id_card,'.$request->user()->id.',user_id';
  84. $this->validate($request, $this->validateRules,$this->validateMessages);
  85. $data = $request->all();
  86. $data['status'] = 0;
  87. if ($request->hasFile('id_card_image')) {
  88. $savePath = storage_path('app/authentications');
  89. $file = $request->file('id_card_image');
  90. $fileName = uniqid(str_random(8)) . '.' . $file->getClientOriginalExtension();
  91. $target = $file->move($savePath, $fileName);
  92. if ($target) {
  93. $data['id_card_image'] = 'authentications-' . $fileName;
  94. }
  95. }
  96. if ($request->hasFile('skill_image')) {
  97. $savePath = storage_path('app/authentications');
  98. $file = $request->file('skill_image');
  99. $fileName = uniqid(str_random(8)) . '.' . $file->getClientOriginalExtension();
  100. $target = $file->move($savePath, $fileName);
  101. if ($target) {
  102. $data['skill_image'] = 'authentications-' . $fileName;
  103. }
  104. }
  105. $request->user()->authentication->update($data);
  106. Tag::multiSave($data['skill'],$request->user());
  107. $this->attendToTags(explode(",",$data['skill']),$request->user()->id);
  108. return $this->success(route('auth.authentication.index'),'您的申请已经提交成功!我们会在3个工作日内完成审核,请耐心等待!');
  109. }
  110. $authentication = $request->user()->authentication;
  111. $provinces = Area::provinces();
  112. $cities = Area::cities($authentication->province);
  113. $areaData = [
  114. 'provinces' => $provinces,
  115. 'cities' => $cities,
  116. ];
  117. return view('theme::authentication.edit')->with(compact('authentication','areaData'));
  118. }
  119. /*关注标签*/
  120. private function attendToTags($tags,$userId){
  121. foreach( $tags as $tag ){
  122. $newTag = Tag::firstOrCreate(['name'=>$tag]);
  123. $attention = Attention::where("user_id",'=',$userId)->where('source_type','=',get_class($newTag))->where('source_id','=',$newTag->id)->first();
  124. if(!$attention){
  125. Attention::create([
  126. 'user_id' => $userId,
  127. 'source_id' => $newTag->id,
  128. 'source_type' => get_class($newTag),
  129. ]);
  130. Tag::find($newTag->id)->increment('followers');
  131. }
  132. }
  133. }
  134. }