admin
2020-05-22 110c73f31ecfd0dbd7299a0cfd39095d100cb923
唯品会订单相关代码
6个文件已修改
9个文件已添加
1095 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dto/vipshop/VipShopOrderQueryModel.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/vipshop/VipShopQueryOrderResultDTO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/vipshop/VipShopAfterSaleDetailInfo.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/vipshop/VipShopOrder.java 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/vipshop/VipShopOrderDetail.java 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/exception/vipshop/VipShopOrderException.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/vipshop/VipShopOrderService.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/vipshop/JDGoodsClassService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/vipshop/JDGoodsService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonOrderGoodsFactory.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopApiUtil.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/vipshop/VipShopOrderQueryModel.java
New file
@@ -0,0 +1,119 @@
package com.yeshi.fanli.dto.vipshop;
import java.util.List;
public class VipShopOrderQueryModel {
    public final static int STATUS_NOT_VALID = 0;
    public final static int STATUS_UNKOWN = 1;
    public final static int STATUS_FINISH = 2;
    private Integer status;// 订单状态:0-不合格,1-待定,2-已完结,该参数不设置默认代表全部状态
    private Long orderTimeStart;// 订单时间起始 时间戳 单位毫秒
    private Long orderTimeEnd;// 订单时间结束 时间戳 单位毫秒
    private Integer page;// 页码:从1开始
    private Integer pageSize;// 页面大小:默认20
    private Long updateTimeStart;// 更新时间-起始 时间戳 单位毫秒
    private Long updateTimeEnd;// 更新时间-结束 时间戳 单位毫秒
    private List<String> orderSnList;// 订单号列表:当传入订单号列表时,订单时间和更新时间区间可不传入
    private String chanTag;// 筛选订单,渠道商方式下表示自定义渠道标识,工具商方式下表示用户pid
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Long getOrderTimeStart() {
        return orderTimeStart;
    }
    public void setOrderTimeStart(Long orderTimeStart) {
        this.orderTimeStart = orderTimeStart;
    }
    public Long getOrderTimeEnd() {
        return orderTimeEnd;
    }
    public void setOrderTimeEnd(Long orderTimeEnd) {
        this.orderTimeEnd = orderTimeEnd;
    }
    public Integer getPage() {
        return page;
    }
    public void setPage(Integer page) {
        this.page = page;
    }
    public Integer getPageSize() {
        return pageSize;
    }
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    public Long getUpdateTimeStart() {
        return updateTimeStart;
    }
    public void setUpdateTimeStart(Long updateTimeStart) {
        this.updateTimeStart = updateTimeStart;
    }
    public Long getUpdateTimeEnd() {
        return updateTimeEnd;
    }
    public void setUpdateTimeEnd(Long updateTimeEnd) {
        this.updateTimeEnd = updateTimeEnd;
    }
    public List<String> getOrderSnList() {
        return orderSnList;
    }
    public void setOrderSnList(List<String> orderSnList) {
        this.orderSnList = orderSnList;
    }
    public String getChanTag() {
        return chanTag;
    }
    public void setChanTag(String chanTag) {
        this.chanTag = chanTag;
    }
    public static VipShopOrderQueryModel createOrderTime(Long orderTimeStart, Long orderTimeEnd, Integer status,
            int page) {
        VipShopOrderQueryModel model = new VipShopOrderQueryModel();
        model.setOrderTimeStart(orderTimeStart);
        model.setOrderTimeEnd(orderTimeEnd);
        model.setStatus(status);
        model.setPage(page);
        return model;
    }
    public static VipShopOrderQueryModel createUpdateTime(Long updateTimeStart, Long updateTimeEnd, Integer status,
            int page) {
        VipShopOrderQueryModel model = new VipShopOrderQueryModel();
        model.setUpdateTimeStart(updateTimeStart);
        model.setUpdateTimeEnd(updateTimeEnd);
        model.setStatus(status);
        model.setPage(page);
        return model;
    }
    public static VipShopOrderQueryModel createOrderSn(List<String> orderSnList, int page) {
        VipShopOrderQueryModel model = new VipShopOrderQueryModel();
        model.setOrderSnList(orderSnList);
        model.setPage(page);
        return model;
    }
}
fanli/src/main/java/com/yeshi/fanli/dto/vipshop/VipShopQueryOrderResultDTO.java
New file
@@ -0,0 +1,37 @@
package com.yeshi.fanli.dto.vipshop;
import java.util.List;
import com.yeshi.fanli.entity.vipshop.VipShopOrder;
/**
 * 唯品会订单结果
 * @author Administrator
 *
 */
public class VipShopQueryOrderResultDTO {
    private List<VipShopOrder> orderList;
    private Integer total;
    public VipShopQueryOrderResultDTO(List<VipShopOrder> orderList, Integer total) {
        super();
        this.orderList = orderList;
        this.total = total;
    }
    public List<VipShopOrder> getOrderList() {
        return orderList;
    }
    public void setOrderList(List<VipShopOrder> orderList) {
        this.orderList = orderList;
    }
    public Integer getTotal() {
        return total;
    }
    public void setTotal(Integer total) {
        this.total = total;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/vipshop/VipShopAfterSaleDetailInfo.java
New file
@@ -0,0 +1,116 @@
package com.yeshi.fanli.entity.vipshop;
import java.util.Date;
import org.yeshi.utils.mybatis.Column;
import org.yeshi.utils.mybatis.Table;
/**
 * 唯品会订单售后信息
 * @author Administrator
 *
 */
@Table("yeshi_ec_vipshop_after_sale_detail_info")
public class VipShopAfterSaleDetailInfo {
    @Column(name = "sdi_id")
    private Long id;// 主键ID
    @Column(name = "sdi_order_detail_id")
    private Long orderDetailId;// 订单详情
    @Column(name = "sdi_after_sale_changed_commission")
    private String afterSaleChangedCommission;// 商品佣金售后变动:仅在订单完结之后发生售后时返回,无售后时为空
    @Column(name = "sdi_after_sale_changed_goods_count")
    private String afterSaleChangedGoodsCount;// 商品数量售后变动:仅在订单完结之后发生售后时返回,无售后时为空
    @Column(name = "sdi_after_sale_sn")
    private String afterSaleSn;// 商品售后单号,无售后时为空
    @Column(name = "sdi_after_sale_status")
    private Integer afterSaleStatus;// 商品售后状态:1-售后中,2-售后完成,3-售后取消,无售后时为空
    @Column(name = "sdi_after_sale_type")
    private Integer afterSaleType;// 售后类型:1-退货,2-换货,无售后时为空
    @Column(name = "sdi_after_sale_finish_time")
    private String afterSaleFinishTime;// 售后完成时间,时间戳,单位:毫秒,无售后时为空
    @Column(name = "sdi_create_time")
    private Date createTime;// 创建时间
    @Column(name = "sdi_update_time")
    private Date updateTime;// 更新时间
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getAfterSaleChangedCommission() {
        return afterSaleChangedCommission;
    }
    public void setAfterSaleChangedCommission(String afterSaleChangedCommission) {
        this.afterSaleChangedCommission = afterSaleChangedCommission;
    }
    public String getAfterSaleChangedGoodsCount() {
        return afterSaleChangedGoodsCount;
    }
    public void setAfterSaleChangedGoodsCount(String afterSaleChangedGoodsCount) {
        this.afterSaleChangedGoodsCount = afterSaleChangedGoodsCount;
    }
    public String getAfterSaleSn() {
        return afterSaleSn;
    }
    public void setAfterSaleSn(String afterSaleSn) {
        this.afterSaleSn = afterSaleSn;
    }
    public Integer getAfterSaleStatus() {
        return afterSaleStatus;
    }
    public void setAfterSaleStatus(Integer afterSaleStatus) {
        this.afterSaleStatus = afterSaleStatus;
    }
    public Integer getAfterSaleType() {
        return afterSaleType;
    }
    public void setAfterSaleType(Integer afterSaleType) {
        this.afterSaleType = afterSaleType;
    }
    public String getAfterSaleFinishTime() {
        return afterSaleFinishTime;
    }
    public void setAfterSaleFinishTime(String afterSaleFinishTime) {
        this.afterSaleFinishTime = afterSaleFinishTime;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getOrderDetailId() {
        return orderDetailId;
    }
    public void setOrderDetailId(Long orderDetailId) {
        this.orderDetailId = orderDetailId;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/vipshop/VipShopOrder.java
New file
@@ -0,0 +1,248 @@
package com.yeshi.fanli.entity.vipshop;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.yeshi.utils.mybatis.Column;
import org.yeshi.utils.mybatis.Table;
/**
 * 唯品会订单
 * @author Administrator
 *
 */
@Table("yeshi_ec_vipshop_order")
public class VipShopOrder {
    @Column(name = "vo_id")
    private Long id;
    @Column(name = "vo_order_sn")
    private String orderSn;// 订单号
    @Column(name = "vo_order_status")
    private Integer status;// 订单状态:0-不合格,1-待定,2-已完结
    @Column(name = "vo_new_customer")
    private Integer newCustomer;// 新老客标识:2-老客,1-新客 , 0-待 定
    @Column(name = "vo_channel_tag")
    private String channelTag;// 渠道标识
    @Column(name = "vo_order_time")
    private Long orderTime;// 下单时间
    @Column(name = "vo_sign_time")
    private Long signTime;// 签收时间
    @Column(name = "vo_settled_time")
    private Long settledTime;// 结算时间
    @Column(name = "vo_last_update_time")
    private Long lastUpdateTime;// 订单上次更新时间 时间戳 单位毫秒
    @Column(name = "vo_settled")
    private Integer settled;// 订单结算状态 0-未结算,1-已结算
    @Column(name = "vo_self_buy")
    private Integer selfBuy;// 是否自推自买 0-否,1-是
    @Column(name = "vo_order_sub_status_name")
    private String orderSubStatusName;// 订单子状态:流转状态-支持状态:(已下单、已付款、已签收、待结算、已结算、已失效)
    @Column(name = "vo_commission")
    private BigDecimal commission;// 商品总佣金:单位元
    @Column(name = "vo_after_sale_change_commission")
    private String afterSaleChangeCommission;// 售后订单佣金变动:仅在订单完结之后发生售后行为时返回
    @Column(name = "vo_after_sale_change_goods_count")
    private Integer afterSaleChangeGoodsCount;// 售后订单总商品数量变动:仅在订单完结之后发生售后行为时返回
    @Column(name = "vo_commission_enter_time")
    private Long commissionEnterTime;// 入账时间,时间戳,单位毫秒
    @Column(name = "vo_order_source")
    private String orderSource;// 订单来源
    @Column(name = "vo_pid")
    private String pid;// 推广PID:目前等同于channelTag
    @Column(name = "vo_is_prepay")
    private Integer isPrepay;// 是否预付订单:0-否,1-是
    @Column(name = "vo_b2c_user_id")
    private Long b2cUserId;// 买家的b2c_user_id
    @Column(name = "vo_create_time")
    private Date createTime;
    @Column(name = "vo_update_time")
    private Date updateTime;
    private List<VipShopOrderDetail> detailList;
    public List<VipShopOrderDetail> getDetailList() {
        return detailList;
    }
    public void setDetailList(List<VipShopOrderDetail> detailList) {
        this.detailList = detailList;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getOrderSn() {
        return orderSn;
    }
    public void setOrderSn(String orderSn) {
        this.orderSn = orderSn;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getNewCustomer() {
        return newCustomer;
    }
    public void setNewCustomer(Integer newCustomer) {
        this.newCustomer = newCustomer;
    }
    public String getChannelTag() {
        return channelTag;
    }
    public void setChannelTag(String channelTag) {
        this.channelTag = channelTag;
    }
    public Long getOrderTime() {
        return orderTime;
    }
    public void setOrderTime(Long orderTime) {
        this.orderTime = orderTime;
    }
    public Long getSignTime() {
        return signTime;
    }
    public void setSignTime(Long signTime) {
        this.signTime = signTime;
    }
    public Long getSettledTime() {
        return settledTime;
    }
    public void setSettledTime(Long settledTime) {
        this.settledTime = settledTime;
    }
    public Long getLastUpdateTime() {
        return lastUpdateTime;
    }
    public void setLastUpdateTime(Long lastUpdateTime) {
        this.lastUpdateTime = lastUpdateTime;
    }
    public Integer getSettled() {
        return settled;
    }
    public void setSettled(Integer settled) {
        this.settled = settled;
    }
    public Integer getSelfBuy() {
        return selfBuy;
    }
    public void setSelfBuy(Integer selfBuy) {
        this.selfBuy = selfBuy;
    }
    public String getOrderSubStatusName() {
        return orderSubStatusName;
    }
    public void setOrderSubStatusName(String orderSubStatusName) {
        this.orderSubStatusName = orderSubStatusName;
    }
    public BigDecimal getCommission() {
        return commission;
    }
    public void setCommission(BigDecimal commission) {
        this.commission = commission;
    }
    public String getAfterSaleChangeCommission() {
        return afterSaleChangeCommission;
    }
    public void setAfterSaleChangeCommission(String afterSaleChangeCommission) {
        this.afterSaleChangeCommission = afterSaleChangeCommission;
    }
    public Integer getAfterSaleChangeGoodsCount() {
        return afterSaleChangeGoodsCount;
    }
    public void setAfterSaleChangeGoodsCount(Integer afterSaleChangeGoodsCount) {
        this.afterSaleChangeGoodsCount = afterSaleChangeGoodsCount;
    }
    public Long getCommissionEnterTime() {
        return commissionEnterTime;
    }
    public void setCommissionEnterTime(Long commissionEnterTime) {
        this.commissionEnterTime = commissionEnterTime;
    }
    public String getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(String orderSource) {
        this.orderSource = orderSource;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public Integer getIsPrepay() {
        return isPrepay;
    }
    public void setIsPrepay(Integer isPrepay) {
        this.isPrepay = isPrepay;
    }
    public Long getB2cUserId() {
        return b2cUserId;
    }
    public void setB2cUserId(Long b2cUserId) {
        this.b2cUserId = b2cUserId;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/vipshop/VipShopOrderDetail.java
New file
@@ -0,0 +1,215 @@
package com.yeshi.fanli.entity.vipshop;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.yeshi.utils.mybatis.Column;
import org.yeshi.utils.mybatis.Table;
/**
 * 唯品会订单详情
 * @author Administrator
 *
 */
@Table("yeshi_ec_vipshop_order_detail")
public class VipShopOrderDetail {
    public final static int STATUS_INVALID = 0;// 不合格
    public final static int STATUS_UNKOWN = 1;// 待定
    public final static int STATUS_FINISH = 2;// 已完结
    // 明细
    @Column(name = "vod_id")
    private Long id;
    @Column(name = "vod_identify_code")
    private String identifyCode;// 唯一标识
    @Column(name = "vod_goods_id")
    private String goodsId;// 商品id
    @Column(name = "vod_goods_name")
    private String goodsName;// 商品名称
    @Column(name = "vod_goods_thumb")
    private String goodsThumb;// 商品缩略图
    @Column(name = "vod_goods_count")
    private Integer goodsCount;// 商品数量
    @Column(name = "vod_commission_total_cost")
    private BigDecimal commissionTotalCost;// 商品计佣金额(元,保留两位小数)
    @Column(name = "vod_commission_rate")
    private BigDecimal commissionRate;// 商品佣金比例(%)
    @Column(name = "vod_commission")
    private BigDecimal commission;// 商品佣金金额(元,保留两位小数)
    @Column(name = "vod_comm_code")
    private String commCode;// 佣金编码:对应商品二级分类
    @Column(name = "vod_comm_name")
    private String commName;// 佣金方案名称
    @Column(name = "vod_order_source")
    private String orderSource;// 订单来源
    @Column(name = "vod_size_id")
    private String sizeId;// 商品尺码:2019.01.01之后可用
    @Column(name = "vod_status")
    private Integer status;// 商品状态:0-不合格,1-待定,2-已完结
    @Column(name = "vod_order_sn")
    private String orderSn;// 订单号
    @Column(name = "vod_create_time")
    private Date createTime;// 创建时间
    @Column(name = "vod_update_time")
    private Date updateTime;// 更新时间
    private List<VipShopAfterSaleDetailInfo> afterSaleInfo;// 售后信息
    private VipShopOrder order;//订单
    public VipShopOrder getOrder() {
        return order;
    }
    public void setOrder(VipShopOrder order) {
        this.order = order;
    }
    public List<VipShopAfterSaleDetailInfo> getAfterSaleInfo() {
        return afterSaleInfo;
    }
    public void setAfterSaleInfo(List<VipShopAfterSaleDetailInfo> afterSaleInfo) {
        this.afterSaleInfo = afterSaleInfo;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getIdentifyCode() {
        return identifyCode;
    }
    public void setIdentifyCode(String identifyCode) {
        this.identifyCode = identifyCode;
    }
    public String getGoodsId() {
        return goodsId;
    }
    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public String getGoodsThumb() {
        return goodsThumb;
    }
    public void setGoodsThumb(String goodsThumb) {
        this.goodsThumb = goodsThumb;
    }
    public Integer getGoodsCount() {
        return goodsCount;
    }
    public void setGoodsCount(Integer goodsCount) {
        this.goodsCount = goodsCount;
    }
    public BigDecimal getCommissionTotalCost() {
        return commissionTotalCost;
    }
    public void setCommissionTotalCost(BigDecimal commissionTotalCost) {
        this.commissionTotalCost = commissionTotalCost;
    }
    public BigDecimal getCommissionRate() {
        return commissionRate;
    }
    public void setCommissionRate(BigDecimal commissionRate) {
        this.commissionRate = commissionRate;
    }
    public BigDecimal getCommission() {
        return commission;
    }
    public void setCommission(BigDecimal commission) {
        this.commission = commission;
    }
    public String getCommCode() {
        return commCode;
    }
    public void setCommCode(String commCode) {
        this.commCode = commCode;
    }
    public String getCommName() {
        return commName;
    }
    public void setCommName(String commName) {
        this.commName = commName;
    }
    public String getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(String orderSource) {
        this.orderSource = orderSource;
    }
    public String getSizeId() {
        return sizeId;
    }
    public void setSizeId(String sizeId) {
        this.sizeId = sizeId;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getOrderSn() {
        return orderSn;
    }
    public void setOrderSn(String orderSn) {
        this.orderSn = orderSn;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}
fanli/src/main/java/com/yeshi/fanli/exception/vipshop/VipShopOrderException.java
New file
@@ -0,0 +1,16 @@
package com.yeshi.fanli.exception.vipshop;
import com.yeshi.fanli.exception.BaseException;
public class VipShopOrderException extends BaseException {
    private static final long serialVersionUID = 1L;
    public VipShopOrderException(int code, String msg) {
        super(code, msg);
    }
    public VipShopOrderException() {
        super();
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -28,6 +28,7 @@
import com.yeshi.fanli.dto.mq.order.body.OrderConfirmMQMsg;
import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.UserInfo;
@@ -50,6 +51,8 @@
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoOrderGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.entity.vipshop.VipShopOrder;
import com.yeshi.fanli.entity.vipshop.VipShopOrderDetail;
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
@@ -85,6 +88,7 @@
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.user.UserLevelUtil;
import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.order.CommonOrderGoodsVO;
import com.yeshi.fanli.vo.order.CommonOrderVO;
@@ -605,8 +609,9 @@
            }
            // 邀请 隐藏订单号
            if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType
                    || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
            if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
                    || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
                    || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
                order.setOrderNo(UserUtil.filterOrderId(order.getOrderNo()));
            }
        }
@@ -1140,6 +1145,70 @@
                    goods.setSkuName(itemOrder.getSkuName());
                    goods.setPrice(itemOrder.getPrice());
                    goods.setSkuId(itemOrder.getSkuId());
                }
                if (goods != null) {
                    cog = CommonOrderGoodsFactory.create(goods);
                }
                cog.setCreateTime(new Date());
                cog.setUpdateTime(new Date());
                commonOrderGoodsMapper.insertSelective(cog);
            } else {
            }
            newCommonOrder.setUserInfo(new UserInfo(uid));
            commonOrderList.add(addCommonOrder(newCommonOrder));
        }
        addConfirmMQMsg(commonOrderList);
        return commonOrderList;
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public List<CommonOrderAddResultDTO> addVipShopOrder(VipShopOrder vipShopOrder, Long uid)
            throws CommonOrderException {
        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
        // 判断所有的订单状态
        int invalidCount = 0;
        for (VipShopOrderDetail detail : vipShopOrder.getDetailList()) {
            if (detail.getStatus() == VipShopOrderDetail.STATUS_INVALID) {
                invalidCount++;
            }
        }
        // 获取整体订单的状态
        int wholeOrderState = 0;
        if (vipShopOrder.getDetailList().size() == invalidCount)
            wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO;
        else if (invalidCount == 0)
            wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO;
        else
            wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO;
        List<VipShopOrderDetail> orderItemList = vipShopOrder.getDetailList();
        vipShopOrder.setDetailList(null);
        for (VipShopOrderDetail itemOrder : orderItemList) {
            itemOrder.setOrder(vipShopOrder);
            CommonOrder newCommonOrder = CommonOrderFactory.create(itemOrder);
            CommonOrderGoods cog = new CommonOrderGoods();
            cog.setGoodsId(itemOrder.getGoodsId());
            cog.setGoodsType(Constant.SOURCE_TYPE_VIP);
            newCommonOrder.setCommonOrderGoods(cog);
            newCommonOrder.setStateWholeOrder(wholeOrderState);
            // 订单商品插入
            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
                    cog.getGoodsType());
            if (commonGoodsList.size() <= 0)// 不存在就插入商品
            {
                VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(itemOrder.getGoodsId());
                if (goods == null) {
                    goods = new VIPGoodsInfo();
                    goods.setGoodsName(itemOrder.getGoodsName());
                    goods.setVipPrice("");
                    goods.setGoodsId(itemOrder.getGoodsId());
                    goods.setGoodsThumbUrl(itemOrder.getGoodsThumb());
                }
                if (goods != null) {
@@ -2185,7 +2254,6 @@
        }
    }
    
    @Override
    public long countOrderByUidAndSettled(Long uid, BigDecimal payment) {
        Long count = commonOrderMapper.countOrderByUidAndSettled(uid, payment);
@@ -2195,12 +2263,10 @@
        return count;
    }
    
    @Override
    public String getNewestOrderNoByTaoBao() {
        return commonOrderMapper.getNewestOrderNoByTaoBao();
    }
    
    @Override
    public List<CommonOrder> listByOrderNo(String orderNo) {
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java
@@ -13,6 +13,7 @@
import com.yeshi.fanli.entity.pdd.PDDOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.entity.vipshop.VipShopOrder;
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.vo.order.CommonOrderVO;
import com.yeshi.fanli.vo.order.OrderCountVO;
@@ -174,6 +175,20 @@
     */
    public List<CommonOrderAddResultDTO> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException;
    /**
     * 添加唯品会订单
     * @Title: addVipShopOrder
     * @Description:
     * @param order
     * @param uid
     * @return
     * @throws CommonOrderException
     * List<CommonOrderAddResultDTO> 返回类型
     * @throws
     */
    public List<CommonOrderAddResultDTO> addVipShopOrder(VipShopOrder order, Long uid) throws CommonOrderException;
    /**
     * 根据用户ID,订单状态,结算时间统计订单数量
     * 
fanli/src/main/java/com/yeshi/fanli/service/inter/order/vipshop/VipShopOrderService.java
New file
@@ -0,0 +1,48 @@
package com.yeshi.fanli.service.inter.order.vipshop;
import java.util.List;
import com.yeshi.fanli.entity.jd.JDOrder;
import com.yeshi.fanli.entity.vipshop.VipShopOrderDetail;
import com.yeshi.fanli.exception.jd.JDOrderException;
import com.yeshi.fanli.exception.vipshop.VipShopOrderException;
public interface VipShopOrderService {
    /**
     * 添加订单
     *
     * @param order
     * @throws JDOrderException
     */
    public void addVipShopOrder(JDOrder order) throws VipShopOrderException;
    /**
     * 根据主键ID查询
     *
     * @param orderId
     * @return
     */
    public JDOrder selectByPrimaryKey(Long orderId);
    /**
     * 根据主键查询(包含子订单)
     * @param orderId
     * @return
     */
    public JDOrder selectDetailByPrimaryKey(Long orderId);
    public Long countOrderByDay(String preDay);
    /**
     * 查询订单
     * @param start
     * @param count
     * @param key
     * @return
     */
    public List<VipShopOrderDetail> listDetailQuery(long start, int count, String key);
    public long countDetailQuery(String key);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/vipshop/JDGoodsClassService.java
New file
@@ -0,0 +1,42 @@
package com.yeshi.fanli.service.inter.vipshop;
import java.util.List;
import com.yeshi.fanli.entity.jd.JDGoodsClass;
public interface JDGoodsClassService {
    public void insertSelective(JDGoodsClass record);
    public void updateByPrimaryKeySelective(JDGoodsClass record);
    /**
     * 查询各级分类
     * @param pid
     * @return
     */
    List<JDGoodsClass> getByLevel(Integer level);
    /**
     * 查询下级分类
     * @param pid
     * @return
     */
    List<JDGoodsClass> getByPid(Integer pid);
    /**
     * 更新分类
     */
    void insertClass();
    /**
     * 查询三级分类信息
     * @param cid
     * @return
     */
    JDGoodsClass getThreeClassByCid(Integer cid);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/vipshop/JDGoodsService.java
New file
@@ -0,0 +1,37 @@
package com.yeshi.fanli.service.inter.vipshop;
import java.util.List;
import com.yeshi.fanli.dto.jd.JDSearchResult;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.exception.jd.JDGoodsException;
public interface JDGoodsService {
    /**
     * 专题分类
     * @return
     */
    public List<GoodsClass> getSpecialClass();
    /**
     * 专题商品搜索
     * @param page
     * @param cid
     * @return
     * @throws JDGoodsException
     */
    public List<JDGoods> specialSearch(Integer page, Long cid) throws JDGoodsException;
    /**
     * 首页底部商品搜索
     * @param page
     * @return
     */
    public JDSearchResult getIndexJDGoods(int page);
}
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonOrderGoodsFactory.java
@@ -4,6 +4,7 @@
import java.util.Date;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.order.CommonOrderGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -63,4 +64,21 @@
        return goods;
    }
    public static CommonOrderGoods create(VIPGoodsInfo vipGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(vipGoods.getGoodsId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_VIP);
        goods.setPicture(vipGoods.getGoodsMainPicture());
        goods.setPrice(new BigDecimal(vipGoods.getVipPrice()));
        if (vipGoods.getBrandId() != null) {
            goods.setShopId(vipGoods.getBrandId());
            goods.setShopName(vipGoods.getBrandName());
        }
        goods.setShopType("唯品会");
        goods.setState(0);
        goods.setTitle(vipGoods.getGoodsName());
        return goods;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java
@@ -7,6 +7,7 @@
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.pdd.PDDOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.vipshop.VipShopOrderDetail;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
@@ -166,4 +167,37 @@
        return commonOrder;
    }
    public static CommonOrder create(VipShopOrderDetail order) {
        if (order.getOrder() == null)
            return null;
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(order.getGoodsCount());
        commonOrder.setCreateTime(new Date());
        if (order.getStatus() == VipShopOrderDetail.STATUS_FINISH) {
            commonOrder.seteIncome(order.getCommission());
            commonOrder.setSettlement(order.getCommissionTotalCost());
            commonOrder.setSettleTime(new Date(order.getOrder().getCommissionEnterTime()));
        }
        commonOrder.setOrderNo(order.getOrderSn() + "");
        commonOrder.setPayment(order.getCommissionTotalCost());
        commonOrder.setSourcePosition(order.getOrder().getChannelTag());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_VIP);
        int state = 0;
        if (order.getStatus() == VipShopOrderDetail.STATUS_FINISH)
            state = CommonOrder.STATE_JS;
        else if (order.getStatus() == VipShopOrderDetail.STATUS_INVALID)
            state = CommonOrder.STATE_SX;
        else if (order.getStatus() == VipShopOrderDetail.STATUS_UNKOWN)
            state = CommonOrder.STATE_FK;
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrder().getOrderTime()));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getIdentifyCode());
        commonOrder.setEstimate(order.getCommission());
        commonOrder.setChildSourceType("唯品会");
        return commonOrder;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopApiUtil.java
@@ -2,6 +2,7 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
@@ -17,9 +18,14 @@
import org.yeshi.utils.StringUtil;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.dto.vip.VIPSearchFilter;
import com.yeshi.fanli.dto.vip.VIPSearchResult;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.dto.vipshop.VipShopOrderQueryModel;
import com.yeshi.fanli.dto.vipshop.VipShopQueryOrderResultDTO;
import com.yeshi.fanli.entity.vipshop.VipShopOrder;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -175,6 +181,10 @@
        String result = baseRequest("com.vip.adp.api.open.service.UnionUrlService", "genByGoodsId",
                JSONObject.fromObject(taskParams));
        System.out.println(result);
        JSONObject resultJSON = JSONObject.fromObject(result);
        if (resultJSON.optInt("returnCode") == 0) {
            return resultJSON.optJSONObject("result").optJSONArray("urlInfoList").optJSONObject(0).optString("url");
        }
        return null;
    }
@@ -221,20 +231,26 @@
        return goodsList.get(0);
    }
    public static void getOrderList() {
        JSONObject params = new JSONObject();
        // params.put("status", 1);
        params.put("orderTimeStart", System.currentTimeMillis() - 1000 * 60 * 60L);
        params.put("orderTimeEnd", System.currentTimeMillis());
        params.put("page", 1);
        // params.put("pageSize", );
        // params.put("updateTimeStart", );
        // params.put("updateTimeEnd", );
    public static VipShopQueryOrderResultDTO getOrderList(VipShopOrderQueryModel query) {
        JSONObject params = JSONObject.fromObject(new Gson().toJson(query));
        params.put("requestId", UUID.randomUUID());
        JSONObject root = new JSONObject();
        root.put("queryModel", params);
        String result = baseRequest("com.vip.adp.api.open.service.UnionOrderService", "orderList", root);
        System.out.println(result);
        JSONObject json = JSONObject.fromObject(result);
        if (json.optInt("returnCode") == 0) {
            JSONObject resultJson = json.optJSONObject("result");
            int total = resultJson.optInt("total");
            JSONArray array = JSONArray.fromObject(resultJson.optJSONArray("orderInfoList"));
            if (array != null) {
                Type type = new TypeToken<ArrayList<VipShopOrder>>() {
                }.getType();
                List<VipShopOrder> orderList = new Gson().fromJson(array.toString(), type);
                return new VipShopQueryOrderResultDTO(orderList, total);
            }
        }
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java
@@ -4,12 +4,21 @@
import org.yeshi.utils.BigDecimalUtil;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.StringUtil;
public class VipShopUtil {
    private static String getBase64Str(String str) {
        try {
            return StringUtil.getBase64String(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取分享的渠道标识
@@ -21,7 +30,7 @@
     * @throws
     */
    public static String getShareChanTag(Long uid) {
        return "share#" + uid;
        return getBase64Str("share#" + uid);
    }
    /**
@@ -34,17 +43,18 @@
     * @throws
     */
    public static String getBuyChanTag(Long uid) {
        return "buy#" + uid;
        return getBase64Str("buy#" + uid);
    }
    public static String getUidFromChanTag(String tag) {
        return tag.split("#")[1];
        String decodeTag = StringUtil.getFromBase64(tag);
        return decodeTag.split("#")[1];
    }
    public static String getTypeFromChanTag(String tag) {
        return tag.split("#")[0];
        String decodeTag = StringUtil.getFromBase64(tag);
        return decodeTag.split("#")[1];
    }
    public static BigDecimal getGoodsFanLiMoney(VIPGoodsInfo goods, BigDecimal rate) {
@@ -54,4 +64,20 @@
        money = MoneyBigDecimalUtil.mul(new BigDecimal(goods.getCommission()), rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    /**
     * 获取订单详情的唯一标识
     * @Title: getOrderDetailIdentifyCode
     * @Description:
     * @param orderSn
     * @param goodsId
     * @param sizeId
     * @return
     * String 返回类型
     * @throws
     */
    public static String getOrderDetailIdentifyCode(String orderSn, String goodsId, String sizeId) {
        return StringUtil.Md5(orderSn + "#" + goodsId + "#" + sizeId);
    }
}