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); } }