创建虚拟订单

由前台处理待发货订单导出
This commit is contained in:
lifenlong 2021-06-10 16:25:40 +08:00
parent 19ae44f851
commit 34e5488b9d
6 changed files with 28 additions and 78 deletions

View File

@ -103,6 +103,7 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil {
default: default:
return; return;
} }
log.info("短信验证码:"+code);
//缓存中写入要验证的信息 //缓存中写入要验证的信息
cache.put(cacheKey(verificationEnums, mobile, uuid), code, 300L); cache.put(cacheKey(verificationEnums, mobile, uuid), code, 300L);
//发送短信 //发送短信

View File

@ -10,6 +10,7 @@ import cn.lili.common.utils.CurrencyUtil;
import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
import cn.lili.modules.goods.entity.enums.GoodsTypeEnum;
import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.dos.MemberAddress;
import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO;
@ -524,17 +525,23 @@ public class CartServiceImpl implements CartService {
if (memberAddress == null) { if (memberAddress == null) {
throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST);
} }
//循环购物车列表计算运费
for (CartSkuVO cartSkuVO : skuList) { for (CartSkuVO cartSkuVO : skuList) {
GoodsSku goodsSku = cartSkuVO.getGoodsSku();
//如果是虚拟商品无需运费
if (goodsSku.getGoodsType() != null && goodsSku.getGoodsType().equals(GoodsTypeEnum.VIRTUAL_GOODS.name())) {
break;
}
//获取运费模板ID
String freightTemplateId = cartSkuVO.getGoodsSku().getFreightTemplateId(); String freightTemplateId = cartSkuVO.getGoodsSku().getFreightTemplateId();
FreightTemplateVO freightTemplate = freightTemplateService.getFreightTemplate(freightTemplateId); FreightTemplateVO freightTemplate = freightTemplateService.getFreightTemplate(freightTemplateId);
//店铺支付运费则跳过 //店铺支付运费则跳过
if(freightTemplate.getPricingMethod().equals(FreightTemplateEnum.FREE.name())){ if (freightTemplate.getPricingMethod().equals(FreightTemplateEnum.FREE.name())) {
break; break;
} }
//收货地址判定 //收货地址判定
forTemplates: forTemplates:
if (freightTemplate != null && freightTemplate.getFreightTemplateChildList() != null && !freightTemplate.getFreightTemplateChildList().isEmpty()) { if (freightTemplate != null && freightTemplate.getFreightTemplateChildList() != null && !freightTemplate.getFreightTemplateChildList().isEmpty()) {
//获取市级别id //获取市级别id
String addressId = memberAddress.getConsigneeAddressIdPath().split(",")[1]; String addressId = memberAddress.getConsigneeAddressIdPath().split(",")[1];
//获取匹配的收货地址 //获取匹配的收货地址

View File

@ -195,16 +195,6 @@ public interface OrderService extends IService<Order> {
*/ */
void agglomeratePintuanOrder(String pintuanId, String parentOrderSn); void agglomeratePintuanOrder(String pintuanId, String parentOrderSn);
/**
* 获取待发货订单编号列表
*
* @param response
* @param orderIds 订单ID列表
* @param logisticsName 店铺已选择物流公司列表
* @return 待发货订单编号列表
*/
void getBatchDeliverList(HttpServletResponse response, List<String> orderIds, List<String> logisticsName);
/** /**
* 订单批量发货 * 订单批量发货
* *

View File

@ -173,7 +173,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override @Override
public IPage<OrderSimpleVO> queryByParams(OrderSearchParams orderSearchParams) { public IPage<OrderSimpleVO> queryByParams(OrderSearchParams orderSearchParams) {
QueryWrapper queryWrapper=orderSearchParams.queryWrapper(); QueryWrapper queryWrapper = orderSearchParams.queryWrapper();
queryWrapper.groupBy("o.id"); queryWrapper.groupBy("o.id");
queryWrapper.orderByDesc("o.id"); queryWrapper.orderByDesc("o.id");
return this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper); return this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper);
@ -287,7 +287,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
Order order = this.getBySn(orderSn); Order order = this.getBySn(orderSn);
//判断是否为拼团订单进行特殊处理 //判断是否为拼团订单进行特殊处理
//判断订单类型进行不同的订单确认操作 //判断订单类型进行不同的订单确认操作
if (order.getOrderPromotionType().equals(OrderPromotionTypeEnum.PINTUAN.name())) { if (order.getOrderPromotionType() != null && order.getOrderPromotionType().equals(OrderPromotionTypeEnum.PINTUAN.name())) {
this.checkPintuanOrder(order.getPromotionId(), order.getParentOrderSn()); this.checkPintuanOrder(order.getPromotionId(), order.getParentOrderSn());
} else { } else {
//判断订单类型 //判断订单类型
@ -362,12 +362,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override @Override
@OrderLogPoint(description = "'订单['+#orderSn+']核销,核销码['+#verificationCode+']'", orderSn = "#orderSn") @OrderLogPoint(description = "'订单['+#orderSn+']核销,核销码['+#verificationCode+']'", orderSn = "#orderSn")
public Order take(String orderSn,String verificationCode) { public Order take(String orderSn, String verificationCode) {
//获取订单信息 //获取订单信息
Order order = this.getBySn(orderSn); Order order = this.getBySn(orderSn);
//检测虚拟订单信息 //检测虚拟订单信息
checkVerificationOrder(order,verificationCode); checkVerificationOrder(order, verificationCode);
order.setOrderStatus(OrderStatusEnum.COMPLETED.name()); order.setOrderStatus(OrderStatusEnum.COMPLETED.name());
//修改订单信息 //修改订单信息
this.updateById(order); this.updateById(order);
@ -383,7 +383,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
public Order getOrderByVerificationCode(String verificationCode) { public Order getOrderByVerificationCode(String verificationCode) {
return this.getOne(new LambdaQueryWrapper<Order>() return this.getOne(new LambdaQueryWrapper<Order>()
.eq(Order::getOrderStatus, OrderStatusEnum.TAKE.name()) .eq(Order::getOrderStatus, OrderStatusEnum.TAKE.name())
.eq(Order::getStoreId,UserContext.getCurrentUser().getStoreId()) .eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId())
.eq(Order::getVerificationCode, verificationCode)); .eq(Order::getVerificationCode, verificationCode));
} }
@ -500,41 +500,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
} }
} }
@Override
public void getBatchDeliverList(HttpServletResponse response, List<String> orderIds, List<String> logisticsName) {
//获取待发货订单列表
List deliverList = this.baseMapper.deliverSnList(new LambdaQueryWrapper<Order>()
.eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId())
.eq(Order::getOrderStatus, "'UNDELIVERED'")
.in(orderIds.size() > 0, Order::getId, orderIds));
//如果没有待发货的订单则返回
if (deliverList.size() < 1) {
throw new ServiceException(ResultCode.ORDER_DELIVER_NUM_ERROR);
}
ExcelWriter writer = ExcelUtil.getWriter();
writer.addHeaderAlias("sn", "订单号");
writer.addHeaderAlias("logisticsName", "物流公司");
writer.addHeaderAlias("logisticsNo", "物流单号");
//写入待发货的订单列表
writer.write(deliverList, true);
//存放下拉列表
String[] logiList = logisticsName.toArray(new String[]{});
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(2, deliverList.size(), 2, 3);
writer.addSelect(cellRangeAddressList, logiList);
response.setHeader("Content-Disposition", "attachment;filename=批量发货.xls");
ServletOutputStream out = null;
try {
out = response.getOutputStream();
writer.flush(out, true);
} catch (IOException e) {
log.error("获取待发货订单编号列表错误",e);
} finally {
writer.close();
}
IoUtil.close(out);
}
@Override @Override
public void batchDeliver(List<OrderBatchDeliverDTO> list) { public void batchDeliver(List<OrderBatchDeliverDTO> list) {
//循环检查是否符合规范 //循环检查是否符合规范
@ -553,11 +518,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private void checkBatchDeliver(List<OrderBatchDeliverDTO> list) { private void checkBatchDeliver(List<OrderBatchDeliverDTO> list) {
for (OrderBatchDeliverDTO orderBatchDeliverDTO : list) { for (OrderBatchDeliverDTO orderBatchDeliverDTO : list) {
//查看订单号是否存在-是否是当前店铺的订单 //查看订单号是否存在-是否是当前店铺的订单
int count = this.count(new LambdaQueryWrapper<Order>() Order order = this.getOne(new LambdaQueryWrapper<Order>()
.eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId()) .eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId())
.eq(Order::getSn, orderBatchDeliverDTO.getOrderSn())); .eq(Order::getSn, orderBatchDeliverDTO.getOrderSn()));
if (count == 0) { if (order==null) {
throw new ServiceException("订单编号:'" + orderBatchDeliverDTO.getOrderSn() + " '不存在"); throw new ServiceException("订单编号:'" + orderBatchDeliverDTO.getOrderSn() + " '不存在");
}else if(order.getOrderStatus().equals(OrderStatusEnum.DELIVERED.name())){
throw new ServiceException("订单编号:'" + orderBatchDeliverDTO.getOrderSn() + " '不能发货");
} }
//查看物流公司 //查看物流公司
Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper<Logistics>().eq(Logistics::getName, orderBatchDeliverDTO.getLogisticsName())); Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper<Logistics>().eq(Logistics::getName, orderBatchDeliverDTO.getLogisticsName()));
@ -825,12 +792,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
/** /**
* 检测虚拟订单信息 * 检测虚拟订单信息
*
* @param order 订单 * @param order 订单
* @param verificationCode 验证码 * @param verificationCode 验证码
*/ */
private void checkVerificationOrder(Order order,String verificationCode){ private void checkVerificationOrder(Order order, String verificationCode) {
//判断查询是否可以查询到订单 //判断查询是否可以查询到订单
if (order==null) { if (order == null) {
throw new ServiceException(ResultCode.ORDER_NOT_EXIST); throw new ServiceException(ResultCode.ORDER_NOT_EXIST);
} }
//判断是否为虚拟订单 //判断是否为虚拟订单
@ -838,11 +806,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR); throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
} }
//判断虚拟订单状态 //判断虚拟订单状态
else if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) { else if (!order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) {
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR); throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
} }
//判断验证码是否正确 //判断验证码是否正确
else if(!verificationCode.equals(order.getVerificationCode())){ else if (!verificationCode.equals(order.getVerificationCode())) {
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR); throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
} }
} }

View File

@ -5,6 +5,7 @@ import cn.hutool.poi.excel.ExcelUtil;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.ResultMessage;
import cn.lili.config.context.ThreadContextHolder;
import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.entity.dto.MemberAddressDTO;
import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO; import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO;
import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderExportDTO;
@ -55,11 +56,7 @@ public class OrderStoreController {
*/ */
@Autowired @Autowired
private OrderPriceService orderPriceService; private OrderPriceService orderPriceService;
/**
* 物流公司
*/
@Autowired
private StoreLogisticsService storeLogisticsService;
@ApiOperation(value = "查询订单列表") @ApiOperation(value = "查询订单列表")
@GetMapping @GetMapping
@ -144,19 +141,6 @@ public class OrderStoreController {
return ResultUtil.data(orderService.getTraces(orderSn)); return ResultUtil.data(orderService.getTraces(orderSn));
} }
@ApiOperation(value = "下载待发货的订单列表")
@GetMapping(value = "/downLoadDeliverExcel")
public ResultMessage<Object> downLoadDeliverExcel(HttpServletResponse response, List<String> orderIds) {
//获取店铺已经选择物流公司列表
List<String> logisticsName = storeLogisticsService.getStoreSelectedLogisticsName();
//下载订单批量发货Excel
this.orderService.getBatchDeliverList(response,orderIds,logisticsName);
return ResultUtil.success(ResultCode.SUCCESS);
}
@ApiOperation(value = "上传文件进行订单批量发货") @ApiOperation(value = "上传文件进行订单批量发货")
@ApiImplicitParam(name = "file", value = "订单列表", required = true, dataType = "file", paramType = "query") @ApiImplicitParam(name = "file", value = "订单列表", required = true, dataType = "file", paramType = "query")
@PutMapping(value = "/batchDeliver") @PutMapping(value = "/batchDeliver")