✅P266_商城业务-订单服务-订单确认页模型抽取

gong_yz大约 2 分钟谷粒商城

数据模型分析

用户地址信息,数据表:ums_member_receive_address

商品项信息,参考之前编写得CartItemVo

优惠券信息,使用京豆的形式增加用户的积分->ums_memberintegration字段

订单总额和应付总额信息


编写VO

订单确认页VO

cfmall-order/src/main/java/com/gyz/cfmall/order/vo/OrderConfirmVo.java

package com.gyz.cfmall.order.vo;

import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author gong_yz
 * @Description 订单确认页VO
 */

public class OrderConfirmVo {
    /**
     * 会员收获地址列表
     */
    @Getter
    @Setter
    List<MemberAddressVo> memberAddressVos;

    /**
     * 所有选中的购物项
     */
    @Getter
    @Setter
    List<OrderItemVo> items;

    /**
     * 优惠券(会员积分)
     */
    @Getter
    @Setter
    private Integer integration;

    /**
     * 防止重复提交的令牌
     */
    @Getter
    @Setter
    private BigDecimal total;

    @Getter
    @Setter
    private BigDecimal payPrice;
}

用户地址VO

cfmall-order/src/main/java/com/gyz/cfmall/order/vo/MemberAddressVo.java

package com.gyz.cfmall.order.vo;

import lombok.Data;

/**
 * @author gong_yz
 * @Description
 */
@Data
public class MemberAddressVo {

    private Long id;
    /**
     * member_id
     */
    private Long memberId;
    /**
     * 收货人姓名
     */
    private String name;
    /**
     * 电话
     */
    private String phone;
    /**
     * 邮政编码
     */
    private String postCode;
    /**
     * 省份/直辖市
     */
    private String province;
    /**
     * 城市
     */
    private String city;
    /**
     * 区
     */
    private String region;
    /**
     * 详细地址(街道)
     */
    private String detailAddress;
    /**
     * 省市区代码
     */
    private String areacode;
    /**
     * 是否默认
     */
    private Integer defaultStatus;
}

商品信息VO

cfmall-order/src/main/java/com/gyz/cfmall/order/vo/OrderItemVo.java

package com.gyz.cfmall.order.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author gong_yz
 * @Description
 */
@Data
public class OrderItemVo {

    private Long skuId;

    /**
     * 是否被选中
     */
    private Boolean check;

    private String title;

    /**
     * 默认图片
     */
    private String image;

    /**
     * 商品套餐属性
     */
    private List<String> skuAttrValues;

    /**
     * 商品单价
     */
    private BigDecimal price;

    /**
     * 商品数量
     */
    private Integer count;

    /**
     * 总价
     */
    private BigDecimal totalPrice;

}

业务逻辑

cfmall-order/src/main/java/com/gyz/cfmall/order/web/OrderWebController.java

package com.gyz.cfmall.order.web;

import com.gyz.cfmall.order.service.OrderService;
import com.gyz.cfmall.order.vo.OrderConfirmVo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import javax.annotation.Resource;

/**
 * @author gong_yz
 * @Description
 */
@Controller
public class OrderWebController {

    @Resource
    private OrderService orderService;

    /**
     * 跳转结算确认页面
     * @param model
     * @return
     */
    @GetMapping("/toTrade")
    public String toTrade(Model model) {
        OrderConfirmVo confirmVo = orderService.confirmOrder();
        model.addAttribute("confirmOrderData", confirmVo);
        return "confirm";
    }
}

具体实现逻辑后续会补充!