提交 33f23456 authored 作者: liuhaiquan's avatar liuhaiquan

修改包路径和中交兴路代码

上级 fa6c4396
package com.clx.performance.enums;
import com.msl.common.enums.ResultEnum;
/**
* Created by wangjianxin on 2017/5/2.
* 7001-7799 业务错误结果
* 7801-7999 系统错误结果
*/
public enum TraceServiceResultEnum implements ResultEnum {
CHILD_NO_CANNOT_NULL(7001, "子订单号不能为空"),
POINT_LIST_CANNOT_NULL(7002, "记录点不能为空"),
TRUCK_LOCATION_QUERY_ERROR(7003, "车辆位置查询失败"),
ZJXL_TOKEN_INVALID(7003, "中交兴路token失效"),
;
private String msg;
private Integer code;
@Override
public String getMsg() {
return msg;
}
@Override
public int getCode() {
return code;
}
private TraceServiceResultEnum(Integer code, String msg) {
this.msg = msg;
this.code = code;
}
}
package com.clx.order.feign; package com.clx.performance.feign;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
......
package com.clx.order.util; package com.clx.performance.util;
public class BusinessUtil { public class BusinessUtil {
......
...@@ -185,6 +185,15 @@ ...@@ -185,6 +185,15 @@
<artifactId>jedis</artifactId> <artifactId>jedis</artifactId>
<version>3.6.1</version> <version>3.6.1</version>
</dependency> </dependency>
<!-- 中交兴路jar 包 -->
<dependency>
<groupId>com.clx.msl</groupId>
<artifactId>openapi-gps-sdk</artifactId>
<version>1.0</version>
</dependency>
</dependencies> </dependencies>
......
package com.clx.order; package com.clx.performance;
import com.msl.common.config.ViewScan; import com.msl.common.config.ViewScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
...@@ -6,7 +6,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -6,7 +6,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication @SpringBootApplication
...@@ -16,8 +15,8 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -16,8 +15,8 @@ import org.springframework.scheduling.annotation.EnableAsync;
// @ComponentScan("com.clx.user.*"), // @ComponentScan("com.clx.user.*"),
// @ComponentScan("com.msl.common.utils.*"), // @ComponentScan("com.msl.common.utils.*"),
//}) //})
@ComponentScan({"com.clx.order.*", "com.msl.*"}) @ComponentScan({"com.clx.performance.*", "com.msl.*"})
@EnableFeignClients(basePackages = {"com.msl.*","com.clx.order.*"}) @EnableFeignClients(basePackages = {"com.msl.*", "com.clx.performance.*"})
@ViewScan(basePackage = "com.clx.user.view") @ViewScan(basePackage = "com.clx.user.view")
public class OrderApplication { public class OrderApplication {
......
package com.clx.order.config; package com.clx.performance.config;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.clx.order.config; package com.clx.performance.config;
import org.springframework.boot.autoconfigure.cache.CacheProperties; import org.springframework.boot.autoconfigure.cache.CacheProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
......
package com.clx.order.config; package com.clx.performance.config;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
......
package com.clx.order.config; package com.clx.performance.config;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.clx.order.config; package com.clx.performance.config;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.clx.order.config; package com.clx.performance.config;
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.JsonSerializer;
......
package com.clx.order.config; package com.clx.performance.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
......
package com.clx.order.config; package com.clx.performance.config;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
......
package com.clx.order.config; package com.clx.performance.config;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.clx.order.config; package com.clx.performance.config;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.clx.order.config; package com.clx.performance.config;
import org.redisson.Redisson; import org.redisson.Redisson;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
......
package com.clx.order.config; package com.clx.performance.config;
import com.msl.common.trace.context.TracedThreadPoolExecutor; import com.msl.common.trace.context.TracedThreadPoolExecutor;
import org.apache.skywalking.apm.toolkit.trace.RunnableWrapper; import org.apache.skywalking.apm.toolkit.trace.RunnableWrapper;
......
package com.clx.order.config; package com.clx.performance.config;
import org.hibernate.validator.HibernateValidator; import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
......
package com.clx.order.config.exception; package com.clx.performance.config.exception;
import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.exception.NotLoginException;
import com.msl.common.enums.ResultCodeEnum; import com.msl.common.enums.ResultCodeEnum;
......
package com.clx.performance.constant;
/**
* Created by 胡宁宁 on 2019/11/21.
*/
public class GPSConstants {
// https://openapi-test.sinoiov.cn/save/apis/login/该地址为测试环境地址。
// https://openapi.sinoiov.cn/save/apis/login/该地址为生产环境地址
// 车辆轨迹查询(车牌号)接口
public static final String GPS_BY_TRUCKNO_API = "https://openapi.sinoiov.cn/save/apis/routerPath";
//最新位置
public static final String GPS_BY_TRUCKNO_LAST_LOCATION_API = "https://openapi.sinoiov.cn/save/apis/transTimeManageV3";
// 车辆轨迹查询(车牌号)接口
public static final String GPS_BY_TRUCKNO_LATELY_API = "https://zhiyunopenapi.95155.com/save/apis/vLastLocationV3";
// 车辆里程(车牌号)接口
public static final String GPS_GET_TRUCKNO_MAILEAGES_API = "https://testopen.95155.com/save/apis/vQueryMileage";
// 获取token
public static final String GPS_BY_TOKEN_API = "https://zhiyunopenapi.95155.com/save/apis/login";
public static final String MONGODB_GPS_TABLE= "orderChild_point_record_zhongjiao_gps";
public static final String MONGODB_TRUCK_MILEAGE_TABLE= "truck_mileage_record_{date}";
public static final String REDIS_GPS_KEY= "zhongjiao_gps";
}
package com.clx.order.controller.pc; package com.clx.performance.controller.pc;
import com.clx.order.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
......
package com.clx.order.dao; package com.clx.performance.dao;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import com.clx.order.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.order.model.OrderGoods; import com.clx.performance.model.OrderGoods;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.dao; package com.clx.performance.dao;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import com.clx.order.mapper.OrderGoodsDriverTruckMapper; import com.clx.performance.mapper.OrderGoodsDriverTruckMapper;
import com.clx.order.model.OrderGoodsDriverTruck; import com.clx.performance.model.OrderGoodsDriverTruck;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.dao; package com.clx.performance.dao;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import com.clx.order.mapper.SeniorLogisticsManagerMapper; import com.clx.performance.mapper.SeniorLogisticsManagerMapper;
import com.clx.order.model.SeniorLogisticsManager; import com.clx.performance.model.SeniorLogisticsManager;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.dao.impl; package com.clx.performance.dao.impl;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.order.dao.OrderGoodsDao; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.order.mapper.OrderGoodsMapper; import com.clx.performance.model.OrderGoods;
import com.clx.order.model.OrderGoods;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
package com.clx.order.dao.impl; package com.clx.performance.dao.impl;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.order.dao.OrderGoodsDriverTruckDao; import com.clx.performance.mapper.OrderGoodsDriverTruckMapper;
import com.clx.order.mapper.OrderGoodsDriverTruckMapper; import com.clx.performance.model.OrderGoodsDriverTruck;
import com.clx.order.model.OrderGoodsDriverTruck;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
package com.clx.order.dao.impl; package com.clx.performance.dao.impl;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.order.dao.SeniorLogisticsManagerDao; import com.clx.performance.mapper.SeniorLogisticsManagerMapper;
import com.clx.order.mapper.SeniorLogisticsManagerMapper; import com.clx.performance.model.SeniorLogisticsManager;
import com.clx.order.model.SeniorLogisticsManager;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
package com.clx.performance.dto.zjxl;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @program: workspace
* @description:
* @author: huqiangqiang
* @create: 2018-07-25 17:53
**/
@Getter
@Setter
@ToString
public class GPSDTO {
@ApiModelProperty(value = "正北方向夹角", example = "90", required = true, dataType = "String")
private String agl;
@ApiModelProperty(value = "GPS 时间", example = "20140325/104954", required = true, dataType = "String")
private String gtm;
@ApiModelProperty(value = "海拔", example = "3250", required = true, dataType = "String")
private String hgt;
@ApiModelProperty(value = "纬度", example = "23986841", required = true, dataType = "String")
private String lat;
@ApiModelProperty(value = "经度", example = "69807550", required = true, dataType = "String")
private String lon;
@ApiModelProperty(value = "里程", example = "1500", required = true, dataType = "String")
private String mlg;
@ApiModelProperty(value = "GPS 速度", example = "602", required = true, dataType = "String")
private String spd;
}
package com.clx.performance.dto.zjxl;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2022/4/9 17:13
* @Version: 1.0
*/
@Setter
@Getter
@ToString
public class LastLocationDTO {
private String drc; //方向
private String lon; //经度
private String lat; //纬度
private String spd; //速度 (km/h)
private String utc; //时间 (1369756801000)
private String province; //省
private String city; //市
private String country; //区
private String adr; //地理位置名称(安徽省安庆市怀宁县长琳塑业,向西方向,148 米)
}
package com.clx.performance.dto.zjxl;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZJXLPositionUtils;
import java.math.BigDecimal;
/**
* @ClassName TruckLocationDTO
* @Description
* @Author kavin
* @Date 2023/9/18 13:13
* @Version 1.0
*/
public class TruckLocationDTO {
private String truckNo;
private BigDecimal angle;
private BigDecimal speed;
private BigDecimal[] location;
private String gpsTime;
private String province;
private String city;
private String country;
private String address;
private String createTime;
private String modifiedTime;
public TruckLocationDTO(String angle, String speed, String lon, String lat, String gpsTime, String province, String city, String country, String address) {
this.angle = new BigDecimal(angle);
this.speed = ZJXLPositionUtils.speedFormat(speed);
this.location = ZJXLPositionUtils.WGS484Format(lon, lat);
this.gpsTime = LocalDateTimeUtils.getFormatByLong(Long.parseLong(gpsTime), (String)null);
this.province = province;
this.city = city;
this.country = country;
this.address = address;
}
}
package com.clx.performance.dto.zjxl;
import com.clx.performance.utils.zjxl.ZJXLPositionUtils;
import lombok.*;
import java.math.BigDecimal;
/**
* @ClassName TruckTraceDTO
* @Description
* @Author kavin
* @Date 2023/9/18 13:03
* @Version 1.0
*/
@Getter
@Setter
public class TruckTraceDTO {
private String truckNo;
private BigDecimal angle;
private BigDecimal speed;
private BigDecimal mileage;
private BigDecimal height;
private BigDecimal[] location;
private String gpsTime;
private String createTime;
private String modifiedTime;
public TruckTraceDTO(String angle, String speed, String mileage, String height, String lon, String lat, String gpsTime) {
this.angle = new BigDecimal(angle);
this.speed = ZJXLPositionUtils.speedFormat(speed);
this.mileage = ZJXLPositionUtils.mileageFormat(mileage);
this.height = new BigDecimal(height);
this.location = ZJXLPositionUtils.WGS484Format(lon, lat);
this.gpsTime = ZJXLPositionUtils.gpsTimeFormat(gpsTime);
}
}
package com.clx.performance.dto.zjxl;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2022/4/9 17:13
* @Version: 1.0
*/
@Setter
@Getter
@ToString
public class ZjxlResultDTO<T> {
private T result; //结果
private Integer status; //状态
}
package com.clx.order.extranal.user; package com.clx.performance.extranal.user;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.user.param.user.external.PageProductUsersParam; import com.msl.user.param.user.external.PageProductUsersParam;
......
package com.clx.order.extranal.user.impl; package com.clx.performance.extranal.user.impl;
import com.clx.order.extranal.user.UserService; import com.clx.performance.extranal.user.UserService;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.user.param.user.external.PageProductUsersParam; import com.msl.user.param.user.external.PageProductUsersParam;
import com.msl.user.vo.company.external.ListUserCompanyVo; import com.msl.user.vo.company.external.ListUserCompanyVo;
......
package com.clx.order.mapper; package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.order.model.OrderGoodsDriverTruck; import com.clx.performance.model.OrderGoodsDriverTruck;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.mapper; package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.order.model.OrderGoods; import com.clx.performance.model.OrderGoods;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.mapper; package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.order.model.SeniorLogisticsManager; import com.clx.performance.model.SeniorLogisticsManager;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.model; package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
...@@ -12,7 +12,6 @@ import java.math.BigDecimal; ...@@ -12,7 +12,6 @@ import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.model; package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
...@@ -11,7 +11,6 @@ import lombok.experimental.Accessors; ...@@ -11,7 +11,6 @@ import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.model; package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
...@@ -11,7 +11,6 @@ import lombok.experimental.Accessors; ...@@ -11,7 +11,6 @@ import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable;
/** /**
* @author kavin * @author kavin
......
package com.clx.order.service; package com.clx.performance.service;
/** /**
* @author kavin * @author kavin
* Date 2023-09-17 * Date 2023-09-17
......
package com.clx.order.service.impl; package com.clx.performance.service.impl;
import com.msl.common.service.impl.BaseServiceImpl; import com.clx.performance.service.OrderGoodsDriverTruckService;
import com.clx.order.dao.OrderGoodsDriverTruckDao;
import com.clx.order.model.OrderGoodsDriverTruck;
import com.clx.order.service.OrderGoodsDriverTruckService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
......
package com.clx.order.service.impl; package com.clx.performance.service.impl;
import com.msl.common.service.impl.BaseServiceImpl; import com.clx.performance.service.OrderGoodsService;
import com.clx.order.dao.OrderGoodsDao;
import com.clx.order.model.OrderGoods;
import com.clx.order.service.OrderGoodsService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
......
package com.clx.order.service.impl; package com.clx.performance.service.impl;
import com.clx.order.service.SeniorLogisticsManagerService; import com.clx.performance.service.SeniorLogisticsManagerService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
......
package com.clx.order.utils; package com.clx.performance.utils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
......
package com.clx.order.utils; package com.clx.performance.utils;
import java.math.BigDecimal; import java.math.BigDecimal;
......
package com.clx.order.utils; package com.clx.performance.utils;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
......
package com.clx.order.utils; package com.clx.performance.utils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
......
package com.clx.order.utils.excel; package com.clx.performance.utils.excel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.metadata.style.WriteCellStyle;
......
package com.clx.performance.utils.zjxl;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* @ClassName ZJXLPositionUtils
* @Description
* @Author kavin
* @Date 2023/9/18 13:11
* @Version 1.0
*/
public class ZJXLPositionUtils {
public ZJXLPositionUtils() {
}
public static BigDecimal[] WGS484Format(String lon, String lat) {
BigDecimal ratio = new BigDecimal("600000");
BigDecimal lonNew = (new BigDecimal(lon)).divide(ratio, 10, 4);
BigDecimal latNew = (new BigDecimal(lat)).divide(ratio, 10, 4);
return new BigDecimal[]{lonNew, latNew};
}
public static String gpsTimeFormat(String time) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd/HHmmss");
try {
return sdf1.format(sdf.parse(time));
} catch (ParseException var4) {
var4.printStackTrace();
return null;
}
}
public static BigDecimal speedFormat(String speed) {
return (new BigDecimal(speed)).divide(BigDecimal.valueOf(10L), 1, 4);
}
public static BigDecimal mileageFormat(String mileage) {
return (new BigDecimal(mileage)).divide(BigDecimal.valueOf(10L), 1, 4);
}
}
package com.clx.order; package com.clx.performance;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
......
package com.clx.order; package com.clx.performance;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论