Browse Source

代码优化,审核流程

lishiqiang 3 days ago
parent
commit
46e61d703c
11 changed files with 158 additions and 20 deletions
  1. 1 0
      ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/enums/TradeOrderOperateTypeEnum.java
  2. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/audituser/vo/AuditUserRespVO.java
  3. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/tradeOrderaudit/vo/TradeOrderAuditPageReqVO.java
  4. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/tradeOrderaudit/vo/TradeOrderAuditRespVO.java
  5. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/tradeOrderaudit/vo/TradeOrderAuditSaveReqVO.java
  6. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/audituser/AuditUserDO.java
  7. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java
  8. 6 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/tradeOrderaudit/TradeOrderAuditDO.java
  9. 1 5
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java
  10. 137 9
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  11. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

+ 1 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/enums/TradeOrderOperateTypeEnum.java

@@ -41,6 +41,7 @@ public enum TradeOrderOperateTypeEnum {
     CANCEL_REFUND(27, "取消退款,退款ID:{refundId}"),
     GUIDE_REFUND(28, "导游代退,退款金额{refundAmount},原订单支付金额{payAmount},变更为{newPayAmount}"),
     ORDER_MODIFY(29, "修改订单,结果:{result}"),
+    ORDER_AUDIT(30, "订单审核,结果:{result}"),
     ;
 
     /**

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/audituser/vo/AuditUserRespVO.java

@@ -24,6 +24,9 @@ public class AuditUserRespVO {
     @ExcelProperty("审核人")
     private Long auditUser;
 
+    @Schema(description = "当前审核阶段 1、1级审核 2、2级审核 3、3级审核 4、4级审核", example = "1")
+    private Long auditStatus;
+
     @Schema(description = "审核备注信息", example = "随便")
     @ExcelProperty("审核备注信息")
     private String remark;

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/tradeOrderaudit/vo/TradeOrderAuditPageReqVO.java

@@ -16,7 +16,7 @@ import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
 public class TradeOrderAuditPageReqVO extends PageParam {
 
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "审核类型 1、1级审核 2、2级审核 3、3级审核 4、4级审核", example = "2")
     private Integer type;

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/tradeOrderaudit/vo/TradeOrderAuditRespVO.java

@@ -18,7 +18,7 @@ public class TradeOrderAuditRespVO {
 
     @Schema(description = "订单号")
     @ExcelProperty("订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "审核类型 1、1级审核 2、2级审核 3、3级审核 4、4级审核", example = "2")
     @ExcelProperty("审核类型 1、1级审核 2、2级审核 3、3级审核 4、4级审核")

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/tradeOrderaudit/vo/TradeOrderAuditSaveReqVO.java

@@ -15,7 +15,7 @@ public class TradeOrderAuditSaveReqVO {
     private Long id;
 
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "审核类型 1、1级审核 2、2级审核 3、3级审核 4、4级审核", example = "2")
     private Integer type;

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/audituser/AuditUserDO.java

@@ -1,5 +1,6 @@
 package com.yc.ship.module.trade.dal.dataobject.audituser;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
 import java.time.LocalDateTime;
@@ -40,4 +41,6 @@ public class AuditUserDO extends BaseDO {
      */
     private String remark;
 
+    private Integer auditStatus;
+
 }

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -262,7 +262,7 @@ public class TradeOrderDO extends TenantBaseDO {
      */
     private Integer auditType;
     /**
-     * 审核状态 0、无需审核 1、提交审核中  2:审核中 3:审核通过 4:审核不通过
+     * 审核状态 0、无需审核 1、一级审核中  2:二级审核中 3:三级审核中 4:四级审核中 5:审核通过 6:审核驳回
      */
     private Integer auditStatus;
 

+ 6 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/tradeOrderaudit/TradeOrderAuditDO.java

@@ -32,7 +32,7 @@ public class TradeOrderAuditDO extends BaseDO {
     /**
      * 订单号
      */
-    private Long orderNo;
+    private String orderNo;
     /**
      * 审核类型 1、1级审核 2、2级审核 3、3级审核 4、4级审核
      */
@@ -48,10 +48,14 @@ public class TradeOrderAuditDO extends BaseDO {
     /**
      * 审核状态 1、通过 2、不通过
      */
-    private LocalDateTime auditStatus;
+    private Integer auditStatus;
     /**
      * 审核备注信息
      */
     private String remark;
+    /**
+     * 当前审核状态 1、1级审核 2、2级审核 3、3级审核 4、4级审核
+     */
+    private Integer auditCurrentStatus;
 
 }

+ 1 - 5
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -193,11 +193,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     Integer selectChangeCountByOrderId(@Param("orderId") Long orderId);
 
 
-    @TenantIgnore
-    @Cacheable(cacheNames = "selectRouteNameList#60", key = "#p0")
-    @Select("SELECT name FROM product_route_plan where id = #{productRouteId}")
-    List<String> selectRouteNameList(@Param("productRouteId") Long productRouteId);
-
     IPage<TradeOrderRespVO> getSupplierCheckOrder(IPage<TradeOrderRespVO> page, @Param("vo") SupplierCheckOrderPageVO reqVO);
 
     int updateOrderFinishStatus(@Param("sellMethodList") List<Integer> sellMethodList, @Param("endDate") String endDate);
@@ -212,4 +207,5 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
 
     List<Map<String, Object>> regionStatic(@Param("vo") TradeStaticReqVO regionStatic);
 
+    List<TradeOrderDO> queryOrderByLast(@Param("orderNo")  String orderNo);
 }

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

@@ -22,6 +22,7 @@ import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.framework.common.util.object.ObjectUtils;
 import com.yc.ship.framework.ip.core.utils.AreaUtils;
 import com.yc.ship.framework.security.core.LoginUser;
+import com.yc.ship.framework.security.core.util.SecurityFrameworkUtils;
 import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
 import com.yc.ship.framework.tenant.core.util.TenantUtils;
 import com.yc.ship.module.infra.api.config.ConfigApi;
@@ -54,6 +55,8 @@ import com.yc.ship.module.system.api.dict.dto.DictDataRespDTO;
 import com.yc.ship.module.system.api.user.AdminUserApi;
 import com.yc.ship.module.system.api.user.dto.AdminUserRespDTO;
 import com.yc.ship.module.trade.api.dto.*;
+import com.yc.ship.module.trade.controller.admin.order.vo.check.TradeCheckReqVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.check.TradeCheckRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
 import com.yc.ship.module.trade.controller.admin.order.vo.otc.PrintRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.refund.*;
@@ -63,10 +66,13 @@ import com.yc.ship.module.trade.dal.dataobject.insurance.InsuranceDO;
 import com.yc.ship.module.trade.dal.dataobject.invoice.InvoiceDO;
 import com.yc.ship.module.trade.dal.dataobject.order.*;
 import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
+import com.yc.ship.module.trade.dal.dataobject.tradeOrderaudit.TradeOrderAuditDO;
+import com.yc.ship.module.trade.dal.mysql.audituser.AuditUserMapper;
 import com.yc.ship.module.trade.dal.mysql.contract.ContractMapper;
 import com.yc.ship.module.trade.dal.mysql.insurance.InsuranceMapper;
 import com.yc.ship.module.trade.dal.mysql.order.*;
 import com.yc.ship.module.trade.dal.mysql.orderjz.OrderJzMapper;
+import com.yc.ship.module.trade.dal.mysql.tradeOrderaudit.TradeOrderAuditMapper;
 import com.yc.ship.module.trade.enums.*;
 import com.yc.ship.module.trade.framework.annotation.TradeOrderLog;
 import com.yc.ship.module.trade.framework.common.ThreadLocalUtil;
@@ -92,6 +98,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -201,6 +208,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private OrderJzMapper orderJzMapper;
 
+    @Resource
+    private AuditUserMapper auditUserMapper;
+
+    @Resource
+    private TradeOrderAuditMapper tradeOrderAuditMapper;
+
 
     public final static String AGENCY_LOGIN_INFO = "agencyLoginInfo";
 
@@ -569,19 +582,134 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         return CommonResult.error(ORDER_NOT_EXIST);
     }
 
+
     @Override
+    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_AUDIT)
     public CommonResult<?> orderAudit(Long orderId, Integer auditStatus) {
+        TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(orderId);
+        if(tradeOrderDO==null){
+            return CommonResult.error(ORDER_NOT_EXIST);
+        }
+
         if (auditStatus != null && auditStatus == 1) {
-            tradeOrderMapper.update(Wrappers.<TradeOrderDO>lambdaUpdate()
-                    .set(TradeOrderDO::getOrderStatus, TradeOrderStatusEnum.UNPAID.getStatus())
-                    .set(TradeOrderDO::getAuditStatus, 1)
-                    .eq(TradeOrderDO::getId, orderId)
-            );
+            TradeOrderAuditDO tradeOrderAuditDO = new TradeOrderAuditDO();
+            tradeOrderAuditDO.setId(IdWorker.getId());
+            tradeOrderAuditDO.setType(tradeOrderDO.getAuditType());
+            LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
+            if (loginUser != null) {
+                tradeOrderAuditDO.setAuditUser(loginUser.getId());
+            }
+            tradeOrderAuditDO.setAuditTime(LocalDateTime.now());
+            //审核状态 1、通过 2、不通过
+            tradeOrderAuditDO.setAuditStatus(1);
+            tradeOrderAuditDO.setAuditCurrentStatus(tradeOrderDO.getAuditStatus() + 1);
+            tradeOrderAuditDO.setOrderNo(tradeOrderDO.getOrderNo());
+            tradeOrderAuditMapper.insert(tradeOrderAuditDO);
+
+            if(tradeOrderDO.getAuditStatus() + 1>=tradeOrderDO.getAuditType()){
+                tradeOrderMapper.update(Wrappers.<TradeOrderDO>lambdaUpdate()
+                        .set(TradeOrderDO::getOrderStatus, TradeOrderStatusEnum.UNPAID.getStatus())
+                        .set(TradeOrderDO::getAuditStatus, tradeOrderDO.getAuditStatus() + 1)
+                        .set(TradeOrderDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeOrderDO::getId, orderId)
+                );
+                Map<String, Object> extMap = new HashMap<>();
+                extMap.put("result", "审核通过");
+                TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNPAID.getStatus(), extMap);
+            }else{
+                tradeOrderMapper.update(Wrappers.<TradeOrderDO>lambdaUpdate()
+                        .set(TradeOrderDO::getAuditStatus, tradeOrderDO.getAuditStatus() + 1)
+                        .set(TradeOrderDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeOrderDO::getId, orderId)
+                );
+                Map<String, Object> extMap = new HashMap<>();
+                extMap.put("result", "审核通过,等待下一级审核");
+                TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), extMap);
+            }
         } else {
-            tradeOrderMapper.update(Wrappers.<TradeOrderDO>lambdaUpdate()
-                    .set(TradeOrderDO::getOrderStatus, TradeOrderStatusEnum.YD.getStatus())
-                    .eq(TradeOrderDO::getId, orderId)
-            );
+            //审核 不通过还原到修改前订单
+            List<TradeOrderDO> tradeOrderDoList = tradeOrderMapper.queryOrderByLast(tradeOrderDO.getOrderNo());
+            if(tradeOrderDoList!=null && !tradeOrderDoList.isEmpty()){
+                TradeOrderDO lastTradeOrder = tradeOrderDoList.get(0);
+                tradeOrderMapper.update(Wrappers.<TradeOrderDO>lambdaUpdate()
+                        .set(TradeOrderDO::getDeleted, 1)
+                        .set(TradeOrderDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeOrderDO::getId, orderId)
+                );
+                tradeOrderMapper.update(Wrappers.<TradeOrderDO>lambdaUpdate()
+                        .set(TradeOrderDO::getDeleted, 0)
+                        .set(TradeOrderDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeOrderDO::getId, lastTradeOrder.getId())
+                );
+                tradeDetailMapper.update(Wrappers.<TradeDetailDO>lambdaUpdate()
+                        .set(TradeDetailDO::getDeleted, 1)
+                        .set(TradeDetailDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeDetailDO::getOrderId, orderId)
+                );
+
+                tradeDetailMapper.update(Wrappers.<TradeDetailDO>lambdaUpdate()
+                        .set(TradeDetailDO::getDeleted, 0)
+                        .set(TradeDetailDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeDetailDO::getOrderId, lastTradeOrder.getId())
+                );
+                tradeDetailBaseMapper.update(Wrappers.<TradeDetailBaseDO>lambdaUpdate()
+                        .set(TradeDetailBaseDO::getDeleted, 1)
+                        .set(TradeDetailBaseDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeDetailBaseDO::getOrderId, orderId)
+                );
+                tradeDetailBaseMapper.update(Wrappers.<TradeDetailBaseDO>lambdaUpdate()
+                        .set(TradeDetailBaseDO::getDeleted, 0)
+                        .set(TradeDetailBaseDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeDetailBaseDO::getOrderId, lastTradeOrder.getId())
+                );
+                tradeOrderCountryMapper.update(new LambdaUpdateWrapper<TradeOrderCountryDO>()
+                        .set(TradeOrderCountryDO::getDeleted, 1)
+                        .set(TradeOrderCountryDO::getUpdateTime,  LocalDateTime.now())
+                        .eq(TradeOrderCountryDO::getOrderId, orderId)
+                );
+                tradeOrderRoomModelMapper.update(new LambdaUpdateWrapper<TradeOrderRoomModelDO>()
+                        .set(TradeOrderRoomModelDO::getDeleted, 1)
+                        .set(TradeOrderRoomModelDO::getUpdateTime,  LocalDateTime.now())
+                        .eq(TradeOrderRoomModelDO::getOrderId, orderId)
+                );
+                tradeOrderFloorMapper.update(new LambdaUpdateWrapper<TradeOrderFloorDO>()
+                        .set(TradeOrderFloorDO::getDeleted, 1)
+                        .set(TradeOrderFloorDO::getUpdateTime,  LocalDateTime.now())
+                        .eq(TradeOrderFloorDO::getOrderId, orderId)
+                );
+
+                tradeOrderCountryMapper.update(new LambdaUpdateWrapper<TradeOrderCountryDO>()
+                        .set(TradeOrderCountryDO::getDeleted, 0)
+                        .set(TradeOrderCountryDO::getUpdateTime,  LocalDateTime.now())
+                        .eq(TradeOrderCountryDO::getOrderId, lastTradeOrder.getId())
+                );
+                tradeOrderRoomModelMapper.update(new LambdaUpdateWrapper<TradeOrderRoomModelDO>()
+                        .set(TradeOrderRoomModelDO::getDeleted, 0)
+                        .set(TradeOrderRoomModelDO::getUpdateTime,  LocalDateTime.now())
+                        .eq(TradeOrderRoomModelDO::getOrderId, lastTradeOrder.getId())
+                );
+                tradeOrderFloorMapper.update(new LambdaUpdateWrapper<TradeOrderFloorDO>()
+                        .set(TradeOrderFloorDO::getDeleted, 0)
+                        .set(TradeOrderFloorDO::getUpdateTime,  LocalDateTime.now())
+                        .eq(TradeOrderFloorDO::getOrderId, lastTradeOrder.getId())
+                );
+
+                tradeOrderTotalMapper.update(new LambdaUpdateWrapper<TradeOrderTotalDO>()
+                        .set(TradeOrderTotalDO::getDeleted, 1)
+                        .set(TradeOrderTotalDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeOrderTotalDO::getOldOrderId, orderId)
+                );
+                tradeOrderTotalMapper.update(new LambdaUpdateWrapper<TradeOrderTotalDO>()
+                        .set(TradeOrderTotalDO::getDeleted, 0)
+                        .set(TradeOrderTotalDO::getUpdateTime, LocalDateTime.now())
+                        .eq(TradeOrderTotalDO::getOldOrderId, lastTradeOrder.getId())
+                );
+
+                Map<String, Object> extMap = new HashMap<>();
+                extMap.put("result", "审核不通过");
+                TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), extMap);
+
+            }
         }
         return CommonResult.success("审核成功");
     }

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -2440,4 +2440,7 @@
         GROUP BY t4.id
         order by num desc
     </select>
+    <select id="queryOrderByLast" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
+        SELECT  * FROM trade_order WHERE order_no = #{orderNo} and deleted=1   ORDER BY update_time DESC limit 1
+    </select>
 </mapper>