Commit ef7f85a9 authored by shiyu's avatar shiyu

换藏订单列表

parent 4dd100e3
...@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; ...@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
...@@ -174,13 +175,17 @@ public class SysExchangeApplyOrderServiceImpl implements SysExchangeApplyOrderSe ...@@ -174,13 +175,17 @@ public class SysExchangeApplyOrderServiceImpl implements SysExchangeApplyOrderSe
ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByOrderId(orderId); ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByOrderId(orderId);
String targetUserOrderId = exchangeApplyOrder.getTargetUserOrderId(); String targetUserOrderId = exchangeApplyOrder.getTargetUserOrderId();
String userOrderId = exchangeApplyOrder.getUserOrderId(); String userOrderId = exchangeApplyOrder.getUserOrderId();
SysExchangeApplyOrderDetailVo sysExchangeApplyOrderDetailVo = new SysExchangeApplyOrderDetailVo(); SysExchangeApplyOrderDetailVo sysExchangeApplyOrderDetailVo = new SysExchangeApplyOrderDetailVo();
sysExchangeApplyOrderDetailVo.setExchangeApplyOrderId(orderId); sysExchangeApplyOrderDetailVo.setExchangeApplyOrderId(orderId);
sysExchangeApplyOrderDetailVo.setCreateTime(exchangeApplyOrder.getCreateTime()); sysExchangeApplyOrderDetailVo.setCreateTime(exchangeApplyOrder.getCreateTime());
sysExchangeApplyOrderDetailVo.setState(exchangeApplyOrder.getState()); sysExchangeApplyOrderDetailVo.setState(exchangeApplyOrder.getState());
//申请方的订单信息 //申请方的订单信息
SysExchangeOrderVo commitOrderVo = new SysExchangeOrderVo(); SysExchangeOrderVo commitOrderVo = new SysExchangeOrderVo();
DistributionOrder commitOrder = distributionOrderDao.findById(userOrderId); DistributionOrder commitOrder = new DistributionOrder();
if (StringUtils.hasLength(userOrderId)) {
commitOrder = distributionOrderDao.findById(userOrderId);
}
EntityMapper.copyAttribute(commitOrder, commitOrderVo); EntityMapper.copyAttribute(commitOrder, commitOrderVo);
//用户寄来平台的物流信息 //用户寄来平台的物流信息
List<ExchangeOrderSnapshot> commitExchangeOrderSnapshots = exchangeOrderSnapshotDao.findByOrderId(userOrderId); List<ExchangeOrderSnapshot> commitExchangeOrderSnapshots = exchangeOrderSnapshotDao.findByOrderId(userOrderId);
...@@ -208,7 +213,10 @@ public class SysExchangeApplyOrderServiceImpl implements SysExchangeApplyOrderSe ...@@ -208,7 +213,10 @@ public class SysExchangeApplyOrderServiceImpl implements SysExchangeApplyOrderSe
//接收方的订单信息 //接收方的订单信息
List<ExchangeApplyOrderDetail> detailList = exchangeApplyOrderDetailDao.findByOrderId(exchangeApplyOrder.getExchangeApplyOrderId()); List<ExchangeApplyOrderDetail> detailList = exchangeApplyOrderDetailDao.findByOrderId(exchangeApplyOrder.getExchangeApplyOrderId());
SysExchangeOrderVo receiveOrderVo = new SysExchangeOrderVo(); SysExchangeOrderVo receiveOrderVo = new SysExchangeOrderVo();
DistributionOrder receiveOrder = distributionOrderDao.findById(targetUserOrderId); DistributionOrder receiveOrder = new DistributionOrder();
if (StringUtils.hasLength(targetUserOrderId)) {
receiveOrder = distributionOrderDao.findById(targetUserOrderId);
}
EntityMapper.copyAttribute(receiveOrder, receiveOrderVo); EntityMapper.copyAttribute(receiveOrder, receiveOrderVo);
//用户寄来平台的物流信息 //用户寄来平台的物流信息
List<ExchangeOrderSnapshot> receiveExchangeOrderSnapshots = exchangeOrderSnapshotDao.findByOrderId(targetUserOrderId); List<ExchangeOrderSnapshot> receiveExchangeOrderSnapshots = exchangeOrderSnapshotDao.findByOrderId(targetUserOrderId);
......
...@@ -9,7 +9,7 @@ public class DistributionEnum { ...@@ -9,7 +9,7 @@ public class DistributionEnum {
PRE_PAY(1, "待付款"), PRE_PAY(1, "待付款"),
PRE_SALE(5, "众筹中"), PRE_SALE(5, "众筹中"),
PRE_EXCHANGE(6, "待寄至平台"), PRE_EXCHANGE(6, "待寄至平台"),
PRE_INSPECTION(8, "待平台验货"), PRE_INSPECTION(8, "待平台检查"),
PRE_SEND(10, "待发货"), PRE_SEND(10, "待发货"),
PRE_SIGNED(20, "待收货"), PRE_SIGNED(20, "待收货"),
AFTER_SALE(30, "售后中"), AFTER_SALE(30, "售后中"),
......
...@@ -6,9 +6,10 @@ public class ExchangeApplyOrderEnum { ...@@ -6,9 +6,10 @@ public class ExchangeApplyOrderEnum {
PRE_HANDLE(0, "待处理"), PRE_HANDLE(0, "待处理"),
AGREE(1, "同意"), AGREE(1, "同意"),
DISAGREE(2, "拒绝"), DISAGREE(2, "拒绝"),
SYSTEM_AGREE(3, "平台鉴定后通过"), SYSTEM_AGREE(3, "平台检查后通过"),
SYSTEM_DISAGREE(4, "平台鉴定后拒绝"), SYSTEM_DISAGREE(4, "平台检查后拒绝"),
CANCEL(-1, "取消"), CANCEL(-1, "交换关闭"),
FINISH(10, "交换完成"),
; ;
private int code; private int code;
......
...@@ -20,6 +20,8 @@ public interface ExchangeApplyOrderDao { ...@@ -20,6 +20,8 @@ public interface ExchangeApplyOrderDao {
ExchangeApplyOrder findByOrderId(String orderId); ExchangeApplyOrder findByOrderId(String orderId);
ExchangeApplyOrder findByExchangeOrderId(String exchangeOrderId);
/** /**
* 更新记录 * 更新记录
* *
...@@ -47,4 +49,7 @@ public interface ExchangeApplyOrderDao { ...@@ -47,4 +49,7 @@ public interface ExchangeApplyOrderDao {
* @return * @return
*/ */
long countPreHandleOrderOfReceive(long targetUserId); long countPreHandleOrderOfReceive(long targetUserId);
} }
...@@ -233,6 +233,7 @@ public class SupplierItemDaoImpl implements SupplierItemDao { ...@@ -233,6 +233,7 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
SupplierItemExample supplierItemExample = new SupplierItemExample(); SupplierItemExample supplierItemExample = new SupplierItemExample();
SupplierItemExample.Criteria criteria = supplierItemExample.createCriteria(); SupplierItemExample.Criteria criteria = supplierItemExample.createCriteria();
criteria.andCreatorIdEqualTo(creatorId); criteria.andCreatorIdEqualTo(creatorId);
criteria.andStockGreaterThan(0);
criteria.andIsDeletedEqualTo(false); criteria.andIsDeletedEqualTo(false);
JdbcHelper.ifPresent(queryTime, criteria::andCreateTimeGreaterThanOrEqualTo); JdbcHelper.ifPresent(queryTime, criteria::andCreateTimeGreaterThanOrEqualTo);
return supplierItemMapper.countByExample(supplierItemExample); return supplierItemMapper.countByExample(supplierItemExample);
......
...@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper; ...@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
import com.wwdz.ch.db.dao.exchange.ExchangeApplyOrderDao; import com.wwdz.ch.db.dao.exchange.ExchangeApplyOrderDao;
import com.wwdz.ch.db.domain.distribution.ExchangeApplyOrder; import com.wwdz.ch.db.domain.distribution.ExchangeApplyOrder;
import com.wwdz.ch.db.domain.distribution.ExchangeApplyOrderExample; import com.wwdz.ch.db.domain.distribution.ExchangeApplyOrderExample;
import com.wwdz.ch.db.domain.distribution.SupplierItemExample;
import com.wwdz.ch.db.dto.request.exchange.ExchangeApplyOrderRequestDto; import com.wwdz.ch.db.dto.request.exchange.ExchangeApplyOrderRequestDto;
import com.wwdz.ch.db.mapper.distribution.ExchangeApplyOrderMapper; import com.wwdz.ch.db.mapper.distribution.ExchangeApplyOrderMapper;
import com.xxdxxs.db.component.JdbcHelper; import com.xxdxxs.db.component.JdbcHelper;
...@@ -47,6 +48,16 @@ public class ExchangeApplyOrderDaoImpl implements ExchangeApplyOrderDao { ...@@ -47,6 +48,16 @@ public class ExchangeApplyOrderDaoImpl implements ExchangeApplyOrderDao {
return exchangeApplyOrderMapper.selectOneByExample(example); return exchangeApplyOrderMapper.selectOneByExample(example);
} }
@Override
public ExchangeApplyOrder findByExchangeOrderId(String exchangeOrderId) {
ExchangeApplyOrderExample example = new ExchangeApplyOrderExample();
ExchangeApplyOrderExample.Criteria criteria = example.createCriteria();
criteria.andUserOrderIdEqualTo(exchangeOrderId);
ExchangeApplyOrderExample.Criteria orCriteria = example.or();
orCriteria.andTargetUserOrderIdEqualTo(exchangeOrderId);
return exchangeApplyOrderMapper.selectOneByExample(example);
}
@Override @Override
public long countPreHandleOrderOfCommit(long userId) { public long countPreHandleOrderOfCommit(long userId) {
ExchangeApplyOrderExample example = new ExchangeApplyOrderExample(); ExchangeApplyOrderExample example = new ExchangeApplyOrderExample();
......
package com.wwdz.ch.wx.entity.vo.distribution;
import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.wx.entity.GroupPurchaseInfo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class ExchangeOrderDetailVo implements Entity {
/**
* 申请交换单
*/
private String exchangeApplyOrderId;
/**
* 交换单申请时间
*/
private Date exchangeApplyOrderCreateTime;
/**
* 交换单类型
* 我收到的,我提交的
*/
private Integer exchangeApplyOrderType;
private String exchangeApplyOrderTypeName;
/**
* 订单号
*/
private String distributionOrderId;
/**
* 用于交换的用户商品信息
*/
private UserExchangeInfo userExchangeInfo;
/**
* 想要换的目标商品id
*/
private List<SupplierItemVo> targetItemList;
/**
* 买方id
*/
private Long buyerId;
/**
* 买家名称
*/
private String buyerName;
/**
* 店铺id
*/
private Long shopId;
/**
* 店铺名称
*/
private String shopName;
/**
* 卖方id
*/
private Long sellerId;
/**
* 卖家名称
*/
private String sellerName;
/**
* 买家收货地址id
*/
private Long addressId;
/**
* 收件人名称
*/
private String receiverName;
/**
* 收件人电话
*/
private String receiverPhone;
/**
* 收件人收货地址
*/
private String receiverAddress;
/**
* 快递公司编码
*/
private String logisticsCode;
private String logisticsName;
/**
* 运单号
*/
private String waybill;
/**
* 创建时间(下单时间)
*/
private Date createTime;
/**
* 支付时间
*/
private Date payTime;
/**
* 发货时间
*/
private Date deliveryTime;
/**
* 完成时间
*/
private Date finishTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 分销订单状态
*/
private Integer state;
/**
* 订单状态
*/
private String stateName;
/**
* 支付截止时间
*/
private Date expireTime;
/**
* 商品类型1一口价2竞拍3藏品
*/
private Integer type;
private String typeName;
/**
* 寄到平台的快递公司编码
*/
private String fromLogisticsCode;
private String fromLogisticsName;
/**
* 寄来的物流单号
*/
private String fromWaybill;
/**
* 平台收货地址
*/
private String channelReceiveAddress;
}
package com.wwdz.ch.wx.entity.vo.distribution;
import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.wx.entity.GroupPurchaseInfo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class ExchangeOrderVo implements Entity {
/**
* 申请交换单
*/
private String exchangeApplyOrderId;
/**
* 交换单申请时间
*/
private Date exchangeApplyOrderCreateTime;
/**
* 交换单类型
* 我收到的,我提交的
*/
private Integer exchangeApplyOrderType;
private String exchangeApplyOrderTypeName;
/**
* 换藏订单号
*/
private String distributionOrderId;
/**
* 用于交换的用户商品信息
*/
private List<SupplierItemVo> userItemList;
/**
* 想要换的目标商品id
*/
private List<SupplierItemVo> targetItemList;
/**
* 买家收货地址id
*/
private Long addressId;
/**
* 买家收货地址
*/
private String address;
/**
* 快递公司编码
*/
private String logisticsCode;
/**
* 运单号
*/
private String waybill;
/**
* 创建时间
*/
private Date createTime;
/**
* 发货时间
*/
private Date deliveryTime;
/**
* 完成时间
*/
private Date finishTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 订单状态
*/
private Integer state;
/**
* 订单状态
*/
private String stateName;
/**
* 物流状态
*/
private Integer logisticsState;
private Integer logisticsStateName;
/**
* 截止时间
*/
private Date expireTime;
/**
* 商品类型
*/
private Integer type;
private String typeName;
}
...@@ -64,7 +64,6 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -64,7 +64,6 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
@Override @Override
public Result applyExchange(ExchangeApplyOrderRequestDto dto) { public Result applyExchange(ExchangeApplyOrderRequestDto dto) {
try { try {
SupplierItemRequestDto supplierItemRequestDto = new SupplierItemRequestDto(); SupplierItemRequestDto supplierItemRequestDto = new SupplierItemRequestDto();
supplierItemRequestDto.setCreatorId(dto.getUserId()); supplierItemRequestDto.setCreatorId(dto.getUserId());
List<ExchangeOrderSnapshot> exchangeOrderSnapshotList = exchangeOrderSnapshotDao.findByUserId(dto.getUserId()); List<ExchangeOrderSnapshot> exchangeOrderSnapshotList = exchangeOrderSnapshotDao.findByUserId(dto.getUserId());
...@@ -106,7 +105,9 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -106,7 +105,9 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
exchangeApplyOrderDetail.setUpdateTime(now); exchangeApplyOrderDetail.setUpdateTime(now);
exchangeApplyOrderDetailDao.insert(exchangeApplyOrderDetail); exchangeApplyOrderDetailDao.insert(exchangeApplyOrderDetail);
} }
return Result.success(); Map<String, Object> map = new HashMap<>();
map.put("exchangeApplyOrderId", exchangeApplyOrderId);
return Result.success(map);
} catch (Exception e) { } catch (Exception e) {
logger.error("用户申请以物换物 error:{}", e); logger.error("用户申请以物换物 error:{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
......
package com.wwdz.ch.wx.impl.distribution;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.ExchangeApplyOrderEnum;
import com.wwdz.ch.core.consts.LogisticsEnum;
import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.core.util.RegexUtil;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDetailDao;
import com.wwdz.ch.db.dao.distribution.ExchangeOrderSnapshotDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.dao.exchange.ExchangeApplyOrderDao;
import com.wwdz.ch.db.dao.exchange.ExchangeApplyOrderDetailDao;
import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.GroupPurchaseRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.GroupPurchaseInfo;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderVo;
import com.wwdz.ch.wx.entity.vo.distribution.ExchangeOrderDetailVo;
import com.wwdz.ch.wx.entity.vo.distribution.ExchangeOrderVo;
import com.wwdz.ch.wx.entity.vo.distribution.UserExchangeInfo;
import com.wwdz.ch.wx.service.distribution.ExchangeOrderService;
import com.xxdxxs.utils.EntityMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class ExchangeOrderServiceImpl implements ExchangeOrderService {
private static final Logger logger = LoggerFactory.getLogger(DistributionOrderServiceImpl.class);
@Autowired
DistributionOrderDao distributionOrderDao;
@Autowired
DistributionOrderDetailDao distributionOrderDetailDao;
@Autowired
SupplierItemDao supplierItemDao;
@Autowired
ExchangeOrderSnapshotDao exchangeOrderSnapshotDao;
@Autowired
ExchangeApplyOrderDetailDao exchangeApplyOrderDetailDao;
@Autowired
ExchangeApplyOrderDao exchangeApplyOrderDao;
@Override
public Result findOrder(DistributionOrderRequestDto dto) {
try {
//检查是否有超时未支付订单
dto.setBuyerId(dto.getUserId());
checkPrePayTimeOut(dto.getUserId(), null);
if (StringUtils.hasLength(dto.getSearchParam())) {
//判断查询条件是否为中文,是的话就根据商品名称模糊查询
if (RegexUtil.isContainChinese(dto.getSearchParam())) {
SupplierItemRequestDto supplierItemRequestDto = new SupplierItemRequestDto();
supplierItemRequestDto.setName(dto.getSearchParam());
List<SupplierItem> supplierItemList = supplierItemDao.findList(supplierItemRequestDto);
List<Long> itemIds = supplierItemList.stream().map(SupplierItem::getId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(itemIds)) {
dto.setItemIdList(itemIds);
} else {
//没有对应名称的商品则直接返回空数据
return Result.success();
}
} else {
dto.setDistributionOrderId(dto.getSearchParam());
}
}
//查询用户换藏订单
dto.setType(DistributionEnum.DistributionTypeEnum.EXCHANGE.getCode());
List<DistributionOrder> distributionOrderList = distributionOrderDao.findByPage(dto);
PageInfo pageInfo = new PageInfo<>(distributionOrderList);
List<ExchangeOrderVo> exchangeOrderVoList = new ArrayList<>();
for (DistributionOrder distributionOrder : distributionOrderList) {
//用户交换得到的商品信息
List<SupplierItemVo> targetItemList = new ArrayList<>();
//用户交换出去的商品信息
List<SupplierItemVo> userItemList = new ArrayList<>();
ExchangeOrderVo exchangeOrderVo = new ExchangeOrderVo();
EntityMapper.copyAttribute(distributionOrder, exchangeOrderVo);
//查询订单中交换得到的商品
List<DistributionOrderDetail> distributionOrderDetailList = distributionOrderDetailDao.findByOrderId(distributionOrder.getDistributionOrderId());
for (DistributionOrderDetail distributionOrderDetail : distributionOrderDetailList) {
long targetItemId = distributionOrderDetail.getItemId();
SupplierItem targetItem = supplierItemDao.findById(targetItemId);
SupplierItemVo targetItemVo = new SupplierItemVo();
EntityMapper.copyAttribute(targetItem, targetItemVo);
targetItemVo.setItemId(targetItemId);
targetItemVo.setName(targetItem.getName());
targetItemVo.setItemNum(distributionOrderDetail.getItemNum());
targetItemVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(targetItem.getDistributionPrice()));
targetItemVo.setOfficialEstimatedPrice(PriceUtil.convertPriceFenToYuan(targetItem.getOfficialEstimatedPrice()));
targetItemVo.setHomePageImage(MediaUtil.getHomePageImage(targetItem.getImages(), targetItem.getVideos()));
targetItemList.add(targetItemVo);
}
exchangeOrderVo.setTargetItemList(targetItemList);
//查询订单中交换出去的自己的商品
List<ExchangeOrderSnapshot> exchangeOrderSnapshotList = exchangeOrderSnapshotDao.findByOrderId(distributionOrder.getDistributionOrderId());
for (ExchangeOrderSnapshot exchangeOrderSnapshot : exchangeOrderSnapshotList) {
long userItemId = exchangeOrderSnapshot.getItemId();
SupplierItem supplierItem = supplierItemDao.findById(userItemId);
SupplierItemVo supplierItemVo = new SupplierItemVo();
supplierItemVo.setItemId(exchangeOrderSnapshot.getItemId());
supplierItemVo.setName(supplierItem.getName());
supplierItemVo.setItemNum(exchangeOrderSnapshot.getItemNum());
supplierItemVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(supplierItem.getDistributionPrice()));
supplierItemVo.setOfficialEstimatedPrice(PriceUtil.convertPriceFenToYuan(supplierItem.getOfficialEstimatedPrice()));
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
userItemList.add(supplierItemVo);
}
exchangeOrderVo.setUserItemList(userItemList);
//查询订单的交换单号
ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByExchangeOrderId(distributionOrder.getDistributionOrderId());
//和平台交换的商品,没有申请单
if (exchangeApplyOrder != null) {
exchangeOrderVo.setExchangeApplyOrderId(exchangeApplyOrder.getExchangeApplyOrderId());
exchangeOrderVo.setExchangeApplyOrderCreateTime(exchangeApplyOrder.getCreateTime());
//判断是当前用户提交的交换申请单,还是收到的申请单
if (distributionOrder.getDistributionOrderId().equals(exchangeApplyOrder.getUserOrderId())) {
exchangeOrderVo.setExchangeApplyOrderType(ExchangeApplyOrderEnum.TypeEnum.COMMIT.getCode());
exchangeOrderVo.setExchangeApplyOrderTypeName(ExchangeApplyOrderEnum.TypeEnum.COMMIT.getDes());
} else {
exchangeOrderVo.setExchangeApplyOrderType(ExchangeApplyOrderEnum.TypeEnum.RECEIVE.getCode());
exchangeOrderVo.setExchangeApplyOrderTypeName(ExchangeApplyOrderEnum.TypeEnum.RECEIVE.getDes());
}
}
Date date = distributionOrder.getCreateTime();
Instant instant = date.toInstant().plus(Duration.ofMinutes(48));
Date time = Date.from(instant);
exchangeOrderVo.setExpireTime(time);
exchangeOrderVoList.add(exchangeOrderVo);
}
return Result.success(PageSearchResult.of(pageInfo, exchangeOrderVoList));
} catch (Exception e) {
logger.error("查询用户换藏订单列表失败 error : {}", e);
}
return Result.failed();
}
@Override
public Result findOrderDetail(DistributionOrderRequestDto dto) {
try {
//检查是否有超时未支付订单
checkPrePayTimeOut(dto.getUserId(), null);
dto.setBuyerId(dto.getUserId());
DistributionOrder distributionOrder = distributionOrderDao.findById(dto.getDistributionOrderId());
//用户交换得到的商品信息
List<SupplierItemVo> targetItemList = new ArrayList<>();
//用户交换出去的商品信息
List<SupplierItemVo> userItemList = new ArrayList<>();
ExchangeOrderDetailVo exchangeOrderDetailVo = new ExchangeOrderDetailVo();
//查询订单中交换得到的商品
List<DistributionOrderDetail> distributionOrderDetailList = distributionOrderDetailDao.findByOrderId(distributionOrder.getDistributionOrderId());
for (DistributionOrderDetail distributionOrderDetail : distributionOrderDetailList) {
long targetItemId = distributionOrderDetail.getItemId();
SupplierItem targetItem = supplierItemDao.findById(targetItemId);
SupplierItemVo targetItemVo = new SupplierItemVo();
EntityMapper.copyAttribute(targetItem, targetItemVo);
targetItemVo.setItemId(targetItemId);
targetItemVo.setName(targetItem.getName());
targetItemVo.setItemNum(distributionOrderDetail.getItemNum());
targetItemVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(targetItem.getDistributionPrice()));
targetItemVo.setOfficialEstimatedPrice(PriceUtil.convertPriceFenToYuan(targetItem.getOfficialEstimatedPrice()));
targetItemVo.setHomePageImage(MediaUtil.getHomePageImage(targetItem.getImages(), targetItem.getVideos()));
targetItemList.add(targetItemVo);
}
exchangeOrderDetailVo.setTargetItemList(targetItemList);
//查询订单中交换出去的自己的商品
List<ExchangeOrderSnapshot> exchangeOrderSnapshotList = exchangeOrderSnapshotDao.findByOrderId(distributionOrder.getDistributionOrderId());
UserExchangeInfo userExchangeInfo = new UserExchangeInfo();
if (!CollectionUtils.isEmpty(exchangeOrderSnapshotList)) {
userExchangeInfo.setFromWaybill(exchangeOrderSnapshotList.get(0).getWaybill());
userExchangeInfo.setFromLogisticsCode(exchangeOrderSnapshotList.get(0).getLogisticsCode());
userExchangeInfo.setFromLogisticsName(LogisticsEnum.getNameByCode(exchangeOrderSnapshotList.get(0).getLogisticsCode()));
String content = "";
if (StringUtils.hasLength(exchangeOrderSnapshotList.get(0).getWaybill())) {
content = "商品已寄出,快递信息:" + LogisticsEnum.getNameByCode(exchangeOrderSnapshotList.get(0).getLogisticsCode()) + "," + exchangeOrderSnapshotList.get(0).getWaybill();
}
userExchangeInfo.setContent(content);
}
List<SupplierItemVo> supplierItemVos = new ArrayList<>();
for (ExchangeOrderSnapshot exchangeOrderSnapshot : exchangeOrderSnapshotList) {
SupplierItemVo supplierItemVo = new SupplierItemVo();
supplierItemVo.setItemId(exchangeOrderSnapshot.getItemId());
supplierItemVo.setName(exchangeOrderSnapshot.getItemName());
supplierItemVo.setItemNum(exchangeOrderSnapshot.getItemNum());
supplierItemVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(exchangeOrderSnapshot.getDistributionPrice()));
supplierItemVo.setOfficialEstimatedPrice(PriceUtil.convertPriceFenToYuan(exchangeOrderSnapshot.getOfficialEstimatedPrice()));
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(exchangeOrderSnapshot.getImages(), exchangeOrderSnapshot.getVideos()));
supplierItemVos.add(supplierItemVo);
}
userExchangeInfo.setList(supplierItemVos);
exchangeOrderDetailVo.setUserExchangeInfo(userExchangeInfo);
//查询订单的交换单号
ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByExchangeOrderId(distributionOrder.getDistributionOrderId());
//和平台交换的商品,没有申请单
if (exchangeApplyOrder != null) {
exchangeOrderDetailVo.setExchangeApplyOrderId(exchangeApplyOrder.getExchangeApplyOrderId());
exchangeOrderDetailVo.setExchangeApplyOrderCreateTime(exchangeApplyOrder.getCreateTime());
//判断是当前用户提交的交换申请单,还是收到的申请单
if (distributionOrder.getDistributionOrderId().equals(exchangeApplyOrder.getUserOrderId())) {
exchangeOrderDetailVo.setExchangeApplyOrderType(ExchangeApplyOrderEnum.TypeEnum.COMMIT.getCode());
exchangeOrderDetailVo.setExchangeApplyOrderTypeName(ExchangeApplyOrderEnum.TypeEnum.COMMIT.getDes());
} else {
exchangeOrderDetailVo.setExchangeApplyOrderType(ExchangeApplyOrderEnum.TypeEnum.RECEIVE.getCode());
exchangeOrderDetailVo.setExchangeApplyOrderTypeName(ExchangeApplyOrderEnum.TypeEnum.RECEIVE.getDes());
}
}
Date date = distributionOrder.getCreateTime();
Instant instant = date.toInstant().plus(Duration.ofMinutes(48));
Date time = Date.from(instant);
exchangeOrderDetailVo.setExpireTime(time);
return Result.success(exchangeOrderDetailVo);
} catch (Exception e) {
logger.error("查询用户换藏订单详情失败 error : {}", e);
}
return Result.failed();
}
/**
* 检查用户订单是否有超时未寄出
* @param userId
* @param distributorId
*/
private void checkPrePayTimeOut(Long userId, Long distributorId){
/* DistributionOrderRequestDto dto = new DistributionOrderRequestDto();
dto.setBuyerId(userId);
dto.setSellerId(distributorId);
dto.setType(DistributionEnum.DistributionTypeEnum.EXCHANGE.getCode());
dto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_EXCHANGE.getCode());
List<DistributionOrder> prePayList = distributionOrderDao.findByPage(dto);
prePayList.forEach(distributionOrder -> {
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
//超出48小时未寄出,订单取消
long diffInHours = diffInMillies / (60 * 1000 * 60);
if (diffInHours >= 48) {
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
//换藏的品取消订单后恢复库存
if (!distributionOrder.getIsMultiple()) {
exchangeApplyOrderDetailDao.updateInValid(orderId);
distributionOrderDao.updateState(targetUserOrderId, DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
supplierItemDao.updateStock(distributionOrder.getItemId(), supplierItem.getStock() + distributionOrder.getItemNum());
//订单快照设置为无效
ExchangeOrderSnapshot exchangeOrderSnapshot = new ExchangeOrderSnapshot();
exchangeOrderSnapshot.setDistributionOrderId(distributionOrder.getDistributionOrderId());
exchangeOrderSnapshot.setIsValid(false);
exchangeOrderSnapshotDao.update(exchangeOrderSnapshot);
}
}
}
});*/
}
}
package com.wwdz.ch.wx.service.distribution;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
public interface ExchangeOrderService {
/**
* 查询换藏订单列表
* @param dto
* @return
*/
Result findOrder(DistributionOrderRequestDto dto);
/**
* 查询换藏订单详情
* @param dto
* @return
*/
Result findOrderDetail(DistributionOrderRequestDto dto);
}
package com.wwdz.ch.wx.web.distribution;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.wx.entity.request.ExchangeRequestDto;
import com.wwdz.ch.wx.service.distribution.ExchangeOrderService;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.validation.Validator;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/wx/exchangeOrder")
public class ExchangeOrderController {
private static final Logger logger = LoggerFactory.getLogger(ExchangeOrderController.class);
@Autowired
ExchangeOrderService exchangeOrderService;
@ApiOperation(value = "查询用户换藏订单列表")
@PostMapping("/findList")
public Result findList(@RequestBody DistributionOrderRequestDto dto) {
logger.info("查询用户换藏订单列表,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("userId", "用户id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(validator.getErrorInfo());
}
return exchangeOrderService.findOrder(dto);
}
@ApiOperation(value = "查询换藏订单详情")
@PostMapping("/findOrderDetail")
public Result findOrderDetail(@RequestBody DistributionOrderRequestDto dto) {
logger.info("查询换藏订单详情,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("distributionOrderId", "订单号").must().string()
.set("userId", "用户id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(validator.getErrorInfo());
}
return exchangeOrderService.findOrderDetail(dto);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment