Selaa lähdekoodia

fix: 处理修改订单时政策回显问题

luofeiyun 3 päivää sitten
vanhempi
commit
16dd371c2a

+ 5 - 0
ship-module-marketing/ship-module-marketing-biz/pom.xml

@@ -42,6 +42,11 @@
             <artifactId>ship-module-resource-biz</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.yc.ship</groupId>
+            <artifactId>ship-module-trade-api</artifactId>
+            <version>1.0.0</version>
+        </dependency>
 
         <dependency>
             <groupId>com.yc.ship</groupId>

+ 2 - 2
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/controller/admin/policy/PolicyController.java

@@ -123,8 +123,8 @@ public class PolicyController {
     // 获取可以使用的营销政策
     @GetMapping("/get-usable-policy-new")
     @Operation(summary = "获取可以使用的营销政策")
-    public CommonResult<List<PolicyRespVO>> getUsablePolicyNew(Long voyageId) {
-        List<PolicyRespVO> list = policyService.getUsablePolicyByVoyageId(voyageId);
+    public CommonResult<List<PolicyRespVO>> getUsablePolicyNew(@RequestParam("voyageId") Long voyageId, @RequestParam(value = "orderId", required = false) Long orderId) {
+        List<PolicyRespVO> list = policyService.getUsablePolicyByVoyageId(voyageId, orderId);
 //        List<PolicyRespVO> result = BeanUtils.toBean(list, PolicyRespVO.class);
 //        result.stream().forEach(policyRespVO -> {
 //            List<Long> areaIds = policyRespVO.getAreaIds();

+ 3 - 0
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/controller/admin/policy/vo/PolicyRespVO.java

@@ -81,4 +81,7 @@ public class PolicyRespVO {
     @Schema(description = "国籍IDS")
     private List<Integer> countryIds;
 
+    @Schema(description = "是否可新增优惠房间")
+    private Boolean canAddRoom;
+
 }

+ 1 - 2
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/dal/mysql/policydetail/PolicyDetailMapper.java

@@ -41,8 +41,7 @@ public interface PolicyDetailMapper extends BaseMapperX<PolicyDetailDO> {
     }
 
     default List<PolicyDetailDO> selectListByVoyageId(Long voyageId) {
-        return selectList(new LambdaQueryWrapperX<PolicyDetailDO>().eq(PolicyDetailDO::getVoyageId, voyageId)
-                .gt(PolicyDetailDO::getSurplusNum, BigDecimal.ZERO));
+        return selectList(new LambdaQueryWrapperX<PolicyDetailDO>().eq(PolicyDetailDO::getVoyageId, voyageId));
     }
 
     default PolicyDetailDO selectByPolicyIdAndVoyageId(Long policyId, Long voyageId) {

+ 2 - 1
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/service/policy/PolicyService.java

@@ -62,7 +62,8 @@ public interface PolicyService {
     /**
      * 根据航次ID获取可以使用的营销政策
      * @param voyageId
+     * @param orderId 修改订单时传入
      * @return
      */
-    List<PolicyRespVO> getUsablePolicyByVoyageId(Long voyageId);
+    List<PolicyRespVO> getUsablePolicyByVoyageId(Long voyageId, Long orderId);
 }

+ 24 - 3
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/service/policy/PolicyServiceImpl.java

@@ -1,5 +1,6 @@
 package com.yc.ship.module.marketing.service.policy;
 
+import com.yc.ship.framework.common.enums.CommonStatusEnum;
 import com.yc.ship.framework.common.util.collection.CollectionUtils;
 import com.yc.ship.module.marketing.dal.dataobject.policydetail.PolicyDetailDO;
 import com.yc.ship.module.marketing.dal.mysql.policydetail.PolicyDetailMapper;
@@ -7,6 +8,8 @@ import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
 import com.yc.ship.module.product.service.voyage.VoyageService;
 import com.yc.ship.module.system.api.area.AreaApi;
 import com.yc.ship.module.system.api.area.dto.AreaCountryDTO;
+import com.yc.ship.module.trade.api.dto.OrderPolicyDTO;
+import com.yc.ship.module.trade.api.trade.TradeApi;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -46,6 +49,10 @@ public class PolicyServiceImpl implements PolicyService {
 
     @Resource
     private VoyageService voyageService;
+
+    @Resource
+    private TradeApi tradeApi;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long createPolicy(PolicySaveReqVO createReqVO) {
@@ -146,8 +153,11 @@ public class PolicyServiceImpl implements PolicyService {
     }
 
     @Override
-    public List<PolicyRespVO> getUsablePolicyByVoyageId(Long voyageId) {
+    public List<PolicyRespVO> getUsablePolicyByVoyageId(Long voyageId, Long orderId) {
+        List<OrderPolicyDTO> orderPolicyList = tradeApi.getOrderPolicyList(orderId);
+        List<Long> orderPolicyIds = CollectionUtils.convertList(orderPolicyList, OrderPolicyDTO::getPolicyId);
         VoyageDO voyage = voyageService.getVoyage(voyageId);
+        LocalDateTime boardingTime = voyage.getBoardingTime();
         List<PolicyDetailDO> policyDetails = policyDetailMapper.selectListByVoyageId(voyageId);
         List<Long> policyIds = CollectionUtils.convertList(policyDetails, PolicyDetailDO::getPolicyId);
         if(CollectionUtils.isAnyEmpty(policyIds)) {
@@ -155,8 +165,9 @@ public class PolicyServiceImpl implements PolicyService {
         }
         List<PolicyDO> policyList = policyMapper.selectList(policyIds);
         List<PolicyDO> result = policyList.stream().filter(policyDO -> {
-            LocalDateTime boardingTime = voyage.getBoardingTime();
-            return boardingTime.plusDays(policyDO.getEarlyDays() * -1L).isAfter(LocalDateTime.now());
+            return (boardingTime.plusDays(policyDO.getEarlyDays() * -1L).isAfter(LocalDateTime.now())
+                    && Objects.equals(policyDO.getStatus(), CommonStatusEnum.ENABLE.getStatus()))
+                    || orderPolicyIds.contains(policyDO.getId());
         }).collect(Collectors.toList());
         List<PolicyRespVO> policyRespVOS = BeanUtils.toBean(result, PolicyRespVO.class);
         Map<Long, PolicyDetailDO> policyDetailDOMap = CollectionUtils.convertMap(policyDetails, PolicyDetailDO::getPolicyId);
@@ -170,6 +181,16 @@ public class PolicyServiceImpl implements PolicyService {
                 policyRespVO.setRoomModelIds(policyDetailDO.getRoomModelIds());
                 policyRespVO.setSurplusNum(policyDetailDO.getSurplusNum());
             }
+            if(Objects.equals(policyRespVO.getStatus(), CommonStatusEnum.DISABLE.getStatus())) {
+                policyRespVO.setCanAddRoom(false);
+                policyRespVO.setName(policyRespVO.getName()+"(已下架)");
+            } else {
+                if (boardingTime.plusDays(policyRespVO.getEarlyDays() * -1L).isAfter(LocalDateTime.now())) {
+                    policyRespVO.setCanAddRoom(true);
+                } else {
+                    policyRespVO.setCanAddRoom(false);
+                }
+            }
         });
         return policyRespVOS;
     }

+ 36 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/api/dto/OrderPolicyDTO.java

@@ -0,0 +1,36 @@
+package com.yc.ship.module.trade.api.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 订单使用的优惠政策 Response VO")
+@Data
+public class OrderPolicyDTO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18521")
+    private Long id;
+
+    @Schema(description = "订单ID", example = "14709")
+    private Long orderId;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "政策ID", example = "25357")
+    private Long policyId;
+
+    @Schema(description = "预占数量")
+    private BigDecimal preUseNum;
+
+    @Schema(description = "实占数量")
+    private BigDecimal realUseNum;
+
+    @Schema(description = "优惠金额")
+    private BigDecimal amount;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+}

+ 6 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/api/trade/TradeApi.java

@@ -1,11 +1,14 @@
 package com.yc.ship.module.trade.api.trade;
 
 import com.yc.ship.framework.common.pojo.CommonResult;
+import com.yc.ship.module.trade.api.dto.OrderPolicyDTO;
 import com.yc.ship.module.trade.api.dto.PayOrderReqDTO;
 import com.yc.ship.module.trade.api.dto.PayOrderRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 
+import java.util.List;
+
 /***
  *@return
  */
@@ -15,4 +18,7 @@ public interface TradeApi {
     @Operation(summary = "充值支付")
     CommonResult<PayOrderRespDTO> payOuterOrder(PayOrderReqDTO reqDTO);
 
+    @Operation(summary = "获取订单使用的政策列表")
+    List<OrderPolicyDTO> getOrderPolicyList(Long orderId);
+
 }

+ 18 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/api/trade/TradeApiImpl.java

@@ -2,15 +2,21 @@ package com.yc.ship.module.trade.api.trade;
 
 import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.util.object.BeanUtils;
+import com.yc.ship.module.trade.api.dto.OrderPolicyDTO;
 import com.yc.ship.module.trade.api.dto.PayOrderReqDTO;
 import com.yc.ship.module.trade.api.dto.PayOrderRespDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.PayOrderReqVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.PayOrderRespVO;
+import com.yc.ship.module.trade.dal.dataobject.orderpolicy.OrderPolicyDO;
+import com.yc.ship.module.trade.service.orderpolicy.OrderPolicyService;
 import com.yc.ship.module.trade.service.pay.impl.TradeOrderPayServiceImpl;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * @author :
@@ -24,6 +30,9 @@ public class TradeApiImpl implements TradeApi {
     @Resource
     private TradeOrderPayServiceImpl tradeOrderPayService;
 
+    @Resource
+    private OrderPolicyService orderPolicyService;
+
 
     @Override
     public CommonResult<PayOrderRespDTO> payOuterOrder(PayOrderReqDTO reqDTO) {
@@ -31,4 +40,13 @@ public class TradeApiImpl implements TradeApi {
         CommonResult<PayOrderRespVO> payOrderRespVOCommonResult = tradeOrderPayService.payOuterOrder(payOrderReqDTO);
         return CommonResult.success(BeanUtils.toBean(payOrderRespVOCommonResult.getData(), PayOrderRespDTO.class));
     }
+
+    @Override
+    public List<OrderPolicyDTO> getOrderPolicyList(Long orderId) {
+        if(Objects.isNull(orderId)) {
+            return Collections.emptyList();
+        }
+        List<OrderPolicyDO> list = orderPolicyService.getListByOrderId(orderId);
+        return BeanUtils.toBean(list, OrderPolicyDTO.class);
+    }
 }

+ 7 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderpolicy/OrderPolicyService.java

@@ -52,4 +52,11 @@ public interface OrderPolicyService {
      */
     PageResult<OrderPolicyDO> getOrderPolicyPage(OrderPolicyPageReqVO pageReqVO);
 
+    /**
+     * 获得订单使用的优惠政策列表
+     *
+     * @param orderId 订单ID
+     * @return 订单使用的优惠政策列表
+     */
+    List<OrderPolicyDO> getListByOrderId(Long orderId);
 }

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderpolicy/OrderPolicyServiceImpl.java

@@ -61,4 +61,9 @@ public class OrderPolicyServiceImpl implements OrderPolicyService {
         return orderPolicyMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<OrderPolicyDO> getListByOrderId(Long orderId) {
+        return orderPolicyMapper.selectByOrderId(orderId);
+    }
+
 }