Prechádzať zdrojové kódy

feat(app): 优化比赛距离计算逻辑

- 在 AppGameMapper.xml 中添加场地类型和坐标字段- 更新 AppHomeServiceImpl 中的距离计算逻辑,支持不同场地类型
- 在 SearchVO 中添加场地类型和坐标相关字段
SheepHy 2 týždňov pred
rodič
commit
cb6a120af9

+ 11 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java

@@ -345,10 +345,17 @@ public class AppHomeServiceImpl implements IAppHomeService {
         Page<SearchVO.SearchRaceVO> searchCompetitionVOPage = appGameMapper.convertSearchCompetitionVOPage(page, searchDTO);
         searchCompetitionVOPage.getRecords().forEach(competitionVO -> {
             AppSite appSite = appSiteMapper.selectOne(
-                    Wrappers.<AppSite>lambdaQuery().eq(AppSite::getOrgCode, competitionVO.getOrgCode()));
-            competitionVO.setKm(PositionUtil.calculateDistance(
-                    searchDTO.getLatitude(), searchDTO.getLongitude(),
-                    appSite.getLatitude().doubleValue(), appSite.getLongitude().doubleValue()));
+                    Wrappers.<AppSite>lambdaQuery().eq(AppSite::getId, competitionVO.getSiteId()));
+            if(null != appSite){
+                competitionVO.setKm(PositionUtil.calculateDistance(
+                        searchDTO.getLatitude(), searchDTO.getLongitude(),
+                        appSite.getLatitude().doubleValue(), appSite.getLongitude().doubleValue()));
+                if(competitionVO.getSiteType() == 1){
+                    competitionVO.setKm(PositionUtil.calculateDistance(
+                            searchDTO.getLatitude(), searchDTO.getLongitude(),
+                            competitionVO.getLatitude().doubleValue(), competitionVO.getLongitude().doubleValue()));
+                }
+            }
             // 获取价格规则并判断 type
             List<AppGamePriceRules> appGamePriceRules = appGamePriceRulesMapper.selectList(
                     Wrappers.<AppGamePriceRules>lambdaQuery()

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/SearchVO.java

@@ -95,6 +95,10 @@ public class SearchVO{
         private int type;
         @Schema(hidden = true)
         private String orgCode;
+        private int siteType;
+        private String siteId;
+        private BigDecimal latitude;
+        private BigDecimal longitude;
         @Schema(description = "类目")
         private String categoryId;
         private List<String> category;

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppGameMapper.xml

@@ -103,6 +103,10 @@
         a.org_code,
         a.start_time,
         a.end_time,
+        a.site_type,
+        a.site_id,
+        a.latitude,
+        a.longitude,
         e.address AS placeName,
         (
         a.application_end_time >= NOW()) AS registrationOpen