package com.genersoft.iot.vmp.service.impl; import com.genersoft.iot.vmp.gb28181.bean.GbStream; import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper; import com.genersoft.iot.vmp.service.IGbStreamService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import java.util.List; @Service public class GbStreamServiceImpl implements IGbStreamService { private final static Logger logger = LoggerFactory.getLogger(GbStreamServiceImpl.class); @Autowired DataSourceTransactionManager dataSourceTransactionManager; @Autowired TransactionDefinition transactionDefinition; @Autowired private GbStreamMapper gbStreamMapper; @Autowired private PlatformGbStreamMapper platformGbStreamMapper; @Override public PageInfo getAll(Integer page, Integer count) { PageHelper.startPage(page, count); List all = gbStreamMapper.selectAll(); return new PageInfo<>(all); } @Override public void del(String app, String stream) { gbStreamMapper.del(app, stream); } @Override public boolean addPlatformInfo(List gbStreams, String platformId) { // 放在事务内执行 boolean result = false; TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); try { for (GbStream gbStream : gbStreams) { gbStream.setPlatformId(platformId); platformGbStreamMapper.add(gbStream); } dataSourceTransactionManager.commit(transactionStatus); //手动提交 result = true; }catch (Exception e) { logger.error("批量保存流与平台的关系时错误", e); dataSourceTransactionManager.rollback(transactionStatus); } return result; } @Override public boolean delPlatformInfo(List gbStreams) { // 放在事务内执行 boolean result = false; TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); try { for (GbStream gbStream : gbStreams) { platformGbStreamMapper.delByAppAndStream(gbStream.getApp(), gbStream.getStream()); } dataSourceTransactionManager.commit(transactionStatus); //手动提交 result = true; }catch (Exception e) { logger.error("批量移除流与平台的关系时错误", e); dataSourceTransactionManager.rollback(transactionStatus); } return result; } }