zoukankan      html  css  js  c++  java
  • 尚筹网16确认回报、订单

    搭建order-consumer开发环境

    参照project-consumer

    注意不要忘了在zuul里面添加order-consumer对应的路由规则

    crowd-order:
      service-id: adom-crowd-order
      path: /order/**

    建模

    结构

    物理建模

    订单表

    CREATE TABLE `project_crowd`.`t_order` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', 
    `order_num` CHAR(100) COMMENT '订单号', 
    `pay_order_num` CHAR(100) COMMENT '支付宝流水号',
     `order_amount` DOUBLE(10,5) COMMENT '订单金额', 
    `invoice` INT COMMENT '是否开发票(0 不开,1 开)',
     `invoice_title` CHAR(100) COMMENT '发票抬头', 
    `order_remark` CHAR(100) COMMENT '订单备注', 
    `address_id` CHAR(100) COMMENT '收货地址 id', 
    PRIMARY KEY (`id`)
    );

    收获地址表

    CREATE TABLE `project_crowd`.`t_address` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
    `receive_name` CHAR(100) COMMENT '收件人', 
    `phone_num` CHAR(100) COMMENT '手机号', 
    `address` CHAR(200) COMMENT '收货地址',
     `member_id` INT COMMENT '用户 id',
    PRIMARY KEY (`id`) 
    );

    项目信息表

    CREATE TABLE `project_crowd`.`t_order_project` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', 
    `project_name` CHAR(200) COMMENT '项目名称', 
    `launch_name` CHAR(100) COMMENT '发起人',
     `return_content` CHAR(200) COMMENT '回报内容', 
    `return_count` INT COMMENT '回报数量',
     `support_price` INT COMMENT '支持单价',
    `freight` INT COMMENT '配送费用', 
    `order_id` INT COMMENT '订单表的主键', 
    PRIMARY KEY (`id`)
    );

    目标1:确认回报内容

    思路

    操作起点

    <a th:href="'http://www.crowd.com/order/confirm/return/info/'+${return.returnId}" class="btn btn-warning btn-lg">支持</a>

    注意1:因为需要从project-consumer跳转到order-consumer,所以要通过域名经过网关进行访问,以保证能够保持会话状态.

    注意2:需要携带项目id和回报id便于查询数据

    创建OrderProjectVO

    public class OrderProjectVO implements Serializable {
        private static final long serialVersionUID = 1L;
        private Integer id;
        private String projectName;
        private String launchName;
        private String returnContent;
        private Integer returnCount;
        private Integer supportPrice;
        private Integer freight;
        private Integer orderId;
        private Integer signalPurchase;
        private Integer purchase;
        public OrderProjectVO() {
        }
        public OrderProjectVO(Integer id, String projectName, String launchName, String returnContent, Integer returnCount, Integer supportPrice, Integer freight, Integer orderId, Integer signalPurchase, Integer purchase) {
            this.id = id;
            this.projectName = projectName;
            this.launchName = launchName;
            this.returnContent = returnContent;
            this.returnCount = returnCount;
            this.supportPrice = supportPrice;
            this.freight = freight;
            this.orderId = orderId;
            this.signalPurchase = signalPurchase;
            this.purchase = purchase;
        }

    调用接口

    @RequestMapping("/confirm/return/info/{returnId}")
    public String showReturnConfirmInfo(
    
            @PathVariable("returnId") Integer returnId,
            HttpSession session) {
        ResultEntity<OrderProjectVO> resultEntity =
                mySQLRemoteService.getOrderProjectVORemote(returnId);
    
        if (ResultEntity.SUCCESS.equals(resultEntity.getResult())) {
            OrderProjectVO orderProjectVO = resultEntity.getData();
            // 为了在后续操作中保持orderProjectVO数据,存入session
            session.setAttribute("orderProjectVO", orderProjectVO);
    
        }
    
        return "confirm_return";
    }

    Feign接口

    @RequestMapping("/get/order/project/vo/remote")
    ResultEntity<OrderProjectVO> getOrderProjectVORemote(@RequestParam("returnId") Integer returnId);

    完成接口

    orderProviderController

    @RequestMapping("get/order/project/vo/remote")
    ResultEntity<OrderProjectVO> getOrderProjectVORemote(
    
            @RequestParam("returnId") Integer returnId) {
        try {
            OrderProjectVO orderProjectVO = orderService.getOrderProjectVO(returnId);
            return ResultEntity.sucessWithData(orderProjectVO);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultEntity.failed(e.getMessage());
        }
    
    }

    OrderServiceImpl

    @Override
    public OrderProjectVO getOrderProjectVO( Integer returnId) {
        return orderProjectPOMapper.selectOrderProjectVO(returnId);
    }

    SQL

    <select id="selectOrderProjectVO" resultType="com.example.entity.vo.OrderProjectVO">
            SELECT DISTINCT
              project_name projectName,
              content returnContent,
              description_simple launchName,
              t_return.supportmoney supportPrice,
              freight freight,
              COUNT returnCount,
              signalpurchase signalPurchase,
              purchase purchase
              FROM
              t_project
              LEFT JOIN t_member_launch_info
                ON t_project.memberid = t_member_launch_info.memberid
              LEFT JOIN t_return
                ON t_project.id = t_return.projectid
              WHERE t_return.id = #{returnId}
    
    </select>

    完成页面显示

    目标2:确认订单

    思路

    创建AddressVO

    public class AddressVO implements Serializable {
        private static final long serialVersionUID = 1L;
    
        private Integer id;
    
        private String receiveName;
    
        private String phoneNum;
    
        private String address;
    
        private Integer memberId;
    
        public AddressVO() {
        }
    
        public AddressVO(Integer id, String receiveName, String phoneNum, String address, Integer memberId) {
            this.id = id;
            this.receiveName = receiveName;
            this.phoneNum = phoneNum;
            this.address = address;
            this.memberId = memberId;
        }

    Session域合并回报数量

    @RequestMapping("/confirm/order/{returnCount}")
    public String showConfirmOderInfo(
            @PathVariable("returnCount") Integer returnCount,
            HttpSession session) {
        // 把回报数量传入session
        OrderProjectVO orderProjectVO = (OrderProjectVO) session.getAttribute("orderProjectVO");
        orderProjectVO.setReturnCount(returnCount);
        // 为了在后续操作中保持orderProjectVO数据,存入session
        session.setAttribute("orderProjectVO", orderProjectVO);
        // 获取已登录用户的id
        MemberLoginVO memberLoginVO = (MemberLoginVO) session.getAttribute(ConstantUtil.ATTR_NAME_LOGIN_MEMBER);
        Integer memberId = memberLoginVO.getId();
        // 查询目前的收获地址数据
        ResultEntity<List<AddressVO>> resultEntity = mySQLRemoteService.getAddressVORemote(memberId);
        if (ResultEntity.SUCCESS.equals(resultEntity.getResult())) {
            List<AddressVO> resultEntityData = resultEntity.getData();
            // 为了在后续操作中保持orderProjectVO数据,存入session
            session.setAttribute("addressVOList", resultEntityData);
        }
        return "confirm_order";
    }

    页面显示

    新增收获地址

    控制立即付款按钮是否有效

    勾选我已了解风险和规则有效

    $("#knowRoleCheckBox").click(function(){
       var currentStatus = this.checked;
       if(currentStatus) {
          $("#payButton").prop("disabled", "");
       }else{
          $("#payButton").prop("disabled","disabled");
       }
    });
  • 相关阅读:
    Mbps、Kbps、bps、kb、mb区别和换算
    Python导入模块方法
    C# WinForm 程序免安装 .NET Framework(XP/win7/win10环境运行)
    生成缩略图
    WCF 的优势和特点
    不要在using语句中调用WCF服务
    pb getchild获取DropDownDW子窗体后进行取值
    Bootstrap后台管理模板调研
    PB调用C#编写的DLL
    PowerBuilder与嵌入浏览器交互
  • 原文地址:https://www.cnblogs.com/Adam-Ye/p/13423704.html
Copyright © 2011-2022 走看看