Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
cms-ci-test
Commits
af55c66e
提交
af55c66e
authored
8月 19, 2023
作者:
zhenjie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
加盟商距离计算
上级
277a8cbb
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
61 行增加
和
3 行删除
+61
-3
CooperationServiceImpl.java
...om/mmc/iuav/user/service/impl/CooperationServiceImpl.java
+16
-0
LocationUtils.java
...r/src/main/java/com/mmc/iuav/user/util/LocationUtils.java
+44
-0
CooperationDao.xml
...service-user/src/main/resources/mapper/CooperationDao.xml
+1
-3
没有找到文件。
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/CooperationServiceImpl.java
浏览文件 @
af55c66e
...
...
@@ -17,12 +17,15 @@ import com.mmc.iuav.user.model.vo.*;
import
com.mmc.iuav.user.service.BackUserAccountService
;
import
com.mmc.iuav.user.service.CooperationService
;
import
com.mmc.iuav.user.service.UserAccountService
;
import
com.mmc.iuav.user.util.LocationUtils
;
import
com.mmc.iuav.user.util.SmsUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -317,6 +320,19 @@ public class CooperationServiceImpl implements CooperationService {
}
List
<
CompanyInfoVO
>
list
=
cooperationDao
.
listCompanyInfoByCoopId
(
coopId
,
lon
,
lat
,
(
pageNo
-
1
)
*
pageSize
,
pageSize
)
.
stream
().
map
(
CompanyInfoDO:
:
buildCompanyInfoVO
).
collect
(
Collectors
.
toList
());
this
.
computerDistance
(
list
,
lon
,
lat
);
return
PageResult
.
buildPage
(
pageNo
,
pageSize
,
count
,
list
);
}
private
List
<
CompanyInfoVO
>
computerDistance
(
List
<
CompanyInfoVO
>
companyInfoVOS
,
Double
lon
,
Double
lat
)
{
for
(
CompanyInfoVO
d
:
companyInfoVOS
)
{
double
distance
=
0
;
if
(
d
.
getLon
()
!=
null
&&
d
.
getLon
()
!=
0
&&
d
.
getLat
()
!=
null
&&
d
.
getLat
()
!=
0
)
{
distance
=
LocationUtils
.
getDistance
(
d
.
getLat
(),
d
.
getLon
(),
lat
,
lon
);
}
d
.
setDistance
(
distance
);
}
Collections
.
sort
(
companyInfoVOS
,
Comparator
.
comparing
(
CompanyInfoVO:
:
getDistance
));
// 升序
return
companyInfoVOS
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/util/LocationUtils.java
0 → 100644
浏览文件 @
af55c66e
package
com
.
mmc
.
iuav
.
user
.
util
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年11月5日 下午5:48:59
* @explain 高德地图对应经纬度计算距离
*/
public
class
LocationUtils
{
// 地球赤道半径
private
static
double
EARTH_RADIUS
=
6378.137
;
private
static
double
rad
(
double
d
)
{
return
d
*
Math
.
PI
/
180.0
;
}
/**
* @描述 经纬度获取距离,单位为KM
* @参数 [lat1, lon1, lat2, lon2]
* @返回值 double
* @创建人 Young
* @创建时间 2019/3/13 20:33
**/
public
static
double
getDistance
(
double
lat1
,
double
lon1
,
double
lat2
,
double
lon2
)
{
double
radLat1
=
rad
(
lat1
);
double
radLat2
=
rad
(
lat2
);
double
a
=
radLat1
-
radLat2
;
double
b
=
rad
(
lon1
)
-
rad
(
lon2
);
double
s
=
2
*
Math
.
asin
(
Math
.
sqrt
(
Math
.
pow
(
Math
.
sin
(
a
/
2
),
2
)
+
Math
.
cos
(
radLat1
)
*
Math
.
cos
(
radLat2
)
*
Math
.
pow
(
Math
.
sin
(
b
/
2
),
2
)));
s
=
s
*
EARTH_RADIUS
;
s
=
Math
.
round
(
s
*
10000
d
)
/
10000
d
;
return
s
;
}
public
static
double
getDistanceByM
(
double
lat1
,
double
lon1
,
double
lat2
,
double
lon2
)
{
double
s
=
LocationUtils
.
getDistance
(
lat1
,
lon1
,
lat2
,
lon2
)
*
1000
;
return
s
;
}
public
static
void
main
(
String
[]
args
)
{
double
distance
=
getDistance
(
34.810487
,
117.323725
,
22.576802
,
113.94059
);
System
.
out
.
println
(
"距离"
+
distance
+
"KM"
);
}
}
csm-service/cms-service-user/src/main/resources/mapper/CooperationDao.xml
浏览文件 @
af55c66e
...
...
@@ -453,8 +453,7 @@
ci.score,
ci.brand_name,
ci.brand_logo,
cbu.back_user_account_id,
round(st_distance_sphere(point(ci.lon, ci.lat),point(#{lon}, #{lat}))/1000, 2) AS distance
cbu.back_user_account_id
FROM user_apply_tag uat
INNER JOIN cooperation_tag ct ON uat.cooperation_tag_id = ct.id
INNER JOIN company_member cm ON cm.user_account_id = uat.user_account_id
...
...
@@ -462,7 +461,6 @@
INNER JOIN company_back_user cbu ON cbu.company_info_id = ci.id
WHERE ct.id = #{coopId}
and uat.is_deleted = 0 and uat.apply_status = 1 and ci.is_deleted = 0
ORDER BY distance ASC
LIMIT #{pageNo}, #{pageSize}
</select>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论