package com.xiaopeng.pushMessage.webSocket.handler;
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.xiaopeng.api.dto.account.XpOperationsUserPositionDTO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
import org.springframework.data.mongodb.core.query.Criteria;
|
import org.springframework.data.mongodb.core.query.Query;
|
import org.springframework.data.mongodb.core.query.Update;
|
import org.springframework.stereotype.Component;
|
|
@Component
|
public class PositionMsgHandler implements BusinessMsgHandler{
|
|
@Override
|
public String getMessageType() {
|
return "position";
|
}
|
|
@Override
|
public void handle(String uid, String msg) {
|
XpOperationsUserPositionDTO xpOperationsUserPositionDTO;
|
try {
|
xpOperationsUserPositionDTO = om.readValue(msg, XpOperationsUserPositionDTO.class);
|
} catch (JsonProcessingException e) {
|
throw new RuntimeException(e);
|
}
|
if (null != xpOperationsUserPositionDTO) {
|
xpOperationsUserPositionDTO.setId(Long.parseLong(uid));
|
saveToMongo(xpOperationsUserPositionDTO);
|
}
|
}
|
@Autowired ObjectMapper om;
|
@Autowired MongoTemplate mongoTemplate;
|
|
private void saveToMongo(XpOperationsUserPositionDTO dto) {
|
XpOperationsUserPositionDTO vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("id").is(dto.getId())), XpOperationsUserPositionDTO.class);
|
if (null == vehiclePosition) {
|
mongoTemplate.save(dto);
|
}else{
|
Update update = new Update()
|
.set("id",dto.getId())
|
.set("latitude", dto.getLatitude())
|
.set("latitude", dto.getLongitude());
|
mongoTemplate.updateFirst(new Query(Criteria.where("id").is(dto.getId())), update, XpOperationsUserPositionDTO.class);
|
}
|
}
|
|
}
|