Browse Source

下单优化

lishiqiang 1 week ago
parent
commit
9d7c1de97b

+ 0 - 53
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java

@@ -15,7 +15,6 @@ import com.yc.ship.framework.excel.core.annotations.DictFormat;
 import com.yc.ship.framework.excel.core.util.ExcelUtils;
 import com.yc.ship.framework.ip.core.utils.AreaUtils;
 import com.yc.ship.framework.operatelog.core.annotations.OperateLog;
-import com.yc.ship.module.otc.api.agency.dto.CooperateRespDTO;
 import com.yc.ship.module.product.api.dto.CategoryRespDTO;
 import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
 import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
@@ -289,30 +288,7 @@ public class OtcTradeOrderController {
         return success(otcTradeOrderService.getOtcTradeOrderPage(pageReqVO));
     }
 
-    @PostMapping("/window/otcOrderList2")
-    @OperateLog(type = API)
-    @Operation(summary = "win-分销端订单列表[分页]", description = "根据条件查询订单列表")
-    @PlatTenantEnv
-    public CommonResult<PageResult<TradeOrderRespVO>> getOtcTradeOrderPage2(@Valid @RequestBody TradeOrderPageReqVO pageReqVO) {
-        return success(otcTradeOrderService.getOtcTradeOrderPage2(pageReqVO));
-    }
 
-    @PostMapping("/window/transCooperateList")
-    @OperateLog(type = API)
-    @Operation(summary = "win-查询合作旅行社信息", description = "查询合作旅行社信息")
-    public CommonResult<List<CooperateRespDTO>> transCooperateList(@Valid @RequestBody TradeOrderPageReqVO pageReqVO) {
-        return success(otcTradeOrderService.transCooperateList(pageReqVO));
-    }
-
-    @PostMapping("/window/transOrderList")
-    @Operation(summary = "win-转交订单列表[分页]", description = "根据条件查询订单列表")
-    @OperateLog(type = API)
-    public CommonResult<PageResult<TradeTranOrderRespVO>> getTransOrderPage(@Valid @RequestBody TradeOrderPageReqVO pageReqVO) {
-        PageResult<TradeTranOrderRespVO> transOrderPage = otcTradeOrderService.getTransOrderPage(pageReqVO);
-        String totalDesc = otcTradeOrderService.getTotalTransOrder(pageReqVO);
-        transOrderPage.setTotalDes(totalDesc);
-        return success(transOrderPage);
-    }
 
     @PostMapping("/window/paidOrderList")
     @Operation(summary = "win-已支付订单列表[分页]", description = "根据条件查询订单列表")
@@ -321,21 +297,6 @@ public class OtcTradeOrderController {
         return success(otcTradeOrderService.getPaidOrderPage(pageReqVO));
     }
 
-    @GetMapping("/window/getBoundOrder")
-    @Operation(summary = "win-查询已关联订单")
-    @OperateLog(type = API)
-    @PlatTenantEnv
-    public CommonResult<List<TradeOrderRespVO>> getBoundOrder(@Valid Long id) {
-        return success(otcTradeOrderService.getBoundOrder(id));
-    }
-
-    @GetMapping("/window/orderBindPage")
-    @Operation(summary = "win-查询可关联的订单[分页]")
-    @OperateLog(type = API)
-    @PlatTenantEnv
-    public CommonResult<PageResult<TradeOrderRespVO>> getCanBindOrder(@Valid TradeOrderPageReqVO pageReqVO) {
-        return success(otcTradeOrderService.getCanBindOrder(pageReqVO));
-    }
 
     @GetMapping("/window/orderInfo")
     @OperateLog(type = API)
@@ -474,20 +435,6 @@ public class OtcTradeOrderController {
         return success(otcTradeOrderService.getCategoryAndSpuAllOuterOTC(distributorId,travelDate));
     }
 
-    @GetMapping("/platProductAll")
-    @Operation(summary = "sell-所有产品分组和产品数据")
-    @OperateLog(type = API)
-    public CommonResult<List<CategoryRespDTO>> platProductAll(Long templateId) {
-        return success(otcTradeOrderService.platProductAll(templateId));
-    }
-
-    @GetMapping("/platProductAndPlanAll")
-    @Operation(summary = "sell-所有产品分组和产品数据")
-    @OperateLog(type = API)
-    public CommonResult<List<CategoryRespDTO>> platProductAndPlanAll(Long templateId) {
-        return success(otcTradeOrderService.platProductAndPlanAll(templateId));
-    }
-
 
     @GetMapping("/productSupInfo")
     @Operation(summary = "sell-产品详情")

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java

@@ -189,4 +189,6 @@ public interface TradeDetailMapper extends BaseMapperX<TradeDetailDO> {
     IPage<OtaTradeLogRespVO> getOrderPayPage(IPage<OtaTradeLogRespVO> page, @Param("vo") OtaTradeLogPageReqVO vo, @Param("distributorId") Long distributorId);
 
 
+    @TenantIgnore
+    int getMaxOrderNo(@Param("voyageId") Long voyageId);
 }

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

@@ -114,6 +114,7 @@ public interface TradeOrderService {
     void bindChangeOrder(List<Long> originDetailIdList, Long orderId, Long originOrderId);
 
     TradeDetailBaseDO getTradeDetailByNo(String ticketNo);
+    int getMaxOrderNo(Long voyageId);
 
 
     List<TradeOrderDO> getTradeOrderByExpire(String expiretime);

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -1547,6 +1547,10 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     public TradeDetailBaseDO getTradeDetailByNo(String ticketNo) {
         return tradeDetailMapper.selectPlatTradeBaseDetail(ticketNo);
     }
+    @Override
+    public int getMaxOrderNo(Long voyageId) {
+        return tradeDetailMapper.getMaxOrderNo(voyageId);
+    }
 
     @Override
     public List<TradeOrderDO> getTradeOrderByExpire(String expiretime) {
@@ -1682,4 +1686,5 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         tradeOrderDO.setIsDirect(relateOrder.getIsDirect());
     }
 
+
 }

+ 35 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.yc.ship.module.trade.service.otc.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -2085,8 +2086,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             storeInfo = storeApi.getStoreInfo(storeId);
         }
         VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
-        String date = DateUtils.format(new Date(), "yyyyMMddmmss");
-        String orderNo = distributorDO.getCode() + "-" + voyage.getCode() + "-" + date;
+        int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId());
+        String date = DateUtils.format(new Date(), "yyyyMMddmm");
+        String orderNo = distributorDO.getCode() + "-" + date + "-" + voyage.getCode()+"-"+(maxOrderNo+1);
+        if(distributorDO.getCode()==null){
+            orderNo = date + "-" + voyage.getCode()+"-"+(maxOrderNo+1);
+        }
         List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
         ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
         shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
@@ -2212,7 +2217,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
         BigDecimal price;
         if (createVO.getSummary().getOrderMoney() != null && createVO.getSummary().getOrderMoney().compareTo(new BigDecimal(0)) > 0) {
-            if(createVO.getSummary().getOrderMoney().compareTo(spuMoney) < 0){
+            if(createVO.getSummary().getOrderMoney().compareTo(spuMoney) < 0 || visitorList.isEmpty()){
                 price = BigDecimal.ZERO;
             }else {
                 price = createVO.getSummary().getOrderMoney().subtract(spuMoney).divide(new BigDecimal(visitorList.size()), 2, RoundingMode.HALF_UP);
@@ -2233,6 +2238,15 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
         shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
 
+        Date travelDate = shipTradeOrderCreateReqVO.getTravelDate();
+        if(loginUser.getDistributorId()!=null && DateUtil.compare(DateUtil.beginOfDay(shipTradeOrderCreateReqVO.getTravelDate()),new Date())<0){
+            Asserts.isTrue(false,"选择的游玩日期不能早于当前时间");
+        }
+
+        if(DateUtil.compare(travelDate,new Date())<0){
+            Asserts.isTrue(false,"选择的游玩日期不能早于当前时间");
+        }
+
         CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
         if (result.isError()) {
             return CommonResult.error(result);
@@ -2443,7 +2457,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
         BigDecimal price;
         if (createVO.getSummary().getOrderMoney() != null && createVO.getSummary().getOrderMoney().compareTo(new BigDecimal(0)) > 0) {
-            if(createVO.getSummary().getOrderMoney().compareTo(spuMoney) < 0){
+            if(createVO.getSummary().getOrderMoney().compareTo(spuMoney) < 0|| visitorList.isEmpty()){
                 price = BigDecimal.ZERO;
             }else {
                 price = createVO.getSummary().getOrderMoney().subtract(spuMoney).divide(new BigDecimal(visitorList.size()), 2, RoundingMode.HALF_UP);
@@ -2464,6 +2478,18 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
         shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
 
+
+
+        Date travelDate =  shipTradeOrderCreateReqVO.getTravelDate();
+
+        if(loginUser.getDistributorId()!=null && DateUtil.compare(DateUtil.beginOfDay(shipTradeOrderCreateReqVO.getTravelDate()), DateUtil.offsetDay(new Date(),3))<0){
+            Asserts.isTrue(false,"已过最晚修改时间");
+        }
+
+        if(loginUser.getDistributorId()==null &&DateUtil.compare(travelDate, DateUtil.offsetDay(new Date(),-2))<0){
+            Asserts.isTrue(false,"已过最晚修改时间");
+        }
+
         CommonResult<TradeOrderRespDTO> result = doShipModifyOrder(loginUser, shipTradeOrderCreateReqVO);
         if (result.isError()) {
             return CommonResult.error(result);
@@ -2640,4 +2666,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         return StrUtil.equals(value, orderId.toString());
     }
 
+    public static void main(String[] args) {
+
+        System.out.println(DateUtil.beginOfDay(new Date()));
+    }
+
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailMapper.xml

@@ -1075,6 +1075,10 @@
         select count(1) from trade_detail where order_id = #{orderId} and voucher_status in (1,2,8)
     </select>
 
+    <select id="getMaxOrderNo" resultType="java.lang.Integer">
+        select count(1) from trade_order where voyage_id = #{voyageId}
+    </select>
+
     <select id="getOrderDetail"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO">
         SELECT td.*,tv.detail_id,tv.name,tv.id visitorId,tv.gender,tv.credential_no,tv.credential_type,tv.mobile,tv.ota_detail_id,tv.is_insure