package com.ld.igds.sec.service.impl; import com.ld.igds.camera.CameraUtil; import com.ld.igds.constant.RedisConst; import com.ld.igds.sec.dto.SecCameraDto; import com.ld.igds.sec.dto.SecurityParam; import com.ld.igds.sec.mapper.SecServiceMapper; import com.ld.igds.sec.service.CoreSecCameraService; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class CoreSecCameraServiceImpl implements CoreSecCameraService { @Autowired private SecServiceMapper serviceMapper; @Autowired private RedisUtil redisUtil; @Override public SecCameraDto getCameraById(String companyId, String cameraId) { if (null == companyId) { companyId = ContextUtil.getDefaultCompanyId(); } List list = this.getAllCacheCamera(companyId); if (null == list || list.isEmpty()) return null; for (SecCameraDto data : list) { if (data.getId().equals(cameraId)) return data; } return null; } @Override public void refreshCache(String companyId) { if (null == companyId) { companyId = ContextUtil.getDefaultCompanyId(); } List list = serviceMapper.findAllCamera(companyId); redisUtil.set(RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST), list); } @SuppressWarnings("unchecked") @Override public List getAllCacheCamera(String companyId) { if (null == companyId) { companyId = ContextUtil.getCompanyId(); } String key = RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST); List list = (List) redisUtil.get(key); if (null == list || list.isEmpty()) { list = serviceMapper.findAllCamera(companyId); redisUtil.set(key, list); } return list; } @Override public void updatePos(SecurityParam param) { serviceMapper.updatePosById(param); } @Override public void updateCameraStatus(String companyId) { if (null == companyId) { companyId = ContextUtil.getDefaultCompanyId(); } List list = getAllCacheCamera(companyId); if (null == list || list.isEmpty()) return; SecCameraDto dto; String status; for (int i = 0; i < list.size(); i++) { dto = list.get(i); status = CameraUtil.getCameraStatus(dto.getSn()); if (null != status) { dto.setStatus(status); list.set(i, dto); } } redisUtil.set(RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST), list); } @Override public void updateCamera(SecCameraDto data) { int i = serviceMapper.updateCamera(data); if(i < 1){ serviceMapper.addCamera(data); } } }