自学实前后端践项目3 Spring Cloud微服务 7

八。上面已经调用了相关页面下面对需要查询调用的数据进行封装

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">&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;|&nbsp;&nbsp;欢迎回来!<a href="/account/redirect/order" th:text="${session.user.nickname}"></a><a href="/account/logout">&nbsp;&nbsp;&nbsp;<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">&nbsp;&nbsp;&nbsp;<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";
}
测试下单结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值