| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package com.cyksj.service.mange.impl;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
- import com.cyksj.common.util.Jsons;
- import com.cyksj.mapper.GoodsDonSkuMapper;
- import com.cyksj.mapper.OrderDonMapper;
- import com.cyksj.mapper.OrderDonTransportMapper;
- import com.cyksj.mapper.OrderDonWaybillMapper;
- import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
- import com.cyksj.model.entity.*;
- import com.cyksj.model.excel.ExcelOrderDonInfo;
- import com.cyksj.model.manage.request.ReqSetLogisticsPost;
- import com.cyksj.service.mange.CmsOrderDonService;
- import com.cyksj.service.mange.stock.GoodsDonStockService;
- import com.cyksj.service.order.UserRealOrderBenefitsService;
- import com.cyksj.service.template.TemplateCommonService;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.List;
- import java.util.Optional;
- /**
- * @author chan
- * @date 2021/10/25 下午10:14
- */
- @Service
- @Slf4j
- @RequiredArgsConstructor
- public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon> implements CmsOrderDonService {
- private final OrderDonTransportMapper transportMapper;
- private final OrderDonWaybillMapper orderDonWaybillMapper;
- private final GoodsSkuStockRelateMapper skuStockRelateMapper;
- private final GoodsDonStockService goodsDonStockService;
- private final TemplateCommonService templateCommonService;
- private final GoodsDonSkuMapper goodsDonSkuMapper;
- private final UserRealOrderBenefitsService userRealOrderBenefitsService;
- private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
- @Override
- public List<ExcelOrderDonInfo> exportOrderInfo(Long promotionId, String start, String end) {
- return this.getBaseMapper().exportOrderInfo(promotionId,start,end);
- }
- @Override
- public OrderDonTransport getTransport(Long orderId) {
- return transportMapper.selectOne(Wrappers.lambdaQuery(OrderDonTransport.class).eq(OrderDonTransport::getOrderId, orderId));
- }
- @Transactional(rollbackFor = Throwable.class)
- @Override
- public OrderDonWaybill setWaybill(ReqSetLogisticsPost reqSetLogisticsPost) {
- OrderDonWaybill orderDonWaybill = Optional.ofNullable(orderDonWaybillMapper.selectOne(Wrappers.lambdaQuery(OrderDonWaybill.class).eq(OrderDonWaybill::getOrderId, reqSetLogisticsPost.getOrderId()))).orElse(new OrderDonWaybill());
- orderDonWaybill.setCodeCn(reqSetLogisticsPost.getCodeCn());
- orderDonWaybill.setTrackingNumber(reqSetLogisticsPost.getTrackingNumber());
- orderDonWaybill.setOrderId(reqSetLogisticsPost.getOrderId());
- orderDonWaybill.setRemark(reqSetLogisticsPost.getRemark());
- OrderDon orderDon = getById(orderDonWaybill.getOrderId());
- if(orderDonWaybill.getId() == null){
- orderDonWaybillMapper.insert(orderDonWaybill);
- orderDon.setStatus(OrderDon.Status.transport);
- updateById(orderDon);
- //发放实物购买权益
- Boolean isReceivedAll = true;
- GoodsDonSku sku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
- if (sku != null) {
- if (sku.getIsBenefits()) {
- if (StrUtil.isNotEmpty(sku.getBenefitsList())) {
- try {
- List<GoodsDonSku> goodsDonSkus = Jsons.parseList(sku.getBenefitsList(), GoodsDonSku.class);
- //自购实物 获取权益
- isReceivedAll = userRealOrderBenefitsService.getPayRealGoodsBenefits(orderDon.getUserId(), orderDon.getId(), goodsDonSkus);
- } catch (Exception e) {
- }
- }
- }
- }
- final Boolean flag = isReceivedAll;
- //库存扣减逻辑
- List<GoodsSkuStockRelate> relateList = skuStockRelateMapper.selectList(Wrappers.lambdaQuery(GoodsSkuStockRelate.class).eq(GoodsSkuStockRelate::getSkuId,orderDon.getSkuId()));
- if(!relateList.isEmpty()){
- relateList.forEach((relate)->{
- goodsDonStockService.upStockRelate(relate.getStockId(),orderDon.getId(),"transport");
- });
- }
- //发送微信模板消息
- TASK_POOL.execute(()->{
- try {
- log.info("发送发货通知至{}用户", orderDon.getUserId());
- templateCommonService.sendTransportMsgNotify(orderDon, reqSetLogisticsPost, flag);
- } catch (Exception e) {
- log.error("发送发货通知至{}用户失败:{}", orderDon.getUserId(), e);
- }
- });
- }else {
- if (orderDon.getStatus() == OrderDon.Status.hasPayment) {
- orderDon.setStatus(OrderDon.Status.transport);
- updateById(orderDon);
- }
- orderDonWaybillMapper.updateById(orderDonWaybill);
- }
- return orderDonWaybill;
- }
- }
|