在打开文章时,判断用户是否点赞或者收藏,切换显示点赞收藏图标;

在做到某项目的文章显示时,考虑到用户的操作体验,添加了用户的点赞,评论,收藏行为;

首先去阿里图标矢量库;找几个关于点赞收藏评论的图标;
下载下来;

找到的这几张图标还不错;在这里插入图片描述

大概写个样式,试试效果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div style="width:660px;">
			 <!-- 点赞图标存放处-->
			<div style="width:220px; float: left;">
				<a href="javaScript:void(0)" onclick="toLink()">
				<img style=" width: 74px; height: 74px; margin-right: 146px;"  src="img/dzPre.png"/>
				</a>
			</div>
			<!-- 评论图标存放处 -->
			<div style="width:220px; float: left;">
				<a href="javaScript:void(0)" onclick="toComment()">
				<img style=" width: 74px; height: 74px;margin-left: 73px;margin-right: 73px;"  src="img/plPre.png"/>
				</a>
			</div>
			<!-- 收藏图标存放处 -->
			<div style="width:220px; float: left;">
				<a href="javaScript:void(0)" onclick="toCollect()">
				<img style=" width: 74px; height: 74px;margin-left: 146px;"  src="img/scPre.png"/>
				</a>
			</div>
			<!-- 清除浮动 -->
			<div style="clear: left;"></div>	
		</div>
		<!-- 预先留给评论区的区域 -->
		<div style="width:660px;" id="commentArea"></div>
	</body>
</html>

效果;
在这里插入图片描述

然后考虑到该交流平台的实际使用; 若用户没有登录;就直接放置三个白色的点赞,评论,收藏图片;
(使用session进行判断)
在这里插入图片描述
然后还需要考虑到该用户若是登录了,就去根据用户的Id和当前文章的Id查询出点赞与收藏关系;
用Map集合将两个结果存储起来;
分别用不同的键"like""collect";
然后根据查询到的信息,决定是否为点赞或者收藏了;
最后将取得值存入隐藏的input标签中;

//这里根据用户是否登录,决定是否去查询当前用户是否点赞与收藏了;
            if (userAcc != null) {
                //若登录了,就去查询一下信息;把并且存到下面的隐藏域中,这样的话,后面判断是否点赞/收藏就比较方便了;
                $.get("../../showNews/isLikeAndCollectByNewIdAndUserId", {
                    userId: userId,
                    newId: newId
                }, function (res) {
                    if (res.code == 500) {
                        alert("哎呦,出错了");
                    } else if (res.code == 200) {
                        //把得到的数据放到隐藏域;
                        $("input[name='isLike']").val(res.data.like);
                        $("input[name='isCollect']").val(res.data.collect);
                    }
                })
            }

在这里插入图片描述

控制层处理

/**
* @author by 小智RE0
 * 用户登录状态下,根据用户的Id和新闻的Id查询一下是否存在着点赞或者收藏;
 * @param userId    用户的Id
 * @param newId     新闻的Id
 */
@ResponseBody
@GetMapping(value = "/isLikeAndCollectByNewIdAndUserId")
public CommonResult isLikeAndCollectByNewIdAndUserId(Integer userId,Integer newId){
    CommonResult commonResult = null;
    try{
        Map<String,String> isLikeOrCollect =showNewsService.isLikeAndCollectByNewIdAndUserId(userId,newId);
        commonResult  = new CommonResult(200,"显示新闻时;根据用户Id和新闻Id查询点赞与收藏",isLikeOrCollect);
    }catch (Exception e){
        e.printStackTrace();
        commonResult = new CommonResult(500,"显示新闻时;根据用户Id和新闻Id查询点赞与收藏出现异常",null);
    }
    return commonResult;
}

服务层处理

/**
* @author by 小智RE0
* 用户登录状态下,根据用户的Id和新闻的Id查询一下是否存在着点赞或者收藏;
* @param userId 用户的Id
* @param newId  新闻的Id
*/
public Map<String, String> isLikeAndCollectByNewIdAndUserId(Integer userId, Integer newId) {
   //先查询点赞关系;查询到1的话就说明点赞了
   Integer like =  showNewsDao.isLikeByNewIdAndUserId(userId,newId);
   //在查询收藏关系;查询到1的话就说明收藏了;
   Integer collect = showNewsDao.isCollectByNewIdAndUserId(userId,newId);

   //测试查看;
   System.out.println("-----------当前用户点赞了-------"+like);
   System.out.println("-----------当前用户收藏了-------"+collect);
   Map<String, String> map = new HashMap<>();
   if(like.equals(1)){
       map.put("like","alreadyLike");
   }else{
       map.put("like","noLike");
   }

   if(collect.equals(1)){
       map.put("collect","alreadyCollect");
   }else{
       map.put("collect","noCollect");
   }

   return map;
}

数据交互层处理

/**
* 查询新闻与用户的点赞关系,得到结果;0没有点赞/1点赞了
* @param userId 用户Id
* @param newId  新闻Id
*/
Integer isLikeByNewIdAndUserId(@Param("userId") Integer userId, @Param("newId") Integer newId);

/**
* 查询新闻与用户的收藏关系,得到结果;0没有收藏/1收藏了
* @param userId 用户Id
* @param newId  新闻Id
*/
Integer isCollectByNewIdAndUserId(@Param("userId") Integer userId, @Param("newId") Integer newId);

SQL语句

<!--查询新闻与用户的点赞关系: 0:没有点赞  1:点赞了-->
<select id="isLikeByNewIdAndUserId" resultType="integer">
    SELECT count(1) FROM user_like_news WHERE user_id = #{userId} AND news_id = #{newId}
</select>

<!--查询新闻与用户的收藏关系: 0:没有收藏  1:收藏了-->
<select id="isCollectByNewIdAndUserId" resultType="integer">
    select count(1) from user_collect where user_id = #{userId} and  news_id = #{newId}
</select>

数据表

在这里插入图片描述

在文章查询显示的过程中;根据情况判断,进行拼接图片;
在这里插入图片描述

收藏且点赞 ;在这里插入图片描述

点赞,未收藏;在这里插入图片描述

未点赞,未收藏;在这里插入图片描述

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
布谷科技直播系统源码v1.1.3,集视频、语音、动态、直播、社交等功能于一身。 布谷科技全面分析市场趋势、强势推出更符合市场需求的一对一视频聊天交友解决方案——布谷一对一视频交友系统。 前端功能说明: 登入注册:手机验证码登入、编辑个人信息、上传头像 首页直播:查看主播用户、一键约爱接单、搜索主播用户、查看关注主播、查看用户资料、查看用户私照和视频、私信语音和视频功能、离线主播预约、开通主播守护 语音功能详情:关注该用户、赠送礼物、屏蔽对方语音、查看语音消费、评价该主播 视频功能详情:关闭或开启主播画面、关闭或开启主播声音、设置前置或者后置摄像头、礼物赠送、轮盘抽奖、礼物背包功能、美颜功能 小视频功能:小视频拍摄和上传、观看小视频、关注视频作者、小视频送礼打赏、视频点赞、视频转发、与视频作者视频通话 主播动态:上传自己的动态信息(文字、图片、视频)、动态点赞、动态评论、查看用户信息 消息提醒:查看系统消息、查看离线主播预约信息、查看其他用户私信信息、查看私信用户个人资料 个人设置:上传用户头像、修改个人资料、查看关注用户、查看粉丝、实名认证、上传私照、充值账户钻石、充值会员、收益提现、邀请好友、推广明细、新手引导、查看等级、创建或加入公会、设置消息免打扰、联系客服、查看用户黑名单、切换语言、退出登入、设置直播间按收费价格 后台功能说明: 首页:站内各项数据统计 系统设置:轮播图管理、文件储存、公共配置、设置系统公告、设置通话标准收费、设置注册成、功钻石获得量、设置视频等级限制、上传视频是否认证、设置私照收费标准、脏、字库添加、是否开启女性聊天付费、设置私聊付费价格、视频聊页面警示信息、短视频收费范围设定、视频通话付费范围设定、自动打招呼话术、是否开启自动打招呼功能、每分钟语音通话扣费金额、首页是否显示离线用户、设置短视频、每日上传次数、短视频长限制、设置短视频免费用户管理:添加管理员、设置管理员权限、查看本站用户信息、编辑站内用户资料、查看本站、用户上传视频、管理站内用户(拉黑、推荐、账户管理、禁用头像等)、用户推荐 文章管理:文章编辑、文章发布、文章顶置、管理文章分类、设置添加文章标签、设置VIP规则、设置VIP用户图标 等级管理:设置等级名称、设置等级升级获得的收益值、设置等级升级需要的钻石数 财务管理:设定充值规则、查看充值记录、查看消费收益记录、查看提现记录、设置支付渠道、设置VIP购买规则 礼物管理:添加礼物分类、设置礼物特效、设置礼物图片、设置礼物价格、设置礼物名称、对现有礼物修改或者删除 系统消息:个人消息配置、系统消息配置、系统消息推送记录 审核认证:查看用户上传视频、审核编辑用户上传视频、查看用户私照、审核编辑用户私照、直播间封面图审核、审核用户认证信息 举报管理:设置举报问题分类、查看举报信息、审核举报信息 加盟合作:查看加盟合作用户列表 视频通话列表:查看正在视频通话的主播和用户、可操作正在通话的主播和用户 邀请管理:查看邀请记录、查看邀请收益记录 评价管理:设置评价标签、修改原有的评价标签、删除标签 渠道代理:查看渠道代理列表、查看渠道代理提现记录、查看渠道代理注册详情 轮盘管理:设置和添加轮盘礼物、设置轮盘抽奖价格、设置礼物中奖概率、查询中奖记录 动态管理:查询动态详情、根据用户ID搜索历史动态详情、删除用户动态详情

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值