Просмотр исходного кода

fix: 修改保险相关逻辑,添加我的行程详情接口

luofeiyun 17 часов назад
Родитель
Сommit
20fa29408d
15 измененных файлов с 248 добавлено и 24 удалено
  1. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeVisitorRespVO.java
  2. 11 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/AppOtcTradeOrderController.java
  3. 50 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/vo/AppItineraryDetailVO.java
  4. 33 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/vo/AppItineraryPersonVO.java
  5. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java
  6. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeVisitorMapper.java
  7. 44 20
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/insurance/InsuranceServiceImpl.java
  8. 3 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/notify/NotifyServiceImpl.java
  9. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderService.java
  10. 17 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java
  11. 5 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/AppOtcTradeOrderService.java
  12. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/AppOtcTradeOrderServiceImpl.java
  13. 12 3
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/utils/InsuranceUtil.java
  14. 21 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml
  15. 21 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeVisitorRespVO.java

@@ -27,6 +27,12 @@ public class TradeVisitorRespVO {
     @Schema(description = "游客姓名")
     private String name;
 
+    @Schema(description = "英文姓")
+    private String enSurname;
+
+    @Schema(description = "英文名")
+    private String enName;
+
     @Schema(description = "性别")
     private Integer gender;
 

+ 11 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/AppOtcTradeOrderController.java

@@ -169,4 +169,15 @@ public class AppOtcTradeOrderController {
     }
 
 
+    // 查询行程详情
+    @GetMapping("/miniApp/getItineraryDetail")
+    @Operation(summary = "查询行程详情")
+    @PreAuthenticated
+    @OperateLog(type = API)
+    public CommonResult<AppItineraryDetailVO> getItineraryDetail(@RequestParam("id") Long orderId) {
+        AppItineraryDetailVO detailVO = appOtcTradeOrderService.getItineraryDetail(orderId);
+        return CommonResult.success(detailVO);
+    }
+
+
 }

+ 50 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/vo/AppItineraryDetailVO.java

@@ -0,0 +1,50 @@
+package com.yc.ship.module.trade.controller.app.otc.vo;
+
+import com.yc.ship.module.resource.dal.dataobject.routetrip.ResourceRouteTripDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "APP-行程详情")
+@Data
+public class AppItineraryDetailVO {
+
+    @Schema(description = "订单id")
+    private Long orderId;
+
+    @Schema(description = "订单编号")
+    private String orderNo;
+
+    @Schema(description = "订单状态")
+    private String statusDesc;
+
+    @Schema(description = "线路id")
+    private Long routeId;
+
+    @Schema(description = "线路名称")
+    private String routeName;
+
+    @Schema(description = "出发时间")
+    private LocalDateTime boardingTime;
+
+    @Schema(description = "开始时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "结束时间")
+    private LocalDateTime leaveTime;
+
+    @Schema(description = "登船码头id")
+    private Long onDockId;
+
+    @Schema(description = "登船码头名称")
+    private String onDockName;
+
+    @Schema(description = "同行人员")
+    private List<AppItineraryPersonVO> persons;
+
+    @Schema(description = "航线行程")
+    private List<ResourceRouteTripDO> routeTrips;
+
+}

+ 33 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/vo/AppItineraryPersonVO.java

@@ -0,0 +1,33 @@
+package com.yc.ship.module.trade.controller.app.otc.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "APP-行程人员")
+@Data
+public class AppItineraryPersonVO {
+
+    @Schema(description = "行程人员id")
+    private Long id;
+
+    @Schema(description = "行程人员姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "最终房间id")
+    private Long finalRoomId;
+
+    @Schema(description = "最终房间名称")
+    private String finalRoomName;
+
+    @Schema(description = "初始房间id")
+    private Long initRoomId;
+    @Schema(description = "初始房间名称")
+    private String initRoomName;
+    @Schema(description = "房间id")
+    private Long roomId;
+    @Schema(description = "房间名称")
+    private String roomName;
+}

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

@@ -230,4 +230,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
      * @return
      */
     IPage<DailyBusinessStatisticsRespVO> getDailyBusinessStatisticsPage(IPage<DailyBusinessStatisticsRespVO> page,@Param("vo")  DailyBusinessStatisticsReqVO pageReqVO);
+    /**
+     * 获取行程详情
+     * @param orderId
+     * @return
+     */
+    AppItineraryDetailVO selectItineraryDetail(@Param("orderId") Long orderId);
 }

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

@@ -6,6 +6,7 @@ import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.product.api.dto.OrderRoomUseDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
+import com.yc.ship.module.trade.controller.app.otc.vo.AppItineraryPersonVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppPersonDescVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
 import com.yc.ship.module.trade.service.order.bo.TradeVisitorBO;
@@ -93,4 +94,9 @@ public interface TradeVisitorMapper extends BaseMapperX<TradeVisitorDO> {
      * 获取订单国家统计
      */
     List<OrderTotalCountryVO> selectOrderCountryStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
+
+    /**
+     * 获取小程序行程详情中的同行人员
+     */
+    List<AppItineraryPersonVO> selectPersonListByOrderId(@Param("orderId") Long orderId);
 }

+ 44 - 20
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/insurance/InsuranceServiceImpl.java

@@ -3,6 +3,7 @@ package com.yc.ship.module.trade.service.insurance;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.extra.pinyin.PinyinUtil;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -172,7 +173,25 @@ public class InsuranceServiceImpl implements InsuranceService {
         tradeVisitorRespVOS.forEach(tradeVisitorRespVO -> {
             InsuredDTO insuredDTO = new InsuredDTO();
             insuredDTO.setExternalPolicyNumber(tradeVisitorRespVO.getId().toString());
-            insuredDTO.setInsuredName(tradeVisitorRespVO.getName());
+            String name = tradeVisitorRespVO.getName();
+            insuredDTO.setInsuredName(name);
+            if(9 == tradeVisitorRespVO.getCredentialType()) {
+                if(PinyinUtil.isChinese(name.charAt(0))) {
+                    String pinyin = PinyinUtil.getPinyin(name, " ");
+                    insuredDTO.setInsuredName(pinyin);
+                    insuredDTO.setFirstName(pinyin.substring(0, pinyin.indexOf(" ")));
+                    insuredDTO.setLastName(pinyin.substring(pinyin.indexOf(" ") + 1));
+                }else {
+                    insuredDTO.setInsuredName(name);
+                    if(name.contains("/")) {
+                        insuredDTO.setFirstName(name.substring(0, name.indexOf("/")));
+                        insuredDTO.setLastName(name.substring(name.indexOf("/") + 1));
+                    }else {
+                        insuredDTO.setFirstName(name.substring(0, name.indexOf(" ")));
+                        insuredDTO.setLastName(name.substring(name.indexOf(" ") + 1));
+                    }
+                }
+            }
             insuredDTO.setCertificateType(transCredentialType(tradeVisitorRespVO.getCredentialType()));
             insuredDTO.setCertificateNo(tradeVisitorRespVO.getCredentialNo());
             insuredDTO.setBirthday(tradeVisitorRespVO.getBirthday());
@@ -182,13 +201,13 @@ public class InsuranceServiceImpl implements InsuranceService {
         });
         insuranceApplyReqDTO.setInsureds(insuredList);
 
-        //验证投保信息
-        CommonResult commonResult = insuranceUtil.validateInsuranceRequest(insuranceApplyReqDTO);
-        if (!commonResult.isSuccess()) {
-            throw exception0(commonResult.getCode(), commonResult.getMsg());
-        }
+//        //验证投保信息
+//        CommonResult commonResult = insuranceUtil.validateInsuranceRequest(insuranceApplyReqDTO);
+//        if (!commonResult.isSuccess()) {
+//            throw exception0(commonResult.getCode(), commonResult.getMsg());
+//        }
         // 开始投保
-        commonResult = insuranceUtil.sendInsuranceApply(insuranceApplyReqDTO);
+        CommonResult commonResult = insuranceUtil.sendInsuranceApply(insuranceApplyReqDTO);
         if (!commonResult.isSuccess()) {
             throw exception0(commonResult.getCode(), commonResult.getMsg());
         }
@@ -217,32 +236,37 @@ public class InsuranceServiceImpl implements InsuranceService {
      * @return
      */
     private Integer transCredentialType(Integer credentialType) {
+//        证件类型                    系统            保险
+//        身份证                       0                 1
+//        外国人永居证                  2                     16
+//        回乡证                       7                 5
+//        台胞证                       8                26
+//        外籍护照                     9                 8
+//        户口本                       10                18
         // 保险类型 1身份证  17 港澳台居民居住证(18位8开头的身份证号码,例如830000198308030005) 8 外国护照 5 港澳居民来往内地通行证(H开头) 26 台湾居民来往内地通行证*8位数字
         Integer transCredentialType = 6; //默认为其他
         switch (credentialType) {
             case 0: //身份证
-                transCredentialType = 1; // 保险身份证
-                break;
-            case 1:
-                transCredentialType = 3;
+                transCredentialType = 1;
                 break;
             case 2:
-            case 3:
-            case 4: // 港澳通行证
-                transCredentialType = 5;//港澳居民来往内地通行证(H开头)
+                transCredentialType = 16;
                 break;
-            case 6:
             case 7:
+                transCredentialType = 5;
+                break;
             case 8: // 外籍护照
-                transCredentialType = 8; // 保险外国护照
+                transCredentialType = 26; // 保险外国护照
                 break;
             case 9:
-            case 99:
-                transCredentialType = 6;
+                transCredentialType = 8;
                 break;
-            case 5: //台湾通行证
-                transCredentialType = 26; //保险台湾居民来往内地通行证*8位数字
+            case 10:
+                transCredentialType = 18; // 保险身份证
                 break;
+            default:
+                break;
+
         }
         return transCredentialType;
     }

+ 3 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/notify/NotifyServiceImpl.java

@@ -29,8 +29,8 @@ public class NotifyServiceImpl implements NotifyService {
 //        String successDate = reqVO.getSuccessDate();
         Long id = Long.valueOf(externalPolicyNumber);
         String service = reqVO.getService();
+        InsuranceDO insuranceDO = insuranceMapper.selectById(id);
         if("SUCCESS".equals(status)) {
-            InsuranceDO insuranceDO = insuranceMapper.selectById(id);
             insuranceDO.setPolicyNo(policyNo);
             insuranceDO.setElectronicPolicy(downloadUrl);
             if("applyTeam".equals(service)) {
@@ -41,6 +41,8 @@ public class NotifyServiceImpl implements NotifyService {
 //            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 //            insuranceDO.setInsuranceEffectDate(LocalDateTime.parse(successDate,formatter));
             insuranceMapper.updateById(insuranceDO);
+        }else if ("FAIL".equals(status)) {
+            insuranceDO.setInsuranceStatus(InsuranceStatusEnum.FAIL.getValue());
         }
         return true;
     }

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

@@ -91,4 +91,10 @@ public interface TradeOrderService {
      * @return
      */
     List<AppMyItineraryVO> getMyItinerary(Long loginUserId, Integer status);
+    /**
+     * 获取小程序行程详情
+     * @param orderId
+     * @return
+     */
+    AppItineraryDetailVO getItineraryDetail(Long orderId);
 }

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

@@ -35,6 +35,8 @@ import com.yc.ship.module.product.enums.SpecTypeEnum;
 import com.yc.ship.module.product.service.voyage.VoyageService;
 import com.yc.ship.module.resource.api.ship.ShipApi;
 import com.yc.ship.module.resource.api.ship.dto.ShipRespDTO;
+import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;
+import com.yc.ship.module.resource.service.route.ResourceRouteService;
 import com.yc.ship.module.system.api.permission.RoleApi;
 import com.yc.ship.module.system.api.permission.dto.AdminRoleRespDTO;
 import com.yc.ship.module.system.api.user.AdminUserApi;
@@ -153,6 +155,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     @Resource
     private TradeOrderTotalService tradeOrderTotalService;
 
+    @Resource
+    private ResourceRouteService resourceRouteService;
+
 
     @Override
     public PageResult<TradeOrderRespVO> getPlatOrderPage(TradeOrderPageReqVO pageReqVO) {
@@ -1423,6 +1428,18 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         return list;
     }
 
+    @Override
+    public AppItineraryDetailVO getItineraryDetail(Long orderId) {
+        AppItineraryDetailVO detailVO = tradeOrderMapper.selectItineraryDetail(orderId);
+        List<AppItineraryPersonVO> persons = tradeVisitorMapper.selectPersonListByOrderId(orderId);
+        detailVO.setPersons(persons);
+        ResourceRouteDO route = resourceRouteService.getRoute(detailVO.getRouteId());
+        if (route != null) {
+            detailVO.setRouteTrips(route.getRouteTrips());
+        }
+        return detailVO;
+    }
+
     private String formatStatus(Integer status, LocalDateTime boardingTime) {
         String statusDesc = "";
         switch (status) {

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

@@ -8,6 +8,7 @@ import com.yc.ship.module.trade.controller.admin.order.vo.order.MiniTradeOrderCr
 import com.yc.ship.module.trade.controller.admin.order.vo.order.OtcTradeOrderCreateRespVO;
 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.controller.app.otc.vo.AppItineraryDetailVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppMyItineraryVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderPageReqVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderRespVO;
@@ -52,4 +53,8 @@ public interface AppOtcTradeOrderService {
      * 小程序查询我的行程
      */
     List<AppMyItineraryVO> getMyItinerary(Long loginUserId, Integer status);
+    /**
+     * 小程序查询行程详情
+     */
+    AppItineraryDetailVO getItineraryDetail(Long orderId);
 }

+ 7 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/AppOtcTradeOrderServiceImpl.java

@@ -23,6 +23,7 @@ import com.yc.ship.module.resource.api.ship.ShipApi;
 import com.yc.ship.module.resource.api.ship.dto.ShipRespDTO;
 import com.yc.ship.module.trade.api.dto.TradeOrderRespDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
+import com.yc.ship.module.trade.controller.app.otc.vo.AppItineraryDetailVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppMyItineraryVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderPageReqVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderRespVO;
@@ -342,4 +343,10 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
         return list;
     }
 
+    @Override
+    public AppItineraryDetailVO getItineraryDetail(Long orderId) {
+        AppItineraryDetailVO detailVO = tradeOrderService.getItineraryDetail(orderId);
+        return detailVO;
+    }
+
 }

+ 12 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/utils/InsuranceUtil.java

@@ -1,5 +1,6 @@
 package com.yc.ship.module.trade.utils;
 
+import cn.hutool.extra.pinyin.PinyinUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.anji.captcha.util.MD5Util;
 import com.yc.ship.framework.common.pojo.CommonResult;
@@ -307,8 +308,16 @@ public class InsuranceUtil {
     }
 
     public static void main(String[] args) {
-        InsuranceUtil insuranceUtil = new InsuranceUtil();
-        CommonResult commonResult = insuranceUtil.queryInsurance("lfy001-20261217-YC-5");
-        System.out.println(commonResult);
+//        InsuranceUtil insuranceUtil = new InsuranceUtil();
+//        CommonResult commonResult = insuranceUtil.queryInsurance("2039275984414806018");
+//        System.out.println(commonResult);
+        String str = "陈 汝侠";
+        boolean chinese = PinyinUtil.isChinese(str.charAt(0));
+        System.out.println(chinese);
+        String s = PinyinUtil.getPinyin(str);
+        System.out.println(s);
+        System.out.println(str.substring(str.indexOf(" ") + 1));
+
+
     }
 }

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

@@ -2516,5 +2516,26 @@
             #{item}
         </foreach>
     </select>
+    <select id="selectItineraryDetail"
+            resultType="com.yc.ship.module.trade.controller.app.otc.vo.AppItineraryDetailVO">
+        SELECT
+            t1.id order_id,
+            t1.order_no,
+            t2.boarding_time,
+            t2.start_time,
+            t2.leave_time,
+            t2.route_id,
+            t3.`name` route_name,
+            t3.on_dock_id,
+            t4.`name` on_dock_name
+        FROM
+            trade_order t1
+                LEFT JOIN product_voyage t2 ON t1.voyage_id = t2.id
+                LEFT JOIN resource_route t3 ON t2.route_id = t3.id
+                LEFT JOIN resource_dock t4 ON t3.on_dock_id = t4.id
+        WHERE
+            1=1 and
+            t1.id = #{orderId}
+    </select>
 </mapper>
 

+ 21 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml

@@ -467,4 +467,25 @@
         ORDER BY
             d1.country_id ASC
     </select>
+    <select id="selectPersonListByOrderId"
+            resultType="com.yc.ship.module.trade.controller.app.otc.vo.AppItineraryPersonVO">
+        SELECT
+            t1.id,
+            t1.NAME,
+            t1.mobile,
+            t1.final_room_id,
+            t2.room_num final_room_name,
+            t1.init_room_id,
+            t3.room_num init_room_name,
+            t1.room_id,
+            t4.room_num room_name
+        FROM
+            trade_visitor t1
+                LEFT JOIN resource_room t2 ON t1.final_room_id = t2.id
+                LEFT JOIN resource_room t3 ON t1.init_room_id = t3.id
+                LEFT JOIN resource_room t4 ON t1.room_id = t4.id
+        WHERE
+            t1.deleted = 0
+          AND t1.order_id = #{orderId}
+    </select>
 </mapper>