基于SpringBoot的“家乡特色推荐系统”的设计与实现(源码+数据库+文档+PPT)
-
开发语言:Java
-
数据库:MySQL
-
技术:SpringBoot
-
工具:IDEA/Ecilpse、Navicat、Maven
系统展示
系统首页界面图
用户注册界面图
文章分享界面图
个人中心界面图
管理员登录界面图
用户管理界面图
文章分享管理界面图
文章分享管理界面图
摘 要
在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术,基于springboot框架,mysql数据库进行开发,实现了首页,个人中心,用户管理,文章分类管理,文章分享管理,系统管理等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的家乡特色文章信息,也提供了良好的平台,从而提高系统的核心竞争力。
本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得。
课题背景与意义
通过家乡特色推荐系统的研究可以更好地理解系统开发的意义,而且也有利于发展更多的智能系统,解决了人才的供给和需求的平衡问题,家乡特色推荐系统的开发建设,由于其开发周期短,维护方便,所以它可以适应家乡特色文章体系基本要求。
课题研究现状
家乡特色推荐系统,为用户随时随地查看家乡特色文章信息提供了便捷的方法,更重要的是大大的简化了管理员管理家乡特色文章信息的方式方法,更提供了其他想要了解家乡特色文章信息的可靠渠道。相比于传统管理方法,这样的电子信息管理更为简洁方便,在家乡特色推荐维护信息反馈和处理家乡特色文章信息意见方面也有得天独厚的优势。
部分源代码
/*** 热门文章* 后端接口* @author * @email * @date 2022-04-27 19:40:43*/
@RestController
@RequestMapping("/remenwenzhang")
public class RemenwenzhangController {@Autowiredprivate RemenwenzhangService remenwenzhangService;@Autowiredprivate StoreupService storeupService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,RemenwenzhangEntity remenwenzhang,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {remenwenzhang.setYonghuming((String)request.getSession().getAttribute("username"));}EntityWrapper<RemenwenzhangEntity> ew = new EntityWrapper<RemenwenzhangEntity>();PageUtils page = remenwenzhangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, remenwenzhang), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,RemenwenzhangEntity remenwenzhang, HttpServletRequest request){EntityWrapper<RemenwenzhangEntity> ew = new EntityWrapper<RemenwenzhangEntity>();PageUtils page = remenwenzhangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, remenwenzhang), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( RemenwenzhangEntity remenwenzhang){EntityWrapper<RemenwenzhangEntity> ew = new EntityWrapper<RemenwenzhangEntity>();ew.allEq(MPUtil.allEQMapPre( remenwenzhang, "remenwenzhang")); return R.ok().put("data", remenwenzhangService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(RemenwenzhangEntity remenwenzhang){EntityWrapper< RemenwenzhangEntity> ew = new EntityWrapper< RemenwenzhangEntity>();ew.allEq(MPUtil.allEQMapPre( remenwenzhang, "remenwenzhang")); RemenwenzhangView remenwenzhangView = remenwenzhangService.selectView(ew);return R.ok("查询热门文章成功").put("data", remenwenzhangView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){RemenwenzhangEntity remenwenzhang = remenwenzhangService.selectById(id);remenwenzhang.setClicknum(remenwenzhang.getClicknum()+1);remenwenzhang.setClicktime(new Date());remenwenzhangService.updateById(remenwenzhang);return R.ok().put("data", remenwenzhang);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){RemenwenzhangEntity remenwenzhang = remenwenzhangService.selectById(id);remenwenzhang.setClicknum(remenwenzhang.getClicknum()+1);remenwenzhang.setClicktime(new Date());remenwenzhangService.updateById(remenwenzhang);return R.ok().put("data", remenwenzhang);}/*** 赞或踩*/@RequestMapping("/thumbsup/{id}")public R vote(@PathVariable("id") String id,String type){RemenwenzhangEntity remenwenzhang = remenwenzhangService.selectById(id);if(type.equals("1")) {remenwenzhang.setThumbsupnum(remenwenzhang.getThumbsupnum()+1);} else {remenwenzhang.setCrazilynum(remenwenzhang.getCrazilynum()+1);}remenwenzhangService.updateById(remenwenzhang);return R.ok("投票成功");}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody RemenwenzhangEntity remenwenzhang, HttpServletRequest request){remenwenzhang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(remenwenzhang);remenwenzhangService.insert(remenwenzhang);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody RemenwenzhangEntity remenwenzhang, HttpServletRequest request){remenwenzhang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(remenwenzhang);remenwenzhangService.insert(remenwenzhang);return R.ok();}/*** 修改*/@RequestMapping("/update")@Transactionalpublic R update(@RequestBody RemenwenzhangEntity remenwenzhang, HttpServletRequest request){//ValidatorUtils.validateEntity(remenwenzhang);remenwenzhangService.updateById(remenwenzhang);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){remenwenzhangService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<RemenwenzhangEntity> wrapper = new EntityWrapper<RemenwenzhangEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));}int count = remenwenzhangService.selectCount(wrapper);return R.ok().put("count", count);}/*** 前端智能排序*/@IgnoreAuth@RequestMapping("/autoSort")public R autoSort(@RequestParam Map<String, Object> params,RemenwenzhangEntity remenwenzhang, HttpServletRequest request,String pre){EntityWrapper<RemenwenzhangEntity> ew = new EntityWrapper<RemenwenzhangEntity>();Map<String, Object> newMap = new HashMap<String, Object>();Map<String, Object> param = new HashMap<String, Object>();Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Object> entry = it.next();String key = entry.getKey();String newKey = entry.getKey();if (pre.endsWith(".")) {newMap.put(pre + newKey, entry.getValue());} else if (StringUtils.isEmpty(pre)) {newMap.put(newKey, entry.getValue());} else {newMap.put(pre + "." + newKey, entry.getValue());}}params.put("sort", "clicknum");params.put("order", "desc");PageUtils page = remenwenzhangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, remenwenzhang), params), params));return R.ok().put("data", page);}}
结论
通过完成该家乡特色推荐系统和本论文的撰写让我更加明白了软件开发过程中软件工程思想的重要性。在项目的前期由于对需求分析做的不够谨慎和明确,导致了后面在设计甚至编码时候造成了许多不必要的麻烦。由此在今后的学习和工作开发之中必须要牢牢把握住软件工程的设计思想和方法,这样可以进一步保证项目开发的健壮性和准确性。