package com.yiqi.core.domain.dto.wx;

import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;

/**
 * @author xiaohei
 * @date 2024/2/4
 */
@Data
public class IntracityExpressPreAddOrderRequest {

    @JsonProperty("wx_store_id")
    @ApiModelProperty("微信门店编号")
    private String wx_store_id;

    @JsonProperty("user_name")
    @ApiModelProperty("收件人姓名")
    private String user_name;

    @JsonProperty("user_phone")
    @ApiModelProperty("收件人手机号")
    private String user_phone;

    @JsonProperty("user_lng")
    @ApiModelProperty("收件用户位置经度")
    private double user_lng;

    @JsonProperty("user_lat")
    @ApiModelProperty("收件用户位置维度")
    private double user_lat;

    @JsonProperty("user_address")
    @ApiModelProperty("收件用户详细地址")
    private String user_address;

    @JsonProperty("cargo_name")
    @ApiModelProperty("商品名称")
    private String cargo_name;

    @ApiModelProperty("商品重量")
    private CargoInfo cargo;

    @JsonProperty("user_sandbox")
    @ApiModelProperty("是否使用沙箱;1:使用沙箱环境;使用测试沙箱环境，不需要充值运费就可以生成测试订单")
    private Integer user_sandbox;

    public String toJson() {
        return WxMaGsonBuilder.create().toJson(this);
    }

    @Data
    public static class CargoInfo{
        @JsonProperty("cargo_name")
        @ApiModelProperty("商品名称")
        private String cargo_name;

        @JsonProperty("cargo_weight")
        @ApiModelProperty("商品总重量")
        private Integer cargo_weight;

        @JsonProperty("cargo_price")
        @ApiModelProperty("商品总价格")
        private Integer cargo_price;

        @JsonProperty("cargo_type")
        @ApiModelProperty("商品类型，固定3")
        private Integer cargo_type = 3;

        @JsonProperty("cargo_num")
        @ApiModelProperty("商品数量")
        private Integer cargo_num;

        public CargoInfo() {
        }

        public CargoInfo(String cargo_name, Integer cargo_weight, Integer cargo_price, Integer cargo_num) {
            this.cargo_name = cargo_name;
            this.cargo_weight = cargo_weight;
            this.cargo_price = cargo_price;
            this.cargo_num = cargo_num;
        }
    }
}
