package com.ym.mec.biz.dal.entity;

import com.ym.mec.common.enums.BaseEnum;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;

import java.math.BigDecimal;

/**
 * 对应数据库表(goods_order):
 */
public class GoodsOrder {

	public enum OrderStatus implements BaseEnum<String, OrderStatus> {

		NOT_PAY("NOT_PAY", "待支付"), WAIT_PAY_CONFIRM("WAIT_PAY_CONFIRM", "支付待确认"), WAIT_SHIPMENT("WAIT_SHIPMENT", "待发货"), SHIPPED("SHIPPED", "已发货"), RECEIVED(
				"RECEIVED", "已收货"), COMPLETED("COMPLETED", "已完成"), CANCELED("CANCELED", "已取消"), FAILED("FAILED", "支付失败");

		private String code;

		private String desc;

		private OrderStatus(String code, String desc) {
			this.code = code;
			this.desc = desc;
		}

		@Override
		public String getCode() {
			return code;
		}

		public String getDesc() {
			return desc;
		}
	}

	/**  */
	private Long id;

	/**  */
	private Integer userId;

	/** 订单状态 */
	@ApiModelProperty(value = "订单状态",required = false)
	private OrderStatus status;

	/** 订单总额 */
	@ApiModelProperty(value = "订单总额",required = false)
	private BigDecimal totalAmount;
	
	/** 优惠金额 */
	@ApiModelProperty(value = "优惠金额",required = false)
	private BigDecimal couponAmount;

	/** 商品数量 */
	@ApiModelProperty(value = "商品数量",required = false)
	private Integer goodsQuantity;

	/** 用户备注 */
	@ApiModelProperty(value = "用户备注",required = false)
	private String userNote;

	/** 订单号 */
	@ApiModelProperty(value = "订单号",required = false)
	private String orderNo;

	/** 订单来源 */
	@ApiModelProperty(value = "订单来源",required = false)
	private String orderSource;

	/** 收货人 */
	@ApiModelProperty(value = "收货人",required = false)
	private Long receiverId;

	/** 快递公司 */
	@ApiModelProperty(value = "快递公司",required = false)
	private String expressCompanyCode;

	/** 快递单号 */
	@ApiModelProperty(value = "快递单号",required = false)
	private String expressNum;

	/**  */
	private java.util.Date createTime;

	/**  */
	private java.util.Date updateTime;

	public void setId(Long id) {
		this.id = id;
	}

	public Long getId() {
		return this.id;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public Integer getUserId() {
		return this.userId;
	}

	public void setStatus(OrderStatus status) {
		this.status = status;
	}

	public OrderStatus getStatus() {
		return this.status;
	}

	public BigDecimal getTotalAmount() {
		return totalAmount;
	}

	public void setTotalAmount(BigDecimal totalAmount) {
		this.totalAmount = totalAmount;
	}

	public BigDecimal getCouponAmount() {
		return couponAmount;
	}

	public void setCouponAmount(BigDecimal couponAmount) {
		this.couponAmount = couponAmount;
	}

	public void setGoodsQuantity(Integer goodsQuantity) {
		this.goodsQuantity = goodsQuantity;
	}

	public Integer getGoodsQuantity() {
		return this.goodsQuantity;
	}

	public void setUserNote(String userNote) {
		this.userNote = userNote;
	}

	public String getUserNote() {
		return this.userNote;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	public String getOrderNo() {
		return this.orderNo;
	}

	public void setOrderSource(String orderSource) {
		this.orderSource = orderSource;
	}

	public String getOrderSource() {
		return this.orderSource;
	}

	public void setReceiverId(Long receiverId) {
		this.receiverId = receiverId;
	}

	public Long getReceiverId() {
		return this.receiverId;
	}

	public void setExpressCompanyCode(String expressCompanyCode) {
		this.expressCompanyCode = expressCompanyCode;
	}

	public String getExpressCompanyCode() {
		return this.expressCompanyCode;
	}

	public void setExpressNum(String expressNum) {
		this.expressNum = expressNum;
	}

	public String getExpressNum() {
		return this.expressNum;
	}

	public void setCreateTime(java.util.Date createTime) {
		this.createTime = createTime;
	}

	public java.util.Date getCreateTime() {
		return this.createTime;
	}

	public void setUpdateTime(java.util.Date updateTime) {
		this.updateTime = updateTime;
	}

	public java.util.Date getUpdateTime() {
		return this.updateTime;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

}
