基于javaweb+mysql的springboot美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm+thymeleaf+html)

基于javaweb+mysql的springboot美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm+thymeleaf+html)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SpringBoot美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm+thymeleaf+html)

主要技术实现:spring、 springmvc、 springboot、mybatis 、session、 jquery 、 md5 、bootstarp.js tomcat、拦截器等。

具体主要功能模块如下:

1.用户模块管理:用户登录、用户注册、用户的查询、添加、删除操作、 2.美食分享笔记管理:分享笔记列表的展示、添加、修改、删除操作、 3.美食笔记详情管理:美食笔记详情列表的查看、添加、删除等操作、 4.管理员信息管理:管理员信息的查看、修改、 5.公告信息管理:公告信息的查看、添加、修改、删除操作、 6.用户模块管理:用户列表查询、添加、删除、 7.用户评论模块管理:用户评论查询、添加、删除、 8.注销退出登录管理

给大家截一部分效果图吧 系统首页主要功能:

分类查看没事菜谱信息以及智能推荐:

美食分享笔记详情信息查看、用户登录后可以进行评论、浏览量会增加、用户可以收藏当前文档信息、可以点击查看作者信息、可以对作者进行关注等操作:

用户评论操作:

富文本编辑器添加美食分享笔记:

个人中心我的收藏 我的关注等:

关注用户信息以及具体功能操作等:

后台管理主要功能:用户管理、美食菜谱笔记管理、美食菜谱详情发布以及评论等管理

     *
     * @return
     */
    @RequestMapping("/regist")
    public String regist() {
        return "regist";
    }

    /**
     * 保存注册信息
     *
     * @param user
     * @return
     */
    @RequestMapping("/saveUser")
    public String saveUser(User user) {
        List<Article> randomArticle = articleService.getRandomArticle(3);
        String ids = "";
        for (int i = 0; i < randomArticle.size(); i++) {
            Integer articleId = randomArticle.get(i).getArticleId();
            ids += articleId + ",";
        }
        ids = ids.substring(0, ids.length() - 1);
        user.setArticleIds(ids);
        userService.save(user);

        return "webLogin";
    }

    /**
     * 退出登录
     *
     * @param request
     * @return
     */
    @RequestMapping("/quit")
    public String quit(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.removeAttribute("user");
        return "index";
    }

    /**
     * 退出登录
     *
     * @param request
     * @return
     */
    @RequestMapping("/quitAdmin")
    public String quitAdmin(HttpServletRequest request) {
        HttpSession session = request.getSession();
	/**
	 * 分页查询回复
	 * @param reply
	 * @param page
	 * @param limit
	 * @return
	 */
	@RequestMapping("/list")
	public Map<String, Object> list(Reply reply,@RequestParam(value="page",required=false)Integer page,@RequestParam(value="pageSize",required=false)Integer pageSize){
		Map<String, Object> resultMap=new HashMap<String, Object>();
		List<Reply> replyList=replyService.list(reply,page-1, pageSize);
		Long total=replyService.getCount();
		resultMap.put("errorNo", 0);
		resultMap.put("data", replyList);
		resultMap.put("total", total);
		return resultMap;
	}
	
	/**
	 * 删除回复
	 * @param ids
	 * @return
	 */
	@RequestMapping("/delete")
	public Map<String, Object> delete(@RequestParam(value="replyId")String ids){
		String []idsStr=ids.split(",");
		Map<String, Object> resultMap=new HashMap<String, Object>();
		for(int i=0;i<idsStr.length;i++) {
			replyService.delete(Integer.parseInt(idsStr[i]));
		}
		resultMap.put("errorNo", 0);
		resultMap.put("data", 1);
		return resultMap;
	}
	
}

	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/list")
	public Map<String, Object> list(@RequestParam(value="page",required=false)Integer page,@RequestParam(value="pageSize",required=false)Integer pageSize){
		Map<String, Object> resultMap=new HashMap<String, Object>();
		resultMap.put("errorNo", 0);
		resultMap.put("data", noticeService.list(page-1, pageSize));
		resultMap.put("total", noticeService.getCount());
		return resultMap;
	}
	
	/**
	 * 根据ID查找公告
	 * @param noticeId
	 * @return
	 */
	@RequestMapping("/findById")
	public Map<String, Object> findById(Integer noticeId) {
		Map<String, Object> resultMap=new HashMap<String, Object>();
		resultMap.put("errorNo", 0);
		resultMap.put("data", noticeService.findById(noticeId));
		return resultMap;
	}
	
	/**
	 * 添加或者修改公告
	 * @param notice
	 * @return
	 */
	@RequestMapping("/save")
	public Map<String, Object> save(Notice notice){
		Map<String, Object> resultMap=new HashMap<String, Object>();
		notice.setPublishDate(new Date());
		noticeService.save(notice);
		resultMap.put("errorNo", 0);
		resultMap.put("data", 1);
		return resultMap;
	}
	
	/**
	 * 批量删除公告
	 * @param ids
	 * @return
	 */

/**
 * 根路径以及其他请求处理
 *
 */
@Controller
public class IndexController {

    private String imageFilePath = System.getProperty("user.dir") + "\\src\\main\\webapp\\static\\images\\"; // 图片上传路径

    @Resource
    private NoticeService noticeService;

    @Resource
    private UserService userService;

    @Resource
    private ArticleService articleService;
    @Resource
    private ClassifyService classifyService;

    @RequestMapping("/")
    public String index(HttpSession session) {

        // 查询公告
        session.setAttribute("noticeList", noticeService.list(0, 5));
        return "index";// 跳转到index.html
    }

    @RequestMapping("/delete")
    public Map<String, Object> delete(Integer userId) {
	@Resource
	private ClassifyService classifyService;
	
	@Resource
	private StartupRunner startupRunner;
	
	@RequestMapping("list")
	public Map<String, Object> list(@RequestParam(value="page",required=false)Integer page,@RequestParam(value="pageSize",required=false)Integer pageSize){
		Map<String, Object> resultMap=new HashMap<>();
		resultMap.put("errorNo", 0);
		resultMap.put("data", classifyService.list(page-1, pageSize));
		resultMap.put("total", classifyService.getCount());
		return resultMap;
	}
	
	/**
	 * 根据Id查找文章类别
	 * @param classifyId
	 * @return
	 */
	@RequestMapping("findById")
	public Map<String, Object> findById(Integer classifyId){
		Map<String, Object> resultMap=new HashMap<>();
		resultMap.put("errorNo", 0);
		resultMap.put("data", classifyService.findById(classifyId));
		return resultMap;
	}
	
	/**
	 * 添加或修改文章类别
	 * @param classify
	 * @return
	 */
	@RequestMapping("save")
	public Map<String, Object> save(Classify classify){
		Map<String, Object> resultMap=new HashMap<>();
		classifyService.save(classify);
		resultMap.put("errorNo", 0);
		resultMap.put("data", 1);
		startupRunner.loadData();
		return resultMap;
	}
        String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 获取文件的后缀
        String newFileName = "";
        try {
            newFileName = DateUtil.getCurrentDateStr() + suffixName; // 生成新的文件名
            FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath + newFileName)); // 上传
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 回调到页面
        StringBuffer sb = new StringBuffer();
        sb.append("<script type=\"text/javascript\">");
        sb.append("window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ",'" + "/static/images/" + newFileName
                + "','')");
        sb.append("</script>");
        return sb.toString();
    }

}

/**
     */
    @RequestMapping("/saveUser")
    public String saveUser(User user) {
        List<Article> randomArticle = articleService.getRandomArticle(3);
        String ids = "";
        for (int i = 0; i < randomArticle.size(); i++) {
            Integer articleId = randomArticle.get(i).getArticleId();
            ids += articleId + ",";
        }
        ids = ids.substring(0, ids.length() - 1);
        user.setArticleIds(ids);
        userService.save(user);

        return "webLogin";
    }

    /**
     * 退出登录
     *
     * @param request
     * @return
     */
    @RequestMapping("/quit")
    public String quit(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.removeAttribute("user");
        return "index";
    }

    /**
     * 退出登录
     *
     * @param request
     * @return
     */
    @RequestMapping("/quitAdmin")
    public String quitAdmin(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.removeAttribute("user");
        return "login";
    }
     * @return
     */
    @RequestMapping("/quit")
    public String quit(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.removeAttribute("user");
        return "index";
    }

    /**
     * 退出登录
     *
     * @param request
     * @return
     */
    @RequestMapping("/quitAdmin")
    public String quitAdmin(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.removeAttribute("user");
        return "login";
    }

    /**
     * 验证登录
     *
     * @param user
     * @param request
     * @return
     */
    @RequestMapping("/checkLogin")
    public ModelAndView checkLogin(User user, HttpServletRequest request) {
        ModelAndView mav = new ModelAndView();
        HttpSession session = request.getSession();
        User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword());
        if (u == null) {
            mav.addObject("user", user);
            mav.addObject("errorInfo", "用户名或者密码错误!");
            mav.setViewName("webLogin");
        } else {
            u.setLatelyLoginTime(new Date());
            userService.save(u);
            session.setAttribute("user", u);
            mav.addObject("username", u.getUsername());
            mav.addObject("user", u);
            mav.addObject("success", true);
            mav.setViewName("/index");
        }
        return mav;
    }

    /**
		}
		resultMap.put("errorNo", 0);
		resultMap.put("data", 1);
		return resultMap;
	}
	
}

/**
 * 回复控制器
 *
 */
@RestController
@RequestMapping("/reply")
public class ReplyController {

  @Resource
  private ReplyService replyService;

  /**
   * 获取回复
   * @param reply
   * @return
   */
  @RequestMapping("/list")
  public Map<String, Object> replyList(Reply reply) {
    List<Reply> replyList = replyService.list(reply);
    Map<String, Object> resultMap = new HashMap<String, Object>();
    resultMap.put("data", replyList);

/**
 * 时光轴控制器
 *
 */
@RestController
@RequestMapping("/admin/timeline")
public class TimelineAdminController {
	
	@Resource
	private TimelineService timelineService;
	
	@Resource
	private StartupRunner startupRunner;
	
	/**
	 * 分页查询时光轴
	 * @param timeline
	 * @param page
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/list")
	public Map<String, Object> list(Timeline timeline,@RequestParam(value="page",required=false)Integer page,@RequestParam(value="pageSize",required=false)Integer pageSize){
		Map<String, Object> resultMap=new HashMap<String, Object>();
		resultMap.put("errorNo", 0);
		resultMap.put("data", timelineService.list(timeline,page-1, pageSize));
		resultMap.put("total", timelineService.getCount(timeline));
		return resultMap;
	}
	
	/**
	 * 根据ID查找时光轴
	 * @param timelineId
	 * @return
	 */
	@RequestMapping("/findById")
	public Map<String, Object> findById(Integer timelineId) {
		Map<String, Object> resultMap=new HashMap<String, Object>();
		Map<String, Object> tempMap=new HashMap<String, Object>();
 */
@RestController
@RequestMapping("/admin/comment")
public class CommentAdminController {

  @Resource
  private CommentService commentService;

  @Resource
  private UserService userService;

  @Resource
  private ReplyService replyService;

  @Resource
  private ArticleService articleService;

  /**
   * 分页查询评论
  * @Title: list  
  * @param comment  评论实体
  * @param commentDates  时间段 (搜索用到)
  * @param page  当前页
  * @param limit  每页记录数
  * @param trueName  昵称
  * @return  参数说明 
  * @return Map<String,Object>    返回类型 
  * @throws
   */
  @RequestMapping("/list")
  public Map<String, Object> list(Comment comment,
      @RequestParam(value = "commentDates", required = false) String commentDates,
      @RequestParam(value = "page", required = false) Integer page,
      @RequestParam(value = "pageSize", required = false) Integer pageSize,
      @RequestParam(value = "nickname", required = false) String nickname) {
    String s_bCommentDate = null; // 开始时间
    String s_eCommentDate = null; // 结束时间
    if (StringUtil.isNotEmpty(commentDates)) {
      String[] strs = commentDates.split(" - "); // 拆分时间段
      s_bCommentDate = strs[0];
      s_eCommentDate = strs[1];
    }
    Integer userId = null;
    Map<String, Object> resultMap = new HashMap<String, Object>();
        Long total = articleService.getCount(article, s_bPublishDate, s_ePublishDate);
        int totalPage = (int) (total % pageSize == 0 ? total / pageSize : total / pageSize + 1); // 总页数
        resultMap.put("totalPage", totalPage);
        resultMap.put("errorNo", 0);
        resultMap.put("data", articleService.list(article, s_bPublishDate, s_ePublishDate, page - 1, pageSize));
        resultMap.put("total", total);
        return resultMap;
    }

    /**
     * 后台默认首页
     *
     * @return
     */
    @RequestMapping("/index")
    public String root() {
        return "/common/index";
    }

    /**
     * 博主信息页面
     *
     * @return
     */
    @RequestMapping("/blogger")
    public String blogger() {
        return "/blogger/index";
    }

    /**
     * 图片上传处理 @Title: ckeditorUpload @param file 图片文件 @return 参数说明 @return
     * Map<String,Object> 返回类型 @throws
     */
    @ResponseBody
    @RequestMapping("/upload")
    public Map<String, Object> ckeditorUpload(@RequestParam("file") MultipartFile file) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        Map<String, Object> resultMap1 = new HashMap<String, Object>();
        String fileName = file.getOriginalFilename(); // 获取文件名
        String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 获取文件的后缀
        String newFileName = "";
        try {
            newFileName = DateUtil.getCurrentDateStr() + suffixName; // 新文件名
            FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath + newFileName)); // 上传
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        resultMap.put("code", 0);
     * @return
     */
    @RequestMapping("/checkLogin")
    public ModelAndView checkLogin(User user, HttpServletRequest request) {
        ModelAndView mav = new ModelAndView();
        HttpSession session = request.getSession();
        User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword());
        if (u == null) {
            mav.addObject("user", user);
            mav.addObject("errorInfo", "用户名或者密码错误!");
            mav.setViewName("webLogin");
        } else {
            u.setLatelyLoginTime(new Date());
            userService.save(u);
            session.setAttribute("user", u);
            mav.addObject("username", u.getUsername());
            mav.addObject("user", u);
            mav.addObject("success", true);
            mav.setViewName("/index");
        }
        return mav;
    }

    /**
     * 查看个人信息
     *
     * @return
     */
    @RequestMapping("viewPerson")
    public ModelAndView viewPerson(HttpServletRequest request) {
        User user = (User) request.getSession().getAttribute("user");
        ModelAndView mav = new ModelAndView();
        User u = userService.findById(user.getUserId());
        mav.addObject("user", u);
        mav.setViewName("/viewPerson");
        return mav;
    }

    /**
     * 查看个人收藏夹
     *
     * @return
     */
    @RequestMapping("viewCollection")
    public ModelAndView viewCollection(HttpServletRequest request, HttpSession session) {
        User user = (User) request.getSession().getAttribute("user");
        ModelAndView mav = new ModelAndView();
        User u = userService.findById(user.getUserId());
        String artIds = u.getArticleIds();
        List<String> result = new ArrayList<>();
        if (StringUtils.isNotBlank(artIds)) {
				obj.put("create_time", DateUtil.formatDate(map.getPublishDate(), "MM月dd日 hh:mm"));
				obj.put("content", map.getContent());
				monthList.add(obj);
				monthMap.put(map.getMonth(), monthList);
				yearMap.remove("month");
				yearMap.put("month", monthMap);
				jsonMap.remove(map.getYear());
				jsonMap.put(map.getYear(), yearMap);
			}
			List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
			for (Map.Entry<String, Object> entry : jsonMap.entrySet()) {
				datas.add((Map<String, Object>) entry.getValue());
			}
			resultMap.put("datas", datas);
			resultMap.put("result", 1);
		}else {
			resultMap.put("data", "还没有时光轴数据!");
		}
		return resultMap;

	}
}

/**
 * 友情链接控制器
 *
 */
@RestController
@RequestMapping("/admin/link")
public class LinkAdminController {
	
	@Resource
	private LinkService linkService;
	
	@Resource
	private StartupRunner startupRunner;
	
    private MusicService musicService;

    @Resource
    private ArticleIndex articleIndex;

    @Resource
    private UserService userService;

    @Resource
    private ClassifyService classifyService;

    private String downloadImagePath = System.getProperty("user.dir") + "\\src\\main\\webapp"; // 图片下载路径

    /**
     * 文章专栏
     *
     * @return
     */
    @RequestMapping("/article")
    public String article() {
        return "/foreground/article";
    }

    @RequestMapping("/mixed_pic")
    public String mixed_pic() {
        return "/foreground/mixed_pic";
    }

    /**
     * 点点滴滴
     *
     * @return
     */
    @RequestMapping("/timeline")
    public String timeline() {
        return "/foreground/timeline";
    }

    /**
     * 关于本站
     *
     * @return
     */
    @RequestMapping("/about")
    public String about() {
        return "/foreground/mixed_pic";
    }

    /**
     * 点点滴滴
     *
     * @return
     */
    @RequestMapping("/timeline")
    public String timeline() {
        return "/foreground/timeline";
    }

    /**
     * 关于本站
     *
     * @return
     */
    @RequestMapping("/about")
    public String about() {
        return "/foreground/about";
    }

    /**
     * 文章详情
     *
     * @return
     */
    @RequestMapping("/detail/{id}")
    public ModelAndView detail(@PathVariable(value = "id", required = false) Integer id, HttpSession session) {
        ModelAndView mav = new ModelAndView();
        articleService.increaseClick(id);
        Article article = articleService.findById(id);
        Article tempArticle = new Article();
        tempArticle.setClassify(article.getClassify());
        session.setAttribute("similarityList", articleService.list(tempArticle, null, null, 0, 10));
        session.setAttribute("RandomArticleList", articleService.getRandomArticle(10)); // 10条随机文章
        // 判断该文章是否收藏
        boolean flag = false;
        User user = (User) session.getAttribute("user");
        if (user != null) {
            String artIds = user.getArticleIds();
		return resultMap;
	}
	
	/**
	 * 根据ID查找公告
	 * @param noticeId
	 * @return
	 */
	@RequestMapping("/findById")
	public Map<String, Object> findById(Integer noticeId) {
		Map<String, Object> resultMap=new HashMap<String, Object>();
		resultMap.put("errorNo", 0);
		resultMap.put("data", noticeService.findById(noticeId));
		return resultMap;
	}
	
	/**
	 * 添加或者修改公告
	 * @param notice
	 * @return
	 */
	@RequestMapping("/save")
	public Map<String, Object> save(Notice notice){
		Map<String, Object> resultMap=new HashMap<String, Object>();
		notice.setPublishDate(new Date());
		noticeService.save(notice);
		resultMap.put("errorNo", 0);
		resultMap.put("data", 1);
		return resultMap;
	}
	
	/**
	 * 批量删除公告
	 * @param ids
	 * @return
	 */
	@RequestMapping("/delete")
	public Map<String, Object> delete(@RequestParam(value="noticeId")String ids){
		Map<String, Object> resultMap=new HashMap<String, Object>();
		String []idsStr=ids.split(",");
		for(int i=0;i<idsStr.length;i++) {
			noticeService.delete(Integer.parseInt(idsStr[i]));
		}
		resultMap.put("errorNo", 0);
		resultMap.put("data", 1);
		return resultMap;
	}

/**
 * 管理员控制器
 *
 */
@RestController
@RequestMapping("/admin")
public class AdminController {

  @Value("${MD5Salt}")
  private String salt; // md5加密盐

  @Resource
  private AdminService adminService;
  @Resource
  private UserService userService;
  @Resource
  private ArticleService articleService;
  @Resource
  private ClassifyService classifyService;

  /**
   * 后台管理员登录验证
   * @param admin
   * @param request
   * @return
   */
  @RequestMapping("/login")
  public ModelAndView login(Admin admin, HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    HttpSession session = request.getSession();
    try {
      Admin resultUser = adminService.findByUserNameAndPassword(admin.getUserName(), admin.getPassword());
      if (resultUser == null) {
        mav.addObject("errorInfo", "用户名或者密码错误!");
        mav.setViewName("/login");
      } else {
        session.setAttribute("adminUser", resultUser);
        // 统计用户总数
        Long userCount = userService.getCount();
        // 统计今天注册
        Long userRegCount = userService.getTodayRegistCount(new User(), "1", "1");
        // 统计今日登录

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值