Forráskód Böngészése

消息通知优化

lishiqiang 1 hónapja
szülő
commit
4b58f68761

+ 0 - 63
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/LinkHandler.java

@@ -1,63 +0,0 @@
-package com.yc.ship.module.trade.service.order.handler;
-
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.yc.ship.module.otc.api.link.LinkApi;
-import com.yc.ship.module.otc.api.link.dto.LinkDetailRespDTO;
-import com.yc.ship.module.otc.api.link.dto.LinkRespDTO;
-import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderBindDO;
-import com.yc.ship.module.trade.enums.TradeOrderBindEnum;
-import com.yc.ship.module.trade.service.order.TradeOrderRepositoryService;
-import com.yc.ship.module.trade.service.order.bo.TradeOrderBO;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-
-/**
- * @Description :链接处理
- * @Author :qsl
- * @Date :2025/9/4 15:23
- */
-@Component
-@Order(TradeOrderHandler.COUPON)
-@Slf4j
-public class LinkHandler implements TradeOrderHandler{
-
-    @Resource
-    private LinkApi linkApi;
-    @Resource
-    private TradeOrderRepositoryService tradeOrderRepositoryService;
-
-    @Override
-    public void beforeOrderCreate(TradeOrderBO order) {
-        if(order.getExtraInfo().getLinkId() == null){
-            return;
-        }
-        try{
-
-            LinkRespDTO linkRespDTO = linkApi.getLinkById(order.getExtraInfo().getLinkId()).getCheckedData();
-            if(linkRespDTO.getDetailRespDTOS().isEmpty()){
-                return;
-            }
-            LinkDetailRespDTO linkDetailRespDTO = linkRespDTO.getDetailRespDTOS().get(0);
-            if(linkDetailRespDTO.getUserId()!=null){
-                order.getTradeOrderDO().setSellerId(linkDetailRespDTO.getUserId().toString());
-            }
-
-            order.getTradeOrderDO().setStoreId(linkDetailRespDTO.getStoreId());
-            order.getTradeOrderDO().setStoreName(linkDetailRespDTO.getStoreName());
-            //绑定关系
-            TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
-            tradeOrderBindDO.setId(IdWorker.getId());
-            tradeOrderBindDO.setOrderId(order.getTradeOrderDO().getId());
-            tradeOrderBindDO.setBindId(order.getExtraInfo().getLinkId());
-            tradeOrderBindDO.setType(TradeOrderBindEnum.LINK.getType());
-            tradeOrderRepositoryService.saveBindOrder(tradeOrderBindDO);
-
-        }catch (Exception e){
-            log.error("链接处理异常",e);
-        }
-    }
-}

+ 15 - 54
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/MarketingHandler.java

@@ -46,62 +46,23 @@ public class MarketingHandler implements TradeOrderHandler{
         //验证是否有符合营销政策的优惠券
         try {
             //目前只考虑外部旅行社
-            if(ObjectUtil.notEqual(order.getTradeOrderDO().getSellMethod(), SellMethodEnum.OTC_MOVE_ORDER.getType())){
-                return;
-            }
-            //此处只考虑一种产品
-            TradeOrderDetailBO tradeOrderDetailBO = order.getTradeOrderDetailBOList().get(0);
-            RuleVerifyDTO ruleVerifyDTO = new RuleVerifyDTO();
-            ruleVerifyDTO.setProductId(tradeOrderDetailBO.getProductSpuRespDTO().getId());
-            ruleVerifyDTO.setOrderId(order.getTradeOrderDO().getId());
-            Map<String, List<TradeDetailDO>> tradeDetailMap = tradeOrderDetailBO.getTradeDetailDOList().stream().collect(Collectors.groupingBy(TradeDetailDO::getSpecType));
-            List<RuleSpecDTO> ruleSpecList = tradeDetailMap.entrySet().stream().map(entry -> {
-                RuleSpecDTO ruleSpecDTO = new RuleSpecDTO();
-                ruleSpecDTO.setSpecType(entry.getKey());
-                ruleSpecDTO.setNum(entry.getValue().size());
-                return ruleSpecDTO;
-            }).collect(Collectors.toList());
-            ruleVerifyDTO.setRuleSpecNums(ruleSpecList);
-            ruleVerifyDTO.setStoreId(order.getTradeOrderDO().getStoreId());
-
-//            RuleVerifyDTO respDTO = marketingService.marketingCoupon(ruleVerifyDTO);
-//            if(respDTO ==null || CollUtil.isEmpty(respDTO.getRuleSpecNums()) || respDTO.getMarketingId() == null){
-//                return;
-//            }
-//            BigDecimal couponDiscountAmount = respDTO.getRuleSpecNums().stream().map(RuleSpecDTO::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-//            BigDecimal discountAmount = couponDiscountAmount;
-//            BigDecimal originPayAmount = order.getTradeOrderDO().getPayAmount();
-//            if(order.getExtraInfo().getOriginPayAmount()==null){
-//                order.getExtraInfo().setOriginPayAmount(originPayAmount);
-//            }
-//            if(order.getExtraInfo().getDiscountAmount()!=null){
-//                discountAmount = discountAmount.add(order.getExtraInfo().getDiscountAmount());
-//            }
-//            BigDecimal payAmount = order.getTradeOrderDO().getPayAmount().subtract(discountAmount);
-//            if(payAmount.compareTo(BigDecimal.ZERO)<0){
-//                payAmount = BigDecimal.ZERO;
-//            }
-//            order.getTradeOrderDO().setPayAmount(payAmount);
-//            order.getExtraInfo().setDiscountAmount(discountAmount);
-//            if(discountAmount.compareTo(BigDecimal.ZERO) == 0){
-//                //优惠金额0则不保存
+//            if(ObjectUtil.notEqual(order.getTradeOrderDO().getSellMethod(), SellMethodEnum.OTC_MOVE_ORDER.getType())){
 //                return;
 //            }
-//            //重置金额
-//            resetOrderPrice(order);
-//
-//            order.getExtraInfo().setMarketingCouponCodeId(respDTO.getMarketingId());
-//            order.getExtraInfo().setMarketingName(respDTO.getMarketingName());
-//
-//            //保存绑定关系
-//            TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
-//            tradeOrderBindDO.setId(IdWorker.getId());
-//            tradeOrderBindDO.setOrderId(order.getTradeOrderDO().getId());
-//            tradeOrderBindDO.setBindId(respDTO.getMarketingId());
-//            tradeOrderBindDO.setType(TradeOrderBindEnum.MARKETING_POLICY_COUPON.getType());
-//            tradeOrderBindDO.setCustom(couponDiscountAmount.toPlainString());
-//            tradeOrderBindDO.setRemark(JSONUtil.toJsonStr(respDTO));
-//            tradeOrderRepositoryService.saveBindOrder(tradeOrderBindDO);
+//            //此处只考虑一种产品
+//            TradeOrderDetailBO tradeOrderDetailBO = order.getTradeOrderDetailBOList().get(0);
+//            RuleVerifyDTO ruleVerifyDTO = new RuleVerifyDTO();
+//            ruleVerifyDTO.setProductId(tradeOrderDetailBO.getProductSpuRespDTO().getId());
+//            ruleVerifyDTO.setOrderId(order.getTradeOrderDO().getId());
+//            Map<String, List<TradeDetailDO>> tradeDetailMap = tradeOrderDetailBO.getTradeDetailDOList().stream().collect(Collectors.groupingBy(TradeDetailDO::getSpecType));
+//            List<RuleSpecDTO> ruleSpecList = tradeDetailMap.entrySet().stream().map(entry -> {
+//                RuleSpecDTO ruleSpecDTO = new RuleSpecDTO();
+//                ruleSpecDTO.setSpecType(entry.getKey());
+//                ruleSpecDTO.setNum(entry.getValue().size());
+//                return ruleSpecDTO;
+//            }).collect(Collectors.toList());
+//            ruleVerifyDTO.setRuleSpecNums(ruleSpecList);
+//            ruleVerifyDTO.setStoreId(order.getTradeOrderDO().getStoreId());
         }catch (Exception e) {
             log.error("营销政策验券异常",e);
         }

+ 0 - 189
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/PersonalDistributorHandler.java

@@ -1,189 +0,0 @@
-package com.yc.ship.module.trade.service.order.handler;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.map.MapUtil;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.yc.ship.framework.common.util.object.ObjectUtils;
-import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
-import com.yc.ship.framework.tenant.core.util.TenantUtils;
-import com.yc.ship.module.marketing.api.coupon.dto.DistributorRefundReqDto;
-import com.yc.ship.module.marketing.api.coupon.dto.DistributorReqDto;
-import com.yc.ship.module.ota.service.distributor.DistributorService;
-import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderBindDO;
-import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
-import com.yc.ship.module.trade.dal.dataobject.refund.RefundDO;
-import com.yc.ship.module.trade.dal.mysql.order.TradeDetailMapper;
-import com.yc.ship.module.trade.dal.mysql.order.TradeOrderLogMapper;
-import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
-import com.yc.ship.module.trade.enums.SellMethodEnum;
-import com.yc.ship.module.trade.enums.TradeOrderBindEnum;
-import com.yc.ship.module.trade.enums.VoucherStatusEnum;
-import com.yc.ship.module.trade.service.order.TradeOrderRepositoryService;
-import com.yc.ship.module.trade.service.order.bo.TradeOrderBO;
-import com.yc.ship.module.trade.service.refund.TradeRefundRepositoryService;
-import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RLock;
-import org.redisson.api.RedissonClient;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @Description :个人分销处理
- * @Author :qsl
- * @Date :2025/9/4 15:23
- */
-@Component
-@Order(TradeOrderHandler.COUPON)
-@Slf4j
-public class PersonalDistributorHandler implements TradeOrderHandler{
-
-    @Resource
-    private DistributorService distributorService;
-    @Resource
-    private TradeOrderRepositoryService tradeOrderRepositoryService;
-    @Resource
-    private TradeRefundRepositoryService tradeRefundRepositoryService;
-    @Resource
-    private RedissonClient redissonClient;
-    final String PERSONAL_DISTRIBUTOR_ORDER_LOCK = "personalDistributor:order:lock:%d";
-    @Resource
-    private TradeDetailMapper tradeDetailMapper;
-
-    @Resource
-    private TradeOrderMapper tradeOrderMapper;
-
-    @Resource
-    private TradeOrderLogMapper tradeOrderLogMapper;
-    @Override
-    public void beforeOrderCreate(TradeOrderBO order) {
-        if(order.getExtraInfo().getPersonalDistributorId() == null){
-            return;
-        }
-        try {
-            //绑定关系
-            TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
-            tradeOrderBindDO.setId(IdWorker.getId());
-            tradeOrderBindDO.setOrderId(order.getTradeOrderDO().getId());
-            tradeOrderBindDO.setBindId(order.getExtraInfo().getPersonalDistributorId());
-            tradeOrderBindDO.setType(TradeOrderBindEnum.PERSONAL_DISTRIBUTOR.getType());
-            tradeOrderRepositoryService.saveBindOrder(tradeOrderBindDO);
-        }catch (Exception e){
-            log.error("个人分销处理异常",e);
-        }
-
-    }
-
-    @Override
-    public void afterProcessSuccess(TradeOrderDO tradeOrderDO) {
-        try {
-            if(!ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.MINI_APP.getType())){
-                return;
-            }
-            List<TradeOrderBindDO> bindList = tradeOrderRepositoryService.getBindOrderByOrderId(tradeOrderDO.getId(), TradeOrderBindEnum.PERSONAL_DISTRIBUTOR);
-            if(CollUtil.isEmpty(bindList)){
-                return;
-            }
-            List<Map<String, Object>> orderProductList = tradeOrderRepositoryService.getOrderPackProduct(tradeOrderDO.getId());
-            Map<String,Object> productMap = orderProductList.get(0);
-            DistributorReqDto reqDto = new DistributorReqDto();
-            reqDto.setProductId(MapUtil.getLong(productMap,"pack_product_id"));
-            reqDto.setShareDistributorId(bindList.get(0).getBindId());
-            reqDto.setOrderId(tradeOrderDO.getId());
-            reqDto.setOrderAmount(tradeOrderDO.getPayAmount());
-            reqDto.setTravelDate(DateUtil.formatDate(tradeOrderDO.getTravelDate()));
-//            log.error("个人分销出票请求参数:{}", JsonUtils.toJsonString(reqDto));
-//            CommonResult<Boolean> result = distributorService.handleOrderProductShare(reqDto);
-//            log.error("个人分销出票返回参数:{}", JsonUtils.toJsonString(result));
-        }catch (Exception e){
-            log.error("个人分销处理异常-出票",e);
-        }
-    }
-
-    @Override
-    public void afterRefundOrder(Long refundId) {
-
-    }
-
-    @Override
-    public void afterRefundAmountSuccess(Long orderId, Long refundId, BigDecimal refundAmount) {
-        try {
-            TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(orderId);
-            if(!ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.MINI_APP.getType())){
-                return;
-            }
-            if(refundId == null){
-                return;
-            }
-            RefundDO refundDO = tradeRefundRepositoryService.getById(refundId);
-            List<TradeOrderBindDO> bindList = tradeOrderRepositoryService.getBindOrderByOrderId(refundDO.getOrderId(), TradeOrderBindEnum.PERSONAL_DISTRIBUTOR);
-            if(CollUtil.isEmpty(bindList)){
-                return;
-            }
-
-            BigDecimal orderRefundAmount = tradeRefundRepositoryService.getRefundAmountFromOrderDetail(refundDO.getOrderId());
-
-            List<Map<String, Object>> orderProductList = tradeOrderRepositoryService.getOrderPackProduct(tradeOrderDO.getId());
-            Map<String,Object> productMap = orderProductList.get(0);
-            DistributorRefundReqDto reqDto = new DistributorRefundReqDto();
-            reqDto.setOrderAmount(tradeOrderDO.getPayAmount().subtract(orderRefundAmount));
-            reqDto.setProductId(MapUtil.getLong(productMap,"pack_product_id"));
-            reqDto.setOrderId(tradeOrderDO.getId());
-//            log.error("个人分销退款请求参数:{}", JsonUtils.toJsonString(reqDto));
-//            CommonResult<Boolean> result = distributorApi.handleOrderRefund(reqDto);
-//            log.error("个人分销退款返回参数:{}", JsonUtils.toJsonString(result));
-            //结算
-            log.error("个人分销结算-退款:{}", orderId);
-            doHandleOrderSettle(orderId);
-        }catch (Exception e){
-            log.error("个人分销处理异常-退款",e);
-        }
-    }
-
-    @Override
-    public void afterCheckSuccess(Long orderId) {
-        log.error("个人分销结算-核销:{}", orderId);
-        TradeOrderDO tradeOrderDO = getOrder(orderId);
-        if(tradeOrderDO == null || !ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.MINI_APP.getType())){
-            return;
-        }
-        TenantUtils.execute(tradeOrderDO.getTenantId(),()->{
-            doHandleOrderSettle(orderId);
-        });
-    }
-
-    private void doHandleOrderSettle(Long orderId){
-        String lockKey = String.format(PERSONAL_DISTRIBUTOR_ORDER_LOCK,orderId);
-        RLock lock = redissonClient.getLock(lockKey);
-        try {
-            lock.lock();
-            Long count = tradeOrderRepositoryService.getOrderDetailCountWithStatus(orderId, Arrays.asList(VoucherStatusEnum.UNUSED.getStatus(),VoucherStatusEnum.TOOK.getStatus(), VoucherStatusEnum.REFUNDING.getStatus()));
-//            log.error("个人分销结算,当前未使用数量:{}", count);
-//            if(count!=null && count == 0){
-//                Boolean checkedData = distributorApi.handleOrderSettle(orderId).getCheckedData();
-//                log.error("个人分销结算,请求返回:{}", checkedData);
-//            }
-        }catch (Exception e){
-            log.error("个人分销结算异常",e);
-        }finally {
-            if(lock.isHeldByCurrentThread() && lock.isLocked()){
-                lock.unlock();
-            }
-        }
-    }
-
-    private TradeOrderDO getOrder(Long orderId){
-        TenantContextHolder.setIgnore(true);
-        try {
-            return tradeOrderRepositoryService.getById(orderId);
-        }finally {
-            TenantContextHolder.setIgnore(false);
-        }
-    }
-}

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeOrderNotifyHandler.java

@@ -31,7 +31,7 @@ public class TradeOrderNotifyHandler implements TradeOrderHandler {
     public void afterProcessSuccess(TradeOrderDO tradeOrderDO) {
         try {
             //实名制系统通知,实时推送今天的
-            thirdGateSystemService.pushVisitor(tradeOrderDO.getId());
+//            thirdGateSystemService.pushVisitor(tradeOrderDO.getId());
 
         }catch (Exception e) {
             log.error("实名制系统推送异常",e);

+ 0 - 65
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeProductStockOrderHandler.java

@@ -40,66 +40,6 @@ public class TradeProductStockOrderHandler implements TradeOrderHandler{
     @Override
     public void beforeOrderCreate(TradeOrderBO order) {
 
-//        if(CollUtil.isEmpty(productList)){
-//            return;
-//        }
-//        //如果是改签则不扣除,沿用原库存
-//        CommonResult<List<ReducedResourceRespDTO>> result;
-//        if(ObjectUtil.equal(order.getExtraInfo().getIsChange(),YES)){
-//            result = stockApi.deductResourceStock(productList);
-//        }else{
-//            //扣对应库存
-//            //如果扣库存失败,抛异常
-//            result =  stockApi.deductStock(productList);
-//        }
-//
-//        List<ReducedResourceRespDTO> reducedResourceRespDTOList = result.getCheckedData();
-//        //分配资源到订单产品基础,如果基础产品时平台分销的,则扣完库存不返回,此处不处理
-//
-//        order.getTradeOrderDetailBOList().stream().filter(item->item.getProductType() == PRODUCT_BASE_TYPE_SELF).forEach(tradeOrderDetailBO -> {
-//            Map<Long,List<TradeDetailBaseDO>> cacheMap = new HashMap<>();
-//            reducedResourceRespDTOList.forEach(reducedResourceRespDTO -> {
-//
-//                List<TradeDetailBaseDO> filterList = cacheMap.computeIfAbsent(reducedResourceRespDTO.getProductBaseId(),key -> tradeOrderDetailBO.getTradeDetailBaseDOList().stream().filter(item -> ObjectUtil.equal(item.getProductBaseId(), reducedResourceRespDTO.getProductBaseId())
-//                        && ObjectUtil.equal(tradeOrderDetailBO.getProductSpuRespDTO().getId(), reducedResourceRespDTO.getProductId())
-//                ).collect(Collectors.toList()));
-//
-//                //此处基础产品可以对应多个资源
-//                Asserts.isTrue(reducedResourceRespDTO.getReducedNum() <= filterList.size(), "库存返回数据不正确,扣减数量{},匹配数量{}", reducedResourceRespDTO.getReducedNum(), filterList.size());
-//
-//                Iterator<TradeDetailBaseDO> iterator = filterList.iterator();
-//                int i = 0;
-//                while (iterator.hasNext()){
-//                    TradeDetailBaseDO tradeDetailBaseDO = iterator.next();
-//                    if(tradeDetailBaseDO.getProductResourceId()!=null){
-//                        //如果下单指定了资源,则扣减库存应保持一致
-//                        Asserts.isTrue(ObjectUtil.equal(tradeDetailBaseDO.getProductResourceId(),reducedResourceRespDTO.getId()),"指定资源与扣减资源不一致{},{}",tradeDetailBaseDO.getProductResourceId(),reducedResourceRespDTO.getId());
-//                    }
-//                    tradeDetailBaseDO.setProductResourceId(reducedResourceRespDTO.getId());
-//                    tradeDetailBaseDO.setProductResourceName(reducedResourceRespDTO.getName());
-//                    tradeDetailBaseDO.setSupplierId(reducedResourceRespDTO.getSupplierId());
-//                    tradeDetailBaseDO.setSupplierName(reducedResourceRespDTO.getSupplierName());
-//                    tradeDetailBaseDO.setIsSystemDirect(reducedResourceRespDTO.getAccessType());
-//                    tradeDetailBaseDO.setSupplierProductId(reducedResourceRespDTO.getThirdResourceId());
-//                    tradeDetailBaseDO.setProductResourcePrice(reducedResourceRespDTO.getPrice());
-//                    //设置后移除
-//                    iterator.remove();
-//                    i++;
-//                    if(i == reducedResourceRespDTO.getReducedNum()){
-//                        break;
-//                    }
-//                }
-//                reducedResourceRespDTO.setReducedNum(0);
-//            });
-//            //验证是否已经设置完全
-//            if(!cacheMap.isEmpty()){
-//                cacheMap.entrySet().stream().map(it->{
-//                    Asserts.isTrue(CollUtil.isEmpty(it.getValue()),"基础产品未完全关联资源{}",it.getKey());
-//                    return it;
-//                });
-//            }
-//        });
-
     }
 
     private Map<Long,List<TradeDetailBaseDO>> getTradeDetailBaseDO(List<TradeDetailBaseDO> tradeDetailBaseDOList){
@@ -107,11 +47,6 @@ public class TradeProductStockOrderHandler implements TradeOrderHandler{
     }
 
 
-    private Integer getBuyCount(List<TradeDetailDO> tradeDetailDOList){
-        //携童票不扣库存 2025-04-09修改
-        long count = tradeDetailDOList.stream().filter(tradeDetailDO -> !ObjectUtils.equalsAny(tradeDetailDO.getSpecType(), SpecTypeEnum.CARRYING_CHILDREN.getType())).count();
-        return (int)count * tradeDetailDOList.get(0).getQuantityOfOne();
-    }
 
     @Override
     public void afterOrderCreateFail(TradeOrderBO order) {