【包调试运行】基于ssm农家乐管理系统源码和文档

开发工具:idea 

 数据库mysql5.7+(mysql5.7最佳)

 数据库链接工具:navcat,小海豚等

开发技术:java  ssm tomcat8.5

【754】基于ssm农家乐管理系统源码

随着移动应用技术的发展,越来越多的用户借助于移动手机、电脑完成生活中的事务,许多的行业也更加重视与互联网的结合,以提高快捷、高效、安全,可以方便更多有需求的人。针对传统农家乐管理系统问题,结合用户的实际需求,本课程设计了农家乐管理系统 ,用户可以此系统实现美食信息、住宿信息、活动信息、活动报名、客房预订等信息,管理员通过后台会对此美食信息进行审核,管理员在还可以进行首页、个人中心、农家乐管理、美食信息管理、住宿信息管理、活动信息管理、用户管理、活动报名管理、客房预订管理、用户评价管理、论坛交流、管理员管理、系统管理,前台首页;首页、农家乐、美食信息、住宿信息、活动信息、论坛交流、系统公告、个人中心、后台管理、在线客服,用户;首页、个人中心、活动报名管理、客房预订管理、用户评价管理、我的收藏管理等操作。此系统的开发对比旧传统的手工记录方式,不仅方便了需求用户,也提高了管理人员的工作效率。

关键词农家乐管理系统 SSM框架;Mysql数据库

基于ssm农家乐管理系统源码和论文PPT

Abstract

With the development of mobile application technology, more and more users complete their life affairs with the help of mobile phones and computers. Many industries also pay more attention to the combination with the Internet, so as to improve the efficiency, safety and convenience of more people in need. Aiming at the problems of traditional farmhouse management system, combined with the actual needs of users, this course designs a farmhouse management system, Users can use this system to realize food information, accommodation information, activity information, activity registration, room reservation and other information. The administrator will audit the food information through the background. The administrator can also carry out home page, personal center, farmhouse management, food information management, accommodation information management, activity information management, user management, activity registration management and room reservation Management, user evaluation management, forum communication, administrator management, system management, front page; home page, farmhouse, food information, accommodation information, activity information, forum communication, system announcement, personal center, background management, online customer service, user; home page, personal center, activity registration management, room reservation management, user evaluation management, my collection management And so on. Compared with the traditional manual recording method, the development of this system is not only convenient for users, but also improves the efficiency of managers.

Key words: farmhouse management system; SSM framework; MySQL database

package com.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pojo.*;
import com.pojo.result.Result;
import com.pojo.result.ResultPage;
import com.service.*;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 积分物品表 前端控制器
 * </p>
 *
 * @since 2022-09-06
 */
@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    @Autowired
    private CategoryService categoryService;

    @Autowired
    private CommentService commentService;

    @Autowired
    private UserService userService;

    @Autowired
    private MarkService markService;

    //添加书籍
    @PostMapping("/add")
    public Result add(Book book) {
        User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
        //验证表单信息
        if (bookService.getOne(new LambdaQueryWrapper<Book>().eq(Book::getName, book.getName())) != null) {
            return Result.failure("已有相同名称的书籍,请重新命名");
        } else {
            book.setUserId(currentUser.getId());
            book.setCreateDate(new Date());
            book.setAuthor(currentUser.getName());
            return Result.decide(bookService.save(book));
        }
    }

    //删除书籍
    @PostMapping("/delete")
    public Result delete(@RequestParam(value = "id") String id) {
        return Result.decide(bookService.removeById(id));
    }

    //修改书籍
    @PostMapping("/update")
    public Result update(Book book) {
        Book currentBook = bookService.getById(book.getId());
        //验证表单信息
        if (bookService.getOne(new LambdaQueryWrapper<Book>().eq(Book::getName, book.getName())) != null
                && !book.getName().equals(currentBook.getName())) {
            return Result.failure("已有相同名称的商品,请重新命名");
        } else {
            return Result.decide(bookService.updateById(book));
        }
    }

    //根据id获取书籍
    @PostMapping("/getOne")
    public Result getOne(@RequestParam(value = "id") String id) {
        return Result.success(bookService.getById(id));
    }

    //条件分页获取
    @RequestMapping("/getAll")
    public ResultPage getAll(@RequestParam(value = "userName", required = false) String userName,
                             @RequestParam(value = "bookName", required = false) String bookName,
                             @RequestParam(value = "categoryId", required = false) String categoryId,
                             @RequestParam(value = "page") Integer page,
                             @RequestParam(value = "limit") Integer limit) {
        //分页条件
        PageHelper.startPage(page, limit);
        //获取当前用户信息
        User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
        List<Book> ls = bookService.getAll(userName, bookName, categoryId, currentUser.getRoleId() == 0 ? null : currentUser.getId());
        PageInfo<Book> pageInfo = new PageInfo<>(ls, limit);
        return new ResultPage(0, (int) pageInfo.getTotal(), pageInfo.getList());
    }

    //首页点击榜数据展示
    @RequestMapping("/listClickRank")
    public Result listClickRank(String num) {
        LambdaQueryWrapper<Book> query = new LambdaQueryWrapper<>();
        query.eq(Book::getStatus, 1)
                .orderByDesc(Book::getHits)
                .last("limit " + num);
        return Result.success(bookService.list(query));
    }

    //展示书籍详情
    @RequestMapping("/getBookDetail/{bookId}")
    public ModelAndView getBookDetail(@PathVariable String bookId) {
    
        ModelAndView mv = new ModelAndView();
        //作品信息
        Book book = bookService.getById(bookId);

        try {
            //点击量+1
            LambdaUpdateWrapper<Book> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper
                    .set(Book::getHits, book.getHits() + 1)
                    .eq(Book::getId, bookId);
            bookService.update(updateWrapper);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        Category category = categoryService.getOne(book.getCategoryId());
        book.setCategoryName(category.getName());
        mv.addObject("book", book);

        //评论信息
        LambdaQueryWrapper<Comment> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper
                .eq(Comment::getBookId, bookId);
        List<Comment> commentList = commentService.list(queryWrapper);
        for (Comment comment : commentList) {
            User user = userService.getById(comment.getUserId());
            comment.setUserName(user == null ? "历史用户" : user.getName());
        }
        mv.addObject("commentList", commentList);

        //评分
        mv.addObject("mark", markService.selectAvg(bookId));
        mv.setViewName("/index/bookDetail.html");
        return mv;
    }

    //全部作品页面
    @RequestMapping("/bookList")
    public ModelAndView bookList() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/index/bookList.html");
        return mv;
    }

    //条件分页获取分类
    @RequestMapping("/searchByPage")
    public Result searchByPage(@RequestParam(value = "keyword", required = false) String keyWord,
                                @RequestParam(value = "catId", required = false) String categoryId,
                                @RequestParam(value = "curr") Integer page,
                                @RequestParam(value = "limit") Integer limit) {
        //分页条件
        PageHelper.startPage(page, limit);
        //获取当前用户信息
        User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
        List<Book> ls = bookService.getAllIndex(keyWord, categoryId);
        PageInfo<Book> pageInfo = new PageInfo<>(ls, limit);
        return Result.success(pageInfo);
    }

    //排行榜页面
    @RequestMapping("/bookRankPage")
    public ModelAndView bookRankPage() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/index/bookRank.html");
        return mv;
    }

    //排行榜数据展示
    @RequestMapping("/bookRankList")
    public Result bookRankList(String type) {
        List<Book> ls = null;
        LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Book::getStatus, 1)
                .last("limit 30");
        if ("0".equals(type)) {
            //点击榜
            queryWrapper.orderByDesc(Book::getHits);
            ls = bookService.list(queryWrapper);
            for (Book book : ls) {
                Category category = categoryService.getOne(book.getCategoryId());

                Double mark = markService.selectAvg(book.getId());
                BigDecimal b = new BigDecimal(mark);
                book.setMark(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
                book.setCategoryName(category.getName());
            }
        } else if ("1".equals(type)){
            //收藏榜
            queryWrapper.orderByDesc(Book::getCollectNum);
            ls = bookService.list(queryWrapper);
            for (Book book : ls) {
                Category category = categoryService.getOne(book.getCategoryId());
                Double mark = markService.selectAvg(book.getId());
                BigDecimal b = new BigDecimal(mark);
                book.setMark(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
                book.setCategoryName(category.getName());
            }
        } else {
            //评分榜
            ls = bookService.list(queryWrapper);
            for (Book book : ls) {
                //分类
                Category category = categoryService.getOne(book.getCategoryId());
                book.setCategoryName(category.getName());
                //评分
                Double mark = markService.selectAvg(book.getId());
                BigDecimal b = new BigDecimal(mark);
                book.setMark(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
            }
            Collections.sort(ls, (a, b) -> {
                return b.getMark().compareTo(a.getMark());
            });
        }
        return Result.success(ls);
    }

    //作家榜,根据作家的作品的收藏总数排序
    @RequestMapping("/authorRankList")
    public Result authorRankList() {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper
                .eq(User::getStatus, 1)
                .eq(User::getRoleId, 1)
                .last("limit 30");
        List<User> ls = userService.list(queryWrapper);

        for (User user : ls) {
            Integer collectNum = bookService.getCollectNum(user.getId());
            user.setAllCollectNums(collectNum == null ? 0 : collectNum);
        }

        Collections.sort(ls, (a, b)->{
            return b.getAllCollectNums() - a.getAllCollectNums();
        });

        return Result.success(ls);
    }

}

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.YonghuEntity;
import com.entity.view.YonghuView;

import com.service.YonghuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 用户
 * 后端接口
 * @author 
 * @email 
 * @date 2023-01-31 08:03:10
 */
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
    @Autowired
    private YonghuService yonghuService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        YonghuEntity user = yonghuService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setMima("123456");
        yonghuService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu, HttpServletRequest request){

        EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
		PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,YonghuEntity yonghu, HttpServletRequest request){
        EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
		PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( YonghuEntity yonghu){
       	EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
      	ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
        return R.ok().put("data", yonghuService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(YonghuEntity yonghu){
        EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
 		ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
		YonghuView yonghuView =  yonghuService.selectView(ew);
		return R.ok("查询用户成功").put("data", yonghuView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    	yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    	yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
        //ValidatorUtils.validateEntity(yonghu);
        yonghuService.updateById(yonghu);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yonghuService.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<YonghuEntity> wrapper = new EntityWrapper<YonghuEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = yonghuService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿毕业分享网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值