Douyin風のショートビデオAPPをゼロから構築する - バックエンドメッセージビジネスモジュール開発 (2) - 基本バージョンの終了

プロジェクトは継続的に更新されます。

イミテーションビブラートショートビデオAPPコラム

目次

システムメッセージストレージ

MongoDB ページ クエリ システム メッセージ リスト

システムメッセージを削除する


システムメッセージストレージ

最後のいいねとコメントがまだ残っています

ここのコメントが気に入ったら、ビデオのカバーが返送されます

 CommentControllerの類似ルートを探す

次の 2 つのサービスを挿入する必要があります。 

 ここでは、前に書いたコードをコピーし、いくつかの変更を加えます。

 

 ここでは vlogId を取得する必要がありますが、これはここでは利用できないため、それを取得するためのインターフェイスを記述する必要があります。

 

 達成: 

次に、commentService を通じてそれを呼び出すことができます。

 //系统消息:点赞评论
        Comment comment =commentService.getComment(commentId);
        Vlog vlog = vlogService.getVlog(comment.getVlogId());
        Map msgContent = new HashMap();
        msgContent.put("vlogId",vlog.getId());
        msgContent.put("vlogCover",vlog.getCover());
        msgContent.put("commentId",commentId);

        msgService.createMsg(userId,
                comment.getCommentUserId(),
                MessageEnum.LIKE_COMMENT.type,
                msgContent);

書いた後、コメントや返信にいいねをするテストを行います。

 次に、MongoDB にアクセスして表示します。

 

 

MongoDB ページ クエリ システム メッセージ リスト

システム メッセージの送信操作が完了したら、メッセージ インターフェイスでクエリ操作を行う必要があります。クエリはページ分割されます。

まずサービス層を書きましょう:

 ここではリポジトリ、カスタム条件クエリを実装します。

次に、サービス実装で次のようにします。

 実際、ここで判断を下す必要があり、以前に注意を払ったかどうかを判断し、そうでない場合はファンが戻ってくる兆候があるでしょう

MO の isFriend フィールドを拡張するだけで済みます。

 @Override
    public List<MessageMO> queryList(String toUserId, Integer page, Integer pageSize) {

        Pageable pageable = (Pageable) PageRequest.of(page,
                                                        pageSize,
                                                        Sort.Direction.DESC,
                                                        "CreateTime");
        List<MessageMO> list = messageRepository.findAllByToUserIdOrderByCreateTimeDesc(toUserId,pageable);

        for(MessageMO msg: list){
            //如果类型是关注消息,则需要查询我之前是否关注过他,用于在前端标记“互粉”
            if(msg.getMsgType() != null &&msg.getMsgType() == MessageEnum.FOLLOW_YOU.type){
              Map map =   msg.getMsgContent();
              if(map == null){
                  map = new HashMap();
              }
            String relationship = redis.get(REDIS_FANS_AND_VLOGGER_RELATIONSHIP+":"+msg.getToUserId()+":"+msg.getFromUserId());
            if(StringUtils.isNotBlank(relationship)&&relationship.equalsIgnoreCase("1")){
              map.put("isFriend",true);
            }else {
                map.put("isFriend",false);
            }
            msg.setMsgContent(map);
            }
        }
        return list;
    }

 ここでフロントエンドも確認できます

 ここでバックエンドインターフェイスを構築できます

 バックエンドで MsgController を構築します。

@Slf4j
@Api(tags = "MsgController 消息功能模块接口")
@RequestMapping("Msg")
@RestController
public class MsgController {

    @Autowired
    private MsgService msgService;

    @GetMapping("list")
    public GraceJSONResult list(@RequestParam String userId,
                                @RequestParam Integer page,
                                @RequestParam Integer pageSize){

        //mongoDB 从0分页,区别于数据库
        if(page == null){
            page = COMMON_START_PAGE_ZERO;
        }
        if(pageSize == null){
            pageSize=COMMON_PAGE_SIZE;
        }
        List<MessageMO> list = msgService.queryList(userId, page, pageSize);
        return GraceJSONResult.ok(list);
        
    }


}

テストを開始します。

 

システムメッセージを削除する

まず、どこから削除を開始できるかを考えます。

まず、メッセージ ページを長押しするか右にスワイプして削除します。

2 番目のタイプは、ユーザーの行動にバインドされています。フォローを解除した場合は、この注意メッセージを削除します

どちらのタイプのメッセージも削除をトリガーできるので、自分で試してみることができます。

ここで長押しして削除することができます。その方法を自分で試してみてください。

 

これまでのところ、Douyin 風のショートビデオ APP の基本バージョンの制作は終了していますが、このコラムの最初の記事から現在まで、プロジェクトをゼロから構築し、コードを記述するのに約 1 か月かかりました。テストを完了したら、後で上級バージョンを更新し、サーバーにアップロードしたいと考えています。

以前は、コードに関する質問があり、理解できなかった場合は、私にプライベート メッセージを送ってください。ソースコードが欲しい友達は私とプライベートにチャットすることもできます~

おすすめ

転載: blog.csdn.net/m0_64005381/article/details/127771532