订单业务功能开发v4、回收站业务功能开发v1

wxpay
LI-CCONG\李聪聪 8 months ago
parent 3f32910bef
commit 1d942ccbe6

@ -66,6 +66,10 @@
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
</dependency>
<!-- validator --> <!-- validator -->
<dependency> <dependency>
<groupId>org.hibernate.validator</groupId> <groupId>org.hibernate.validator</groupId>

@ -28,11 +28,11 @@ import java.util.stream.Collectors;
public class PageQuery { public class PageQuery {
public static final Integer DEFAULT_PAGE_SIZE = 20; public static final Integer DEFAULT_PAGE_SIZE = 20;
public static final Integer DEFAULT_PAGE_NUM = 1; public static final Integer DEFAULT_PAGE_NUM = 1;
@ApiModelProperty(value = "页码", required = true, example = "1") @ApiModelProperty(value = "页码", required = false, example = "1")
@Min(value = 1, message = "页码不能小于1") @Min(value = 1, message = "页码不能小于1")
private Integer pageNo = DEFAULT_PAGE_NUM; private Integer pageNo = DEFAULT_PAGE_NUM;
@ApiModelProperty(value = "每页个数", required = true, example = "10") @ApiModelProperty(value = "每页个数", required = false, example = "10")
@Min(value = 1, message = "每页查询数量不能小于1") @Min(value = 1, message = "每页查询数量不能小于1")
private Integer pageSize = DEFAULT_PAGE_SIZE; private Integer pageSize = DEFAULT_PAGE_SIZE;

@ -41,7 +41,7 @@ public class genCodeMain {
}) })
//4、策略配置 //4、策略配置
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude("nx_recycle_order") // 设置需要生成的数据表名 builder.addInclude("nx_enterprise_recycle_station") // 设置需要生成的数据表名
.addTablePrefix("nx") // 设置过滤表前缀 .addTablePrefix("nx") // 设置过滤表前缀
//4.1、Mapper策略配置 //4.1、Mapper策略配置
.mapperBuilder() .mapperBuilder()

@ -77,10 +77,10 @@ public class CommonUtil {
public static void main(String[] args) { public static void main(String[] args) {
String lon1 = "119.6438888888889"; String lon1 = "121.233549";
String lat1 = "37.966944444444444"; String lat1 = "31.035796";
String lon2 = "119.63916666666667"; String lon2 = "121.404032";
String lat2 = "37.9675"; String lat2 = "31.163973";
System.out.println(getDistance(lon1, lat1, lon2, lat2)); System.out.println(getDistance(lon1, lat1, lon2, lat2));
} }
} }

@ -6,6 +6,7 @@ import cc.yunxi.common.domain.CommonResult;
import cc.yunxi.common.domain.PageDTO; import cc.yunxi.common.domain.PageDTO;
import cc.yunxi.common.utils.BeanUtils; import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.common.utils.CommonUtil; import cc.yunxi.common.utils.CommonUtil;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.vo.recycleorder.RecycleOrderCreateVO; import cc.yunxi.domain.vo.recycleorder.RecycleOrderCreateVO;
import cc.yunxi.domain.po.RecycleOrder; import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.query.RecycleOrderQuery; import cc.yunxi.domain.query.RecycleOrderQuery;
@ -47,19 +48,18 @@ public class RecycleOrderController {
// 1.分页查询 // 1.分页查询
Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery); Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery);
// 1.1 订单距离计算 // 1.1 订单距离计算
if (ObjectUtil.isNotEmpty(recycleOrderQuery.getLocation())) { LocationDTO locationDTO = recycleOrderQuery.getLocation();
String longitude = recycleOrderQuery.getLocation().getLongitude(); if (ObjectUtil.isNotEmpty(locationDTO) && locationDTO.isValid()) {
String latitude = recycleOrderQuery.getLocation().getLatitude(); String longitude = locationDTO.getLongitude();
if (StrUtil.isNotEmpty(longitude) && StrUtil.isNotEmpty(latitude)) { String latitude = locationDTO.getLatitude();
for(RecycleOrder recycleOrder : result.getRecords()) { for(RecycleOrder recycleOrder : result.getRecords()) {
String distance = CommonUtil.getDistance(longitude, latitude, recycleOrder.getLongitude(), recycleOrder.getLatitude()); String distance = CommonUtil.getDistance(longitude, latitude, recycleOrder.getLongitude(), recycleOrder.getLatitude());
recycleOrder.setDistance(distance); recycleOrder.setDistance(distance);
}
} }
} }
// 2.封装并返回 // 2.封装并返回
PageDTO<RecycleOrderRespVO> recyclerPageDTO = PageDTO.of(result, RecycleOrderRespVO.class); PageDTO<RecycleOrderRespVO> recyclerPageVO = PageDTO.of(result, RecycleOrderRespVO.class);
return CommonResult.success(recyclerPageDTO); return CommonResult.success(recyclerPageVO);
} }
@ApiOperation("创建回收订单") @ApiOperation("创建回收订单")
@ -72,9 +72,16 @@ public class RecycleOrderController {
@ApiOperation("回收订单详情") @ApiOperation("回收订单详情")
@GetMapping("/info") @PostMapping("/info")
public CommonResult<RecycleOrderRespVO> findOrder(@RequestParam("id") String id) { public CommonResult<RecycleOrderRespVO> findOrder(@RequestBody RecycleOrderQuery recycleOrderQuery) {
RecycleOrder recycleOrder = recycleOrderService.getOrderById(id); RecycleOrder recycleOrder = recycleOrderService.getOrderById(recycleOrderQuery.getId());
LocationDTO locationDTO = recycleOrderQuery.getLocation();
if (ObjectUtil.isNotEmpty(locationDTO) && locationDTO.isValid()) {
String longitude = locationDTO.getLongitude();
String latitude = locationDTO.getLatitude();
String distance = CommonUtil.getDistance(longitude, latitude, recycleOrder.getLongitude(), recycleOrder.getLatitude());
recycleOrder.setDistance(distance);
}
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class); RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class);
return CommonResult.success(recycleOrderRespVO); return CommonResult.success(recycleOrderRespVO);
} }

@ -0,0 +1,75 @@
package cc.yunxi.controller;
import cc.yunxi.common.domain.CommonResult;
import cc.yunxi.common.domain.PageDTO;
import cc.yunxi.common.exception.BizIllegalException;
import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.po.RecycleStation;
import cc.yunxi.domain.po.Recycler;
import cc.yunxi.domain.query.RecycleStationQuery;
import cc.yunxi.domain.query.RecyclerQuery;
import cc.yunxi.domain.vo.RecyclerVO;
import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO;
import cc.yunxi.domain.vo.recyclestation.RecycleStationRespVO;
import cc.yunxi.service.IRecycleStationService;
import cc.yunxi.service.IRecyclerService;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author ccongli
* @since 2024-03-04 11:28:47
*/
@Api(tags = "回收站点接口")
@RequiredArgsConstructor
@RestController
@RequestMapping("/recycle-station")
@Slf4j
public class RecycleStationController {
private final IRecycleStationService recycleStationService;
@ApiOperation("分页查询回收站")
@PostMapping("/page")
public CommonResult<PageDTO<RecycleStationRespVO>> queryStationByPage(@RequestBody RecycleStationQuery recycleStationQuery) {
LocationDTO locationDTO = recycleStationQuery.getLocation();
log.info("client locationDTO: {}", locationDTO);
if (ObjectUtil.isEmpty(locationDTO) && !locationDTO.isValid()) {
throw new BizIllegalException("授权定位信息未授权 或 定位信息错误");
}
Page<RecycleStation> result = recycleStationService.queryStationByPage(recycleStationQuery);
PageDTO<RecycleStationRespVO> recycleStationPageVO = PageDTO.of(result, RecycleStationRespVO.class);
return CommonResult.success(recycleStationPageVO);
}
@ApiOperation("回收站详情")
@GetMapping("/info")
public CommonResult<RecycleStationRespVO> findOrder(@RequestBody RecycleStationQuery recycleStationQuery) {
RecycleStation station = recycleStationService.getStationById(recycleStationQuery.getStationId());
RecycleStationRespVO recycleStationRespVO = BeanUtils.copyBean(station, RecycleStationRespVO.class);
// 站点距离计算
LocationDTO locationDTO = recycleStationQuery.getLocation();
log.info("client locationDTO: {}", locationDTO);
if (ObjectUtil.isEmpty(locationDTO) && !locationDTO.isValid()) {
throw new BizIllegalException("授权定位信息未授权 或 定位信息错误");
}
return CommonResult.success(recycleStationRespVO);
}
}

@ -4,13 +4,27 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.regex.Pattern;
@Data @Data
@ApiModel(description = "当前位置实体") @ApiModel(description = "当前位置实体")
public class LocationDTO { public class LocationDTO {
@ApiModelProperty(value = "当前经度", required = true, example = "119.643888") private static final String LONGITUDE_REGEX = "/^[\\-\\+]?(0?\\d{1,2}\\.\\d{1,6}|1[0-7]?\\d{1}\\.\\d{1,6}|180\\.0{1,6})$/";
private static final String LATITUDE_REGEX = "/^[\\-\\+]?([0-8]?\\d{1}\\.\\d{1,6}|90\\.0{1,6})$/";
@ApiModelProperty(value = "当前经度", required = true, example = "121.404032")
private String longitude; private String longitude;
@ApiModelProperty(value = "当前经度", required = true, example = "37.966944") @ApiModelProperty(value = "当前经度", required = true, example = "31.163973")
private String latitude; private String latitude;
// 判断经纬度是否有效
public boolean isValid() {
return Pattern.matches(LONGITUDE_REGEX, longitude) && Pattern.matches(LATITUDE_REGEX, latitude);
}
} }

@ -0,0 +1,138 @@
package cc.yunxi.domain.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* -
* </p>
*
* @author ccongli
* @since 2024-03-04 11:28:47
*/
@Data
@TableName("nx_enterprise_recycle_station")
@ApiModel(value = "RecycleStation", description = "回收站")
public class RecycleStation {
@ApiModelProperty("自然主键")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
@ApiModelProperty("企业id")
@TableField("enterprise_id")
private String enterpriseId;
@ApiModelProperty("回收站编号")
@TableField("station_code")
private String stationCode;
@ApiModelProperty("回收站名称")
@TableField("station_name")
private String stationName;
@ApiModelProperty("回收站简称")
@TableField("short_name")
private String shortName;
@ApiModelProperty("回收站照片")
@TableField("station_img")
private String stationImg;
// @ApiModelProperty("经营模式:直营,加盟")
// @TableField("management_model")
// private String managementModel;
// @ApiModelProperty("所在城市")
// @TableField("city")
// private String city;
// @ApiModelProperty("回收类目id集合")
// @TableField("recycle_type_ids")
// private String recycleTypeIds;
@ApiModelProperty("联系人")
@TableField("first_contact_person")
private String contactPerson;
// @ApiModelProperty("手机号码")
// @TableField("first_contact_person_tel")
// private String contactPersonTel;
@ApiModelProperty("回收电话")
@TableField("recycle_tel")
private String recycleTel;
@ApiModelProperty("详细地址")
@TableField("address")
private String address;
@ApiModelProperty("地址经度")
@TableField("longitude")
private String longitude;
@ApiModelProperty("地址纬度")
@TableField("latitude")
private String latitude;
@ApiModelProperty("回收站介绍")
@TableField("station_description")
private String stationDescription;
@ApiModelProperty("回收站状态0禁用1启用")
@TableField("station_status")
private Integer stationStatus;
@ApiModelProperty("备注")
@TableField("remark")
private String remark;
@ApiModelProperty("营业日期")
@TableField("business_days")
private String businessDays;
// @ApiModelProperty("营业时间")
// @TableField("business_hours")
// private String businessHours;
@ApiModelProperty("营业时刻起")
@TableField("appointment_time_start")
private String appointmentTimeStart;
@ApiModelProperty("营业时刻止")
@TableField("appointment_time_end")
private String appointmentTimeEnd;
// @ApiModelProperty("预计上门时长(单位:分钟)")
// @TableField("predict_arrive_time")
// private String predictArriveTime;
@ApiModelProperty("范围限制(单位m)")
@TableField("accept_range")
private Integer acceptRange;
@ApiModelProperty("服务范围内小区")
@TableField("accept_housing_estate")
private String acceptHousingEstate;
@ApiModelProperty("创建时间")
@TableField("creator_time")
private LocalDateTime creatorTime;
@ApiModelProperty("站点距离(m)")
@TableField(exist = false)
private String distance;
}

@ -20,7 +20,7 @@ public class RecycleOrderQuery extends PageQuery {
private OrderStatusEnum status; private OrderStatusEnum status;
@ApiModelProperty(value = "回收员当前经度", required = false) @ApiModelProperty(value = "回收员当前位置", required = false)
private LocationDTO location; private LocationDTO location;
} }

@ -0,0 +1,26 @@
package cc.yunxi.domain.query;
import cc.yunxi.common.domain.PageQuery;
import cc.yunxi.domain.dto.LocationDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "RecycleStationQuery", description = "回收站查询条件")
public class RecycleStationQuery extends PageQuery {
@ApiModelProperty(value = "回收站id", required = false, example = "519071906947663877")
private String stationId;
@ApiModelProperty(value = "回收站名称", required = false, example = "回收站1")
private String stationName;
@ApiModelProperty(value = "散户当前位置", required = true)
private LocationDTO location;
}

@ -0,0 +1,100 @@
package cc.yunxi.domain.vo.recyclestation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* <p>
* VO
* </p>
*
* @author ccongli
* @since 2024-03-01 11:15:39
*/
@ApiModel(description = "回收订单回收站")
@Data
public class RecycleStationRespVO {
@ApiModelProperty("主键id")
private String id;
@ApiModelProperty("企业id")
private String enterpriseId;
@ApiModelProperty("回收站编号")
private String stationCode;
@ApiModelProperty("回收站名称")
private String stationName;
@ApiModelProperty("回收站简称")
private String shortName;
@ApiModelProperty("回收站照片")
private String stationImg;
// @ApiModelProperty("经营模式:直营,加盟")
// @TableField("management_model")
// private String managementModel;
// @ApiModelProperty("所在城市")
// @TableField("city")
// private String city;
// @ApiModelProperty("回收类目id集合")
// @TableField("recycle_type_ids")
// private String recycleTypeIds;
@ApiModelProperty("联系人")
private String contactPerson;
// @ApiModelProperty("手机号码")
// @TableField("first_contact_person_tel")
// private String contactPersonTel;
@ApiModelProperty("回收电话")
private String recycleTel;
@ApiModelProperty("详细地址")
private String address;
@ApiModelProperty("地址经度")
private String longitude;
@ApiModelProperty("地址纬度")
private String latitude;
@ApiModelProperty("回收站介绍")
private String stationDescription;
@ApiModelProperty("回收站状态0禁用1启用")
private Integer stationStatus;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("营业日")
private String businessDays;
@ApiModelProperty("营业时刻起")
private String appointmentTimeStart;
@ApiModelProperty("营业时刻止")
private String appointmentTimeEnd;
@ApiModelProperty("范围限制(单位m)")
private Integer acceptRange;
@ApiModelProperty("服务范围内小区")
private String acceptHousingEstate;
@ApiModelProperty("创建时间")
private LocalDateTime creatorTime;
@ApiModelProperty("站点距离(m)")
private String distance;
}

@ -0,0 +1,38 @@
package cc.yunxi.mapper;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.po.RecycleStation;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.LinkedHashMap;
import java.util.List;
/**
* <p>
* - Mapper
* </p>
*
* @author ccongli
* @since 2024-03-04 11:28:47
*/
@Mapper
public interface RecycleStationMapper extends BaseMapper<RecycleStation> {
/**
* sql xml
* @param page
* @param queryWrapper
* @return
*/
Page<RecycleStation> queryStationByPage(
@Param("location") LocationDTO locationDTO, Page<RecycleStation> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<RecycleStation> queryWrapper);
}

@ -0,0 +1,35 @@
package cc.yunxi.service;
import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.po.RecycleStation;
import cc.yunxi.domain.query.RecycleStationQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* -
* </p>
*
* @author ccongli
* @since 2024-03-04 11:28:47
*/
public interface IRecycleStationService extends IService<RecycleStation> {
/**
*
* @param recycleStationQuery
* @return Page<RecycleStation>
*/
Page<RecycleStation> queryStationByPage(RecycleStationQuery recycleStationQuery);
/**
*
* @param id
* @return RecycleOrder
*/
RecycleStation getStationById(String id);
}

@ -89,6 +89,7 @@ public class CommonService implements ICommonService {
recycler = recyclerService.registerRecycler(userDTO.getPhone(), userDTO.getOpenid()); recycler = recyclerService.registerRecycler(userDTO.getPhone(), userDTO.getOpenid());
} }
userDTO.setId(recycler.getId()); userDTO.setId(recycler.getId());
userDTO.setStationId(recycler.getStationId());
userDTO.setUserType(UserTypeEnum.RECYCLER.getCode()); userDTO.setUserType(UserTypeEnum.RECYCLER.getCode());
userDTO.setUsername(recycler.getStaffsName()); userDTO.setUsername(recycler.getStaffsName());
return userDTO; return userDTO;

@ -76,6 +76,9 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
} }
public RecycleOrder getOrderById(String id) { public RecycleOrder getOrderById(String id) {
if (StrUtil.isEmpty(id)) {
throw new BizIllegalException("请求参数缺失");
}
return this.getById(id); return this.getById(id);
} }

@ -0,0 +1,52 @@
package cc.yunxi.service.impl;
import cc.yunxi.common.exception.BizIllegalException;
import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.po.RecycleStation;
import cc.yunxi.domain.query.RecycleOrderQuery;
import cc.yunxi.domain.query.RecycleStationQuery;
import cc.yunxi.mapper.RecycleStationMapper;
import cc.yunxi.service.IRecycleStationService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* <p>
* -
* </p>
*
* @author ccongli
* @since 2024-03-04 11:28:47
*/
@Service
public class RecycleStationServiceImpl extends ServiceImpl<RecycleStationMapper, RecycleStation> implements IRecycleStationService {
@Resource
private RecycleStationMapper recycleStationMapper;
public Page<RecycleStation> queryStationByPage(RecycleStationQuery recycleStationQuery) {
LambdaQueryWrapper<RecycleStation> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StrUtil.isNotEmpty(recycleStationQuery.getStationName()),
RecycleStation::getStationName, recycleStationQuery.getStationName());
// Page<RecycleStation> page = recycleStationQuery.buildPage(RecycleStation.class);
Page<RecycleStation> page = recycleStationQuery.buildPageByDefaultOrder(RecycleStation::getCreatorTime, false);
Page<RecycleStation> recycleStationPage = recycleStationMapper.queryStationByPage(recycleStationQuery.getLocation(), page, wrapper);
return recycleStationPage;
}
public RecycleStation getStationById(String id) {
if (StrUtil.isEmpty(id)) {
throw new BizIllegalException("请求参数缺失");
}
return recycleStationMapper.selectById(id);
}
}

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.yunxi.mapper.RecycleStationMapper">
<!-- 分页查询回收站点 -->
<select id="queryStationByPage" resultType="RecycleStation">
SELECT
a.*,
ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW( SIN(( #{location.latitude} - latitude ) * PI()/ 360 ), 2 ) + COS( #{location.latitude} * PI() / 180 ) * COS( latitude * PI() / 180 ) * POW( SIN(( #{location.longitude} - longitude ) * PI() / 360 ), 2 ))) * 1000
) AS distance
FROM
nx_enterprise_recycle_station a
${ew.customSqlSegment}
HAVING
distance &lt;= a.accept_range
ORDER BY
distance ASC;
</select>
</mapper>

@ -23,6 +23,7 @@
<spring-boot.version>2.7.6</spring-boot.version> <spring-boot.version>2.7.6</spring-boot.version>
<mybatis-plus.version>3.4.3</mybatis-plus.version> <mybatis-plus.version>3.4.3</mybatis-plus.version>
<hutool.version>5.8.11</hutool.version> <hutool.version>5.8.11</hutool.version>
<geodesy.version>1.1.3</geodesy.version>
<knife4j-openapi2.version>4.1.0</knife4j-openapi2.version> <knife4j-openapi2.version>4.1.0</knife4j-openapi2.version>
<security-rsa.version>1.0.9.RELEASE</security-rsa.version> <security-rsa.version>1.0.9.RELEASE</security-rsa.version>
</properties> </properties>
@ -61,6 +62,12 @@
<artifactId>spring-security-rsa</artifactId> <artifactId>spring-security-rsa</artifactId>
<version>${security-rsa.version}</version> <version>${security-rsa.version}</version>
</dependency> </dependency>
<!-- 位置 -->
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
<version>${geodesy.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

Loading…
Cancel
Save