MemberFollowTopicRepository.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-06-15
  6. * Time: 15:01
  7. */
  8. namespace App\Repositories;
  9. use App\Models\MemberFollowTopic;
  10. use Illuminate\Support\Facades\DB;
  11. use Tymon\JWTAuth\Facades\JWTAuth;
  12. use Illuminate\Support\Facades\Auth;
  13. use Illuminate\Support\Facades\Log;
  14. class MemberFollowTopicRepository {
  15. public function __construct(MemberFollowTopic $memberFollowTopic,CategoryRepository $categoryRepository) {
  16. $this->memberFollowTopic = $memberFollowTopic;
  17. $this->categoryRepository = $categoryRepository;
  18. }
  19. //关注话题
  20. public function setMemberFollowTopic($topic_group_ids){
  21. $data = $this->categoryRepository->getTopics($topic_group_ids);
  22. //获取uid
  23. $token = JWTAuth::decode(JWTAuth::getToken());
  24. if($data){
  25. $category_topic_data = [];
  26. foreach($data as $value){
  27. $category_topic_data[] = [
  28. 'uid' => $token['user']->uid,
  29. 'topic_id' => $value['id'],
  30. ];
  31. }
  32. DB::beginTransaction();
  33. try{
  34. $res = $this->memberFollowTopic->insert($category_topic_data);
  35. $topic = $this->updataMemberFollowSuggestTopic();
  36. DB::commit();
  37. if($res){
  38. //更改关注状态
  39. return jsonSuccess();
  40. }else{
  41. return jsonError('关注失败');
  42. }
  43. }catch (QueryException $exception){
  44. DB::rollBack();
  45. Log::debug('新增话题:'.$exception->getMessage());
  46. return jsonError('关注失败');
  47. }
  48. }
  49. }
  50. //修改关注状态
  51. public function updataMemberFollowSuggestTopic(){
  52. try {
  53. $sign = generateSign([], config('customer.app_secret'));
  54. $url = config("customer.app_service_url").'/user/v2/member/updateFollowSuggestTopic';
  55. //$url = 'http://localhost:8080/v2/member/updateFollowSuggestTopic';
  56. $array = [
  57. 'json' => ['sign' => $sign], 'query' => [], 'http_errors' => false,'headers'=>['Authorization'=>"Bearer ".JWTAuth::getToken()]
  58. ];
  59. return http($url,$array,'put');
  60. } catch (\Exception $e) {
  61. return [];
  62. }
  63. }
  64. //关注单个话题
  65. public function follow($topic_id){
  66. $token = JWTAuth::decode(JWTAuth::getToken());
  67. $info = $this->memberFollowTopic->where(['topic_id'=>$topic_id,'uid'=>$token['user']->uid])->first();
  68. if($info){
  69. return jsonError('您已关注该话题');
  70. }
  71. $data = ['uid'=>$token['user']->uid,'topic_id'=>$topic_id];
  72. $res = $this->memberFollowTopic->create($data);
  73. if($res){
  74. return jsonSuccess();
  75. }else{
  76. return jsonError('关注失败');
  77. }
  78. }
  79. //取消关注话题
  80. public function cancel($topic_id){
  81. $token = JWTAuth::decode(JWTAuth::getToken());
  82. $info = $this->memberFollowTopic->where(['topic_id'=>$topic_id,'uid'=>$token['user']->uid])->first();
  83. if(!$info){
  84. return jsonError('您没有关注该话题');
  85. }
  86. $res = $this->memberFollowTopic->where('id',$info->id)->delete();
  87. if($res){
  88. return jsonSuccess();
  89. }else{
  90. return jsonError('取关失败');
  91. }
  92. }
  93. public function list($request){
  94. $token = JWTAuth::decode(JWTAuth::getToken());
  95. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  96. $where[] = ['uid',$token['user']->uid];
  97. if(isset($request['name'])){
  98. $where[] = ['topic.name', 'like', "%{$request['name']}%"];
  99. }
  100. return $this->memberFollowTopic
  101. ->leftJoin('topic', 'member_follow_topic.topic_id', '=', 'topic.id')
  102. ->where($where)
  103. ->select('member_follow_topic.id','uid','topic_id','topic.name as topic_name','topic.is_suggest')
  104. ->paginate($perPage);
  105. }
  106. //获取用户关注话题
  107. public function getMemberTopic($uid){
  108. return $this->memberFollowTopic
  109. ->leftJoin('topic', 'member_follow_topic.topic_id', '=', 'topic.id')
  110. ->where(['member_follow_topic.uid'=>$uid])
  111. //->select('member_follow_topic.id','uid','topic_id','topic.name as topic_name','topic.is_suggest')
  112. ->select('topic.name as topic_name')
  113. ->take(3)
  114. ->get();
  115. }
  116. }