@RequestMapping("/sysRecommend")
public String sysRecommend(HttpSession session, Model model, String page)
{
PUsersModel pUsersModel=(PUsersModel)session.getAttribute("pUsersModel");
//先判断当前用户是否已经浏览过商品
LookshistoryModel lookModel=new LookshistoryModel();
lookModel.setUserid(pUsersModel.getUid());
List lists=lookshistoryService.selectLookshistory(lookModel);//查询总记录并做降序处理
Map gmap=new HashMap();
if(lists!=null&lists.size()>0){ //根据做商品过滤筛选 精准推荐
int hits=0;//获取浏览总数
for(LookshistoryModel m:lists){
gmap.put(m.getPgtype(),m.getHits());//填充商品占比情况
hits+=m.getHits();//叠加浏览次数
}
Map gpmap=new HashMap();//对象储存转换,类型--->>次数 模式
for (Map.Entry entry : gmap.entrySet()) {
BigDecimal percentage=new BigDecimal(entry.getValue()).divide(new BigDecimal(hits),2,BigDecimal.ROUND_HALF_DOWN);//当前最高商品的占比
int result=percentage.multiply(new BigDecimal(12)).intValue();//推荐每个商品出现的占比情况
gpmap.put(entry.getKey(),result);
}
List afterGoodsModels =new ArrayList();
int afterPageNums =0;
for (Map.Entry entry : gmap.entrySet()) {//最终推荐出商品情况
int afterPageItem = goodsService.countAfterGoodsByKinds(entry.getKey());
final int afterPageSize = entry.getValue();
if (page == null)
{
page = "1";
}
PageUtil afterPageUtil = new PageUtil(afterPageItem, afterPageSize, Integer.parseInt(page));
int afterPageNum = afterPageUtil.getPageNum();
afterPageNums+=afterPageNum;
int afterStartRow = afterPageUtil.getStartRow();
List goodsModels = goodsService.getAfterCheckGoodsByPageBykinds(afterStartRow, afterPageSize, entry.getKey());
Boolean afterHasNextPage = (Integer.parseInt(page) != afterPageNum) && (afterPageNum != 0);
model.addAttribute("afterHasPrePage", Integer.parseInt(page) != 1);
model.addAttribute("afterHasNextPage", afterHasNextPage);
model.addAttribute("afterGoodsModels", afterGoodsModels);
model.addAttribute("afterPageItem", afterPageItem);
model.addAttribute("nowPage", Integer.parseInt(page));
afterGoodsModels.addAll(goodsModels);
}
model.addAttribute("afterPrePage", Integer.parseInt(page) - 1);
model.addAttribute("afterNextPage", Integer.parseInt(page) + 1);
model.addAttribute("afterPageNum", afterPageNums);//总页面
model.addAttribute("afterGoodsModels", afterGoodsModels);//总商品
}else{//根据大众浏览推荐
lists=lookshistoryService.selectLookshistory(new LookshistoryModel());//根据大众浏览次数多的多推荐
if(lists!=null&lists.size()>0){
int hits=0;//获取浏览总数
for(LookshistoryModel m:lists){
gmap.put(m.getPgtype(),m.getHits());//填充商品占比情况
hits+=m.getHits();//叠加浏览次数
}
Map gpmap=new HashMap();//商品占比存储对象
for (Map.Entry entry : gmap.entrySet()) {
BigDecimal percentage=new BigDecimal(entry.getValue()).divide(new BigDecimal(hits));//当前最高商品的占比
int result=percentage.multiply(new BigDecimal(12)).intValue();//推荐每个商品出现的占比情况
gpmap.put(entry.getKey(),result);
}
List afterGoodsModels =new ArrayList();
int afterPageNums =0;
for (Map.Entry entry : gmap.entrySet()) {//最终推荐出商品情况
int afterPageItem = goodsService.countAfterGoodsByKinds(entry.getKey());
final int afterPageSize = entry.getValue();
if (page == null)
{
page = "1";
}``
PageUtil afterPageUtil = new PageUtil(afterPageItem, afterPageSize, Integer.parseInt(page));
int afterPageNum = afterPageUtil.getPageNum();
afterPageNums+=afterPageNum;
int afterStartRow = afterPageUtil.getStartRow();
List goodsModels = goodsService.getAfterCheckGoodsByPageBykinds(afterStartRow, afterPageSize, entry.getKey());
Boolean afterHasNextPage = (Integer.parseInt(page) != afterPageNum) && (afterPageNum != 0);
model.addAttribute("afterHasPrePage", Integer.parseInt(page) != 1);
model.addAttribute("afterHasNextPage", afterHasNextPage);
model.addAttribute("afterGoodsModels", afterGoodsModels);
model.addAttribute("afterPageItem", afterPageItem);
model.addAttribute("nowPage", Integer.parseInt(page));
afterGoodsModels.addAll(goodsModels);
}
model.addAttribute("afterPrePage", Integer.parseInt(page) - 1);
model.addAttribute("afterNextPage", Integer.parseInt(page) + 1);
model.addAttribute("afterPageNum", afterPageNums);//总页面
model.addAttribute("afterGoodsModels", afterGoodsModels);//总商品
}else{
int lindid=(int)Math.random()*(1);//没有浏览次数系统随机推荐
int afterPageItem = goodsService.countAfterGoodsByKinds(lindid);
final int afterPageSize = 12;
if (page == null)
{
page = "1";
}
PageUtil afterPageUtil = new PageUtil(afterPageItem, afterPageSize, Integer.parseInt(page));
int afterPageNum = afterPageUtil.getPageNum();
int afterStartRow = afterPageUtil.getStartRow();
List afterGoodsModels = goodsService.getAfterCheckGoodsByPageBykinds(afterStartRow, afterPageSize, 0);
Boolean afterHasNextPage = (Integer.parseInt(page) != afterPageNum) && (afterPageNum != 0);
model.addAttribute("afterHasPrePage", Integer.parseInt(page) != 1);
model.addAttribute("afterHasNextPage", afterHasNextPage);
model.addAttribute("afterPrePage", Integer.parseInt(page) - 1);
model.addAttribute("afterNextPage", Integer.parseInt(page) + 1);
model.addAttribute("afterGoodsModels", afterGoodsModels);
model.addAttribute("afterPageItem", afterPageItem);
model.addAttribute("afterPageNum", afterPageNum);
model.addAttribute("nowPage", Integer.parseInt(page));
}
}
return "otherkinds";
}