创新实训(31)——有关用户订阅博客及标签的接口

前言

本来没有打算做订阅功能,这个功能是到现在,随着项目的逐渐进行,感觉需要订阅的功能,所以才加上的。
首先建了订阅表,然后实现了一些功能。
在这里插入图片描述
这里将标签的订阅和博客的订阅,存在了一张表中,用type区分,儿subscribed_id为博客或者标签的id

添加订阅信息

    /**
     * 添加订阅信息
     * @param username
     * @param subscriptionId
     * @param type
     * @return
     */
    @PermitAll
    @RequestMapping(value = "/add", method = RequestMethod.GET, produces = "application/json")
    public Response addSubscription(
            @RequestAttribute String username,
            @RequestParam Integer subscriptionId,
            @RequestParam Integer type )  {

        User ouser = userService.selectUserByName(username);
        //设置日期格式
        userSubscriptionService.insertSubscription(ouser.getId(),subscriptionId,type);
        return Response.success("用户订阅成功");
    }
    /**
     * 添加一条订阅信息
     * @param userId
     * @param subscriptionId
     * @param type
     */
    public  void insertSubscription(int userId,int subscriptionId,int type)
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String subscribedTime = df.format(new Date());
        UserSubscription userSubscription  =UserSubscription.builder()
                .userId(userId)
                .subscriptionId(subscriptionId)
                .type(type)
                .subscribedTime(subscribedTime)
                .build();
        subscriptionDao.insertSubscription(userSubscription);
    }
    /**
     * 插入一条订阅记录
     * @param userSubscription
     */
    @Insert("insert into user_subscription (user_id , subscribed_id,type,subscribed_time) " +
            "values (#{userSubscription.userId} , #{userSubscription.subscriptionId} , #{userSubscription.type} , #{userSubscription.subscribedTime}) ")
    void insertSubscription(@Param("userSubscription") UserSubscription userSubscription);

删除订阅信息

    /**
     *删除订阅信息
     * @param username
     * @param subscriptionId
     * @param type
     * @return
     */
    @PermitAll
    @RequestMapping(value = "/{type}/{subscriptionId}", method = RequestMethod.DELETE, produces = "application/json")
    public Response deleteSubscription(
            @RequestAttribute String username,
            @PathVariable Integer type,
            @PathVariable Integer subscriptionId
            )  {

        User ouser = userService.selectUserByName(username);
        UserSubscription userSubscription  =UserSubscription.builder()
                .userId(ouser.getId())
                .subscriptionId(subscriptionId)
                .type(type)
                .build();
        userSubscriptionService.deleteSubscription(userSubscription);
        return Response.success("订阅删除成功");
    }
    /**
     * 删除一条订阅
     * @param userSubscription UserSubscription
     */
    public  void deleteSubscription(UserSubscription userSubscription)
    {
        subscriptionDao.deleteSubscription(userSubscription);
    }
    /**
     * 删除一条订阅
     * @param userSubscription
     */
    @Delete("delete from user_subscription " +
            " where user_id = #{userSubscription.userId} " +
            " and subscribed_id = #{userSubscription.subscriptionId} " +
            " and type = #{userSubscription.type} ")
    void deleteSubscription(@Param("userSubscription") UserSubscription userSubscription);

获取订阅列表

由于订阅的有标签和博客,所以使用了Object类型的数据,同时存放标签和博客在一个list中

    /**
     * 获取订阅列表
     * @param username
     * @return
     */
    @PermitAll
    @RequestMapping(value = "/list", method = RequestMethod.GET, produces = "application/json")
    public Response getSubscriptionList(
            @RequestAttribute String username
    )  {

        User ouser = userService.selectUserByName(username);

        List<Object> list = userSubscriptionService.selectSubscriptionList(ouser.getId());
        return Response.success("获取订阅列表成功" , list);

    }
   /**
     * 获取订阅列表
     * @param userId
     * @return
     */
    public   List<Object>  selectSubscriptionList(int userId)
    {

        List<UserSubscription> userSubscriptions = subscriptionDao.selectSubscriptionList(userId);
        List<Object> subscriptionList = new ArrayList<>();
        for(UserSubscription userSubscription :userSubscriptions)
        {
            //如果是博客
            if(userSubscription.getType() == 0)
            {
                Blog blog = blogDao.selectBlogById(userSubscription.getSubscriptionId());

                if(blog != null)
                {
                    SubBlog subBlog = new SubBlog();
                    subBlog.setFeed(blog.getFeed());
                    subBlog.setUrl(blog.getUrl());
                    subBlog.setId(blog.getId());
                    subBlog.setTitle(blog.getTitle());
                    subscriptionList.add(subBlog);

                }

            }
            else
            {
                Tag tag = tagDao.getTagById(userSubscription.getSubscriptionId());
                if(tag != null)
                {
                    SubTag subTag = new SubTag();
                    subTag.setId(tag.getId());
                    subTag.setName(tag.getName());
                    subTag.setDescription(tag.getDescription());
                    subTag.setCount(tag.getCount());
                    subscriptionList.add(subTag);
                }

            }
        }
        return subscriptionList;
    }

先获取到,订阅的id,然后根据订阅的id和tpye分别获取到对应的标签或者博客的详细信息,然后返回

    /**
     * 获取订阅列表
     * @param userId
     * @return
     */
    @Select("select  * from  user_subscription  " +
            " where user_id = #{userId} ")
    @Results(id = "UserSubscription", value = {
            @Result(property = "id", column = "id"),
            @Result(property = "userId", column = "user_id"),
            @Result(property = "subscriptionId", column = "subscribed_id"),
            @Result(property = "type", column = "type"),
            @Result(property = "subscribedTime", column = "subscribed_time"),
    })
    List<UserSubscription>  selectSubscriptionList(@Param("userId") int userId);

获取订阅状态

查询表格,获取是否被订阅,0为没有被订阅 1为已经被订阅

    /**
     *  获取订阅状态
     * @param username
     * @param type
     * @param subscriptionId
     * @return
     */

    @PermitAll
    @RequestMapping(value = "/status/{type}/{subscriptionId}", method = RequestMethod.GET, produces = "application/json")
    public Response getSubscriptionStatus(
            @RequestAttribute String username,
            @PathVariable Integer type,
            @PathVariable Integer subscriptionId

    )  {

        User ouser = userService.selectUserByName(username);
        int status = userSubscriptionService.selectSubscriptionBysubscriptionId(ouser.getId(),subscriptionId,type);
        return Response.success("获取订阅列表成功" , status);

    }
/**
     * 获取是否被订阅
     * @param userId
     * @param subscribedId
     * @param type
     * @return
     */
    public int selectSubscriptionBysubscriptionId( int userId, int subscribedId, int type )
    {
        UserSubscription userSubscription =subscriptionDao.selectSubscriptionBysubscriptionId(userId,subscribedId,type);
        if(userSubscription == null)
        {
            return 0;
        }
        return 1;
    }

 /**
     * 获取订阅
     * @param userId
     * @param subscribedId
     * @param type
     * @return
     */

    @Select("select * from user_subscription where user_id = #{userId} and type = #{type}  and subscribed_id = #{subscribedId}")
    UserSubscription selectSubscriptionBysubscriptionId(@Param("userId") int userId,@Param("subscribedId") int subscribedId,@Param("type") int type);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值