|
|
|
package com.zhonglai.luhui.mqtt.service.db;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.config.RedisConfig;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.dao.BaseDao;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.dto.iot.IotDevice;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.dto.iot.IotTerminal;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.dto.iot.IotThingsModel;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.service.RedisService;
|
|
|
|
import com.zhonglai.luhui.mqtt.comm.util.DateUtils;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
@Service
|
|
|
|
public class DeviceService {
|
|
|
|
@Autowired
|
|
|
|
private RedisService redisService ;
|
|
|
|
private BaseDao baseDao = new BaseDao();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 根据id获取终端
|
|
|
|
* @param id
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public IotTerminal getTerminalById(String id)
|
|
|
|
{
|
|
|
|
return (IotTerminal) baseDao.get(IotTerminal.class,"id='"+id+"'","`mqtt_broker`.`iot_terminal`");
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* 根据id获取终端lieb
|
|
|
|
* @param ids
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<IotTerminal> getTerminalListByIds(String ids)
|
|
|
|
{
|
|
|
|
List<IotTerminal> list = baseDao.findBysql("select * from `mqtt_broker`.`iot_terminal` where id in("+ids+")", IotTerminal.class);
|
|
|
|
return list;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 根据id获取网关
|
|
|
|
* @param id
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public IotDevice getDeviceById(String id)
|
|
|
|
{
|
|
|
|
return (IotDevice) baseDao.get(IotDevice.class,"client_id='"+id+"'","`mqtt_broker`.`iot_device`");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 全量更新终端模型数据
|
|
|
|
* @param JSONObject
|
|
|
|
* @param id
|
|
|
|
*/
|
|
|
|
public void fullUpdateTerminal(JSONObject JSONObject,String id)
|
|
|
|
{
|
|
|
|
IotTerminal terminal = new IotTerminal();
|
|
|
|
terminal.setThings_model_value(JSONObject.toString());
|
|
|
|
terminal.setId(id);
|
|
|
|
terminal.setUpdate_time(DateUtils.getNowTimeMilly());
|
|
|
|
baseDao.update(terminal,"id");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 全量更新网关的模型数据
|
|
|
|
* @param JSONObject
|
|
|
|
* @param id
|
|
|
|
*/
|
|
|
|
public void fullUpdateDevice(JSONObject JSONObject,String id)
|
|
|
|
{
|
|
|
|
IotTerminal terminal = new IotTerminal();
|
|
|
|
terminal.setThings_model_value(JSONObject.toString());
|
|
|
|
terminal.setId(id);
|
|
|
|
terminal.setUpdate_time(DateUtils.getNowTimeMilly());
|
|
|
|
baseDao.update(terminal,"id");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取缓存网关信息
|
|
|
|
* @param id
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public IotDevice getRedicDevice(String id)
|
|
|
|
{
|
|
|
|
Object object = redisService.get(RedisConfig.FIELD+RedisConfig.DEVICE+id);
|
|
|
|
if(null != object)
|
|
|
|
{
|
|
|
|
return (IotDevice)object;
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updataDevice(IotDevice device)
|
|
|
|
{
|
|
|
|
setRedicDevice(device);
|
|
|
|
baseDao.saveOrUpdateObject(device);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 设置缓存网关信息
|
|
|
|
* @param device
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
private boolean setRedicDevice(IotDevice device)
|
|
|
|
{
|
|
|
|
return redisService.setexDevice(RedisConfig.FIELD+RedisConfig.DEVICE+device.getClient_id(),device);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取缓存终端信息
|
|
|
|
* @param id
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public IotTerminal getRedicTerminal(String id)
|
|
|
|
{
|
|
|
|
Object object = redisService.get(RedisConfig.FIELD+RedisConfig.TERMINAL+id);
|
|
|
|
if(null == object)
|
|
|
|
{
|
|
|
|
IotTerminal terminal = getTerminalById(id);
|
|
|
|
|
|
|
|
IotTerminal saveTerminal = new IotTerminal();
|
|
|
|
saveTerminal.setId(id);
|
|
|
|
if(null == terminal)
|
|
|
|
{
|
|
|
|
baseDao.saveOrUpdateObject(saveTerminal);
|
|
|
|
}else{
|
|
|
|
saveTerminal.setThings_model_value(terminal.getThings_model_value());
|
|
|
|
}
|
|
|
|
return saveTerminal;
|
|
|
|
}
|
|
|
|
return (IotTerminal)object;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* 设置缓存终端信息
|
|
|
|
* @param terminal
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
private boolean setRedicTerminal(IotTerminal terminal)
|
|
|
|
{
|
|
|
|
return redisService.setexDevice(RedisConfig.FIELD+RedisConfig.TERMINAL+terminal.getId(),terminal);
|
|
|
|
}
|
|
|
|
public void updataTerminal(IotTerminal terminal)
|
|
|
|
{
|
|
|
|
setRedicTerminal(terminal);
|
|
|
|
baseDao.saveOrUpdateObject(terminal);
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* 获取
|
|
|
|
* @param userId
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public IotThingsModel getThingsModelsByUserIdAndIdentifier(Integer userId, String identifier)
|
|
|
|
{
|
|
|
|
Object object = redisService.hget(RedisConfig.FIELD+RedisConfig.THINGS_MODEL+userId,identifier);
|
|
|
|
return null != object?(IotThingsModel)object:null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public JSONObject getNewdate(String oldstr, JSONObject saveJson)
|
|
|
|
{
|
|
|
|
JSONObject oldjs = new JSONObject();
|
|
|
|
if(StringUtils.isNoneBlank(oldstr))
|
|
|
|
{
|
|
|
|
oldjs = JSONObject.parseObject(oldstr);
|
|
|
|
}
|
|
|
|
for (String sk:saveJson.keySet())
|
|
|
|
{
|
|
|
|
oldjs.put(sk,saveJson.get(sk));
|
|
|
|
}
|
|
|
|
return oldjs;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|