Merge branch 'main' of github.com:dataease/dataease into main

This commit is contained in:
taojinlong
2021-04-29 10:47:25 +08:00
37 changed files with 860 additions and 296 deletions

View File

@@ -25,6 +25,8 @@ public class DynamicMenuDto implements Serializable {
private String permission;
private Boolean hidden;
private List<DynamicMenuDto> children;
}

View File

@@ -68,6 +68,9 @@ public class F2CRealm extends AuthorizingRealm {
if (user == null) {
throw new AuthenticationException("User didn't existed!");
}
if (user.getEnabled()==0) {
throw new AuthenticationException("User is valid!");
}
String pass = null;
try {
pass = user.getPassword();

View File

@@ -35,10 +35,14 @@ public class AuthServer implements AuthApi {
String username = loginDto.getUsername();
String password = loginDto.getPassword();
SysUserEntity user = authUserService.getUserByName(username);
String realPwd = user.getPassword();
if (ObjectUtils.isEmpty(user)){
throw new RuntimeException("没有该用户!");
}
if (user.getEnabled()==0){
throw new RuntimeException("用户已经失效!");
}
String realPwd = user.getPassword();
//私钥解密
String pwd = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, password);
//md5加密

View File

@@ -42,6 +42,7 @@ public class DynamicMenuServiceImpl implements DynamicMenuService {
menuMeta.setIcon(sysMenu.getIcon());
dynamicMenuDto.setMeta(menuMeta);
dynamicMenuDto.setPermission(sysMenu.getPermission());
dynamicMenuDto.setHidden(sysMenu.getHidden());
return dynamicMenuDto;
}

View File

@@ -13,6 +13,8 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.core.env.Environment;
import java.util.Date;
@@ -22,7 +24,9 @@ public class JWTUtils {
// token过期时间1min (过期会自动刷新续命 目的是避免一直都是同一个token )
private static final long EXPIRE_TIME = 1*60*1000;
// 登录间隔时间10min 超过这个时间强制重新登录
private static final long Login_Interval = 10*60*1000;
private static long Login_Interval;
/**
@@ -79,6 +83,11 @@ public class JWTUtils {
* @return
*/
public static boolean loginExpire(String token){
if (Login_Interval==0) {
String property = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.login_timeout");
int seconds = StringUtils.isNotEmpty(property) ? Integer.parseInt(property): (10*60);
Login_Interval = seconds * 1000;
}
Long now = System.currentTimeMillis();
Long lastOperateTime = tokenLastOperateTime(token);
boolean isExpire = false;
@@ -169,4 +178,5 @@ public class JWTUtils {
long now = System.currentTimeMillis();
tokens_expire.put(token, now);
}
}

View File

@@ -63,9 +63,9 @@ public class DataSetTableController {
return dataSetTableService.getData(dataSetTableRequest);
}
@PostMapping("getPreviewData")
public Map<String, Object> getPreviewData(@RequestBody DataSetTableRequest dataSetTableRequest) throws Exception {
return dataSetTableService.getPreviewData(dataSetTableRequest);
@PostMapping("getPreviewData/{page}/{pageSize}")
public Map<String, Object> getPreviewData(@RequestBody DataSetTableRequest dataSetTableRequest, @PathVariable Integer page, @PathVariable Integer pageSize) throws Exception {
return dataSetTableService.getPreviewData(dataSetTableRequest, page, pageSize);
}
@PostMapping("sqlPreview")

View File

@@ -0,0 +1,17 @@
package io.dataease.dto.dataset;
import lombok.Getter;
import lombok.Setter;
/**
* @Author gin
* @Date 2021/4/28 11:13 上午
*/
@Getter
@Setter
public class DataSetPreviewPage {
private Integer total = 0;
private Integer show = 0;
private Integer page = 1;
private Integer pageSize = 100;
}

View File

@@ -14,6 +14,7 @@ import io.dataease.datasource.dto.TableFiled;
import io.dataease.datasource.provider.DatasourceProvider;
import io.dataease.datasource.provider.ProviderFactory;
import io.dataease.datasource.request.DatasourceRequest;
import io.dataease.dto.dataset.DataSetPreviewPage;
import io.dataease.dto.dataset.DataTableInfoDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -34,7 +35,6 @@ import javax.annotation.Resource;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.sql.ResultSet;
import java.text.MessageFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -172,7 +172,7 @@ public class DataSetTableService {
return datasourceProvider.getData(datasourceRequest);
}
public Map<String, Object> getPreviewData(DataSetTableRequest dataSetTableRequest) throws Exception {
public Map<String, Object> getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize) throws Exception {
DatasetTableField datasetTableField = DatasetTableField.builder().build();
datasetTableField.setTableId(dataSetTableRequest.getId());
datasetTableField.setChecked(Boolean.TRUE);
@@ -183,6 +183,14 @@ public class DataSetTableService {
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(dataSetTableRequest.getId());
List<String[]> data = new ArrayList<>();
DataSetPreviewPage dataSetPreviewPage = new DataSetPreviewPage();
dataSetPreviewPage.setShow(Integer.valueOf(dataSetTableRequest.getRow()));
dataSetPreviewPage.setPage(page);
dataSetPreviewPage.setPageSize(pageSize);
int realSize = Integer.parseInt(dataSetTableRequest.getRow()) < pageSize ? Integer.parseInt(dataSetTableRequest.getRow()) : pageSize;
if (page == Integer.parseInt(dataSetTableRequest.getRow()) / pageSize + 1) {
realSize = Integer.parseInt(dataSetTableRequest.getRow()) % pageSize;
}
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
@@ -190,11 +198,18 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = dataTableInfoDTO.getTable();
datasourceRequest.setQuery(createQuerySQL(ds.getType(), table, fieldArray) + " LIMIT 0," + dataSetTableRequest.getRow());
datasourceRequest.setQuery(createQuerySQL(ds.getType(), table, fieldArray) + " LIMIT " + (page - 1) * realSize + "," + realSize);
try {
data.addAll(datasourceProvider.getData(datasourceRequest));
} catch (Exception e) {
e.printStackTrace();
}
try {
datasourceRequest.setQuery(createQueryCountSQL(ds.getType(), table));
dataSetPreviewPage.setTotal(Integer.valueOf(datasourceProvider.getData(datasourceRequest).get(0)[0]));
} catch (Exception e) {
e.printStackTrace();
}
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
@@ -203,11 +218,18 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String sql = dataTableInfoDTO.getSql();
datasourceRequest.setQuery(createQuerySQL(ds.getType(), " (" + sql + ") AS tmp ", fieldArray) + " LIMIT 0," + dataSetTableRequest.getRow());
datasourceRequest.setQuery(createQuerySQL(ds.getType(), " (" + sql + ") AS tmp ", fieldArray) + " LIMIT " + (page - 1) * realSize + "," + realSize);
try {
data.addAll(datasourceProvider.getData(datasourceRequest));
} catch (Exception e) {
e.printStackTrace();
}
try {
datasourceRequest.setQuery(createQueryCountSQL(ds.getType(), " (" + sql + ") AS tmp "));
dataSetPreviewPage.setTotal(Integer.valueOf(datasourceProvider.getData(datasourceRequest).get(0)[0]));
} catch (Exception e) {
e.printStackTrace();
}
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
@@ -229,6 +251,7 @@ public class DataSetTableService {
Map<String, Object> map = new HashMap<>();
map.put("fields", fields);
map.put("data", jsonArray);
map.put("page", dataSetPreviewPage);
return map;
}
@@ -314,6 +337,18 @@ public class DataSetTableService {
}
}
public String createQueryCountSQL(String type, String table) {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(type);
switch (datasourceType) {
case mysql:
return MessageFormat.format("SELECT count(*) FROM {0}", table);
case sqlServer:
return MessageFormat.format("SELECT count(*) FROM {0}", table);
default:
return MessageFormat.format("SELECT count(*) FROM {0}", table);
}
}
public String createQuerySQL(String type, String table, String[] fields) {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(type);
switch (datasourceType) {

View File

@@ -15,12 +15,12 @@ import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.request.SysUserCreateRequest;
import io.dataease.controller.sys.request.SysUserPwdRequest;
import io.dataease.controller.sys.request.SysUserStateRequest;
import io.dataease.controller.sys.request.UserGridRequest;
import io.dataease.controller.sys.response.SysUserGridResponse;
import io.dataease.controller.sys.response.SysUserRole;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -31,7 +31,10 @@ import java.util.stream.Collectors;
@Service
public class SysUserService {
private final static String DEFAULT_PWD = "DataEase123..";
//private final static String DEFAULT_PWD = "DataEase123..";
@Value("${dataease.init_password:DataEase123..}")
private String DEFAULT_PWD;
@Resource
private SysUserMapper sysUserMapper;
@@ -89,6 +92,7 @@ public class SysUserService {
}
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId")
public int updateStatus(SysUserStateRequest request){
SysUser sysUser = new SysUser();
sysUser.setUserId(request.getUserId());