| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; |
| | | import cc.mrbird.febs.common.enumerates.OrderStatusEnum; |
| | | import cc.mrbird.febs.common.enumerates.*; |
| | | import cc.mrbird.febs.common.utils.ValidateEntityUtils; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.best.javaSdk.ClientParamEnum; |
| | | import com.best.javaSdk.ClientParamService; |
| | | import com.best.javaSdk.kdCancelOrderNotify.request.KdCancelOrderNotifyReq; |
| | | import com.best.javaSdk.kdCancelOrderNotify.response.KdCancelOrderNotifyRsp; |
| | | import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request.*; |
| | | import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.response.KdCreateWaybillOrderPdfNotifyRsp; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | private final MallRefundMapper mallRefundMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | |
| | | |
| | | @Override |
| | |
| | | if(CollUtil.isNotEmpty(mallOrderItemList)){ |
| | | StringBuffer stringBuffer = new StringBuffer(); |
| | | for(MallOrderItem mallOrderItem : mallOrderItemList){ |
| | | stringBuffer.append(mallOrderItem.getGoodsName()).append("*").append(mallOrderItem.getCnt()).append(";"); |
| | | stringBuffer.append(mallOrderItem.getGoodsName()) |
| | | .append("-") |
| | | .append(mallOrderItem.getSkuName()) |
| | | .append("*").append(mallOrderItem.getCnt()).append(";"); |
| | | if(ObjectUtil.isNotEmpty(mallOrderItem.getMemberInviteId())){ |
| | | MallMember mallMember = mallMemberMapper.selectInfoByInviteId(mallOrderItem.getMemberInviteId()); |
| | | if(ObjectUtil.isNotEmpty(mallMember)){ |
| | | adminMallOrderInfoVo.setRefererName(mallMember.getName()); |
| | | } |
| | | } |
| | | } |
| | | adminMallOrderInfoVo.setGoodsName(stringBuffer.toString()); |
| | | } |
| | |
| | | StringBuffer orderItems = new StringBuffer(); |
| | | for (MallOrderItem item : mallOrderItems){ |
| | | StringBuffer orderItem = new StringBuffer(); |
| | | orderItems.append(item.getGoodsName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n "); |
| | | orderItems.append(item.getGoodsName()+"-"+item.getSkuName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n "); |
| | | orderItems.append(orderItem); |
| | | } |
| | | adminOrderDetailVo.setOrderItems(orderItems.toString()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse deliverGoodsUpdate(DeliverGoodsDto deliverGoodsDto) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId()); |
| | | if(ObjectUtil.isEmpty(mallOrderInfo)){ |
| | | return new FebsResponse().fail().message("订单不存在,刷新后重试"); |
| | | } |
| | | Integer status = mallOrderInfo.getStatus(); |
| | | if(3 != status){ |
| | | return new FebsResponse().fail().message("订单不是待收货状态"); |
| | | } |
| | | Integer deliveryType = mallOrderInfo.getDeliveryType(); |
| | | if(2 != deliveryType){ |
| | | return new FebsResponse().fail().message("订单的配送方式不是快递"); |
| | | } |
| | | String expressNo = deliverGoodsDto.getExpressNo(); |
| | | if(StrUtil.isEmpty(expressNo)){ |
| | | return new FebsResponse().fail().message("请输入物流单号"); |
| | | } |
| | | String expressCom = deliverGoodsDto.getExpressCom(); |
| | | if(StrUtil.isEmpty(expressCom)){ |
| | | return new FebsResponse().fail().message("请输入物流公司"); |
| | | } |
| | | MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId()); |
| | | |
| | | if(ObjectUtil.isEmpty(mallExpressInfo)){ |
| | | return new FebsResponse().fail().message("请先发货"); |
| | | } |
| | | mallExpressInfo.setExpressNo(expressNo); |
| | | mallExpressInfo.setExpressCom(expressCom); |
| | | mallExpressInfoMapper.updateById(mallExpressInfo); |
| | | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse deliverPdfGoods(Long id) { |
| | | MallOrderInfo mallOrderInfo = ValidateEntityUtils.ensureColumnReturnEntity(id, MallOrderInfo::getId, mallOrderInfoMapper::selectOne, "订单不存在"); |
| | | ValidateEntityUtils.ensureEqual(mallOrderInfo.getStatus(), OrderStatusEnum.WAIT_SHIPPING.getValue(), "订单不是待发货状态"); |
| | | KdCreateWaybillOrderPdfNotifyReq kdCreateWaybillOrderPdfNotifyReq = new KdCreateWaybillOrderPdfNotifyReq(); |
| | | |
| | | MallMember mallMember = ValidateEntityUtils.ensureColumnReturnEntity(mallOrderInfo.getMemberId(), MallMember::getId, mallMemberMapper::selectOne, "会员不存在"); |
| | | |
| | | kdCreateWaybillOrderPdfNotifyReq.setTxLogisticId(mallOrderInfo.getOrderNo()); |
| | | kdCreateWaybillOrderPdfNotifyReq.setServiceType("1");//服务类型(0-线下下单,1-线上下单) |
| | | kdCreateWaybillOrderPdfNotifyReq.setSpecial("1"); |
| | | |
| | | //发货人信息 |
| | | Sender sender = new Sender(); |
| | | sender.setName(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SENDER_NAME.getType(), |
| | | DataDictionaryEnum.SENDER_NAME.getCode() |
| | | ).getValue()); |
| | | sender.setMobile(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SENDER_MOBILE.getType(), |
| | | DataDictionaryEnum.SENDER_MOBILE.getCode() |
| | | ).getValue()); |
| | | sender.setAddress(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SENDER_ADDRESS.getType(), |
| | | DataDictionaryEnum.SENDER_ADDRESS.getCode() |
| | | ).getValue()); |
| | | kdCreateWaybillOrderPdfNotifyReq.setSender(sender); |
| | | |
| | | //收件人 |
| | | Receiver receiver = new Receiver(); |
| | | receiver.setName(mallMember.getRealName()); |
| | | receiver.setMobile(mallMember.getPhone()); |
| | | receiver.setAddress(mallOrderInfo.getAddress()); |
| | | kdCreateWaybillOrderPdfNotifyReq.setReceiver(receiver); |
| | | |
| | | //包裹 |
| | | Items items = new Items(); |
| | | ArrayList<Item> itemList = new ArrayList<>(); |
| | | List<MallOrderItem> mallOrderItemList = ValidateEntityUtils |
| | | .ensureColumnReturnEntityList(id, MallOrderItem::getOrderId, mallOrderItemMapper::selectList, "订单不存在"); |
| | | StringBuffer itemName = new StringBuffer(); |
| | | itemName.append("商品:"); |
| | | mallOrderItemList.forEach(mallOrderItem -> { |
| | | itemName.append(mallOrderItem.getGoodsName()+"-"+mallOrderItem.getSkuName()); |
| | | }); |
| | | Item item = new Item(); |
| | | item.setItemName(itemName.toString()); |
| | | itemList.add(item); |
| | | items.setItem(itemList); |
| | | kdCreateWaybillOrderPdfNotifyReq.setItems(items); |
| | | |
| | | kdCreateWaybillOrderPdfNotifyReq.setPiece(1); |
| | | KdCreateWaybillOrderPdfNotifyRsp pdfOrder = ClientParamService.getInstance(ClientParamEnum.TEST.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq); |
| | | |
| | | ValidateEntityUtils.ensureEqual(pdfOrder.getResult(), true, "一键发货失败,创建PDF电子面单异常"); |
| | | //更新发货状态 |
| | | mallOrderInfoMapper.updateOrderStateAndDeliveryState( |
| | | mallOrderInfo.getId(), |
| | | OrderStatusEnum.WAIT_FINISH.getValue(), |
| | | OrderDeliveryStateEnum.DELIVERY_ING.getValue()); |
| | | |
| | | MallExpressInfo mallExpressInfo = new MallExpressInfo(); |
| | | mallExpressInfo.setMemberId(mallOrderInfo.getMemberId()); |
| | | mallExpressInfo.setOrderId(mallOrderInfo.getId()); |
| | | mallExpressInfo.setExpressNo(pdfOrder.getMailNo()); |
| | | mallExpressInfo.setExpressCom("Best Logistic"); |
| | | mallExpressInfo.setExpressCode("Best Logistic"); |
| | | mallExpressInfoMapper.insert(mallExpressInfo); |
| | | |
| | | return new FebsResponse().success().data(pdfOrder); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse cancelDeliver(Long id) { |
| | | |
| | | MallOrderInfo mallOrderInfo = ValidateEntityUtils.ensureColumnReturnEntity(id, MallOrderInfo::getId, mallOrderInfoMapper::selectOne, "订单不存在"); |
| | | ValidateEntityUtils.ensureEqual(mallOrderInfo.getStatus(), OrderStatusEnum.WAIT_FINISH.getValue(), "订单不是待收货状态"); |
| | | |
| | | KdCancelOrderNotifyReq kdCancelOrderNotifyReq = new KdCancelOrderNotifyReq(); |
| | | kdCancelOrderNotifyReq.setTxLogisticId(mallOrderInfo.getOrderNo()); |
| | | kdCancelOrderNotifyReq.setReason("Don't want to buy"); |
| | | KdCancelOrderNotifyRsp kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.TEST.name()).cancelOrder(kdCancelOrderNotifyReq); |
| | | ValidateEntityUtils.ensureEqual(kdCancelOrderNotifyRsp.getResult(), true, "取消发货失败"); |
| | | |
| | | //更新发货状态 |
| | | mallOrderInfoMapper.updateOrderStateAndDeliveryState( |
| | | mallOrderInfo.getId(), |
| | | OrderStatusEnum.WAIT_SHIPPING.getValue(), |
| | | OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); |
| | | |
| | | List<MallExpressInfo> mallExpressInfoList = ValidateEntityUtils.ensureColumnReturnEntityList(mallOrderInfo.getId(), MallExpressInfo::getOrderId, mallExpressInfoMapper::selectList, "未查询到物流信息"); |
| | | mallExpressInfoList.forEach(mallExpressInfo -> mallExpressInfoMapper.deleteById(mallExpressInfo.getId())); |
| | | return new FebsResponse().success().message("取消发货成功,请重新发货"); |
| | | } |
| | | |
| | | @Override |
| | | public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo()); |
| | | if (mallOrderInfo == null) { |