Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
wangjiahao
2021-06-03 14:01:33 +08:00
23 changed files with 156 additions and 115 deletions

View File

@@ -6,7 +6,6 @@ import io.dataease.auth.entity.TokenInfo;
import io.dataease.auth.service.AuthUserService;
import io.dataease.auth.util.JWTUtils;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.i18n.Translator;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;

View File

@@ -84,24 +84,17 @@ public class JWTUtils {
*/
public static boolean loginExpire(String token){
if (Login_Interval==0) {
String property = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.login_timeout");
// 默认超时时间是8h
int minute = StringUtils.isNotEmpty(property) ? Integer.parseInt(property): (8*60);
int minute = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.login_timeout", Integer.class, 8*60);
// 分钟换算成毫秒
Login_Interval = minute * 1000 * 60;
}
Long now = System.currentTimeMillis();
Long lastOperateTime = tokenLastOperateTime(token);
if (ObjectUtils.isEmpty(lastOperateTime)) return true;
boolean isExpire = false;
if (lastOperateTime != null) {
isExpire = now - lastOperateTime > Login_Interval;
}
if (isExpire) {
// System.out.println("-----------------------");
// System.out.println("-----上次操作时间是["+lastOperateTime+"]-----");
// System.out.println("-----当前操作时间是["+now+"]-----");
// System.out.println("-----------------------");
}
return isExpire;
}
@@ -116,7 +109,7 @@ public class JWTUtils {
}
/**
* 生成签名,5min后过期
* 生成签名,1min后过期
* @param tokenInfo 用户信息
* @param secret 用户的密码
* @return 加密的token

View File

@@ -7,12 +7,13 @@ import io.dataease.dto.panel.PanelSharePo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface ExtPanelShareMapper {
int batchInsert(@Param("shares") List<PanelShare> shares);
List<PanelSharePo> query(GridExample example);
List<PanelSharePo> query(Map<String, Object> param);
List<PanelShare> queryWithResource(GridExample example);
}

View File

@@ -16,16 +16,17 @@
</foreach>
</insert>
<select id="query" parameterType="io.dataease.base.mapper.ext.query.GridExample" resultMap="treeNodeMap">
<select id="query" resultMap="treeNodeMap">
select distinct s.panel_group_id as id, g.create_by as creator, g.name
from panel_share s
left join panel_group g on g.id = s.panel_group_id
<if test="_parameter != null">
<include refid="io.dataease.base.mapper.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
where
( s.target_id = #{userId} and s.type = 0 ) or
( s.target_id = #{deptId} and s.type = 1 ) or
s.target_id in
<foreach collection="roleIds" item="roleId" open='(' separator=',' close=')'>
#{roleId}
</foreach>
<if test="orderByClause == null">
order by s.create_time desc
</if>

View File

@@ -21,18 +21,21 @@
<result column="dept_name" property="deptName" />
</association>
<association property="dept" column="dept_id" javaType="io.dataease.controller.sys.response.SysUserDept" resultMap="sysUserDept"/>
<collection property="roles" ofType="io.dataease.controller.sys.response.SysUserRole" >
<id column="role_id" property="roleId" />
<result column="role_name" property="roleName"/>
<collection property="roles"
javaType="java.util.ArrayList"
ofType="io.dataease.controller.sys.response.SysUserRole"
column="user_id"
select="queryRole">
</collection>
</resultMap>
<select id="query" parameterType="io.dataease.base.mapper.ext.query.GridExample" resultMap="BaseResultMap">
select u.*,u.user_id as id, r.role_id,r.name as role_name , d.pid, d.name as dept_name
from sys_user u left join sys_users_roles ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
select u.*,u.user_id as id, d.pid, d.name as dept_name
from sys_user u
left join sys_dept d on d.dept_id = u.dept_id
<if test="_parameter != null">
@@ -45,4 +48,11 @@
order by u.update_time desc
</if>
</select>
<select id="queryRole" resultMap="sysUserRole">
select r.role_id, r.name as role_name
from sys_users_roles sur
left join sys_role r on r.role_id = sur.role_id
where sur.user_id = #{user_id}
</select>
</mapper>

View File

@@ -202,7 +202,7 @@ public class JdbcProvider extends DatasourceProvider {
tableFiled.setFieldSize(Integer.valueOf(resultSet.getString("COLUMN_SIZE")));
String dbType = resultSet.getString("TYPE_NAME");
tableFiled.setFieldType(dbType);
if(StringUtils.isNotEmpty(dbType) && dbType.equalsIgnoreCase("date") && tableFiled.getFieldSize() < 50 ){
if(StringUtils.isNotEmpty(dbType) && dbType.toLowerCase().contains("date") && tableFiled.getFieldSize() < 50 ){
tableFiled.setFieldSize(50);
}
list.add(tableFiled);

View File

@@ -73,12 +73,17 @@ public class ScheduleManager {
triggerBuilder.withIdentity(triggerKey);
Date nTimeByCron = getNTimeByCron(cron);
if (startTime.before(new Date())) {
triggerBuilder.startAt(getNTimeByCron(cron));
triggerBuilder.startAt(nTimeByCron);
}
if (endTime != null) {
triggerBuilder.endAt(endTime);
if (endTime.before(nTimeByCron)) {
triggerBuilder.endAt(nTimeByCron);
} else {
triggerBuilder.endAt(endTime);
}
}
triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron));
@@ -151,12 +156,17 @@ public class ScheduleManager {
triggerBuilder.withIdentity(triggerKey);// 触发器名,触发器组
Date nTimeByCron = getNTimeByCron(cron);
if (startTime.before(new Date())) {
triggerBuilder.startAt(getNTimeByCron(cron));
triggerBuilder.startAt(nTimeByCron);
}
if (endTime != null) {
triggerBuilder.endAt(endTime);
if (endTime.before(nTimeByCron)) {
triggerBuilder.endAt(nTimeByCron);
} else {
triggerBuilder.endAt(endTime);
}
}
triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron));// 触发器时间设定

View File

@@ -132,6 +132,8 @@ public class DataSetTableService {
dataSetTableFieldsService.deleteByTableId(id);
// 删除同步任务
dataSetTableTaskService.deleteByTableId(id);
// 删除关联关系
dataSetTableUnionService.deleteUnionByTableId(id);
try {
deleteDorisTable(id, table);
} catch (Exception e) {
@@ -359,7 +361,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql();
// 使用输入的sql先预执行一次,并拿到所有字段
if(StringUtils.isEmpty(sql)){
if (StringUtils.isEmpty(sql)) {
throw new Exception(Translator.get("i18n_sql_not_empty"));
}
datasourceRequest.setQuery(sql);

View File

@@ -76,6 +76,14 @@ public class DataSetTableUnionService {
return sourceList;
}
public void deleteUnionByTableId(String tableId) {
DatasetTableUnionExample datasetTableUnionExample = new DatasetTableUnionExample();
DatasetTableUnionExample.Criteria criteriaSource = datasetTableUnionExample.createCriteria().andSourceTableIdEqualTo(tableId);
DatasetTableUnionExample.Criteria criteriaTarget = datasetTableUnionExample.createCriteria().andTargetTableIdEqualTo(tableId);
datasetTableUnionExample.or(criteriaTarget);
datasetTableUnionMapper.deleteByExample(datasetTableUnionExample);
}
private void checkUnion(DatasetTableUnion datasetTableUnion) {
// check 关联关系是否存在
DatasetTableUnionExample datasetTableUnionExample = new DatasetTableUnionExample();

View File

@@ -27,10 +27,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -38,8 +34,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.pentaho.di.cluster.SlaveServer;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.util.HttpClientManager;
import org.pentaho.di.core.util.Utils;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobExecutionConfiguration;
import org.pentaho.di.job.JobHopMeta;
@@ -57,7 +51,6 @@ import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.steps.excelinput.ExcelInputField;
import org.pentaho.di.trans.steps.excelinput.ExcelInputMeta;
import org.pentaho.di.trans.steps.excelinput.SpreadSheetType;
import org.pentaho.di.trans.steps.sql.ExecSQLMeta;
import org.pentaho.di.trans.steps.tableinput.TableInputMeta;
import org.pentaho.di.trans.steps.textfileoutput.TextFileField;
import org.pentaho.di.trans.steps.textfileoutput.TextFileOutputMeta;
@@ -70,16 +63,11 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.naming.AuthenticationException;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@Service
@@ -133,7 +121,7 @@ public class ExtractDataService {
switch (datasetTableField.getDeExtractType()) {
case 0:
if (datasetTableField.getSize() > 65533) {
Column_Fields = Column_Fields + "String" + ",`";
Column_Fields = Column_Fields + "varchar(65533)" + ",`";
} else {
Column_Fields = Column_Fields + "varchar(lenth)".replace("lenth", String.valueOf(datasetTableField.getSize())) + ",`";
}
@@ -513,9 +501,14 @@ public class ExtractDataService {
tmpSql = tmpSql + " limit 0";
}
datasourceRequest.setQuery(tmpSql);
return String.join(",", datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableFiled::getFieldName).collect(Collectors.toList()));
List<String>dorisFileds = new ArrayList<>();
datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableFiled::getFieldName).forEach(filed ->{
dorisFileds.add(DorisTableUtils.columnName(filed));
});
return String.join(",", dorisFileds);
}
private void generateTransFile(String extractType, DatasetTable datasetTable, Datasource datasource, List<DatasetTableField> datasetTableFields, String selectSQL) throws Exception {
TransMeta transMeta = new TransMeta();
String dorisOutputTable = null;
@@ -532,6 +525,7 @@ public class ExtractDataService {
case mysql:
MysqlConfigration mysqlConfigration = new Gson().fromJson(datasource.getConfiguration(), MysqlConfigration.class);
dataMeta = new DatabaseMeta("db", "MYSQL", "Native", mysqlConfigration.getHost(), mysqlConfigration.getDataBase(), mysqlConfigration.getPort().toString(), mysqlConfigration.getUsername(), mysqlConfigration.getPassword());
dataMeta.addExtraOption("MYSQL","characterEncoding", "UTF-8");
transMeta.addDatabase(dataMeta);
if (extractType.equalsIgnoreCase("all_scope")) {
String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable();

View File

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -92,7 +93,14 @@ public class ShareService {
Long deptId = user.getDeptId();
List<Long> roleIds = user.getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList());
List<Long> targetIds = new ArrayList<>();
Map<String, Object> param = new HashMap<>();
param.put("userId", userId);
param.put("deptId", deptId);
param.put("roleIds", roleIds);
List<PanelSharePo> datas = extPanelShareMapper.query(param);
/*List<Long> targetIds = new ArrayList<>();
targetIds.add(userId);
targetIds.add(deptId);
targetIds.addAll(roleIds);
@@ -105,14 +113,15 @@ public class ShareService {
request.setConditions(new ArrayList<ConditionEntity>(){{add(condition);}});
GridExample example = request.convertExample();
List<PanelSharePo> datas = extPanelShareMapper.query(example);
List<PanelSharePo> datas = extPanelShareMapper.query(example);*/
List<PanelShareDto> dtoLists = datas.stream().map(po -> BeanUtils.copyBean(new PanelShareDto(), po)).collect(Collectors.toList());
return convertTree(dtoLists);
}
//List构建Tree
private List<PanelShareDto> convertTree(List<PanelShareDto> datas){
Map<String, List<PanelShareDto>> map = datas.stream().filter(panelShareDto -> StringUtils.isNotEmpty(panelShareDto.getCreator())).collect(Collectors.groupingBy(PanelShareDto::getCreator));
String username = AuthUtils.getUser().getUsername();
Map<String, List<PanelShareDto>> map = datas.stream().filter(panelShareDto -> StringUtils.isNotEmpty(panelShareDto.getCreator()) && !StringUtils.equals(username, panelShareDto.getCreator())).collect(Collectors.groupingBy(PanelShareDto::getCreator));
return map.entrySet().stream().map(entry -> {
PanelShareDto panelShareDto = new PanelShareDto();
panelShareDto.setName(entry.getKey());