今天又来给大家分享项目了是一个基于SpringBoot+Vue前后端分离的旅游信息推荐系统,非常值得大家去学习,点赞、收藏、评论多多支持一下
源码在文章末尾链接获取
目录
链接:https://pan.baidu.com/s/1oklSr-y1IefhtWmvisSSoQ 提取码:cijf
本系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择IntelliJ IDEA来进行系统的设计。基本实现了旅游信息推荐系统应有的主要功能模块,本系统有管理员和用户。
1.首页:首页,旅游新闻(行业资讯,站内新闻),景区信息(境外,境内,本地),美食信息,旅游线路,在线路,在线留言,注册。
2.管理员:账号管理,地区管理,景点信息管理,地方美食管理,旅游线路管理,订单信息管理,新闻管理,系统管理等等功能
| 【收藏记录】模块,表名:shoucangjilu | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| username | varchar(255) | 收藏用户 |
| xwid | int | 对应模块id |
| biao | varchar(255) | 收藏得模块 |
| biaoti | varchar(255) | 显示的标题 |
| url | varchar(512) | 收藏URL |
| ziduan | varchar(255) | 对应模块字段 |
| addtime | timestamp | 添加时间 |
| 【收藏记录】模块,表名:shoucangjilu | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| username | varchar(255) | 收藏用户 |
| xwid | int | 对应模块id |
| biao | varchar(255) | 收藏得模块 |
| biaoti | varchar(255) | 显示的标题 |
| url | varchar(512) | 收藏URL |
| ziduan | varchar(255) | 对应模块字段 |
| addtime | timestamp | 添加时间 |
| 【管理员】模块,表名:admins | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| username | varchar(50) | 帐号 |
| pwd | varchar(50) | 密码 |
| addtime | timestamp | 添加时间 |
| 【用户】模块,表名:yonghu | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| yonghuming | varchar(50) | 用户名 |
| mima | varchar(50) | 密码 |
| xingming | varchar(50) | 姓名 |
| xingbie | varchar(255) | 性别 |
| shouji | varchar(50) | 手机 |
| youxiang | varchar(50) | 邮箱 |
| shenfenzheng | varchar(50) | 身份证 |
| touxiang | varchar(255) | 头像 |
| addtime | timestamp | 添加时间 |
| 【新闻分类】模块,表名:xinwenfenlei | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| fenleimingcheng | varchar(50) | 分类名称 |
| addtime | timestamp | 添加时间 |
| 【景点信息】模块,表名:jingdianxinxi | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| jingdianbianhao | varchar(50) | 景点编号 |
| jingdianmingcheng | varchar(255) | 景点名称 |
| suoshudiqu | int | 所属地区 |
| tupian | text | 图片 |
| kaifangshijian | varchar(255) | 开放时间 |
| fujinmeishi | text | 附近美食 |
| dizhi | varchar(255) | 地址 |
| piaojia | decimal(18, 2) | 票价 |
| liulanliang | int | 浏览量 |
| miaoshu | longtext | 描述 |
| addtime | timestamp | 添加时间 |
| 设置索引, 字段:suoshudiqu , 关联表【diqu】中的id 字段 | ||
| 【旅游线路】模块,表名:lvyouxianlu | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| xianlubianhao | varchar(50) | 线路编号 |
| xianlumingcheng | varchar(255) | 线路名称 |
| tupian | text | 图片 |
| chufadi | varchar(255) | 出发地 |
| tujingdi | varchar(255) | 途经地 |
| zhongdian | varchar(255) | 终点 |
| jiage | decimal(18, 2) | 价格 |
| liulanliang | int | 浏览量 |
| xianlutese | longtext | 线路特色 |
| xianlujianjie | longtext | 线路简介 |
| addtime | timestamp | 添加时间 |
| 【预定】模块,表名:yuding | ||
| 字段名 | 字段类型 | 名称 |
| id | int | (主键) |
| lvyouxianluid | int | 旅游线路id |
| xianlubianhao | varchar(50) | 线路编号 |
| xianlumingcheng | varchar(255) | 线路名称 |
| chufadi | varchar(255) | 出发地 |
| tujingdi | varchar(255) | 途经地 |
| zhongdian | varchar(255) | 终点 |
| jiage | decimal(18, 2) | 价格 |
| dingdanhao | varchar(50) | 订单号 |
| yudingshijian | varchar(25) | 预订时间 |
| yudingrenxingming | varchar(50) | 预订人姓名 |
| lianxifangshi | varchar(50) | 联系方式 |
| zhuangtai | varchar(50) | 状态 |
| beizhu | text | 备注 |
| yudingren | varchar(50) | 预订人 |
| addtime | timestamp | 添加时间 |
| iszf | varchar(10) | 是否支付 |
| 设置索引, 字段:lvyouxianluid , 关联表【lvyouxianlu】中字段id | ||

















系统管理


- /**
- * 管理员 */
- @Controller
- public class AdminsController extends BaseController
- {
- @Autowired
- private AdminsMapper dao;
- @Autowired
- private AdminsService service;
-
- /**
- * 后台列表页
- *
- */
- @RequestMapping("/admins_list")
- public String list()
- {
-
- // 检测是否有登录,没登录则跳转到登录页面
- if(!checkLogin()){
- return showError("尚未登录" , "./login.do");
- }
-
- String order = Request.get("order" , "id"); // 获取前台提交的URL参数 order 如果没有则设置为id
- String sort = Request.get("sort" , "desc"); // 获取前台提交的URL参数 sort 如果没有则设置为desc
- int pagesize = Request.getInt("pagesize" , 12); // 获取前台一页多少行数据
- Example example = new Example(Admins.class); // 创建一个扩展搜索类
- Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
- String where = " 1=1 "; // 创建初始条件为:1=1
- where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
- criteria.andCondition(where); // 将条件写进上面的扩展条件类中
- if(sort.equals("desc")){ // 判断前台提交的sort 参数是否等于 desc倒序 是则使用倒序,否则使用正序
- example.orderBy(order).desc(); // 把sql 语句设置成倒序
- }else{
- example.orderBy(order).asc(); // 把 sql 设置成正序
- }
- int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page 如果没有则设置为1
- page = Math.max(1 , page); // 取两个数的最大值,防止page 小于1
- List<Admins> list = service.selectPageExample(example , page , pagesize); // 获取当前页的行数
-
-
-
- // 将列表写给界面使用
- assign("totalCount" , request.getAttribute("totalCount"));
- assign("list" , list);
- assign("orderby" , order); // 把当前排序结果写进前台
- assign("sort" , sort); // 把当前排序结果写进前台
- return json(); // 将数据写给前端
- }
-
- public String getWhere()
- {
- _var = new LinkedHashMap(); // 重置数据
- String where = " ";
- // 以下也是一样的操作,判断是否符合条件,符合则写入sql 语句
- if(!Request.get("username").equals("")) {
- where += " AND username LIKE '%"+Request.get("username")+"%' ";
- }
- return where;
- }
-
-
-
-
-
- @RequestMapping("/admins_add")
- public String add()
- {
- _var = new LinkedHashMap(); // 重置数据
-
-
- return json(); // 将数据写给前端
- }
-
- @RequestMapping("/admins_updt")
- public String updt()
- {
- _var = new LinkedHashMap(); // 重置数据
- int id = Request.getInt("id");
- // 获取行数据,并赋值给前台jsp页面
- Admins mmm = service.find(id);
- assign("mmm" , mmm);
- assign("updtself" , 0);
-
-
- return json(); // 将数据写给前端
- }
- @RequestMapping("/admins_updtself")
- public String updtself()
- {
- _var = new LinkedHashMap(); // 重置数据
- // 更新个人资料
- int id = (int)request.getSession().getAttribute("id");
- Admins mmm = service.find(id);
- assign("mmm" , mmm);
- assign("updtself" , 1);
- return json(); // 将数据写给前端
- }
- /**
- * 添加内容
- * @return
- */
- @RequestMapping("/adminsinsert")
- public String insert()
- {
- _var = new LinkedHashMap(); // 重置数据
- String tmp="";
- Admins post = new Admins(); // 创建实体类
- // 设置前台提交上来的数据到实体类中
- post.setUsername(Request.get("username"));
-
- post.setPwd(Request.get("pwd"));
-
- post.setAddtime(Info.getDateStr());
-
-
-
-
- service.insert(post); // 插入数据
- int charuid = post.getId().intValue();
-
-
- if(isAjax()){
- return jsonResult(post);
-
- }
- return showSuccess("保存成功" , Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
- }
-
- /**
- * 更新内容
- * @return
- */
- @RequestMapping("/adminsupdate")
- public String update()
- {
- _var = new LinkedHashMap(); // 重置数据
- // 创建实体类
- Admins post = new Admins();
- // 将前台表单数据填充到实体类
- if(!Request.get("username").equals(""))
- post.setUsername(Request.get("username"));
- if(!Request.get("pwd").equals(""))
- post.setPwd(Request.get("pwd"));
- if(!Request.get("addtime").equals(""))
- post.setAddtime(Request.get("addtime"));
-
- post.setId(Request.getInt("id"));
- service.update(post); // 更新数据
- int charuid = post.getId().intValue();
-
- if(isAjax()){
- return jsonResult(post);
- }
- if(Request.getInt("updtself") == 1){
- return showSuccess("保存成功" , "admins_updtself.do");
- }
-
- return showSuccess("保存成功" , Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
- }
- /**
- * 删除
- */
- @RequestMapping("/admins_delete")
- public String delete()
- {
- _var = new LinkedHashMap(); // 重置数据
- if(!checkLogin()){
- return showError("尚未登录");
- }
- int id = Request.getInt("id"); // 根据id 删除某行数据
- HashMap map = Query.make("admins").find(id);
-
- service.delete(id);// 根据id 删除某行数据
- return showSuccess("删除成功",request.getHeader("referer"));//弹出删除成功,并跳回上一页
- }
- }
- /**
- * 公共路由
- */
- @Controller
- public class CommonController extends BaseController{
-
- /**
- * 使用ajax 检测某表中某个字段是否已存在,已存在则无法提交
- * @return
- */
- @RequestMapping(value = "/checkno")
- @ResponseBody
- public String checkon()
- {
- String table = request.getParameter("table");
- String col = request.getParameter("col");
- String checktype = request.getParameter("checktype");
- String value = request.getParameter(col);
- if(checktype.equals("insert")){
- if(Query.make(table).where(col , value).count() > 0){
- return "false";
- }else{
- return "true";
- }
- }else if(checktype.equals("update")){
- String id = request.getParameter("id") == null ? "" : request.getParameter("id");
- if(Query.make(table).where(col , value).where("id" , "neq" , id).count() > 0){
- return "false";
- }else{
- return "true";
- }
- }
- return "false";
- }
-
- /**
- * 审核数据,将是否审核改为已审核状态,点击一下 是 则变否, 点击一下 否 变为是
- * @return
- */
- @RequestMapping("/sh")
- @ResponseBody
- public String sh()
- {
- String yuan=request.getParameter("yuan");
- String id=request.getParameter("id");
- String tablename=request.getParameter("tablename");
- String sql="";
- if(yuan.equals("是"))
- {
- sql="update "+tablename+" set issh='否' where id="+id;
- }
- else
- {
- sql="update "+tablename+" set issh='是' where id="+id;
- }
- new CommDAO().commOper(sql);
- if(isAjax())
- {
- jsonResult("ok");
- return "";
- }
- return "<script>location.href='"+request.getHeader("Referer")+"';</script>";
- }
-
- /**
- * 获取表的某行数据
- * @return
- */
- @RequestMapping("/tableAjax")
- @ResponseBody
- public String tableFind()
- {
- String table = request.getParameter("table");
- String id = request.getParameter("id");
- Map map = Query.make(table).where("id" , id).find();
- //JSONObject json = JSONObject.parse(map);
- return JSON.toJSONString(map);//.toString();
- }
-
- /**
- * 获取某表得某行数据
- *
- */
- @RequestMapping("/selectView")
- public String selectView()
- {
- String key = request.getParameter("key");
- String table = request.getParameter("table");
- String value = request.getParameter("value");
- Map data = Query.make(table).where(key,value).find();
- return jsonResult(data);
- }
-
- /**
- * 获取某表得所有数据
- *
- */
- @RequestMapping("/selectAll")
- public String selectAll()
- {
- String table = request.getParameter("table");
- Query query = Query.make(table);
- if(request.getParameter("where") != null){
- JSONObject where = JSON.parseObject(Request.get("where"));
- for(Map.Entry entry:where.entrySet())
- {
- String key = (String)entry.getKey();
- Object value = entry.getValue();
- if(value instanceof JSONObject)
- {
- JSONObject w = (JSONObject) value;
- query.where(key , w.getString("exp") , w.getString("value"));
- }else if(value instanceof JSONArray){
- JSONArray w = (JSONArray) value;
- query.where(key , (String) w.get(0) , w.get(1));
- }else{
- query.where(key , value);
- }
- }
- }
- if(request.getParameter("limit")!=null)
- {
- query.limit(Request.get("limit"));
- }
- if(request.getParameter("order")!=null)
- {
- query.order(Request.get("order"));
- }
- if(request.getParameter("field")!=null)
- {
- query.field(Request.get("field"));
- }
- List list = query.select();
- return jsonResult(list);
- }
-
- /**
- * 搜索下拉某表的数据
- * @return
- */
- @RequestMapping("/selectUpdateSearch")
- @ResponseBody
- public String selectUpdateSearch()
- {
- String table = Request.get("table");
- Query query = Query.make(table);
- String limit = "50";
- JSONObject where = JSON.parseObject(Request.get("where"));
- for(Map.Entry entry:where.entrySet())
- {
- String key = (String)entry.getKey();
- Object value = entry.getValue();
- if("limit".equals(key)){
- limit = String.valueOf(value);
- }else{
- if(value instanceof JSONObject)
- {
- JSONObject w = (JSONObject) value;
- query.where(key , w.getString("exp") , w.getString("value"));
- }else if(value instanceof JSONArray){
- JSONArray w = (JSONArray) value;
- query.where(key , (String) w.get(0) , w.get(1));
- }else{
- query.where(key , value);
- }
- }
- }
- List list = query.order("id desc").limit(limit).select();
- return JSON.toJSONString(list);
- }
-
- }
- /**
- * 友情链接 */
- @Controller
- public class YouqinglianjieController extends BaseController
- {
- @Autowired
- private YouqinglianjieMapper dao;
- @Autowired
- private YouqinglianjieService service;
-
- /**
- * 后台列表页
- *
- */
- @RequestMapping("/youqinglianjie_list")
- public String list()
- {
-
- // 检测是否有登录,没登录则跳转到登录页面
- if(!checkLogin()){
- return showError("尚未登录" , "./login.do");
- }
-
- String order = Request.get("order" , "id"); // 获取前台提交的URL参数 order 如果没有则设置为id
- String sort = Request.get("sort" , "desc"); // 获取前台提交的URL参数 sort 如果没有则设置为desc
- int pagesize = Request.getInt("pagesize" , 12); // 获取前台一页多少行数据
- Example example = new Example(Youqinglianjie.class); // 创建一个扩展搜索类
- Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
- String where = " 1=1 "; // 创建初始条件为:1=1
- where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
- criteria.andCondition(where); // 将条件写进上面的扩展条件类中
- if(sort.equals("desc")){ // 判断前台提交的sort 参数是否等于 desc倒序 是则使用倒序,否则使用正序
- example.orderBy(order).desc(); // 把sql 语句设置成倒序
- }else{
- example.orderBy(order).asc(); // 把 sql 设置成正序
- }
- int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page 如果没有则设置为1
- page = Math.max(1 , page); // 取两个数的最大值,防止page 小于1
- List<Youqinglianjie> list = service.selectPageExample(example , page , pagesize); // 获取当前页的行数
-
-
-
- // 将列表写给界面使用
- assign("totalCount" , request.getAttribute("totalCount"));
- assign("list" , list);
- assign("orderby" , order); // 把当前排序结果写进前台
- assign("sort" , sort); // 把当前排序结果写进前台
- return json(); // 将数据写给前端
- }
-
- public String getWhere()
- {
- _var = new LinkedHashMap(); // 重置数据
- String where = " ";
- // 以下也是一样的操作,判断是否符合条件,符合则写入sql 语句
- return where;
- }
-
-
-
-
-
- @RequestMapping("/youqinglianjie_add")
- public String add()
- {
- _var = new LinkedHashMap(); // 重置数据
-
-
- return json(); // 将数据写给前端
- }
-
- @RequestMapping("/youqinglianjie_updt")
- public String updt()
- {
- _var = new LinkedHashMap(); // 重置数据
- int id = Request.getInt("id");
- // 获取行数据,并赋值给前台jsp页面
- Youqinglianjie mmm = service.find(id);
- assign("mmm" , mmm);
- assign("updtself" , 0);
-
-
- return json(); // 将数据写给前端
- }
- /**
- * 添加内容
- * @return
- */
- @RequestMapping("/youqinglianjieinsert")
- public String insert()
- {
- _var = new LinkedHashMap(); // 重置数据
- String tmp="";
- Youqinglianjie post = new Youqinglianjie(); // 创建实体类
- // 设置前台提交上来的数据到实体类中
- post.setWangzhanmingcheng(Request.get("wangzhanmingcheng"));
-
- post.setWangzhi(Request.get("wangzhi"));
-
- post.setAddtime(Info.getDateStr());
-
-
-
-
- service.insert(post); // 插入数据
- int charuid = post.getId().intValue();
-
-
- if(isAjax()){
- return jsonResult(post);
-
- }
- return showSuccess("保存成功" , Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
- }
-
- /**
- * 更新内容
- * @return
- */
- @RequestMapping("/youqinglianjieupdate")
- public String update()
- {
- _var = new LinkedHashMap(); // 重置数据
- // 创建实体类
- Youqinglianjie post = new Youqinglianjie();
- // 将前台表单数据填充到实体类
- if(!Request.get("wangzhanmingcheng").equals(""))
- post.setWangzhanmingcheng(Request.get("wangzhanmingcheng"));
- if(!Request.get("wangzhi").equals(""))
- post.setWangzhi(Request.get("wangzhi"));
- if(!Request.get("addtime").equals(""))
- post.setAddtime(Request.get("addtime"));
-
- post.setId(Request.getInt("id"));
- service.update(post); // 更新数据
- int charuid = post.getId().intValue();
-
- if(isAjax()){
- return jsonResult(post);
- }
-
- return showSuccess("保存成功" , Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
- }
- /**
- * 删除
- */
- @RequestMapping("/youqinglianjie_delete")
- public String delete()
- {
- _var = new LinkedHashMap(); // 重置数据
- if(!checkLogin()){
- return showError("尚未登录");
- }
- int id = Request.getInt("id"); // 根据id 删除某行数据
- HashMap map = Query.make("youqinglianjie").find(id);
-
- service.delete(id);// 根据id 删除某行数据
- return showSuccess("删除成功",request.getHeader("referer"));//弹出删除成功,并跳回上一页
- }
- }
欢迎各位小伙伴们点赞,评论,收藏,关注博主以后会出更多项目分享给大家