package com.andieguo.nearby.service;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.andieguo.nearby.bean.GPS;
import com.andieguo.nearby.bean.UserInfo;
import com.andieguo.nearby.dao.GpsDao;
import com.andieguo.nearby.dao.UserDao;
import com.andieguo.nearby.message.NearbyInfo;
import com.andieguo.nearby.util.GPSUtil;
public class Service {
public void saveOrUpdateGPS(GPS gps) throws SQLException {
GpsDao dao = new GpsDao();
GPS gpsinfo = dao.findGPS(gps.getUser().getId());
if (gpsinfo == null) {
dao.saveGPS(gps);
} else {
dao.updateGPS(gps);
}
}
public List<NearbyInfo> findNearByGeoHash(String userId){
return null;
}
/**
* 内部使用GeoHash区域查询,并对查询到的区域用户进行测距
* @param userId
* @param longitude
* @param latitude
* @return
* @throws SQLException
*/
public List<NearbyInfo> findList(String userId, String longitude,
String latitude) throws SQLException {
GpsDao dao = new GpsDao();
List<NearbyInfo> list = new ArrayList<NearbyInfo>();
for (NearbyInfo info : dao.findGPSListByGeoHash(userId)) {
if (!info.getUser_id().equals(userId)) {
Double d = GPSUtil.computeDistance(Double.valueOf(latitude),
Double.valueOf(longitude),
Double.valueOf(info.getLatitude()),
Double.valueOf(info.getLongitude()));
info.setDistance(d.intValue() + "米");
if (d < 5000) {
list.add(info);
}
}
}
return list;
}
public void saveOrUpdateUser(UserInfo user) throws SQLException {
UserDao dao = new UserDao();
UserInfo u = dao.findUser(user.getId());
if (null == u) {
dao.saveUser(user);
} else {
dao.updateUser(user);
}
}
}