Commit 40183ee2 by yuwei

项目初始化

parent f2707f70
......@@ -24,5 +24,9 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies>
</project>
......@@ -12,7 +12,6 @@ public class ApiLogDto implements Serializable {
private String id;
private String apiId;
private String apiName;
private String callerId;
private String callerIp;
private String callerUrl;
......
......@@ -28,8 +28,6 @@ public class ServiceLogDto implements Serializable {
private String id;
@ApiModelProperty(value = "服务id")
private String serviceId;
@ApiModelProperty(value = "服务名称")
private String serviceName;
@ApiModelProperty(value = "调用者id")
private String callerId;
@ApiModelProperty(value = "调用者ip")
......
......@@ -11,6 +11,10 @@ public class SqlParseDto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "数据源")
@NotBlank(message = "数据源不能为空")
private String sourceId;
@ApiModelProperty(value = "SQL文本")
@NotBlank(message = "SQL不能为空")
private String sqlText;
......
......@@ -27,6 +27,7 @@ public class ApiLogEntity implements Serializable {
/**
* api名称
*/
@TableField(exist = false)
private String apiName;
/**
* 调用者id
......
package cn.datax.service.data.market.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import cn.datax.common.base.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
......@@ -41,6 +40,7 @@ public class ServiceLogEntity implements Serializable {
/**
* 服务名称
*/
@TableField(exist = false)
private String serviceName;
/**
......
......@@ -2,7 +2,13 @@ package cn.datax.service.data.market.integration.dao;
import cn.datax.common.base.BaseDao;
import cn.datax.service.data.market.api.entity.ServiceLogEntity;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
/**
* <p>
......@@ -15,4 +21,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ServiceLogDao extends BaseDao<ServiceLogEntity> {
@Override
ServiceLogEntity selectById(Serializable id);
@Override
<E extends IPage<ServiceLogEntity>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<ServiceLogEntity> queryWrapper);
}
......@@ -22,7 +22,30 @@
<sql id="Base_Column_List">
id,
status,
service_id, service_name, caller_id, caller_ip, caller_date, caller_header, caller_param, caller_soap, time, msg
service_id, caller_id, caller_ip, caller_date, caller_header, caller_param, caller_soap, time, msg
</sql>
<sql id="Log_Column_List">
${alias}.id,
${alias}.status,
${alias}.service_id, ${alias}.caller_id, ${alias}.caller_ip, ${alias}.caller_date,
${alias}.caller_header, ${alias}.caller_param, ${alias}.caller_soap, ${alias}.time, ${alias}.msg
</sql>
<select id="selectById" resultMap="BaseResultMap">
SELECT service.service_name,
<include refid="Log_Column_List"><property name="alias" value="log"/></include>
FROM market_service_log log
LEFT JOIN market_service_integration service ON service.id = log.service_id
WHERE 1 = 1 AND log.id = #{id}
</select>
<select id="selectPage" resultMap="BaseResultMap">
SELECT service.service_name,
<include refid="Log_Column_List"><property name="alias" value="log"/></include>
FROM market_service_log log
LEFT JOIN market_service_integration service ON service.id = log.service_id
${ew.customSqlSegment}
</select>
</mapper>
......@@ -72,7 +72,7 @@ public class ApiLogController extends BaseController {
@GetMapping("/page")
public R getApiLogPage(ApiLogQuery apiLogQuery) {
QueryWrapper<ApiLogEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StrUtil.isNotBlank(apiLogQuery.getApiName()), "api_name", apiLogQuery.getApiName());
queryWrapper.like(StrUtil.isNotBlank(apiLogQuery.getApiName()), "api.api_name", apiLogQuery.getApiName());
IPage<ApiLogEntity> page = apiLogService.page(new Page<>(apiLogQuery.getPageNum(), apiLogQuery.getPageSize()), queryWrapper);
List<ApiLogVo> collect = page.getRecords().stream().map(apiLogMapper::toVO).collect(Collectors.toList());
JsonPage<ApiLogVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
......
......@@ -2,8 +2,20 @@ package cn.datax.service.data.market.mapping.dao;
import cn.datax.common.base.BaseDao;
import cn.datax.service.data.market.api.entity.ApiLogEntity;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
@Mapper
public interface ApiLogDao extends BaseDao<ApiLogEntity> {
@Override
ApiLogEntity selectById(Serializable id);
@Override
<E extends IPage<ApiLogEntity>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<ApiLogEntity> queryWrapper);
}
......@@ -5,6 +5,7 @@ import cn.datax.common.exception.DataException;
import cn.datax.common.utils.IPUtil;
import cn.datax.common.utils.MD5Util;
import cn.datax.service.data.market.api.dto.ApiLogDto;
import cn.datax.service.data.market.api.dto.RateLimit;
import cn.datax.service.data.market.api.entity.DataApiEntity;
import cn.datax.service.data.market.api.enums.ParamType;
import cn.datax.service.data.market.mapping.utils.ThreadUtil;
......@@ -80,11 +81,10 @@ public class RequestInterceptor {
}
// 限流校验
String rateLimit = api.getRateLimit();
rateLimit = Optional.ofNullable(rateLimit).orElse(DataConstant.TrueOrFalse.TRUE.getKey());
if (DataConstant.TrueOrFalse.TRUE.getKey().equals(rateLimit)) {
Integer times = api.getTimes();
Integer seconds = api.getSeconds();
RateLimit rateLimit = api.getRateLimit();
if (DataConstant.TrueOrFalse.TRUE.getKey().equals(rateLimit.getEnable())) {
Integer times = rateLimit.getTimes();
Integer seconds = rateLimit.getSeconds();
// 请求次数
times = Optional.ofNullable(times).orElse(5);
// 请求时间范围60秒
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.datax.service.data.market.api.call.dao.ApiLogDao">
<mapper namespace="cn.datax.service.data.market.mapping.dao.ApiLogDao">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.datax.service.data.market.api.entity.ApiLogEntity">
......@@ -22,7 +22,29 @@
<sql id="Base_Column_List">
id,
status,
api_id, api_name, caller_id, caller_ip, caller_url, caller_params, caller_date, callerSize, time, msg
api_id, caller_id, caller_ip, caller_url, caller_params, caller_date, caller_size, time, msg
</sql>
<sql id="Log_Column_List">
${alias}.id,
${alias}.status,
${alias}.api_id, ${alias}.caller_id, ${alias}.caller_ip, ${alias}.caller_url, ${alias}.caller_params,
${alias}.caller_date, ${alias}.caller_size, ${alias}.time, ${alias}.msg
</sql>
<select id="selectById" resultMap="BaseResultMap">
SELECT api.api_name,
<include refid="Log_Column_List"><property name="alias" value="log"/></include>
FROM market_api_log log
LEFT JOIN market_api api ON api.id = log.api_id
WHERE 1 = 1 AND log.id = #{id}
</select>
<select id="selectPage" resultMap="BaseResultMap">
SELECT api.api_name,
<include refid="Log_Column_List"><property name="alias" value="log"/></include>
FROM market_api_log log
LEFT JOIN market_api api ON api.id = log.api_id
${ew.customSqlSegment}
</select>
</mapper>
......@@ -84,6 +84,11 @@
<artifactId>datax-common-rabbitmq</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>cn.datax</groupId>
<artifactId>data-metadata-service-api</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
......
......@@ -3,8 +3,10 @@ package cn.datax.service.data.market.service.impl;
import cn.datax.commo.office.word.WordUtil;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.R;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.exception.DataException;
import cn.datax.common.rabbitmq.config.RabbitMqConstant;
import cn.datax.common.redis.service.RedisService;
import cn.datax.common.utils.MD5Util;
import cn.datax.common.utils.SecurityUtil;
import cn.datax.common.utils.ThrowableUtil;
......@@ -17,6 +19,10 @@ import cn.datax.service.data.market.mapstruct.DataApiMapper;
import cn.datax.service.data.market.dao.DataApiDao;
import cn.datax.common.base.BaseServiceImpl;
import cn.datax.service.data.market.utils.SqlBuilderUtil;
import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity;
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
import cn.datax.service.data.metadata.api.entity.MetadataTableEntity;
import cn.hutool.core.util.StrUtil;
import com.aspose.words.Document;
import com.aspose.words.MailMerge;
import com.aspose.words.net.System.Data.DataRow;
......@@ -77,6 +83,9 @@ public class DataApiServiceImpl extends BaseServiceImpl<DataApiDao, DataApiEntit
@Autowired
private ObjectMapper objectMapper;
@Autowired
private RedisService redisService;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveDataApi(DataApiDto dataApiDto) {
......@@ -125,6 +134,7 @@ public class DataApiServiceImpl extends BaseServiceImpl<DataApiDao, DataApiEntit
@Override
public SqlParseVo sqlParse(SqlParseDto sqlParseDto) {
String sourceId = sqlParseDto.getSourceId();
String sql = sqlParseDto.getSqlText();
sql = sql.replace(SqlBuilderUtil.getInstance().MARK_KEY_START, "");
sql = sql.replace(SqlBuilderUtil.getInstance().MARK_KEY_END, "");
......@@ -157,21 +167,35 @@ public class DataApiServiceImpl extends BaseServiceImpl<DataApiDao, DataApiEntit
return reqParam;
}).collect(Collectors.toList());
sqlParseVo.setReqParams(reqParams);
List<ResParam> resParams = new ArrayList<>();
List<MetadataSourceEntity> sourceEntityList = (List<MetadataSourceEntity>) redisService.get(RedisConstant.METADATA_SOURCE_KEY);
MetadataSourceEntity sourceEntity = sourceEntityList.stream().filter(s -> sourceId.equals(s.getId())).findFirst().orElse(null);
if (sourceEntity != null) {
List<MetadataTableEntity> tableEntityList = (List<MetadataTableEntity>) redisService.hget(RedisConstant.METADATA_TABLE_KEY, sourceEntity.getId());
Map<String, List<Map<String, String>>> map = cols.stream().collect(Collectors.groupingBy(e -> e.get("tableName").toString()));
for (Map.Entry<String, List<Map<String, String>>> entry : map.entrySet()) {
String entryKey = entry.getKey().toLowerCase();
// 根据entryKey找到数据库表
List<Map<String, String>> entryValue = entry.getValue();
entryValue.stream().map(m -> m.get("columnName"));
}
// List<ResParam> resParams = cols.stream().map(s -> {
// ResParam resParam = new ResParam();
// resParam.setFieldName(s);
// return resParam;
// }).collect(Collectors.toList());
// sqlParseVo.setResParams(resParams);
MetadataTableEntity tableEntity = tableEntityList.stream().filter(t -> entryKey.equals(t.getTableName().toLowerCase())).findFirst().orElse(null);
if (tableEntity != null) {
List<MetadataColumnEntity> columnEntityList = (List<MetadataColumnEntity>) redisService.hget(RedisConstant.METADATA_COLUMN_KEY, tableEntity.getId());
entryValue.stream().forEach(m -> {
String columnName = m.get("columnName").toLowerCase();
String columnAliasName = m.get("columnAliasName");
MetadataColumnEntity columnEntity = columnEntityList.stream().filter(c -> columnName.equals(c.getColumnName().toLowerCase())).findFirst().orElse(null);
if (columnEntity != null) {
ResParam resParam = new ResParam();
resParam.setFieldName(columnEntity.getColumnName());
resParam.setFieldComment(StrUtil.isNotBlank(columnEntity.getColumnComment()) ? columnEntity.getColumnComment() : "");
resParam.setDataType(StrUtil.isNotBlank(columnEntity.getDataType()) ? columnEntity.getDataType() : "");
resParam.setFieldAliasName(StrUtil.isNotBlank(columnAliasName) ? columnAliasName : "");
resParams.add(resParam);
}
});
}
}
}
sqlParseVo.setResParams(resParams);
return sqlParseVo;
}
......
package cn.datax.service.data.metadata.config;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.service.RedisService;
import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity;
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
import cn.datax.service.data.metadata.api.entity.MetadataTableEntity;
import cn.datax.service.data.metadata.dao.MetadataColumnDao;
import cn.datax.service.data.metadata.dao.MetadataSourceDao;
import cn.datax.service.data.metadata.dao.MetadataTableDao;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
......@@ -17,6 +31,21 @@ public class StartedUpRunner implements ApplicationRunner {
private final ConfigurableApplicationContext context;
private final Environment environment;
@Autowired
private MetadataSourceDao metadataSourceDao;
@Autowired
private MetadataTableDao metadataTableDao;
@Autowired
private MetadataColumnDao metadataColumnDao;
@Autowired
private RedisService redisService;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Override
public void run(ApplicationArguments args) {
if (context.isActive()) {
......@@ -26,6 +55,30 @@ public class StartedUpRunner implements ApplicationRunner {
"端口号:" + environment.getProperty("server.port") + "\n" +
"-----------------------------------------";
System.out.println(banner);
// 项目启动时,初始化缓存
String sourceKey = RedisConstant.METADATA_SOURCE_KEY;
Boolean hasSourceKey = redisService.hasKey(sourceKey);
if (!hasSourceKey) {
List<MetadataSourceEntity> sourceEntityList = metadataSourceDao.selectList(Wrappers.emptyWrapper());
redisService.set(sourceKey, sourceEntityList);
}
String tableKey = RedisConstant.METADATA_TABLE_KEY;
Boolean hasTableKey = redisService.hasKey(tableKey);
if (!hasTableKey) {
List<MetadataTableEntity> tableEntityList = metadataTableDao.selectList(Wrappers.emptyWrapper());
Map<String, List<MetadataTableEntity>> tableListMap = tableEntityList.stream().collect(Collectors.groupingBy(MetadataTableEntity::getSourceId));
redisTemplate.opsForHash().putAll(tableKey, tableListMap);
}
String columnKey = RedisConstant.METADATA_COLUMN_KEY;
Boolean hasColumnKey = redisService.hasKey(columnKey);
if (!hasColumnKey) {
List<MetadataColumnEntity> columnEntityList = metadataColumnDao.selectList(Wrappers.emptyWrapper());
Map<String, List<MetadataColumnEntity>> columnListMap = columnEntityList.stream().collect(Collectors.groupingBy(MetadataColumnEntity::getTableId));
redisTemplate.opsForHash().putAll(columnKey, columnListMap);
}
}
}
}
......@@ -238,4 +238,15 @@ public class MetadataSourceController extends BaseController {
out.flush();
out.close();
}
/**
* 刷新参数缓存
*
* @return
*/
@GetMapping("/refresh")
public R refreshMetadata() {
metadataSourceService.refreshMetadata();
return R.ok();
}
}
......@@ -41,4 +41,6 @@ public interface MetadataSourceService extends BaseService<MetadataSourceEntity>
void syncMetadata(String id);
Document wordMetadata(String id) throws Exception;
void refreshMetadata();
}
......@@ -3,12 +3,14 @@ package cn.datax.service.data.metadata.service.impl;
import cn.datax.commo.office.word.WordUtil;
import cn.datax.common.base.BaseServiceImpl;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.database.DataSourceFactory;
import cn.datax.common.database.DbQuery;
import cn.datax.common.database.constants.DbQueryProperty;
import cn.datax.common.database.core.DbColumn;
import cn.datax.common.database.core.DbTable;
import cn.datax.common.exception.DataException;
import cn.datax.common.redis.service.RedisService;
import cn.datax.common.utils.SecurityUtil;
import cn.datax.service.data.metadata.api.dto.DbSchema;
import cn.datax.service.data.metadata.api.dto.MetadataSourceDto;
......@@ -29,14 +31,18 @@ import com.aspose.words.net.System.Data.DataRow;
import com.aspose.words.net.System.Data.DataSet;
import com.aspose.words.net.System.Data.DataTable;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
......@@ -68,6 +74,12 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
@Autowired
private MetadataColumnDao metadataColumnDao;
@Autowired
private RedisService redisService;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveMetadataSource(MetadataSourceDto metadataSourceDto) {
......@@ -231,4 +243,33 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
WordUtil.getInstance().insertWatermarkText(doc, SecurityUtil.getUserName());
return doc;
}
@Override
public void refreshMetadata() {
String sourceKey = RedisConstant.METADATA_SOURCE_KEY;
Boolean hasSourceKey = redisService.hasKey(sourceKey);
if (hasSourceKey) {
redisService.del(sourceKey);
}
List<MetadataSourceEntity> sourceEntityList = metadataSourceDao.selectList(Wrappers.emptyWrapper());
redisService.set(sourceKey, sourceEntityList);
String tableKey = RedisConstant.METADATA_TABLE_KEY;
Boolean hasTableKey = redisService.hasKey(tableKey);
if (hasTableKey) {
redisService.del(tableKey);
}
List<MetadataTableEntity> tableEntityList = metadataTableDao.selectList(Wrappers.emptyWrapper());
Map<String, List<MetadataTableEntity>> tableListMap = tableEntityList.stream().collect(Collectors.groupingBy(MetadataTableEntity::getSourceId));
redisTemplate.opsForHash().putAll(tableKey, tableListMap);
String columnKey = RedisConstant.METADATA_COLUMN_KEY;
Boolean hasColumnKey = redisService.hasKey(columnKey);
if (hasColumnKey) {
redisService.del(columnKey);
}
List<MetadataColumnEntity> columnEntityList = metadataColumnDao.selectList(Wrappers.emptyWrapper());
Map<String, List<MetadataColumnEntity>> columnListMap = columnEntityList.stream().collect(Collectors.groupingBy(MetadataColumnEntity::getTableId));
redisTemplate.opsForHash().putAll(columnKey, columnListMap);
}
}
......@@ -2,7 +2,6 @@ package cn.datax.service.system.dao;
import cn.datax.service.system.api.entity.DeptRelationEntity;
import cn.datax.common.base.BaseDao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -20,6 +19,5 @@ public interface DeptRelationDao extends BaseDao<DeptRelationEntity> {
void insertBatch(List<DeptRelationEntity> list);
@Delete("delete from sys_dept_relation where ancestor = #{id}")
void deleteByAncestor(String id);
}
......@@ -2,7 +2,6 @@ package cn.datax.service.system.dao;
import cn.datax.service.system.api.entity.RoleDeptEntity;
import cn.datax.common.base.BaseDao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -20,11 +19,7 @@ public interface RoleDeptDao extends BaseDao<RoleDeptEntity> {
void insertBatch(List<RoleDeptEntity> list);
@Delete("delete from sys_role_dept where role_id = #{id}")
void deleteByRoleId(String id);
@Delete("<script>" +
"delete from sys_role_dept where role_id in <foreach collection='list' item='id' open='(' separator=',' close=')'>#{id}</foreach>" +
"</script>")
void deleteByRoleIds(List<String> ids);
}
......@@ -2,7 +2,6 @@ package cn.datax.service.system.dao;
import cn.datax.service.system.api.entity.RoleMenuEntity;
import cn.datax.common.base.BaseDao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -20,11 +19,7 @@ public interface RoleMenuDao extends BaseDao<RoleMenuEntity> {
void insertBatch(List<RoleMenuEntity> list);
@Delete("delete from sys_role_menu where role_id = #{id}")
void deleteByRoleId(String id);
@Delete("<script>" +
"delete from sys_role_menu where role_id in <foreach collection='list' item='id' open='(' separator=',' close=')'>#{id}</foreach>" +
"</script>")
void deleteByRoleIds(List<String> ids);
}
......@@ -2,7 +2,6 @@ package cn.datax.service.system.dao;
import cn.datax.service.system.api.entity.UserPostEntity;
import cn.datax.common.base.BaseDao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -20,11 +19,7 @@ public interface UserPostDao extends BaseDao<UserPostEntity> {
void insertBatch(List<UserPostEntity> list);
@Delete("delete from sys_user_post where user_id = #{id}")
void deleteByUserId(String id);
@Delete("<script>" +
"delete from sys_user_post where user_id in <foreach collection='list' item='id' open='(' separator=',' close=')'>#{id}</foreach>" +
"</script>")
void deleteByUserIds(List<String> ids);
}
......@@ -2,7 +2,6 @@ package cn.datax.service.system.dao;
import cn.datax.common.base.BaseDao;
import cn.datax.service.system.api.entity.UserRoleEntity;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -20,11 +19,7 @@ public interface UserRoleDao extends BaseDao<UserRoleEntity> {
void insertBatch(List<UserRoleEntity> list);
@Delete("delete from sys_user_role where user_id = #{id}")
void deleteByUserId(String id);
@Delete("<script>" +
"delete from sys_user_role where user_id in <foreach collection='list' item='id' open='(' separator=',' close=')'>#{id}</foreach>" +
"</script>")
void deleteByUserIds(List<String> ids);
}
......@@ -24,4 +24,8 @@
</foreach>
</insert>
<delete id="deleteByAncestor">
DELETE FROM sys_dept_relation WHERE ancestor = #{id}
</delete>
</mapper>
......@@ -24,4 +24,15 @@
</foreach>
</insert>
<delete id="deleteByRoleId">
DELETE FROM sys_role_dept WHERE role_id = #{id}
</delete>
<delete id="deleteByRoleIds">
DELETE FROM sys_role_dept WHERE role_id IN
<foreach collection='list' item='id' open='(' separator=',' close=')'>
#{id}
</foreach>
</delete>
</mapper>
......@@ -24,4 +24,15 @@
</foreach>
</insert>
<delete id="deleteByRoleId">
DELETE FROM sys_role_menu WHERE role_id = #{id}
</delete>
<delete id="deleteByRoleIds">
DELETE FROM sys_role_menu WHERE role_id in
<foreach collection='list' item='id' open='(' separator=',' close=')'>
#{id}
</foreach>
</delete>
</mapper>
......@@ -24,4 +24,15 @@
</foreach>
</insert>
<delete id="deleteByUserId">
DELETE FROM sys_user_post WHERE user_id = #{id}
</delete>
<delete id="deleteByUserIds">
DELETE FROM sys_user_post WHERE user_id in
<foreach collection='list' item='id' open='(' separator=',' close=')'>
#{id}
</foreach>
</delete>
</mapper>
......@@ -24,4 +24,15 @@
</foreach>
</insert>
<delete id="deleteByUserId">
DELETE FROM sys_user_role WHERE user_id = #{id}
</delete>
<delete id="deleteByUserIds">
DELETE FROM sys_user_role WHERE user_id in
<foreach collection='list' item='id' open='(' separator=',' close=')'>
#{id}
</foreach>
</delete>
</mapper>
......@@ -23,7 +23,9 @@
<div class="right-menu">
<screenfull id="screenfull" class="right-menu-btn" />
<span class="right-menu-btn">
<el-badge is-dot class="badge">
<i class="el-icon-bell"></i>
</el-badge>
</span>
<el-dropdown>
<span class="right-menu-btn">
......
......@@ -47,6 +47,11 @@
cursor: pointer;
padding: 0 14px;
color: #fff;
.badge {
.el-badge__content {
margin-top: 10px;
}
}
&:hover {
background-color: mix(#000, #0086f1, 10%);
}
......
......@@ -48,6 +48,7 @@ service.interceptors.response.use(
},
error => {
loadingInstance.close()
console.log(error.response)
if (error.response.status) {
switch (error.response.status) {
// 401: 未登录
......
......@@ -45,7 +45,7 @@
</el-select>
</el-form-item>
<el-form-item label="IP黑名单" prop="deny">
<el-input v-model="form1.deny" type="textarea" placeholder="请输入IP黑名单多个用隔开" />
<el-input v-model="form1.deny" type="textarea" placeholder="请输入IP黑名单多个用英文,隔开" />
</el-form-item>
<el-form-item label="是否限流" prop="rateLimit">
<el-radio-group v-model="form1.rateLimit.enable">
......@@ -56,11 +56,9 @@
>{{ dict.itemValue }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form1.rateLimit.enable === '1'" label="请求次数" prop="times">
<el-input-number v-model="form1.rateLimit.times" controls-position="right" :min="1" />
</el-form-item>
<el-form-item v-if="form1.rateLimit.enable === '1'" label="请求时间范围" prop="seconds">
<el-input-number v-model="form1.rateLimit.seconds" controls-position="right" :min="1" />
<el-form-item v-if="form1.rateLimit.enable === '1'" label="限流配置">
<el-input-number v-model="form1.rateLimit.seconds" controls-position="right" :min="1" />秒内限制请求
<el-input-number v-model="form1.rateLimit.times" controls-position="right" :min="1" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form1.status" disabled>
......@@ -500,23 +498,13 @@ export default {
return
}
const data = {}
data.sourceId = this.form2.sourceId
data.sqlText = this.form2.sqlText
sqlParse(data).then(response => {
if (response.success) {
const { data } = response
const reqParams = data.reqParams
const resParams = data.resParams
this.form3.reqParams = reqParams.map(function(item) {
const json = {}
json.paramName = item.paramName
json.nullable = '0'
return json
})
this.form3.resParams = resParams.map(function(item) {
const json = {}
json.fieldName = item.fieldName
return json
})
this.form3.reqParams = data.reqParams
this.form3.resParams = data.resParams
this.$message.success('解析成功,请进行下一步')
}
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment