通过redis添加书籍销量榜功能。

web作业是在线书城,之前由于时间匆忙就随便做了一个,后来想慢慢把功能写全。利用redis的zset把排行榜这块做完了。

界面大体是这个样子。因为前段的样式css不会太会,就把之前项目的样式拿过来


左侧的排行榜是根据用户提交订单是进行添加的。假如《我和你》在提交两本书籍,截图如下(左图为效果显示,右图为redis数据库里的数据):



效果就显而易见了。

下面看代码:

两个主要算法:

	//传进来购买的数量,添加到排行榜
	public void addSaleCount(Order order){
		int num =Integer.parseInt(order.getOrderNum()) ;
		jedisClientSingleService.zincrby("bookSaleNum:", num, order.getBookName()+"/"+order.getBookId());
	}
	public List<Map<String,String>> rankingList() {
		final int ARTICLES_PER_PAGE = 10;
		int page = 1;
		//根据投票数
		String bookSaleNum ="bookSaleNum:";
		//根据发起时间
        int start = (page - 1) * ARTICLES_PER_PAGE;
        int end = start + ARTICLES_PER_PAGE - 1;
        Set<String> values = jedisClientSingleService.zrevrange(bookSaleNum, start, end);
        List<Map<String,String>> articles = new ArrayList<Map<String,String>>();
        for (String value : values){
            Map<String,String> bookData = jedisClientSingleService.hgetAll(value);
            Double score =jedisClientSingleService.zscore(bookSaleNum, value) ;
            bookData.put("value", value);
            bookData.put("score", score.toString()) ;
            articles.add(bookData);
        }
      return articles;
    }
在对应的controller调用这些方法就可以了,因为前台要用到书籍的id,因此我把zset的id设置成书籍名+“/”+书籍id。

前台js代码:

function getRankingList(){
		$.ajax({
			url:'book/rankingList',
			type:'POST',
			dataType:'json',
			success:function(data){
				console.log(data);
				initRankinglist(data);
			}
		});
	}
拼写html

function initRankinglist(list){
		for ( var i=0;i<list.length;i++){
			var arr= new Array(); 
			var arr2 = new Array() ;
		    arr =list[i].value.split("/");
		    var saleNum = list[i].score ;
		    arr2 = saleNum.split(".") ;
			var str='<div class="shuming">' ;
			str += '<a href="javascript:void(0);" 
				οnclick="show('+'\''+arr[1]+'\''+ ')">'+arr[0]+'('+arr2[0]+'册)'+'
				</a><a href="#" target="_blank"></a></br>' ;
			str += '</div>' ;
			$('#rankList').append(str) ;
		}
	}

就这样功能基本就完成了。

欢迎骚扰


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值