旅游线路收藏功能

14旅游线路收藏功能
14.1分析
14.1.1 判断当前登录用户是否收藏过该线路
当页面加载完成后,发送ajax请求,获取用户是否收藏的标记
根据标记,展示不同的按钮样式

14.2编写代码
14.2.1 后台代码
RouteServlet:

public void isFavorite(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获取线路id
String rid = request.getParameter(“rid”);

//2. 获取当前登录的用户 user
User user = (User) request.getSession().getAttribute("user");
int uid;//用户id
if(user == null){
    //用户尚未登录
    uid = 0;
}else{
    //用户已经登录
    uid = user.getUid();
}

//3. 调用FavoriteService查询是否收藏
boolean flag = favoriteService.isFavorite(rid, uid);

//4. 写回客户端
writeValue(flag,response);

}

FavoriteService

@Override
public boolean isFavorite(String rid, int uid) {

Favorite favorite = favoriteDao.findByRidAndUid(Integer.parseInt(rid), uid);

return favorite != null;//如果对象有值,则为true,反之,则为false

}

FavoriteDao
@Override
public Favorite findByRidAndUid(int rid, int uid) {
Favorite favorite = null;
try {
String sql = " select * from tab_favorite where rid = ? and uid = ?";
favorite = template.queryForObject(sql, new BeanPropertyRowMapper(Favorite.class), rid, uid);
} catch (DataAccessException e) {
e.printStackTrace();
}
return favorite;
}

14.2.2 前台代码
route_detail.html

$(function () {
// 发送请求,判断用户是否收藏过该线路
var rid = getParameter(“rid”);
$.get(“route/isFavorite”,{rid:rid},function (flag) {
if(flag){
// 用户已经收藏过
//
//设置收藏按钮的样式
$("#favorite").addClass(“already”);
$("#favorite").prop(“disabled”,disabled);

    }else{
        // 用户没有收藏
    }
});

14.3收藏次数的动态展示
前台:
//设置收藏次数
$("#favoriteCount").html(“已收藏”+route.count+“次”);

后台:
RouteService
//4. 查询收藏次数
int count = favoriteDao.findCountByRid(route.getRid());
route.setCount(count);

FavoriteDao
@Override
public int findCountByRid(int rid) {
String sql = “SELECT COUNT(*) FROM tab_favorite WHERE rid = ?”;

return template.queryForObject(sql,Integer.class,rid);

}

14.4点击按钮收藏线路
14.4.1 分析:

14.4.2 编码
前台代码
$(function () {
// 发送请求,判断用户是否收藏过该线路
var rid = getParameter(“rid”);
$.get(“route/isFavorite”,{rid:rid},function (flag) {
if(flag){
// 用户已经收藏过
//
//设置收藏按钮的样式
$("#favorite").addClass(“already”);
$("#favorite").attr(“disabled”,“disabled”);

        //删除按钮的点击事件
        $("#favorite").removeAttr("onclick");
    }else{
        // 用户没有收藏
    }
});

});

//点击收藏按钮触发的方法
function addFavorite(){
var rid = getParameter(“rid”);
//1. 判断用户是否登录
$.get(“user/findOne”,{},function (user) {
if(user){
//用户登录了
//添加功能
$.get(“route/addFavorite”,{rid:rid},function () {

            //代码刷新页面
            location.reload();
        });

   }else{
       //用户没有登录
       alert("您尚未登录,请登录");
       location.href="http://localhost/travel/login.html";
   }
})

}

后台代码
RouteServlet
public void addFavorite(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获取线路rid
String rid = request.getParameter(“rid”);
//2. 获取当前登录的用户
User user = (User) request.getSession().getAttribute(“user”);
int uid;//用户id
if(user == null){
//用户尚未登录
return ;
}else{
//用户已经登录
uid = user.getUid();
}

//3. 调用service添加
favoriteService.add(rid,uid);

}

FavoriteService
@Override
public void add(String rid, int uid) {
favoriteDao.add(Integer.parseInt(rid),uid);
}

FavoriteDao
@Override
public void add(int rid, int uid) {
String sql = “insert into tab_favorite values(?,?,?)”;

template.update(sql,rid,new Date(),uid);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值