@Override public Boolean batchRemove(final List<String> ids, final String applicationName) { if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(applicationName)) { return Boolean.FALSE; } final String tableName = RepositoryPathUtils.buildDbTableName(applicationName); ids.stream() .map(id -> buildDelSql(tableName, id)) .forEach(sql -> jdbcTemplate.execute(sql)); return Boolean.TRUE; }
@Override public Boolean updateRetry(final String id, final Integer retry, final String applicationName) { if (StringUtils.isBlank(id) || StringUtils.isBlank(applicationName) || Objects.isNull(retry)) { return false; } final String tableName = RepositoryPathUtils.buildDbTableName(applicationName); String sqlBuilder = String.format("update %s set retried_count = \n%d,last_time= '%s' where id =%s", tableName, retry, DateUtils.getCurrentDateTime(), id); jdbcTemplate.execute(sqlBuilder); return Boolean.TRUE; }
@Override public CommonPager<TransactionRecoverVO> listByPage(final RecoverTransactionQuery query) { final String tableName = RepositoryPathUtils.buildDbTableName(query.getApplicationName()); final PageParameter pageParameter = query.getPageParameter(); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("select id,target_class,target_method," + " retried_count,create_time,last_time,version,group_id,task_id from ") .append(tableName).append(" where 1= 1 "); if (StringUtils.isNoneBlank(query.getTxGroupId())) { sqlBuilder.append(" and group_id = ").append(query.getTxGroupId()); } if (Objects.nonNull(query.getRetry())) { sqlBuilder.append(" and retried_count < ").append(query.getRetry()); } final String sql = buildPageSql(sqlBuilder.toString(), pageParameter); CommonPager<TransactionRecoverVO> pager = new CommonPager<>(); final List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql); if (CollectionUtils.isNotEmpty(mapList)) { pager.setDataList(mapList.stream() .map(this::buildByMap).collect(Collectors.toList())); } final Integer totalCount = jdbcTemplate.queryForObject(String.format("select count(1) from %s", tableName), Integer.class); pager.setPage(PageHelper.buildPage(pageParameter, totalCount)); return pager; }
@Override public void init(final String appName, final TxConfig txConfig) { dataSource = new DruidDataSource(); final TxDbConfig txDbConfig = txConfig.getTxDbConfig(); dataSource.setUrl(txDbConfig.getUrl()); dataSource.setDriverClassName(txDbConfig.getDriverClassName()); dataSource.setUsername(txDbConfig.getUsername()); dataSource.setPassword(txDbConfig.getPassword()); dataSource.setInitialSize(txDbConfig.getInitialSize()); dataSource.setMaxActive(txDbConfig.getMaxActive()); dataSource.setMinIdle(txDbConfig.getMinIdle()); dataSource.setMaxWait(txDbConfig.getMaxWait()); dataSource.setValidationQuery(txDbConfig.getValidationQuery()); dataSource.setTestOnBorrow(txDbConfig.getTestOnBorrow()); dataSource.setTestOnReturn(txDbConfig.getTestOnReturn()); dataSource.setTestWhileIdle(txDbConfig.getTestWhileIdle()); dataSource.setPoolPreparedStatements(txDbConfig.getPoolPreparedStatements()); dataSource.setMaxPoolPreparedStatementPerConnectionSize(txDbConfig.getMaxPoolPreparedStatementPerConnectionSize()); this.tableName = RepositoryPathUtils.buildDbTableName(appName); executeUpdate(SqlHelper.buildCreateTableSql(tableName, txDbConfig.getDriverClassName())); }