admin
2021-12-04 c79b1ebed5a42a4cbb2f824232da2a51ff22a9a1
app/src/main/java/com/yeshi/location/app/service/impl/location/LocationTravelServiceImpl.java
@@ -38,7 +38,7 @@
        }
        daoQuery.start = (page - 1) * pageSize;
        daoQuery.count = pageSize;
        daoQuery.sortList= Arrays.asList(new Sort.Order[]{Sort.Order.desc("createTime")});
        daoQuery.sortList = Arrays.asList(new Sort.Order[]{Sort.Order.desc("createTime")});
        return locationTravelDao.list(daoQuery);
    }
@@ -63,7 +63,7 @@
    @Override
    public void add(LocationTravel locationTravel) throws Exception {
        if (locationTravel == null || locationTravel.getUid() == null || locationTravel.getLocation() == null) {
        if (locationTravel == null || locationTravel.getUid() == null || locationTravel.getLocation() == null || locationTravel.getLocation().getLatitude() == null || locationTravel.getLocation().getLongitude() == null) {
            throw new Exception("信息不完整");
        }
@@ -74,11 +74,25 @@
        if (locationTravel.getId() == null) {
            locationTravel.setId(LocationTravel.createId(locationTravel.getUid(), locationTravel.getCreateTime()));
        }
        //保存
        locationTravelDao.save(locationTravel);
        UserLatestLocation latest =new UserLatestLocation();
        //获取最新的位置
        DaoQuery daoQuery = new DaoQuery();
        daoQuery.uid = locationTravel.getUid();
        daoQuery.sortList = Arrays.asList(new Sort.Order[]{Sort.Order.desc("createTime")});
        daoQuery.count = 1;
        List<LocationTravel> travelList = locationTravelDao.list(daoQuery);
        if (travelList != null && travelList.size() > 0) {
            //判断距离
            if (GeoUtils.getDistance(travelList.get(0).getLocation(), locationTravel.getLocation()) >= 10) {
                //保存
                locationTravelDao.save(locationTravel);
            }
        } else {
            locationTravelDao.save(locationTravel);
        }
        UserLatestLocation latest = new UserLatestLocation();
        latest.setLocation(locationTravel.getLocation());
        latest.setUid(locationTravel.getUid());
        userLatestLocationService.add(latest);
@@ -97,5 +111,27 @@
        }
    }
    @Override
    public List<LocationTravel> getTravelList(Long uid, Date startTime, Date endTime, int page, int pageSize) {
        DaoQuery daoQuery = new DaoQuery();
        daoQuery.minCreateTime = startTime;
        daoQuery.maxCreateTime = endTime;
        daoQuery.uid = uid;
        daoQuery.start = (page - 1) * pageSize;
        daoQuery.count = pageSize;
        List<LocationTravel> travelList = locationTravelDao.list(daoQuery);
        return travelList;
    }
    @Override
    public long countTravel(Long uid, Date startTime, Date endTime) {
        DaoQuery daoQuery = new DaoQuery();
        daoQuery.minCreateTime = startTime;
        daoQuery.maxCreateTime = endTime;
        daoQuery.uid = uid;
        return locationTravelDao.count(daoQuery);
    }
}