Browse Source

优化H5接站

jincheng 5 days ago
parent
commit
3525b394d5

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java

@@ -163,6 +163,8 @@ public class OrderJzDetailController {
   @Operation(summary = "订单接站人员名单签到")
   @OperateLog(type = TRADE)
   public CommonResult<Long> createOrderJzDetail(@Valid @RequestBody List<OrderJzDetailSaveReqVO> createReqVOList) {
+    // 校验身份证号是否与订单游客信息一致,并填充 visitorId
+    orderJzDetailService.validateAndFillVisitorId(createReqVOList);
     return success(orderJzDetailService.createOrderJzDetail(createReqVOList));
   }
 

+ 8 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailService.java

@@ -22,10 +22,17 @@ public interface OrderJzDetailService {
    * @param createReqVO 创建信息
    * @return 编号
    */
-  Long createOrderJzDetail(@Valid OrderJzDetailSaveReqVO createReqVO);
+    Long createOrderJzDetail(@Valid OrderJzDetailSaveReqVO createReqVO);
 
   Long createOrderJzDetail(List<OrderJzDetailSaveReqVO> createReqVOList);
 
+  /**
+   * 校验传入的身份证号是否与订单游客信息一致,并填充 visitorId
+   *
+   * @param createReqVOList 请求参数列表
+   */
+  void validateAndFillVisitorId(List<OrderJzDetailSaveReqVO> createReqVOList);
+
   void sendJz(List<Map<String, Object>> map,Long jzId);
 
   /**

+ 44 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailServiceImpl.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yc.ship.framework.common.exception.ErrorCode;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.framework.security.core.LoginUser;
@@ -20,9 +21,11 @@ import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailPageReqVO;
 import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailSaveReqVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
 import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
 import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
 import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
+import com.yc.ship.module.trade.dal.mysql.order.TradeVisitorMapper;
 import com.yc.ship.module.trade.dal.mysql.orderjz.OrderJzMapper;
 import com.yc.ship.module.trade.dal.mysql.orderjzdetail.OrderJzDetailMapper;
 import com.yc.ship.module.trade.framework.common.Base64Util;
@@ -62,6 +65,9 @@ public class OrderJzDetailServiceImpl implements OrderJzDetailService {
     @Resource
     private OrderJzDetailMapper orderJzDetailMapper;
 
+    @Resource
+    private TradeVisitorMapper tradeVisitorMapper;
+
     @Override
     public Long createOrderJzDetail(OrderJzDetailSaveReqVO createReqVO) {
         // 插入
@@ -74,6 +80,44 @@ public class OrderJzDetailServiceImpl implements OrderJzDetailService {
     }
 
 
+    @Override
+    @TenantIgnore
+    public void validateAndFillVisitorId(List<OrderJzDetailSaveReqVO> createReqVOList) {
+        if (createReqVOList == null || createReqVOList.isEmpty()) {
+            return;
+        }
+        String oid = createReqVOList.get(0).getOid();
+        if (oid == null || oid.isEmpty()) {
+            throw exception(new ErrorCode(10006, "未查询到相关订单"));
+        }
+        // 查询订单下所有游客信息
+        List<TradeVisitorDO> visitorList = tradeVisitorMapper.selectListByOrderId(Long.valueOf(oid));
+        if (visitorList == null || visitorList.isEmpty()) {
+            throw exception(new ErrorCode(10005, "未查询到该订单的游客信息"));
+        }
+        // 遍历传入的接站明细,按姓名匹配游客,校验身份证号
+        for (OrderJzDetailSaveReqVO reqVO : createReqVOList) {
+            if (reqVO.getIdCard() == null || reqVO.getName() == null) {
+                continue;
+            }
+            // 按姓名匹配游客
+            TradeVisitorDO matchedVisitor = visitorList.stream()
+                    .filter(v -> reqVO.getName().equals(v.getName()))
+                    .findFirst().orElse(null);
+            if (matchedVisitor == null) {
+                throw exception(new ErrorCode(10007, "未找到匹配的游客"));
+                //continue;
+            }
+            // 校验身份证号是否一致(匹配到游客时)
+            if (matchedVisitor.getCredentialNo() != null
+                    && !matchedVisitor.getCredentialNo().trim().equalsIgnoreCase(reqVO.getIdCard().trim())) {
+                throw exception(new ErrorCode(10003, "游客【" + reqVO.getName() + "】身份证效验不通过"));
+            }
+            // 校验通过,填充 visitorId
+            reqVO.setVisitorId(matchedVisitor.getId());
+        }
+    }
+
     @Override
     @TenantIgnore
     public Long createOrderJzDetail(List<OrderJzDetailSaveReqVO> createReqVOList) {

+ 6 - 6
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/BankTransactionDetailsMapper.xml

@@ -40,7 +40,7 @@
                 pay.payment_type AS paymentMethod,
                 1 AS transactionType,
                 pay.pay_amount AS amount,
-                IFNULL(pay.payment_no, '') AS bankSerialNo
+                IFNULL(pay.pos_no, pay.payment_no) AS bankSerialNo
             FROM trade_order_pay pay
         LEFT JOIN trade_order o1 ON pay.order_id = o1.id AND o1.deleted = 0
             LEFT JOIN product_voyage voy ON o1.voyage_id = voy.id AND voy.deleted = 0
@@ -61,7 +61,7 @@
                 pay.payment_type AS paymentMethod,
                 2 AS transactionType,
                 -IFNULL(pay.refund_amount, 0) AS amount,
-                IFNULL(pay.payment_no, '') AS bankSerialNo
+                 IFNULL(pay.pos_no, pay.payment_no) AS bankSerialNo
             FROM trade_order_pay pay
             LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
             LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
@@ -142,7 +142,7 @@
         pay.payment_type AS paymentMethod,
         4 AS transactionType,
         pay.pay_amount AS amount,
-        IFNULL(pay.payment_no, '') AS bankSerialNo
+        IFNULL(pay.pos_no, pay.payment_no) AS bankSerialNo
         FROM trade_order_pay pay
         LEFT JOIN ota_bill bill ON bill.id = pay.order_id AND bill.deleted = 0
         LEFT JOIN (select r.bill_id ,r.order_id FROM ota_bill_order r where r.deleted = 0 GROUP BY r.bill_id) obo ON obo.bill_id = bill.id
@@ -171,7 +171,7 @@
         pay.payment_type AS paymentMethod,
         1 AS transactionType,
         pay.pay_amount AS amount,
-        IFNULL(pay.payment_no, '') AS bankSerialNo
+        IFNULL(pay.pos_no, pay.payment_no) AS bankSerialNo
         FROM trade_order_pay pay
         LEFT JOIN trade_order o1 ON pay.order_id = o1.id AND o1.deleted = 0
         LEFT JOIN product_voyage voy ON o1.voyage_id = voy.id AND voy.deleted = 0
@@ -194,7 +194,7 @@
                 pay.payment_type AS paymentMethod,
                 2 AS transactionType,
                 -IFNULL(pay.refund_amount, 0) AS amount,
-                IFNULL(pay.payment_no, '') AS bankSerialNo
+                IFNULL(pay.pos_no, pay.payment_no) AS bankSerialNo
             FROM trade_order_pay pay
             LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
             LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
@@ -252,7 +252,7 @@
         pay.payment_type AS paymentMethod,
         4 AS transactionType,
         pay.pay_amount AS amount,
-        IFNULL(pay.payment_no, '') AS bankSerialNo
+        IFNULL(pay.pos_no, pay.payment_no)AS bankSerialNo
         FROM trade_order_pay pay
         LEFT JOIN ota_bill bill ON bill.id = pay.order_id AND bill.deleted = 0
         LEFT JOIN (select r.bill_id ,r.order_id FROM ota_bill_order r where r.deleted = 0 GROUP BY r.bill_id) obo ON obo.bill_id = bill.id