增加多选删除的服务端接口
This commit is contained in:
parent
e508d71c70
commit
6f8bd9b1b1
@ -37,6 +37,7 @@ import org.springframework.http.HttpHeaders;
|
|||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@ -228,6 +229,32 @@ public class ConfigController {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author klw
|
||||||
|
* @Description: delete configuration based on multiple config ids
|
||||||
|
* @Date 2019/7/5 10:26
|
||||||
|
* @Param [request, response, dataId, group, tenant, tag]
|
||||||
|
* @return java.lang.Boolean
|
||||||
|
*/
|
||||||
|
@RequestMapping(method = RequestMethod.DELETE)
|
||||||
|
@ResponseBody
|
||||||
|
public RestResult<Boolean> deleteConfigs(HttpServletRequest request, HttpServletResponse response,
|
||||||
|
@RequestParam(value = "ids")List<Long> ids) {
|
||||||
|
String clientIp = RequestUtil.getRemoteIp(request);
|
||||||
|
final Timestamp time = TimeUtils.getCurrentTime();
|
||||||
|
List<ConfigInfo> configInfoList = persistService.removeConfigInfoByIds(ids, clientIp, null);
|
||||||
|
if(!CollectionUtils.isEmpty(configInfoList)){
|
||||||
|
for(ConfigInfo configInfo : configInfoList) {
|
||||||
|
ConfigTraceService.logPersistenceEvent(configInfo.getDataId(), configInfo.getGroup(),
|
||||||
|
configInfo.getTenant(), null, time.getTime(), clientIp,
|
||||||
|
ConfigTraceService.PERSISTENCE_EVENT_REMOVE, null);
|
||||||
|
EventDispatcher.fireEvent(new ConfigDataChangeEvent(false, configInfo.getDataId(),
|
||||||
|
configInfo.getGroup(), configInfo.getTenant(), time.getTime()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ResultBuilder.buildSuccessResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/catalog", method = RequestMethod.GET)
|
@RequestMapping(value = "/catalog", method = RequestMethod.GET)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public RestResult<ConfigAdvanceInfo> getConfigAdvanceInfo(HttpServletRequest request, HttpServletResponse response,
|
public RestResult<ConfigAdvanceInfo> getConfigAdvanceInfo(HttpServletRequest request, HttpServletResponse response,
|
||||||
|
@ -23,6 +23,7 @@ import com.alibaba.nacos.config.server.utils.MD5;
|
|||||||
import com.alibaba.nacos.config.server.utils.PaginationHelper;
|
import com.alibaba.nacos.config.server.utils.PaginationHelper;
|
||||||
import com.alibaba.nacos.config.server.utils.ParamUtils;
|
import com.alibaba.nacos.config.server.utils.ParamUtils;
|
||||||
import com.alibaba.nacos.config.server.utils.event.EventDispatcher;
|
import com.alibaba.nacos.config.server.utils.event.EventDispatcher;
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -75,6 +76,10 @@ public class PersistService {
|
|||||||
|
|
||||||
private static final String SQL_TENANT_INFO_COUNT_BY_TENANT_ID = "select count(1) from tenant_info where tenant_id = ?";
|
private static final String SQL_TENANT_INFO_COUNT_BY_TENANT_ID = "select count(1) from tenant_info where tenant_id = ?";
|
||||||
|
|
||||||
|
private static final String SQL_FIND_CONFIG_INFO_BY_IDS = "SELECT ID,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE id in (?)";
|
||||||
|
|
||||||
|
private static final String SQL_DELETE_CONFIG_INFO_BY_IDS = "DELETE FROM config_info WHERE id in (?)";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author klw
|
* @author klw
|
||||||
* @Description: constant variables
|
* @Description: constant variables
|
||||||
@ -746,6 +751,42 @@ public class PersistService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author klw
|
||||||
|
* @Description: delete config info by ids
|
||||||
|
* @Date 2019/7/5 16:45
|
||||||
|
* @Param [ids, srcIp, srcUser]
|
||||||
|
* @return List<ConfigInfo> deleted configInfos
|
||||||
|
*/
|
||||||
|
public List<ConfigInfo> removeConfigInfoByIds(final List<Long> ids, final String srcIp, final String srcUser) {
|
||||||
|
if(CollectionUtils.isEmpty(ids)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
ids.removeAll(Collections.singleton(null));
|
||||||
|
return tjt.execute(new TransactionCallback<List<ConfigInfo>>() {
|
||||||
|
final Timestamp time = new Timestamp(System.currentTimeMillis());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ConfigInfo> doInTransaction(TransactionStatus status) {
|
||||||
|
try {
|
||||||
|
String idsStr = Joiner.on(",").join(ids);
|
||||||
|
List<ConfigInfo> configInfoList = findConfigInfosByIds(idsStr);
|
||||||
|
if (!CollectionUtils.isEmpty(configInfoList)) {
|
||||||
|
removeConfigInfoByIdsAtomic(idsStr);
|
||||||
|
for(ConfigInfo configInfo : configInfoList){
|
||||||
|
removeTagByIdAtomic(configInfo.getId());
|
||||||
|
insertConfigHistoryAtomic(configInfo.getId(), configInfo, srcIp, srcUser, time, "D");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return configInfoList;
|
||||||
|
} catch (CannotGetJdbcConnectionException e) {
|
||||||
|
fatalLog.error("[db-error] " + e.toString(), e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除beta配置信息, 物理删除
|
* 删除beta配置信息, 物理删除
|
||||||
*/
|
*/
|
||||||
@ -2787,6 +2828,25 @@ public class PersistService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author klw
|
||||||
|
* @Description: Delete configuration; database atomic operation, minimum SQL action, no business encapsulation
|
||||||
|
* @Date 2019/7/5 16:39
|
||||||
|
* @Param [id]
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private void removeConfigInfoByIdsAtomic(final String ids) {
|
||||||
|
if(StringUtils.isBlank(ids)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
jt.update(SQL_DELETE_CONFIG_INFO_BY_IDS, ids);
|
||||||
|
} catch (CannotGetJdbcConnectionException e) {
|
||||||
|
fatalLog.error("[db-error] " + e.toString(), e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除配置;数据库原子操作,最小sql动作,无业务封装
|
* 删除配置;数据库原子操作,最小sql动作,无业务封装
|
||||||
*
|
*
|
||||||
@ -2865,6 +2925,28 @@ public class PersistService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author klw
|
||||||
|
* @Description: find ConfigInfo by ids
|
||||||
|
* @Date 2019/7/5 16:37
|
||||||
|
* @Param [ids]
|
||||||
|
* @return java.util.List<com.alibaba.nacos.config.server.model.ConfigInfo>
|
||||||
|
*/
|
||||||
|
public List<ConfigInfo> findConfigInfosByIds(final String ids) {
|
||||||
|
if(StringUtils.isBlank(ids)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return this.jt.query(SQL_FIND_CONFIG_INFO_BY_IDS,
|
||||||
|
new Object[] {ids}, CONFIG_INFO_ROW_MAPPER);
|
||||||
|
} catch (EmptyResultDataAccessException e) { // 表明数据不存在, 返回null
|
||||||
|
return null;
|
||||||
|
} catch (CannotGetJdbcConnectionException e) {
|
||||||
|
fatalLog.error("[db-error] " + e.toString(), e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询配置信息;数据库原子操作,最小sql动作,无业务封装
|
* 查询配置信息;数据库原子操作,最小sql动作,无业务封装
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user