八。上面已经调用了相关页面下面对需要查询调用的数据进行封装
1.首先在order的entity里面创建需要的实体类
OrderVO
package com.redhat.entity; import lombok.Data; import java.util.List; @Data public class OrderVO { private int code; private String msg; private int count; private List<Order> data; }
2.创建接口OrderRepository
package com.redhat.repository; import com.redhat.entity.Order; import java.util.List; public interface OrderRepository { public void save(Order order); public List<Order> findAllByUid(int index,int limit,int uid); public int countByUid(int uid); }
3.OrderHandler里面创建相对应的方法名称已经访问路径
package com.redhat.controller; import com.redhat.entity.Order; import com.redhat.repository.OrderRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; @RestController @RequestMapping("/order") public class OrderHandler { // @Value("${server.port}") // private String port; // @GetMapping("/index") // public String index(){ // return "order的端口"+this.port; // } @Autowired private OrderRepository orderRepository; @PostMapping("/save") public void save(@RequestBody Order order){ order.setDate(new Date()); orderRepository.save(order); } @GetMapping("/findAllByUid/{index}/{limit}/{uid}") public List<Order> findAll(@PathVariable("index") int index, @PathVariable("limit") int limit, @PathVariable("uid") int uid){ return orderRepository.findAllByUid(index,limit,uid); } @GetMapping("/countByUid") public int countByUid (@PathVariable("uid") int uid){ return orderRepository.countByUid(uid); } }
4.mapping下OrderRepository文件编写对应数据查询语句
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.redhat.repository.OrderRepository"> <resultMap id="orderMap" type="com.redhat.entity.Order"> <id column="id" property="id"></id> <result column="date" property="date"></result> <result column="state" property="state"></result> <association property="menu" select="com.redhat.repository.MenuRepository.findById" column="mid"></association> </resultMap> <insert id="save" parameterType="com.redhat.entity.Order"> insert into t_order(uid,mid,date,state) values(#{user.id},#{menu.id},#{date},0) </insert> <select id="findAllByUid" resultMap="orderMap"> select id,mid,date,state from t_order where uid = #{param3} limit #{param1},#{param2} </select> <select id="countByUid" parameterType="int" resultType="int"> select count(*) from t_order where uid=#{id} </select> </mapper>
6.测试对应功能
1)用uid查找
2)用uid统计
7。修改OrderHandler测试是否满足框架数据模型
package com.redhat.controller; import com.redhat.entity.Order; import com.redhat.entity.OrderVO; import com.redhat.repository.OrderRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; @RestController @RequestMapping("/order") public class OrderHandler { // @Value("${server.port}") // private String port; // @GetMapping("/index") // public String index(){ // return "order的端口"+this.port; // } @Autowired private OrderRepository orderRepository; @PostMapping("/save") public void save(@RequestBody Order order){ order.setDate(new Date()); orderRepository.save(order); } @GetMapping("/findAllByUid/{index}/{limit}/{uid}") public OrderVO findAllByUid(@PathVariable("index") int index, @PathVariable("limit") int limit, @PathVariable("uid") int uid){ OrderVO orderVO = new OrderVO(); orderVO.setMsg(""); orderVO.setCount(orderRepository.countByUid(uid)); orderVO.setData(orderRepository.findAllByUid(index,limit,uid)); return orderVO; } @GetMapping("/countByUid/{uid}") public int countByUid (@PathVariable("uid") int uid){ return orderRepository.countByUid(uid); } } 测试结果
8.添加点击名字查看订单功能
1)添加前端页面
链接:https://pan.baidu.com/s/1sLPe_v6hXXr4DGvauhDVIg
提取码:6b3y
2)修改前端页面访问路径<a href="/account/redirect/order"改为<a href="/menu/redirect/order"
<div style="margin-left: 460px; width: 200px;"> 欢迎回来!<a href="/menu/redirect/order" th:text="${session.user.nickname}"></a><a href="/account/logout"> <button class="layui-btn layui-btn-warm layui-btn-radius">退出</button></a> </div>
3)client 的handler
package com.redhat.controller; import com.redhat.entity.Menu; import com.redhat.entity.Order; import com.redhat.entity.OrderVO; import com.redhat.entity.User; import com.redhat.feign.OrderFeign; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpSession; @Controller @RequestMapping("/order") public class OrderHandler { @Autowired private OrderFeign orderFeign; @GetMapping("/save/{mid}") public String save(@PathVariable("mid")int mid, HttpSession session){ User user = (User)session.getAttribute("user"); Order order =new Order(); order.setUser(user); Menu menu = new Menu(); menu.setId(mid); order.setMenu(menu); order.setState(0); orderFeign.save(order); return "index"; } @GetMapping("/findAllByUid") @ResponseBody public OrderVO findAllByUid(@RequestParam("page") int page,@RequestParam("limit") int limit,HttpSession session){ User user = (User) session.getAttribute("user"); int index = (page-1)*limit; return orderFeign.findAllByUid(index,limit,user.getId()); } }
4)OrderFeign的接口转换代码
package com.redhat.feign; import com.redhat.entity.MenuVO; import com.redhat.entity.Order; import com.redhat.entity.OrderVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @FeignClient(value = "order") public interface OrderFeign { @PostMapping("/order/save") public void save(@RequestBody Order order); @GetMapping("/order/findAllByUid/{index}/{limit}/{uid}") public OrderVO findAllByUid(@PathVariable("index") int index, @PathVariable("limit") int limit, @PathVariable("uid") long uid ); }
5)Order 文件下的OrderRepository接口
package com.redhat.repository; import com.redhat.entity.Order; import java.util.List; public interface OrderRepository { public void save(Order order); public List<Order> findAllByUid(int index,int limit,long uid); public int countByUid(long uid); }
6)order 的orderhandler
package com.redhat.controller; import com.redhat.entity.Order; import com.redhat.entity.OrderVO; import com.redhat.entity.User; import com.redhat.repository.OrderRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpSession; import java.util.Date; import java.util.List; @RestController @RequestMapping("/order") public class OrderHandler { // @Value("${server.port}") // private String port; // @GetMapping("/index") // public String index(){ // return "order的端口"+this.port; // } @Autowired private OrderRepository orderRepository; @PostMapping("/save") public void save(@RequestBody Order order){ order.setDate(new Date()); orderRepository.save(order); } @GetMapping("/findAllByUid/{index}/{limit}/{uid}") public OrderVO findAllByUid(@PathVariable("index") int index, @PathVariable("limit") int limit, @PathVariable("uid") long uid){ OrderVO orderVO = new OrderVO(); orderVO.setMsg(""); orderVO.setCount(orderRepository.countByUid(uid)); orderVO.setData(orderRepository.findAllByUid(index,limit,uid)); return orderVO; } @GetMapping("/countByUid/{uid}") public int countByUid (@PathVariable("uid") long uid){ return orderRepository.countByUid(uid); } }
7)把OderVO复制到client目录下便于使用
8)测试功能
9)Order前端页面修改account 为menu实现点击首页跳转页面到首页
<div style="margin-left: 460px; width: 300px;"> <a href="/menu/redirect/index">首页</a> | 欢迎回来!<a href="/account/redirect/order" th:text="${session.user.nickname}"></a><a href="/account/logout"> <button class="layui-btn layui-btn-warm layui-btn-radius">退出</button></a> </div>
9.实现点击下单测试
index前端页面稍作修改
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" th:href="@{/layui/css/layui.css}" media="all"> </head> <body> <div class="layui-container" style="width: 700px;height: 600px;margin-top: 0px;padding-top: 60px;"> <div style="margin-left: 460px; width: 200px;"> 欢迎回来!<a href="/menu/redirect/order" th:text="${session.user.nickname}"></a><a href="/account/logout"> <button class="layui-btn layui-btn-warm layui-btn-radius">退出</button></a> </div> <table class="layui-hide" id="test" lay-filter="test"></table> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-xs" lay-event="order">订购</a> </script> <script th:src="@{/layui/layui.js}" charset="utf-8"></script> <script> layui.use('table', function(){ var table = layui.table; table.render({ elem: '#test' ,url:'/menu/findAll' ,title: '菜单列表' ,cols: [ [ {field:'id', width:100, title: '编号', sort: true} ,{field:'name', width:150, title: '菜品'} ,{field:'price', width:80, title: '单价'} ,{field:'flavor', width:80, title: '口味'} ,{field:'tid',width:100, title: '分类',templet:function(data){ return data.type.name } } ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:140} ] ] ,page: true }); //监听行工具事件 // table.on('tool(test)', function(obj){ // var data = obj.data; // if(obj.event === 'update'){ // layer.confirm('修改'); // window.location.href="/menu/findById/"+data.id; // // }if (obj.event=== 'del'){ // layer.confirm('确定要删除吗?不可复原哦',function (index ) { // window.location.href="/menu/deleteById/"+data.id; // layer.close(index); // }); // } // }); table.on('tool(test)', function(obj){ var data = obj.data; if(obj.event === 'order'){ window.location.href="/order/save/"+data.id; } }); }); </script> </div> <script> //二级菜单联动 layui.use('element', function(){ var element = layui.element; }); </script> </body> </html>
测试下单跳转把client 本来是return "index";改成return "order";就可以下单后跳转到订单查询页面而不是跳转到主页
@GetMapping("/save/{mid}") public String save(@PathVariable("mid")int mid, HttpSession session){ User user = (User)session.getAttribute("user"); Order order =new Order(); order.setUser(user); Menu menu = new Menu(); menu.setId(mid); order.setMenu(menu); order.setState(0); orderFeign.save(order); return "order"; } 测试下单结果