博主主页:一季春秋
博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、小程序、安卓app、大数据等设计与开发精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
SpringBoot+Vue项目持续更新中
http://t.csdn.cn/1mgm8
🍅文末获取联系🍅
目录
一、项目介绍
电影推荐系统管理系统按照操作主体分为管理员和用户。管理员的功能包括付费电影管理、付费电影收藏管理、付费电影评价管理、电影购买管理、字典管理、电影论坛管理、电影资讯管理、免费电影管理、免费电影收藏管理、免费电影评论管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。
二、项目主要技术
开发语言:Java
使用框架:spring boot
前端技术:Vue 、css、element-ui、js
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
三、功能结构设计
图即为设计的管理员功能结构,管理员权限操作的功能包括管理公告,管理电影推荐系统信息,包括付费电影管理,培训管理,免费电影管理,薪资管理等,可以管理公告。
四、系统实现
付费电影
免费电影
个人中心
付费电影管理
免费电影管理
基础数据管理
五、实现代码
个性推荐
/**
* 个性推荐
*/
@IgnoreAuth
@RequestMapping("/gexingtuijian")
public R gexingtuijian(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("gexingtuijian方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
CommonUtil.checkMap(params);
List<DianyingView> returnDianyingViewList = new ArrayList<>();
//查询订单
Map<String, Object> params1 = new HashMap<>(params);params1.put("sort","id");params1.put("yonghuId",request.getSession().getAttribute("userId"));
params1.put("shangxiaTypes",1);
params1.put("dianyingYesnoTypes",2);
PageUtils pageUtils = dianyingOrderService.queryPage(params1);
List<DianyingOrderView> orderViewsList =(List<DianyingOrderView>)pageUtils.getList();
Map<Integer,Integer> typeMap=new HashMap<>();//购买的类型list
for(DianyingOrderView orderView:orderViewsList){
Integer dianyingTypes = orderView.getDianyingTypes();
if(typeMap.containsKey(dianyingTypes)){
typeMap.put(dianyingTypes,typeMap.get(dianyingTypes)+1);
}else{
typeMap.put(dianyingTypes,1);
}
}
List<Integer> typeList = new ArrayList<>();//排序后的有序的类型 按最多到最少
typeMap.entrySet().stream().sorted((o1, o2) -> o2.getValue() - o1.getValue()).forEach(e -> typeList.add(e.getKey()));//排序
Integer limit = Integer.valueOf(String.valueOf(params.get("limit")));
for(Integer type:typeList){
Map<String, Object> params2 = new HashMap<>(params);params2.put("dianyingTypes",type);
params2.put("shangxiaTypes",1);
params2.put("dianyingYesnoTypes",2);
PageUtils pageUtils1 = dianyingService.queryPage(params2);
List<DianyingView> dianyingViewList =(List<DianyingView>)pageUtils1.getList();
returnDianyingViewList.addAll(dianyingViewList);
if(returnDianyingViewList.size()>= limit) break;//返回的推荐数量大于要的数量 跳出循环
}
params.put("shangxiaTypes",1);
params.put("dianyingYesnoTypes",2);
//正常查询出来商品,用于补全推荐缺少的数据
PageUtils page = dianyingService.queryPage(params);
if(returnDianyingViewList.size()<limit){//返回数量还是小于要求数量
int toAddNum = limit - returnDianyingViewList.size();//要添加的数量
List<DianyingView> dianyingViewList =(List<DianyingView>)page.getList();
for(DianyingView dianyingView:dianyingViewList){
Boolean addFlag = true;
for(DianyingView returnDianyingView:returnDianyingViewList){
if(returnDianyingView.getId().intValue() ==dianyingView.getId().intValue()) addFlag=false;//返回的数据中已存在此商品
}
if(addFlag){
toAddNum=toAddNum-1;
returnDianyingViewList.add(dianyingView);
if(toAddNum==0) break;//够数量了
}
}
}else {
returnDianyingViewList = returnDianyingViewList.subList(0, limit);
}
for(DianyingView c:returnDianyingViewList)
dictionaryService.dictionaryConvert(c, request);
page.setList(returnDianyingViewList);
return R.ok().put("data", page);
}