旅游线路收藏

判断当前登录用户是否收藏过该线路

当页面加载完成后,发送ajax请求,获取用户是否收藏的标记,

根据标记,展示不同的按钮样式

 

 

 

 

 

 

 

后台代码

RouteServlet类:

复制代码
    /**
     * 判断当前登录用户是否收藏过该线路
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    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接口:

复制代码
public interface FavoriteService {
    /**
     * 判断是否收藏
     * @param rid
     * @param uid
     * @return
     */
    public boolean isFavorite(String rid,int uid);
}
复制代码

FavoriteServiceImpl实现类:

public class FavoriteServiceImpl implements FavoriteService {
    private FavoriteDao favoriteDao = new FavoriteDaoImpl();
    @Override
    public boolean isFavorite(String rid, int uid) {
        Favorite favorite = favoriteDao.findByRidAndUid(Integer.parseInt(rid), uid);
        return favorite != null;//如果对象有值,则为true,反之则为false
    }
}

FavoriteDao接口:

复制代码
public interface FavoriteDao {

    /**
     * 根据rid和uid查询收藏信息
     * @param rid
     * @param uid
     * @return
     */
    public Favorite findByRidAndUid(int rid,int uid);
}
复制代码

FavoriteDaoImpl实现类:

复制代码
public class FavoriteDaoImpl implements FavoriteDao {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    @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;
    }
}
复制代码

 

 

 

 

前台代码

Route_detail.html页面:

复制代码
$(function () {
        //发送请求,判断用户是否收藏过该线路
        var rid = getParameter("rid");

        $.get("route/isFavorite",{rid:rid},function (flag) {
            if (flag){
                //用户已经收藏过了
                //设置收藏按钮的样式
                //<a  class="btn already" disabled="disabled">
                $("#favorite").addClass("already")
                $("#favorite").prop("disabled",disabled);
            }else {
                //用户没有收藏

            }
        });
    });
复制代码

 

 

 

收藏次数动态展示

FavoriteDao接口:

/**
     *  根据线路id查询收藏次数
     * @param rid
     * @return
     */
    int findCountByRid(int rid);

FavoriteDaoImpl实现类:

@Override
    public int findCountByRid(int rid) {
        String sql = "select count(*) from tab_favorite where rid = ?";
        return template.queryForObject(sql,Integer.class,rid);
    }

RouteServiceImpl实现类:

复制代码
 @Override
    public Route findOne(String rid) {
        //1、根据id去route表中查询route对象
        Route route = routeDao.findOne(Integer.parseInt(rid));
        //2、根据route的id查询图片集合信息
        List<RouteImg> routeImgList = routeImgDao.findByRid(route.getRid());
        //将集合设置到route对象
        route.setRouteImgList(routeImgList);
        //3、根据route的sid(商家id)查询商家对象
        Seller seller = sellerDao.findById(route.getSid());
        route.setSeller(seller);

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

        return route;
    }
复制代码

route_detail.html页面:

复制代码
//2、发送请求,请求route/findOne
         $.get("route/findOne",{rid:rid},function (route) {
             //3、解析数据,填充html
             $("#rname").html(route.rname);
             $("#routeIntroduce").html(route.routeIntroduce);
             $("#price").html("¥"+route.price);
             $("#sname").html(route.seller.sname);
             $("#consphone").html(route.seller.consphone);
             $("#address").html(route.seller.address);
             //设置收藏次数
             $("#favoriteCount").html("已收藏"+route.count+"次");
复制代码

 

posted @   xjw12345  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示