Selaa lähdekoodia

Merge branch 'develop' of http://git.caihongxingqiu.net/rainbow/community-service into develop

zhangchangchun 5 vuotta sitten
vanhempi
commit
fd4df17c19

+ 0 - 1
app/Console/Commands/ContentFeedCreate.php

@@ -3,7 +3,6 @@
 namespace App\Console\Commands;
 
 use App\Repositories\FeedRepositories;
-use App\Repositories\ProductSkuRepository;
 use Illuminate\Console\Command;
 use Illuminate\Support\Facades\Log;
 use PhpAmqpLib\Connection\AMQPStreamConnection;

+ 106 - 0
app/Console/Commands/ContentFeedDelete.php

@@ -0,0 +1,106 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/7/17
+ * Time: 9:33
+ */
+namespace App\Console\Commands;
+
+
+use App\Repositories\FeedRepositories;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Log;
+use PhpAmqpLib\Connection\AMQPStreamConnection;
+
+class ContentFeedDelete extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'content:feed_delete';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '取消关注删除对应feed';
+
+    protected $channel;
+    protected $connection;
+
+    protected $queue = 'cancel_follow';
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct(FeedRepositories $feedRepositories)
+    {
+        parent::__construct();
+        $this->feedRepositories = $feedRepositories;
+        $this->connection = $this->getConnection();
+        $this->channel = $this->connection->channel();
+        $this->channel->exchange_declare($this->queue, 'fanout', false, true, false);
+    }
+
+    public function getConnection()
+    {
+        $conn = false;
+        if ($this->connection) {
+            return $this->connection;
+        }
+        for ($i = 0; $i < 3; $i++) {
+            $connection = $this->createConn();
+            if ($connection) {
+                $conn = $connection;
+                break;
+            }
+            Log::info("create amqp conn retry=" . $i);
+        }
+        return $conn;
+    }
+
+    public function createConn()
+    {
+        try {
+            $connection = new AMQPStreamConnection(env('MQ_HOST'), env('MQ_PORT'), env('MQ_USERNAME'), env('MQ_PWD'), env('MQ_VHOST'));
+        } catch (\Exception $exception) {
+            Log::info("AMQP connection Error" . $exception->getMessage());
+            $connection = false;
+        }
+        return $connection;
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        Log::info('取消关注删除对应feed');
+        $queue_name = $this->queue.'_delete_feed';
+        $this->channel->queue_declare($queue_name, false, true, false, false);
+        $this->channel->queue_bind($queue_name, $this->queue);
+        $callback = function ($msg) {
+            $this->line(date('Y-m-d H:i:S').$msg->body);
+            $data = \GuzzleHttp\json_decode($msg->body, true);
+            $this->line('收到数据' . $msg->body);
+            $this->feedRepositories->contentFeedDelete($data);
+            $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
+        };
+        $this->channel->basic_consume($queue_name, '', false, false, false, false, $callback);
+
+        while (count($this->channel->callbacks)) {
+            $this->channel->wait();
+        }
+        $this->channel->close();
+        $this->connection->close();
+
+
+    }
+}

+ 2 - 0
app/Console/Kernel.php

@@ -6,6 +6,7 @@ use App\Console\Commands\Apollo;
 use App\Console\Commands\BehaviorRecord;
 use App\Console\Commands\CalcPostWeight;
 use App\Console\Commands\ContentFeedCreate;
+use App\Console\Commands\ContentFeedDelete;
 use App\Console\Commands\ExcellentResidents;
 use App\Console\Commands\RankingList;
 use Illuminate\Console\Scheduling\Schedule;
@@ -23,6 +24,7 @@ class Kernel extends ConsoleKernel
         BehaviorRecord::class,
         CalcPostWeight::class,
         ContentFeedCreate::class,
+        ContentFeedDelete::class,
         ExcellentResidents::class,
         RankingList::class
     ];

+ 22 - 3
app/Http/Controllers/V1/AliYunVodController.php

@@ -14,6 +14,7 @@ use App\Service\AliYunVodService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Validator;
+use ShaoZeMing\AliVod\SDK\CreateUploadImageRequest;
 use ShaoZeMing\AliVod\SDK\GetPlayInfoRequest;
 use ShaoZeMing\AliVod\Services\UploadService;
 use ShaoZeMing\Aliyun\Core\DefaultAcsClient;
@@ -21,7 +22,7 @@ use ShaoZeMing\Aliyun\Core\Profile\DefaultProfile;
 
 class AliYunVodController extends Controller
 {
-    public function __construct(FeedRepositories $feedRepositories,AliYunVodService $aliYunVodService)
+    public function __construct(FeedRepositories $feedRepositories, AliYunVodService $aliYunVodService)
     {
         $this->feedRepositories = $feedRepositories;
         $this->aliYunVodService = $aliYunVodService;
@@ -47,7 +48,7 @@ class AliYunVodController extends Controller
         $instance = new UploadService(config('aliyunvod'));
         $title = $request['title'];
         $filename = $request['filename'];
-        $coverUrl = isset($request['cover_url']) ?$request['cover_url']:'';
+        $coverUrl = isset($request['cover_url']) ? $request['cover_url'] : '';
         try {
             $result = $instance->createUploadVideo($title, $filename, '', $coverUrl);  //获取视频上传地址和凭证
 //            $result = $instance->refreshUploadVideo($videoId);  //刷新视频上传凭证
@@ -58,6 +59,24 @@ class AliYunVodController extends Controller
         }
     }
 
+    /**
+     * 获取图片上传凭证信息
+     * @param Request $request
+     * @return array
+     * @throws \ShaoZeMing\Aliyun\Core\Exception\ClientException
+     * @throws \ShaoZeMing\Aliyun\Core\Exception\ServerException
+     */
+    public function getImgUploadAuth(Request $request)
+    {
+        try {
+            $imageInfo = $this->aliYunVodService->getImgUploadAuth();
+            return $this->jsonSuccess($imageInfo);
+        } catch (\Exception $e) {
+            return $this->jsonError('获取上传凭证失败' . $e->getMessage());
+        }
+    }
+
+
     public function getPlayUrlByVideoId(Request $request)
     {
         $request = $request->all();
@@ -69,6 +88,6 @@ class AliYunVodController extends Controller
         }
         $videoId = $request['video_id'];
         $url = $this->aliYunVodService->getPlayUrlByVideoId($videoId);
-        return $this->jsonSuccess(['url'=>$url]);
+        return $this->jsonSuccess(['url' => $url]);
     }
 }

+ 2 - 1
app/Http/Controllers/V1/MusicListController.php

@@ -72,7 +72,8 @@ class MusicListController extends Controller
             return jsonError($validator->errors()->first());
         }
 
-        return $this->musicRepository->create($request->all());
+        $data = $this->musicRepository->create($request->all());
+        return jsonSuccess($data);
 
     }
 

+ 1 - 0
app/Http/Controllers/V1/PostController.php

@@ -239,6 +239,7 @@ class PostController extends Controller
      */
     public function detail(Request $request)
     {
+        Log::debug("内容详情-参数".json_encode($request));
         $validator = Validator::make($request->all(), [
             'id' => 'required|integer',
         ]);

+ 6 - 2
app/Repositories/BeanRepository.php

@@ -209,9 +209,10 @@ class BeanRepository
     //获取每日新闻
     function getNews($request) {
         try {
+            $sign = generateSign([], config('customer.app_secret'));
             $url = config("customer.app_service_url").'/config/v2/starNews/lists';
             $array = [
-                'json' => [], 'query' => [], 'http_errors' => false,'headers'=>['Authorization'=>"Bearer ".JWTAuth::getToken()]
+                'json' => ['sign' => $sign], 'query' => [], 'http_errors' => false
             ];
             return http($url,$array,'get');
         } catch (\Exception $e) {
@@ -250,7 +251,7 @@ class BeanRepository
         Log::debug($exchange);
 
         $post_detail = new Post();
-        if (isset($request['post_id'])){
+        if (isset($request['post_id']) && $request['post_id']){
             $post = $post_detail->
                 join('post_data', 'post_data.post_id', '=', 'post.id')
                 ->select('post.*','post_data.pv')
@@ -265,6 +266,9 @@ class BeanRepository
                 $post->imgs = $imgs;
                 $post->topic = $post->topic();
                 $star_detail['post'] = $post;
+            }else{
+                Log::debug($request['post_id']);
+                return jsonError('该帖子已被删除');
             }
         }
         $user_info = $this->getUserInfo($invite_code = $request['invite_code']);

+ 18 - 12
app/Repositories/BehaviorRecordRepositories.php

@@ -17,6 +17,7 @@ use App\Models\ReleaseRecord;
 use Illuminate\Database\QueryException;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Redis;
 
 class BehaviorRecordRepositories
 {
@@ -99,18 +100,18 @@ class BehaviorRecordRepositories
             $data['quantity_issued'] = $register['quantity_issued'];
             $this->registeredAccountsRecord->create($data);
             //修改行为统计数据
-            $behavior = Behavior::where('virus_behavior_id',$register['virus_behavior_id'])->first();
+            $behavior = Behavior::where('virus_behavior_id', $register['virus_behavior_id'])->first();
             $behavior->grant_rainbow_beans += intval($register['quantity_issued']);
             $behavior->trigger_times += 1;
             $behavior->absolute_progression += intval($register['absolute_progression']);
-            if($register['trigger_type']){
+            if ($register['trigger_type']) {
                 $behavior->effective_trigger += 1;
             }
             $behavior->save();
             DB::commit();
             return true;
         } catch (QueryException $exception) {
-            Log::debug('记录账本-注册-exception:'.$exception->getMessage());
+            Log::debug('记录账本-注册-exception:' . $exception->getMessage());
             DB::rollBack();
             return false;
         }
@@ -136,17 +137,17 @@ class BehaviorRecordRepositories
             $data['generation_quantity'] = $release['generation_quantity'];
             $data['quantity_issued'] = $release['quantity_issued'];
             $this->releaseRecord->create($data);
-            $behavior = Behavior::where('virus_behavior_id',$release['virus_behavior_id'])->first();
+            $behavior = Behavior::where('virus_behavior_id', $release['virus_behavior_id'])->first();
             $behavior->grant_rainbow_beans += intval($release['quantity_issued']);
             $behavior->trigger_times += 1;
-            if($release['trigger_type']){
+            if ($release['trigger_type']) {
                 $behavior->effective_trigger += 1;
             }
             $behavior->save();
             DB::commit();
             return true;
         } catch (QueryException $exception) {
-            Log::debug('记录账本-发布-exception:'.$exception->getMessage());
+            Log::debug('记录账本-发布-exception:' . $exception->getMessage());
             DB::rollBack();
             return false;
         }
@@ -173,17 +174,22 @@ class BehaviorRecordRepositories
             $data['quantity_issued'] = $general['quantity_issued'];
             $data['behavior_value'] = $general['behavior_value'];
             $this->generalLedgerRecord->create($data);
-            $behavior = Behavior::where('virus_behavior_id',$general['virus_behavior_id'])->first();
+            $behavior = Behavior::where('virus_behavior_id', $general['virus_behavior_id'])->first();
             $behavior->grant_rainbow_beans += intval($general['quantity_issued']);
             $behavior->trigger_times += 1;
-            if($general['trigger_type']){
+            if ($general['trigger_type']) {
                 $behavior->effective_trigger += 1;
             }
             $behavior->save();
             DB::commit();
+            //统计用户所有动态当天被阅读数
+            if ('read' == $general['behavior_flag']) {
+                $key = "user_visited_count" . date('Y-m-d');
+                Redis::zincrby($key, 1, $data['content_author_id']);
+            }
             return true;
         } catch (QueryException $exception) {
-            Log::debug('记录账本-普通行为-exception:'.$exception->getMessage());
+            Log::debug('记录账本-普通行为-exception:' . $exception->getMessage());
             DB::rollBack();
             return false;
         }
@@ -212,17 +218,17 @@ class BehaviorRecordRepositories
             $data['current_comment_id'] = $comment['current_comment_id'];
             $data['superior_comment_id'] = $comment['superior_comment_id'];
             $this->commentAccountRecord->create($data);
-            $behavior = Behavior::where('virus_behavior_id',$comment['virus_behavior_id'])->first();
+            $behavior = Behavior::where('virus_behavior_id', $comment['virus_behavior_id'])->first();
             $behavior->grant_rainbow_beans += intval($comment['quantity_issued']);
             $behavior->trigger_times += 1;
-            if($comment['trigger_type']){
+            if ($comment['trigger_type']) {
                 $behavior->effective_trigger += 1;
             }
             $behavior->save();
             DB::commit();
             return true;
         } catch (QueryException $exception) {
-            Log::debug('记录账本-评论-exception:'.$exception->getMessage());
+            Log::debug('记录账本-评论-exception:' . $exception->getMessage());
             DB::rollBack();
             return false;
         }

+ 17 - 1
app/Repositories/FeedRepositories.php

@@ -140,8 +140,9 @@ class FeedRepositories
                         $user = $this->userInfo($value['relate_id']);
                     }
                     if($user){
+                        Log::debug("测试feed关注状态:uid{$userInfo['uid']}followUid{$value['relate_id']}");
                         $value['relate_data'] = [
-                            'uid' => $user['uid'],
+                            'uid' => intval($user['uid']),
                             'username' => subtext($user['username'],10),
                             'avatar' => $user['avatar'],
                             'follow_status' => $this->getFollowStatus($userInfo['uid'],$value['relate_id']),
@@ -170,6 +171,7 @@ class FeedRepositories
             ];
         }
         $isFollow = 0;
+        Log::debug("内容feed关注uid{$uid}followUid{$follow_uid}");
         $followStatus = $this->getFollowStatus($uid, $follow_uid);
         if($followStatus){
             $isFollow = $followStatus;
@@ -206,4 +208,18 @@ class FeedRepositories
        return $this->postComment->where(['post_id'=>$post_id,'parent_id'=>0,'is_delete'=>0  ])->select('id','uid','username','content')->orderBy('id','desc')->take(2)->get();
     }
 
+    /**
+     *  取消关注删除对应feed
+     * @param $data
+     */
+    public function contentFeedDelete($data){
+        try{
+            $this->feed->where('uid', $data['uid'])->where('follow_uid', $data['follow_uid'])->delete();
+            Log::debug("取消关注删除对应feed成功uid{$data['uid']}followUid{$data['follow_uid']}");
+        }catch (\Exception $exception){
+            Log::error('取消关注删除对应feed失败'.json_encode($data).$exception->getMessage());
+            return false;
+        }
+    }
+
 }

+ 17 - 0
app/Repositories/MemberFollowTopicRepository.php

@@ -9,7 +9,10 @@
 namespace App\Repositories;
 
 use App\Models\MemberFollowTopic;
+use Illuminate\Database\QueryException;
+use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Redis;
 use Tymon\JWTAuth\Facades\JWTAuth;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Log;
@@ -27,10 +30,13 @@ class MemberFollowTopicRepository {
         $token =  JWTAuth::decode(JWTAuth::getToken());
         if($data){
             $category_topic_data = [];
+            $date = Carbon::now()->toDateTimeString();
             foreach($data as $value){
                 $category_topic_data[] = [
                     'uid' => $token['user']->uid,
                     'topic_id' => $value['id'],
+                    'created_at' => $date,
+                    'updated_at' => $date,
                 ];
             }
             DB::beginTransaction();
@@ -41,6 +47,13 @@ class MemberFollowTopicRepository {
                 if($res){
                     //更改关注状态
 
+                    //用户话题集合
+                    $key = 'topic.user_uid'.$token['user']->uid;
+                    foreach($data as $value){
+                        if(!Redis::zscore($key, $value['id'])){
+                            Redis::zincrby($key, 0, $value['id']);
+                        }
+                    }
                     return jsonSuccess();
                 }else{
                     return jsonError('关注失败');
@@ -77,6 +90,10 @@ class MemberFollowTopicRepository {
         $data = ['uid'=>$token['user']->uid,'topic_id'=>$topic_id];
         $res = $this->memberFollowTopic->create($data);
         if($res){
+            $key = 'topic.user_uid'.$token['user']->uid;
+            if(!Redis::zscore($key, $topic_id)){
+                Redis::zincrby($key, 0, $topic_id);
+            }
             return jsonSuccess();
         }else{
             return jsonError('关注失败');

+ 2 - 0
app/Repositories/PostRepositories.php

@@ -284,6 +284,7 @@ class PostRepositories
      */
     public function lists($request)
     {
+        Log::debug('内容列表'.json_encode($request));
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
 
         return $this->post
@@ -420,6 +421,7 @@ class PostRepositories
         return $this->post
             ->join('post_data', 'post_data.post_id', '=', 'post.id')
             ->select('post.*')
+            ->orderBy('is_suggest','desc')
             ->orderBy('weight','desc')
             ->paginate($perPage);
     }

+ 20 - 2
app/Service/AliYunVodService.php

@@ -1,8 +1,10 @@
 <?php
+
 namespace App\Service;
 
 
 use Illuminate\Support\Facades\Log;
+use ShaoZeMing\AliVod\SDK\CreateUploadImageRequest;
 use ShaoZeMing\AliVod\SDK\GetPlayInfoRequest;
 use ShaoZeMing\Aliyun\Core\DefaultAcsClient;
 use ShaoZeMing\Aliyun\Core\Profile\DefaultProfile;
@@ -14,9 +16,9 @@ class AliYunVodService
         try {
             $client = $this->initVodClient(config('aliyunvod.vod.AccessKeyID'), config('aliyunvod.vod.AccessKeySecret'));
             $playInfo = $this->getPlayInfo($client, $videoId);
-            if($playInfo && is_object($playInfo)){
+            if ($playInfo && is_object($playInfo)) {
                 return $playInfo->PlayInfoList->PlayInfo[0]->PlayURL;
-            }else{
+            } else {
                 return '';
             }
         } catch (\Exception $e) {
@@ -25,6 +27,22 @@ class AliYunVodService
         }
     }
 
+    public function getImgUploadAuth()
+    {
+        $client = $this->initVodClient(config('aliyunvod.vod.AccessKeyID'), config('aliyunvod.vod.AccessKeySecret'));
+        $imageInfo = $this->createUploadImage($client, 'default', 'jpg');
+        return $imageInfo;
+    }
+
+    public function createUploadImage($client, $imageType, $imageExt)
+    {
+        $request = new CreateUploadImageRequest();
+        $request->setImageType($imageType);
+        $request->setImageExt($imageExt);
+        $request->setAcceptFormat('JSON');
+        return $client->getAcsResponse($request);
+    }
+
     private function initVodClient($accessKeyId, $accessKeySecret)
     {
         $regionId = 'cn-shanghai';  // 点播服务接入区域

+ 8 - 3
app/Service/DetectionService.php

@@ -88,7 +88,12 @@ class DetectionService
             //根据scene和suggetion做相关的处理
             $suggestion = $sceneResult->suggestion;
             $rate = $sceneResult->rate;
-            if($suggestion!='pass' && $rate>80){
+//            if($suggestion!='pass' && $rate>80){
+//                $flag = false;
+//            }
+            if ($suggestion == 'block') {
+                $flag = false;
+            } elseif ($suggestion == 'review' && $rate > 90) {
                 $flag = false;
             }
         }
@@ -172,14 +177,14 @@ class DetectionService
                 array_push($taskArr, $$task);
             }
             $request->setContent(json_encode(array("tasks" => $taskArr,
-                "scenes" => array("ad", "porn", "terrorism"))));
+                "scenes" => array("porn", "terrorism"))));
         }else if(is_string($img)){
             $task1 = array('dataId' =>  md5(uniqid()),
                 'url' => $img,
                 'time' => round(microtime(true)*1000)
             );
             $request->setContent(json_encode(array("tasks" => array($task1),
-                "scenes" => array("ad", "porn", "terrorism"))));
+                "scenes" => array("porn", "terrorism"))));
         }
         return $this->processResponse($request);
     }

+ 1 - 0
app/Transformers/Post/DetailTransformer.php

@@ -51,6 +51,7 @@ class DetailTransformer extends TransformerAbstract
             'username' => subtext($post['username'], 10),
             'avatar' => $post['avatar'],
             'topic' => $topic,
+            'topic_ids' => $post['topic_ids'],
             'title' => $post['title'],
             'content' => $post['content'],
             'location' => $post['location'],

+ 1 - 1
app/Transformers/Post/SuggestTransformer.php

@@ -37,7 +37,7 @@ class SuggestTransformer extends TransformerAbstract
             $comment[] = [
                 'id' => $item->id,
                 'username' => subtext($item->username, 10),
-                'content' => $item->content,
+                'content' => $item->is_delete?'该评论已被删除':$item->content,
             ];
         }
         $topic = [];

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
resources/views/post/detail.php


+ 1 - 0
routes/api.php

@@ -20,6 +20,7 @@ $api->version('v1', [
     //根据行为标识查询行为
     $api->get('getBehaviorByIdentify', 'BehaviorController@getBehaviorByIdentify');
     $api->get('getVodUploadAuth', 'AliYunVodController@getVodUploadAuth');
+    $api->get('vod/upload/image', 'AliYunVodController@getImgUploadAuth');
     $api->get('getPlayUrlByVideoId', 'AliYunVodController@getPlayUrlByVideoId');
     //获取所有行为
     $api->get('getAllBehavior', 'BehaviorController@getAllBehavior');