/** * Accepts a POST request with an XML message parameter * * @param message serialized Message object * @return a string with the result of the POST */ @RequestMapping( value = "postpos", method = RequestMethod.POST, consumes = "application/json", produces = "application/json") public @ResponseBody ResultResponse postPosition( @RequestBody PostPositionRequest req, HttpServletResponse response, HttpServletRequest request) { ResultResponse rp = new ResultResponse(Cookie.RESPONSE_BAD_REQUEST); String strId = SecurityContextHolder.getContext().getAuthentication().getName(); long userId = Cookie.checkCommonUser402( strId, response, request, SecurityContextHolder.getContext().getAuthentication()); if (PostPositionRequest.checkParameters(req) <= 0) { return rp; } if (req.getLon() < 0.1 && req.getLat() < 0.1) { rp.setResult(Cookie.RESPONSE_SUCCESS); return rp; } City city = cityBo.findById(req.getCityId()); if (city == null || city.getId() <= 0) { rp.setResult(Cookie.RESPONSE_SUCCESS); return rp; } int id = 0; if (city.getDeep() == Constant.DEEP_CITY) { id = city.getId(); } else if (city.getDeep() == Constant.DEEP_DISTRICT) { id = city.getParentId(); } req.setCityId(id); Position pos = positionBo.createIfNull(userId); if ((req.getCityId() > 0 && pos.getLastEffectCity() != req.getCityId()) || (req.getCityId() <= 0 && PositionHelper.distFrom(req.getLat(), req.getLon(), pos.getLat(), pos.getLon()) > 30000)) { PositionLog log = new PositionLog( null, userId, pos.getLastPositionTime(), pos.getLastEffectLon(), pos.getLastEffectLat(), pos.getLastEffectCity()); positionLogBo.save(log); } pos.setLastEffectCity(pos.getCity()); pos.setLastEffectLat(pos.getLat()); pos.setLastEffectLon(pos.getLon()); pos.setCity(req.getCityId()); pos.setLon(req.getLon()); pos.setLat(req.getLat()); pos.setPositionTime(System.currentTimeMillis()); pos.setLastPositionTime(System.currentTimeMillis()); pos.setUpdateTime(System.currentTimeMillis()); positionBo.update(pos); User user = userBo.findById(userId); if (user != null && user.getInstallPlace() <= 0) { user.setInstallPlace(req.getCityId()); user.setUpdateTime(System.currentTimeMillis()); userBo.update(user); } rp.setResult(Cookie.RESPONSE_SUCCESS); return rp; }