Merge branch 'dev' into pr@dev@fixrowpermissions

This commit is contained in:
taojinlong 2023-09-13 18:51:46 +08:00
commit fba54de4d2
105 changed files with 860 additions and 1817 deletions

View File

@ -4,11 +4,11 @@ ARG IMAGE_TAG
RUN mkdir -p /opt/apps /opt/dataease/data/feature/full /opt/dataease/drivers /opt/dataease/plugins/default
ADD core/mapFiles/* /opt/dataease/data/feature/full/
ADD core/mapFiles/full/ /opt/dataease/data/feature/full/
ADD core/drivers/* /opt/dataease/drivers/
ADD plugins/default/* /opt/dataease/plugins/default/
ADD plugins/default/ /opt/dataease/plugins/default/
ADD core/backend/target/backend-$IMAGE_TAG.jar /opt/apps

View File

@ -53,16 +53,12 @@ DataEase 是开源的数据可视化分析工具,帮助用户快速分析数
<img src="https://dataease.io/images/dataSource/kylin.jpg" alt="Kylin" border="0" width="180" height="107"/>
</p>
> 更多数据源支持持续增加中...
## DataEase 模板市场
- [模板市场](https://dataease.io/templates/)
![模板市场](https://dataease.io/images/templates/templates.gif)
> 更多优质模板持续增加中...
## 快速开始
**在线体验**
@ -97,7 +93,7 @@ curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start.sh | bash
- 图库:[Apache ECharts](https://github.com/apache/echarts)、[AntV](https://antv.vision/zh)
- 后端:[Spring Boot](https://spring.io/projects/spring-boot)
- 中间件:[MySQL](https://www.mysql.com/)
- 数据处理:[Kettle](https://github.com/pentaho/pentaho-kettle)、[Apache Doris](https://github.com/apache/incubator-doris/)
- 数据处理:[Kettle](https://github.com/pentaho/pentaho-kettle)、[Apache Doris](https://github.com/apache/doris/)
- 基础设施:[Docker](https://www.docker.com/)
## Star History
@ -108,7 +104,6 @@ curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start.sh | bash
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fdataease%2Fdataease.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fdataease%2Fdataease?ref=badge_large)
## License
Copyright (c) 2014-2023 [FIT2CLOUD 飞致云](https://fit2cloud.com/), All rights reserved.

View File

@ -3,7 +3,7 @@ package io.dataease.auth.aop;
import cn.hutool.core.util.ArrayUtil;
import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.exception.DEException;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.plugins.common.request.KeywordRequest;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
@ -35,10 +35,10 @@ public class SqlInjectAop {
if (args == null || args.length == 0) {
return point.proceed();
}
BaseGridRequest request = null;
KeywordRequest request = null;
for (int i = 0; i < args.length; i++) {
if (args[i] instanceof BaseGridRequest) {
request = (BaseGridRequest) args[i];
if (args[i] instanceof KeywordRequest) {
request = (KeywordRequest) args[i];
break;
}
}

View File

@ -8,8 +8,8 @@ import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.dataset.request.DatasetTaskGridRequest;
import io.dataease.controller.request.dataset.DataSetTaskRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.dataset.DataSetTaskDTO;
import io.dataease.plugins.common.base.domain.DatasetTableTask;
import io.dataease.service.dataset.DataSetTableTaskLogService;
@ -77,7 +77,7 @@ public class DataSetTableTaskController {
@ApiOperation("分页查询")
@PostMapping("/pageList/{goPage}/{pageSize}")
public Pager<List<DataSetTaskDTO>> taskList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody BaseGridRequest request) {
public Pager<List<DataSetTaskDTO>> taskList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody DatasetTaskGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
Pager<List<DataSetTaskDTO>> listPager = PageUtils.setPageInfo(page, dataSetTableTaskService.taskList4User(request));

View File

@ -4,16 +4,15 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.auth.annotation.DePermission;
import io.dataease.plugins.common.base.domain.DatasetTableTaskLog;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.dataset.request.DataSetTaskInstanceGridRequest;
import io.dataease.dto.dataset.DataSetTaskLogDTO;
import io.dataease.plugins.common.base.domain.DatasetTableTaskLog;
import io.dataease.service.dataset.DataSetTableTaskLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@ -41,14 +40,14 @@ public class DataSetTableTaskLogController {
@ApiOperation("分页查询")
@PostMapping("list/{type}/{goPage}/{pageSize}")
public Pager<List<DataSetTaskLogDTO>> list(@RequestBody BaseGridRequest request, @PathVariable String type, @PathVariable int goPage, @PathVariable int pageSize) {
public Pager<List<DataSetTaskLogDTO>> list(@RequestBody DataSetTaskInstanceGridRequest request, @PathVariable String type, @PathVariable int goPage, @PathVariable int pageSize) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, dataSetTableTaskLogService.listTaskLog(request, type));
}
@ApiOperation("分页查询")
@PostMapping("listForDataset/{type}/{goPage}/{pageSize}")
public Pager<List<DataSetTaskLogDTO>> listForDataset(@RequestBody BaseGridRequest request, @PathVariable String type, @PathVariable int goPage, @PathVariable int pageSize) {
public Pager<List<DataSetTaskLogDTO>> listForDataset(@RequestBody DataSetTaskInstanceGridRequest request, @PathVariable String type, @PathVariable int goPage, @PathVariable int pageSize) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, dataSetTableTaskLogService.listTaskLog(request, type));
}
@ -56,7 +55,7 @@ public class DataSetTableTaskLogController {
@ApiOperation("导出同步日志")
@PostMapping("export")
public void export(@RequestBody BaseGridRequest request) throws Exception{
public void export(@RequestBody DataSetTaskInstanceGridRequest request) throws Exception {
dataSetTableTaskLogService.exportExcel(request);
}

View File

@ -0,0 +1,20 @@
package io.dataease.controller.dataset.request;
import io.dataease.plugins.common.request.KeywordRequest;
import lombok.Data;
import java.util.List;
@Data
public class DataSetTaskInstanceGridRequest extends KeywordRequest {
private String id;
private List<String> lastExecStatus;
private Long[] lastExecTime;
private List<String> tableId;
private List<String> excludedIdList;
}

View File

@ -0,0 +1,24 @@
package io.dataease.controller.dataset.request;
import io.dataease.plugins.common.request.KeywordRequest;
import lombok.Data;
import java.util.List;
@Data
public class DatasetTaskGridRequest extends KeywordRequest {
private List<String> rate;
private List<String> status;
private List<String> lastExecStatus;
private List<String> tableId;
private Long[] lastExecTime;
private String id;
private Long userId;
}

View File

@ -7,7 +7,7 @@ import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.handler.annotation.I18n;
import io.dataease.controller.sys.request.KeyGridRequest;
import io.dataease.controller.request.panel.AppLogGridRequest;
import io.dataease.dto.appTemplateMarket.AppLogGridDTO;
import io.dataease.service.panel.applog.AppLogService;
import io.swagger.annotations.Api;
@ -38,7 +38,7 @@ public class AppLogController {
})
@SqlInjectValidator(value = {"apply_time"})
public Pager<List<AppLogGridDTO>> logGrid(@PathVariable int goPage, @PathVariable int pageSize,
@RequestBody KeyGridRequest request) {
@RequestBody AppLogGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, appLogService.query(request));
}

View File

@ -2,16 +2,14 @@ package io.dataease.controller.panel.api;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.auth.annotation.DePermission;
import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.plugins.common.base.domain.PanelShare;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.controller.request.panel.PanelShareFineDto;
import io.dataease.controller.request.panel.PanelShareRemoveRequest;
import io.dataease.controller.request.panel.PanelShareSearchRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelShareDto;
import io.dataease.dto.panel.PanelShareOutDTO;
import io.dataease.dto.panel.PanelSharePo;
import io.dataease.plugins.common.base.domain.PanelShare;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@ -31,8 +29,7 @@ public interface ShareApi {
@ApiOperation("查询分享给我")
@PostMapping("/treeList")
@SqlInjectValidator(value = {"s.create_time"})
List<PanelShareDto> treeList(BaseGridRequest request);
List<PanelShareDto> treeList();
@ApiOperation("查询我分享的")
@PostMapping("/shareOut")

View File

@ -2,15 +2,12 @@ package io.dataease.controller.panel.api;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.auth.annotation.DePermission;
import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelStoreDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@ -32,8 +29,7 @@ public interface StoreApi {
@ApiOperation("查询收藏")
@PostMapping("/list")
@SqlInjectValidator(value = {"s.create_time"})
List<PanelStoreDto> list(@RequestBody BaseGridRequest request);
List<PanelStoreDto> list();
@ApiOperation("移除收藏")

View File

@ -1,14 +1,13 @@
package io.dataease.controller.panel.server;
import io.dataease.plugins.common.base.domain.PanelShare;
import io.dataease.controller.panel.api.ShareApi;
import io.dataease.controller.request.panel.PanelShareFineDto;
import io.dataease.controller.request.panel.PanelShareRemoveRequest;
import io.dataease.controller.request.panel.PanelShareSearchRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelShareDto;
import io.dataease.dto.panel.PanelShareOutDTO;
import io.dataease.dto.panel.PanelSharePo;
import io.dataease.plugins.common.base.domain.PanelShare;
import io.dataease.service.panel.ShareService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@ -24,8 +23,8 @@ public class ShareServer implements ShareApi {
private ShareService shareService;
@Override
public List<PanelShareDto> treeList(@RequestBody BaseGridRequest request) {
return shareService.queryTree(request);
public List<PanelShareDto> treeList() {
return shareService.queryTree();
}
@Override

View File

@ -1,7 +1,6 @@
package io.dataease.controller.panel.server;
import io.dataease.controller.panel.api.StoreApi;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelStoreDto;
import io.dataease.service.panel.StoreService;
import org.springframework.beans.factory.annotation.Autowired;
@ -21,8 +20,8 @@ public class StoreServer implements StoreApi {
}
@Override
public List<PanelStoreDto> list(BaseGridRequest request) {
return storeService.query(request);
public List<PanelStoreDto> list() {
return storeService.query();
}
@Override

View File

@ -0,0 +1,11 @@
package io.dataease.controller.request.panel;
import io.dataease.plugins.common.request.KeywordRequest;
import lombok.Data;
@Data
public class AppLogGridRequest extends KeywordRequest {
private Long[] applyTime;
private Long userId;
}

View File

@ -3,10 +3,10 @@ package io.dataease.controller.sys;
import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.ResultHolder;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.response.DeptNodeResponse;
import io.dataease.controller.sys.response.DeptTreeNode;
import io.dataease.plugins.common.base.domain.SysDept;
import io.dataease.plugins.xpack.dept.dto.request.XpackDeptGridRequest;
import io.dataease.service.sys.DeptService;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
@ -42,7 +42,7 @@ public class SysDeptController extends ResultHolder {
@PostMapping("/search")
@SqlInjectValidator({"name"})
public List<DeptNodeResponse> search(@RequestBody BaseGridRequest request){
public List<DeptNodeResponse> search(@RequestBody XpackDeptGridRequest request){
List<SysDept> nodes = deptService.nodesTreeByCondition(request);
List<DeptNodeResponse> nodeResponses = nodes.stream().map(node -> {
DeptNodeResponse deptNodeResponse = BeanUtils.copyBean(new DeptNodeResponse(), node);

View File

@ -7,7 +7,7 @@ import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.handler.annotation.I18n;
import io.dataease.controller.sys.request.KeyGridRequest;
import io.dataease.controller.sys.request.LogGridRequest;
import io.dataease.dto.SysLogGridDTO;
import io.dataease.dto.log.FolderItem;
import io.dataease.service.sys.log.LogService;
@ -39,8 +39,7 @@ public class SysLogController {
})
@SqlInjectValidator(value = {"time"})
public Pager<List<SysLogGridDTO>> logGrid(@PathVariable int goPage, @PathVariable int pageSize,
@RequestBody KeyGridRequest request) {
request = logService.logRetentionProxy(request);
@RequestBody LogGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, logService.query(request));
}
@ -54,7 +53,7 @@ public class SysLogController {
@ApiOperation("导出操作日志")
@PostMapping("/export")
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
public void export(@RequestBody KeyGridRequest request) throws Exception {
public void export(@RequestBody LogGridRequest request) throws Exception {
logService.exportExcel(request);
}
}

View File

@ -1,15 +1,12 @@
package io.dataease.controller.sys;
import io.dataease.plugins.common.base.domain.SysMenu;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.handler.annotation.I18n;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.request.MenuCreateRequest;
import io.dataease.controller.sys.request.MenuDeleteRequest;
import io.dataease.controller.sys.response.MenuNodeResponse;
import io.dataease.controller.sys.response.MenuTreeNode;
import io.dataease.plugins.common.base.domain.SysMenu;
import io.dataease.service.sys.MenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -21,6 +18,7 @@ import javax.annotation.Resource;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@ApiIgnore
@RestController
@RequiredArgsConstructor
@ -34,61 +32,44 @@ public class SysMenuController {
@ApiOperation("查询跟节点菜单")
@I18n
@PostMapping("/childNodes/{pid}")
public List<MenuNodeResponse> childNodes(@PathVariable("pid") Long pid){
public List<MenuNodeResponse> childNodes(@PathVariable("pid") Long pid) {
List<SysMenu> nodes = menuService.nodesByPid(pid);
nodes = nodes.stream().filter(node -> !node.getHidden()).collect(Collectors.toList());
return menuService.convert(nodes);
}
@ApiOperation("搜索菜单树")
@I18n
@PostMapping("/search")
public List<MenuNodeResponse> search(@RequestBody BaseGridRequest request) {
List<SysMenu> nodes = menuService.nodesTreeByCondition(request);
List<MenuNodeResponse> nodeResponses = nodes.stream().map(node -> {
MenuNodeResponse menuNodeResponse = BeanUtils.copyBean(new MenuNodeResponse(), node);
menuNodeResponse.setHasChildren(node.getSubCount() > 0);
menuNodeResponse.setTop(node.getPid() == menuService.MENU_ROOT_PID);
return menuNodeResponse;
}).collect(Collectors.toList());
return nodeResponses;
}
@ApiOperation("新增菜单")
@PostMapping("/create")
public void create(@RequestBody MenuCreateRequest request){
public void create(@RequestBody MenuCreateRequest request) {
menuService.add(request);
}
@ApiOperation("删除菜单")
@PostMapping("/delete")
public void delete(@RequestBody MenuDeleteRequest request){
public void delete(@RequestBody MenuDeleteRequest request) {
menuService.delete(request);
}
@ApiOperation("更新菜单")
@PostMapping("/update")
public void update(@RequestBody MenuCreateRequest menu){
public void update(@RequestBody MenuCreateRequest menu) {
menuService.update(menu);
}
@PostMapping("/childMenus/{pid}")
public Set<Long> childMenus(@PathVariable Long pid){
public Set<Long> childMenus(@PathVariable Long pid) {
List<MenuNodeResponse> children = menuService.children(pid);
Set<Long> sets = children.stream().map(MenuNodeResponse::getMenuId).collect(Collectors.toSet());
sets.add(pid);
return sets;
}
@PostMapping("/nodesByMenuId/{menuId}")
public List<MenuTreeNode> nodesByMenuId(@PathVariable("menuId") Long menuId) {
return menuService.searchTree(menuId);
return menuService.searchTree(menuId);
}
}

View File

@ -6,8 +6,8 @@ import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.utils.DeFileUtils;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.plugins.common.base.domain.MyPlugin;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.service.sys.PluginService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -33,7 +33,7 @@ public class SysPluginController {
@PostMapping("/pluginGrid/{goPage}/{pageSize}")
@RequiresPermissions("plugin:read")
@SqlInjectValidator(value = {"install_time"})
public Pager<List<MyPlugin>> pluginGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody BaseGridRequest request) {
public Pager<List<MyPlugin>> pluginGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody KeywordRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, pluginService.query(request));
}

View File

@ -14,15 +14,13 @@ import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.response.ExistLdapUser;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.request.KeyGridRequest;
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.AuthBindDTO;
import io.dataease.controller.sys.response.RoleUserItem;
import io.dataease.controller.sys.response.SysUserGridResponse;
@ -31,6 +29,7 @@ import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysRole;
import io.dataease.plugins.common.base.domain.SysUser;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.service.sys.SysRoleService;
import io.dataease.service.sys.SysUserService;
import io.swagger.annotations.Api;
@ -81,7 +80,7 @@ public class SysUserController {
})
@SqlInjectValidator(value = {"create_time", "u.enabled", "nick_name", "u.dept_id"})
public Pager<List<SysUserGridResponse>> userGrid(@PathVariable int goPage, @PathVariable int pageSize,
@RequestBody KeyGridRequest request) {
@RequestBody UserGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
List<SysUserGridResponse> users = sysUserService.query(request);
users.forEach(user -> {
@ -95,9 +94,8 @@ public class SysUserController {
@ApiIgnore
@PostMapping("/userLists")
@SqlInjectValidator({"nick_name", "create_time"})
public List<SysUserGridResponse> userLists(@RequestBody BaseGridRequest request) {
KeyGridRequest keyGridRequest = BeanUtils.copyBean(new KeyGridRequest(), request);
List<SysUserGridResponse> users = sysUserService.query(keyGridRequest);
public List<SysUserGridResponse> userLists(@RequestBody UserGridRequest request) {
List<SysUserGridResponse> users = sysUserService.query(request);
if (CollectionUtils.isEmpty(users)) return users;
users.forEach(user -> {
user.setPassword(null);
@ -113,7 +111,7 @@ public class SysUserController {
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
})
@SqlInjectValidator(value = {"create_time", "u.enabled", "nick_name", "u.dept_id"})
public Pager<List<SysUserGridResponse>> userGrids(@PathVariable String datasetId, @RequestBody KeyGridRequest request) {
public Pager<List<SysUserGridResponse>> userGrids(@PathVariable String datasetId, @RequestBody UserGridRequest request) {
return userGrid(0, 0, request);
}
@ -234,12 +232,11 @@ public class SysUserController {
@ApiImplicitParam(paramType = "path", name = "pageSize", value = "页容量", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
})
@SqlInjectValidator({"create_time", "update_time"})
public Pager<List<SysRole>> roleGrid(@PathVariable int goPage, @PathVariable int pageSize,
@RequestBody BaseGridRequest request) {
@SqlInjectValidator({"create_time"})
public Pager<List<SysRole>> roleGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody KeywordRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
Pager<List<SysRole>> listPager = PageUtils.setPageInfo(page, sysRoleService.query(request));
return listPager;
return PageUtils.setPageInfo(page, sysRoleService.query(request));
}
@ApiOperation("已同步用户")

View File

@ -1,52 +0,0 @@
package io.dataease.controller.sys.base;
import io.dataease.ext.query.GridExample;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.collections.CollectionUtils;
import java.io.Serializable;
import java.util.List;
@ApiModel("查询条件")
public class BaseGridRequest implements Serializable {
@ApiModelProperty("条件集合")
private List<ConditionEntity> conditions;
public List<ConditionEntity> getConditions() {
return conditions;
}
public void setConditions(List<ConditionEntity> conditions) {
this.conditions = conditions;
}
public List<String> getOrders() {
return orders;
}
public void setOrders(List<String> orders) {
this.orders = orders;
}
@ApiModelProperty("排序描述")
private List<String> orders;
public GridExample convertExample(){
GridExample gridExample = new GridExample();
if (CollectionUtils.isNotEmpty(conditions)) {
GridExample.Criteria criteria = gridExample.createCriteria();
conditions.forEach(criteria::addCondition);
}
if (CollectionUtils.isNotEmpty(orders)){
String orderByClause = String.join(", ", orders);
gridExample.setOrderByClause(orderByClause);
}
return gridExample;
}
}

View File

@ -1,20 +0,0 @@
package io.dataease.controller.sys.base;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class ConditionEntity implements Serializable {
@ApiModelProperty(value = "字段")
private String field;
@ApiModelProperty(value = "操作符")
private String operator;
@ApiModelProperty(value = "字段值")
private Object value;
}

View File

@ -1,13 +0,0 @@
package io.dataease.controller.sys.request;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class KeyGridRequest extends BaseGridRequest implements Serializable {
@ApiModelProperty("关键字")
private String keyWord;
}

View File

@ -0,0 +1,16 @@
package io.dataease.controller.sys.request;
import io.dataease.plugins.common.request.KeywordRequest;
import lombok.Data;
import java.util.List;
@Data
public class LogGridRequest extends KeywordRequest {
private List<String> optypeList;
private List<Long> userIdList;
private Long[] timeList;
}

View File

@ -1,6 +1,6 @@
package io.dataease.controller.sys.request;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.plugins.common.request.KeywordRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -9,7 +9,7 @@ import java.io.Serializable;
@Data
@ApiModel("消息条件")
public class MsgRequest extends BaseGridRequest implements Serializable {
public class MsgRequest extends KeywordRequest implements Serializable {
private static final long serialVersionUID = 1920091635946508658L;

View File

@ -0,0 +1,19 @@
package io.dataease.controller.sys.request;
import io.dataease.plugins.common.request.KeywordRequest;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class UserGridRequest extends KeywordRequest {
@ApiModelProperty("角色ID列表")
private List<Long> roleIdList;
@ApiModelProperty("组织ID列表")
private List<Long> deptIdList;
@ApiModelProperty("状态")
private List<Integer> enabledList;
}

View File

@ -1,9 +1,10 @@
package io.dataease.ext;
import io.dataease.controller.request.panel.AppLogGridRequest;
import io.dataease.dto.appTemplateMarket.AppLogGridDTO;
import io.dataease.service.panel.applog.AppLogQueryParam;
import java.util.List;
public interface ExtAppLogMapper {
List<AppLogGridDTO> query(AppLogQueryParam example);
List<AppLogGridDTO> query(AppLogGridRequest request);
}

View File

@ -14,7 +14,7 @@
<result column="panel_privileges" property="panelPrivileges"/>
<result column="datasource_privileges" property="datasourcePrivileges"/>
</resultMap>
<select id="query" parameterType="io.dataease.service.panel.applog.AppLogQueryParam" resultMap="BaseResultMapDTO">
<select id="query" parameterType="io.dataease.controller.request.panel.AppLogGridRequest" resultMap="BaseResultMapDTO">
select
logInfo.*,
get_auths(logInfo.dataset_group_id,'dataset',#{userId}) as `dataset_privileges`,
@ -53,27 +53,34 @@
left join panel_app_template on panel_app_template_log.app_template_id = panel_app_template.id
) t
where 1=1
<if test="extendCondition != null">
<if test="keyword != null">
and
(
t.app_name like concat('%', #{extendCondition} , '%')
t.app_name like concat('%', #{keyword} , '%')
or
t.panel_name like concat('%', #{extendCondition} , '%')
t.panel_name like concat('%', #{keyword} , '%')
or
t.dataset_group_name like concat('%', #{extendCondition} , '%')
t.dataset_group_name like concat('%', #{keyword} , '%')
or
t.datasource_name like concat('%', #{extendCondition} , '%')
t.datasource_name like concat('%', #{keyword} , '%')
)
</if>
) logInfo
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition"/>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by apply_time desc
<if test="applyTime != null and applyTime.length > 1">
and (apply_time between #{applyTime.[0]} and #{applyTime.[1]}
</if>
<choose>
<when test="orders!=null and orders.size > 0">
order by
<foreach collection="orders" item="item" open='' separator=',' close=''>
${item}
</foreach>
</when>
<otherwise>
order by apply_time desc
</otherwise>
</choose>
</select>
</mapper>

View File

@ -1,8 +1,9 @@
package io.dataease.ext;
import io.dataease.controller.dataset.request.DataSetTaskInstanceGridRequest;
import io.dataease.controller.dataset.request.DatasetTaskGridRequest;
import io.dataease.dto.dataset.DataSetTaskDTO;
import io.dataease.dto.dataset.DataSetTaskLogDTO;
import io.dataease.ext.query.GridExample;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -14,15 +15,15 @@ import java.util.List;
*/
@Mapper
public interface ExtDataSetTaskMapper {
List<DataSetTaskLogDTO> listTaskLog(GridExample example);
List<DataSetTaskLogDTO> listTaskLog(DataSetTaskInstanceGridRequest request);
List<DataSetTaskLogDTO> listUserTaskLog(GridExample example);
List<DataSetTaskLogDTO> listUserTaskLog(DataSetTaskInstanceGridRequest request);
List<DataSetTaskDTO> taskList(GridExample example);
List<DataSetTaskDTO> taskList(DatasetTaskGridRequest request);
List<DataSetTaskDTO> userTaskList(GridExample example);
List<DataSetTaskDTO> userTaskList(DatasetTaskGridRequest request);
List<DataSetTaskDTO> taskWithTriggers(GridExample example);
List<DataSetTaskDTO> taskWithTriggers(DatasetTaskGridRequest request);
List<DataSetTaskDTO> findByPanelId(@Param("panelId") String panelId);

View File

@ -21,15 +21,32 @@
FROM dataset_table_task_log
LEFT JOIN dataset_table_task ON dataset_table_task_log.task_id = dataset_table_task.id
LEFT JOIN dataset_table ON dataset_table_task_log.table_id = dataset_table.id
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition"/>
where 1=1
<if test="id != null">
and dataset_table_task.id = #{id}
</if>
<if test="orderByClause != null">
order by ${orderByClause}
<if test="lastExecStatus != null and lastExecStatus.size() > 0">
and dataset_table_task_log.status in
<foreach collection="lastExecStatus" open="(" close=")" separator="," item="status">
#{status}
</foreach>
</if>
<if test="orderByClause == null">
ORDER BY dataset_table_task_log.create_time desc
<if test="tableId != null and tableId.size() > 0">
and dataset_table.id in
<foreach collection="tableId" open="(" close=")" separator="," item="tid">
#{tid}
</foreach>
</if>
<if test="lastExecTime != null and lastExecTime.length > 1">
and (dataset_table_task.last_exec_time between #{lastExecTime.[0]} and #{lastExecTime.[1]})
</if>
<if test="keyword != null">
and dataset_table_task.name like concat('%', #{keyword}, '%')
</if>
ORDER BY dataset_table_task_log.create_time desc
</select>
<select id="listUserTaskLog" resultMap="BaseResult"
@ -38,82 +55,132 @@
FROM dataset_table_task_log
LEFT JOIN dataset_table_task ON dataset_table_task_log.task_id = dataset_table_task.id
LEFT JOIN dataset_table ON dataset_table_task_log.table_id = dataset_table.id
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.taskListGridCondition"/>
where 1=1
<if test="id != null">
and dataset_table_task.id = #{id}
</if>
<if test="orderByClause != null">
order by ${orderByClause}
<if test="lastExecStatus != null and lastExecStatus.size() > 0">
and dataset_table_task_log.status in
<foreach collection="lastExecStatus" open="(" close=")" separator="," item="status">
#{status}
</foreach>
</if>
<if test="orderByClause == null">
ORDER BY dataset_table_task_log.create_time desc
<if test="tableId != null and tableId.size() > 0">
and dataset_table.id in
<foreach collection="tableId" open="(" close=")" separator="," item="tid">
#{tid}
</foreach>
</if>
<if test="lastExecTime != null and lastExecTime.length > 1">
and (dataset_table_task.last_exec_time between #{lastExecTime.[0]} and #{lastExecTime.[1]})
</if>
<if test="keyword != null">
and dataset_table_task.name like concat('%', #{keyword}, '%')
</if>
ORDER BY dataset_table_task_log.create_time desc
</select>
<select id="taskList" resultMap="TaskResult" parameterType="io.dataease.ext.query.GridExample">
<select id="taskList" resultMap="TaskResult" parameterType="io.dataease.controller.dataset.request.DatasetTaskGridRequest">
SELECT dataset_table.name as table_name, 'grant,manage,use' as `privileges`,dataset_table_task.* ,
qrtz_triggers.NEXT_FIRE_TIME
FROM dataset_table_task
left join dataset_table on dataset_table.id=dataset_table_task.table_id
left join qrtz_triggers on dataset_table_task.id=qrtz_triggers.TRIGGER_NAME
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition"/>
where 1=1
<if test="rate != null and rate.size() > 0">
and dataset_table_task.rate in
<foreach collection="rate" open="(" close=")" item="rateItem" separator=",">
#{rateItem}
</foreach>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
<if test="status != null and status.size() > 0">
and dataset_table_task.status in
<foreach collection="status" open="(" close=")" item="statusItem" separator=",">
#{statusItem}
</foreach>
</if>
<if test="orderByClause == null">
order by dataset_table_task.create_time desc
<if test="lastExecStatus != null and lastExecStatus.size() > 0" >
and dataset_table_task.last_exec_status in
<foreach collection="lastExecStatus" open="(" close=")" item="lastExecStatusItem" separator=",">
#{lastExecStatusItem}
</foreach>
</if>
<if test="tableId != null and tableId.size() > 0">
and dataset_table.id in
<foreach collection="tableId" open="(" close=")" separator="," item="tid">
#{tid}
</foreach>
</if>
<if test="id != null">
and dataset_table_task.id = #{id}
</if>
<if test="lastExecTime != null and lastExecTime.length > 1">
and (dataset_table_task.last_exec_time between #{lastExecTime.[0]} and #{lastExecTime.[1]})
</if>
<if test="keyword != null">
and dataset_table_task.name like concat('%', #{keyword}, '%')
</if>
order by dataset_table_task.create_time desc
</select>
<select id="userTaskList" resultMap="TaskResult" parameterType="io.dataease.ext.query.GridExample">
SELECT dataset_table.name as table_name, get_auths(dataset_table_task.table_id,'dataset', #{extendCondition}) as
<select id="userTaskList" resultMap="TaskResult" parameterType="io.dataease.controller.dataset.request.DatasetTaskGridRequest">
SELECT dataset_table.name as table_name, get_auths(dataset_table_task.table_id,'dataset', #{userId}) as
`privileges`,dataset_table_task.* , qrtz_triggers.NEXT_FIRE_TIME
FROM dataset_table_task
left join dataset_table on dataset_table.id=dataset_table_task.table_id
left join qrtz_triggers on dataset_table_task.id=qrtz_triggers.TRIGGER_NAME
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.taskListGridCondition"/>
where 1=1
<if test="rate != null and rate.size() > 0">
and dataset_table_task.rate in
<foreach collection="rate" open="(" close=")" item="rateItem" separator=",">
#{rateItem}
</foreach>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
<if test="status != null and status.size() > 0">
and dataset_table_task.status in
<foreach collection="status" open="(" close=")" item="statusItem" separator=",">
#{statusItem}
</foreach>
</if>
<if test="orderByClause == null">
order by dataset_table_task.create_time desc
<if test="lastExecStatus != null and lastExecStatus.size() > 0">
and dataset_table_task.last_exec_status in
<foreach collection="lastExecStatus" open="(" close=")" item="lastExecStatusItem" separator=",">
#{lastExecStatusItem}
</foreach>
</if>
<if test="id != null">
and dataset_table_task.id = #{id}
</if>
<if test="tableId != null and tableId.size() > 0">
and dataset_table.id in
<foreach collection="tableId" open="(" close=")" separator="," item="tid">
#{tid}
</foreach>
</if>
<if test="lastExecTime != null and lastExecTime.length > 1">
and (dataset_table_task.last_exec_time between #{lastExecTime.[0]} and #{lastExecTime.[1]})
</if>
<if test="keyword != null">
and dataset_table_task.name like concat('%', #{keyword}, '%')
</if>
order by dataset_table_task.create_time desc
</select>
<select id="userTaskList_COUNT" resultType="LONG">
SELECT count(0)
FROM dataset_table_task
left join dataset_table on dataset_table.id=dataset_table_task.table_id
left join qrtz_triggers on dataset_table_task.id=qrtz_triggers.TRIGGER_NAME
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.taskListGridCondition"/>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by dataset_table_task.create_time desc
</if>
</select>
<select id="taskWithTriggers" resultMap="TaskResult" parameterType="io.dataease.ext.query.GridExample">
SELECT dataset_table.name as table_name, get_auths(dataset_table_task.table_id,'dataset', #{extendCondition}) as
<select id="taskWithTriggers" resultMap="TaskResult" parameterType="io.dataease.controller.dataset.request.DatasetTaskGridRequest">
SELECT dataset_table.name as table_name, get_auths(dataset_table_task.table_id,'dataset', #{userId}) as
`privileges`,dataset_table_task.* , qrtz_triggers.NEXT_FIRE_TIME
FROM dataset_table_task
left join dataset_table on dataset_table.id=dataset_table_task.table_id
left join qrtz_triggers on dataset_table_task.id=qrtz_triggers.TRIGGER_NAME
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition"/>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by dataset_table_task.create_time desc
<if test="id != null">
and dataset_table_task.id = #{id}
</if>
order by dataset_table_task.create_time desc
</select>
<select id="findByPanelId" resultMap="TaskResult">

View File

@ -1,16 +1,14 @@
package io.dataease.ext;
import io.dataease.controller.request.DatasourceUnionRequest;
import io.dataease.dto.RelationDTO;
import io.dataease.dto.DatasourceDTO;
import io.dataease.ext.query.GridExample;
import io.dataease.dto.RelationDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtDataSourceMapper {
// List<DatasourceDTO> query(GridExample example);
List<DatasourceDTO> queryUnion(DatasourceUnionRequest request);
@ -20,5 +18,5 @@ public interface ExtDataSourceMapper {
DatasourceDTO queryDetails(@Param("datasourceId") String datasourceId, @Param("userId") String userId);
List<RelationDTO> queryDatasourceRelation(@Param("datasourceId") String datasourceId, @Param("userId")Long userId);
List<RelationDTO> queryDatasourceRelation(@Param("datasourceId") String datasourceId, @Param("userId") Long userId);
}

View File

@ -18,52 +18,7 @@
</collection>
</resultMap>
<select id="query" parameterType="io.dataease.ext.query.GridExample" resultMap="BaseResultMapDTO">
select datasource.*,
authInfo.privileges as `privileges`
from (select GET_V_AUTH_MODEL_ID_P_USE (#{extendCondition}, 'link') cids) t,datasource
left join (
SELECT
auth_source,
group_concat( DISTINCT sys_auth_detail.privilege_extend ) as `privileges`
FROM
(
`sys_auth`
LEFT JOIN `sys_auth_detail` ON ((
`sys_auth`.`id` = `sys_auth_detail`.`auth_id`
)))
WHERE
sys_auth_detail.privilege_value = 1
AND sys_auth.auth_source_type = 'link'
AND (
(
sys_auth.auth_target_type = 'dept'
AND sys_auth.auth_target IN ( SELECT dept_id FROM sys_user WHERE user_id = #{extendCondition} )
)
OR (
sys_auth.auth_target_type = 'user'
AND sys_auth.auth_target = #{extendCondition}
)
OR (
sys_auth.auth_target_type = 'role'
AND sys_auth.auth_target IN ( SELECT role_id FROM sys_users_roles WHERE user_id = #{extendCondition} )
)
)
GROUP BY
`sys_auth`.`auth_source`
) authInfo
on datasource.id = authInfo.auth_source
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition"/>
</if>
and FIND_IN_SET(datasource.id,cids)
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by update_time desc
</if>
</select>
<select id="queryUnion" resultMap="BaseResultMapDTO">
select datasource.*,

View File

@ -1,10 +1,13 @@
package io.dataease.ext;
import io.dataease.ext.query.GridExample;
import io.dataease.controller.request.BaseTreeRequest;
import io.dataease.controller.sys.request.SimpleTreeNode;
import io.dataease.dto.SysDeptDTO;
import org.apache.ibatis.annotations.*;
import io.dataease.plugins.xpack.dept.dto.request.XpackDeptGridRequest;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@ -27,7 +30,7 @@ public interface ExtDeptMapper {
List<SimpleTreeNode> allNodes();
List<SimpleTreeNode> nodesByExample(GridExample example);
List<SimpleTreeNode> nodesByExample(XpackDeptGridRequest request);
List<SysDeptDTO> searchTree(BaseTreeRequest request);

View File

@ -12,9 +12,14 @@
</select>
<select id="nodesByExample" parameterType="io.dataease.ext.query.GridExample" resultMap="simpleNode">
select dept_id as id, pid from sys_dept
<include refid="io.dataease.ext.query.GridSql.gridCondition" />
<select id="nodesByExample" parameterType="io.dataease.plugins.xpack.dept.dto.request.XpackDeptGridRequest" resultMap="simpleNode">
select dept_id as id, pid from sys_dept where 1=1
<if test="pid != null">
and pid = #{pid}
</if>
<if test="keyword != null">
and name like concat('%', #{keyword}, '%')
</if>
</select>

View File

@ -1,11 +1,11 @@
package io.dataease.ext;
import io.dataease.ext.query.GridExample;
import io.dataease.dto.panel.PanelStoreDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtPanelStoreMapper {
List<PanelStoreDto> query(GridExample example);
List<PanelStoreDto> query(@Param("uid") Long uid);
}

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="io.dataease.ext.ExtPanelStoreMapper">
<resultMap id="panelStoreMap" type="io.dataease.dto.panel.PanelStoreDto" >
<resultMap id="panelStoreMap" type="io.dataease.dto.panel.PanelStoreDto">
<id column="store_id" property="storeId"></id>
<result column="panel_group_id" property="panelGroupId"></result>
<result column="name" property="name"></result>
@ -10,26 +10,14 @@
</resultMap>
<select id="query" parameterType="io.dataease.ext.query.GridExample" resultMap="panelStoreMap">
select s.store_id,s.panel_group_id, g.name ,g.status
from panel_store s
inner join panel_group g on g.id = s.panel_group_id
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by s.create_time desc
</if>
<select id="query" parameterType="java.lang.Long" resultMap="panelStoreMap">
select s.store_id, s.panel_group_id, g.name, g.status
from panel_store s
inner join panel_group g on g.id = s.panel_group_id
where s.user_id = #{uid}
order by s.create_time desc
</select>
</mapper>

View File

@ -1,16 +1,15 @@
package io.dataease.ext;
import io.dataease.controller.sys.request.LogGridRequest;
import io.dataease.dto.log.FolderItem;
import io.dataease.ext.query.GridExample;
import io.dataease.plugins.common.base.domain.SysLogWithBLOBs;
import io.dataease.service.sys.log.LogQueryParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtSysLogMapper {
List<SysLogWithBLOBs> query(LogQueryParam example);
List<SysLogWithBLOBs> query(LogGridRequest request);
List<FolderItem> idAndName(@Param("ids") List<String> ids, @Param("type") Integer type);
}

View File

@ -3,51 +3,59 @@
<mapper namespace="io.dataease.ext.ExtSysLogMapper">
<select id="query" parameterType="io.dataease.service.sys.log.LogQueryParam" resultMap="io.dataease.plugins.common.base.mapper.SysLogMapper.ResultMapWithBLOBs">
<select id="query" parameterType="io.dataease.controller.sys.request.LogGridRequest"
resultMap="io.dataease.plugins.common.base.mapper.SysLogMapper.ResultMapWithBLOBs">
select * from
(select * from sys_log where 1 = 1
<if test="extendCondition != null">
and
(
nick_name like concat('%', #{extendCondition} , '%')
or
source_name like concat('%', #{extendCondition} , '%')
or
position like concat('%', #{extendCondition} , '%')
<if test="unionIds != null">
or
concat(operate_type, '-', source_type) in
<foreach collection="unionIds" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</if>
)
</if>
) t
(select * from sys_log where 1 = 1
<if test="keyword != null">
and
(
nick_name like concat('%', #{keyword} , '%')
or
source_name like concat('%', #{keyword} , '%')
or
position like concat('%', #{keyword} , '%')
)
</if>
) t
where 1 = 1
<if test="optypeList != null and optypeList.size() > 0">
and concat(operate_type, '-', source_type) in
<foreach collection="optypeList" item="operate" open='(' separator=',' close=')'>
#{operate}
</foreach>
</if>
<if test="userIdList != null and userIdList.size() > 0">
and user_id in
<foreach collection="userIdList" item="userId" open='(' separator=',' close=')'>
#{userId}
</foreach>
</if>
<if test="timeList != null and timeList.length > 1">
and (time between #{timeList.[0]} and #{timeList.[1]})
</if>
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by time desc
</if>
<choose>
<when test="orders!=null and orders.size > 0">
order by
<foreach collection="orders" item="item" open='' separator=',' close=''>
${item}
</foreach>
</when>
<otherwise>
order by time desc
</otherwise>
</choose>
</select>
<select id="idAndName" resultType="io.dataease.dto.log.FolderItem" >
<select id="idAndName" resultType="io.dataease.dto.log.FolderItem">
select
<if test="type == 1">
id, name
from datasource
<where>
id in
id in
<foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
@ -57,23 +65,23 @@
<if test="type == 2">
id, name
from (
select id, name from dataset_group
<where>
id in
<foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</where>
select id, name from dataset_group
<where>
id in
<foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</where>
union all
union all
select id, name from dataset_table
<where>
id in
<foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</where>
select id, name from dataset_table
<where>
id in
<foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</where>
) dataset
@ -175,9 +183,9 @@
<if test="type == 11">
menu_id as id ,title as name
from (
select menu_id, title from sys_menu
union all
select menu_id, title from plugin_sys_menu
select menu_id, title from sys_menu
union all
select menu_id, title from plugin_sys_menu
) plugin_union
<where>
menu_id in

View File

@ -1,8 +1,7 @@
package io.dataease.ext;
import io.dataease.plugins.common.base.domain.SysMenu;
import io.dataease.ext.query.GridExample;
import io.dataease.controller.sys.request.SimpleTreeNode;
import io.dataease.plugins.common.base.domain.SysMenu;
import java.util.List;
@ -10,7 +9,6 @@ public interface ExtSysMenuMapper {
List<SimpleTreeNode> allNodes();
List<SimpleTreeNode> nodesByExample(GridExample example);
List<SysMenu> querySysMenu();
}

View File

@ -14,11 +14,7 @@
</select>
<select id="nodesByExample" parameterType="io.dataease.ext.query.GridExample" resultMap="simpleNode">
select menu_id as id, pid from sys_menu
<include refid="io.dataease.ext.query.GridSql.gridCondition" />
and hidden != 1
</select>
<select id="querySysMenu" resultMap="ExtBaseResultMap">

View File

@ -1,11 +1,13 @@
package io.dataease.ext;
import io.dataease.ext.query.GridExample;
import io.dataease.plugins.common.base.domain.MyPlugin;
import io.dataease.plugins.common.request.KeywordRequest;
import java.util.List;
public interface ExtSysPluginMapper {
List<MyPlugin> query(GridExample example);
List<MyPlugin> query(KeywordRequest request);
int updateVersion(String version);
}

View File

@ -3,22 +3,19 @@
<mapper namespace="io.dataease.ext.ExtSysPluginMapper">
<select id="query" parameterType="io.dataease.ext.query.GridExample" resultMap="io.dataease.plugins.common.base.mapper.MyPluginMapper.BaseResultMap">
<select id="query" parameterType="io.dataease.plugins.common.request.KeywordRequest" resultMap="io.dataease.plugins.common.base.mapper.MyPluginMapper.BaseResultMap">
select *
from my_plugin
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by install_time desc
<if test="keyword != null">
where name like concat('%', #{keyword} , '%')
</if>
order by install_time desc
</select>
<update id="updateVersion" parameterType="java.lang.String">
update my_plugin set version = #{version} where store = 'default'
</update>

View File

@ -1,8 +1,8 @@
package io.dataease.ext;
import io.dataease.ext.query.GridExample;
import io.dataease.controller.sys.response.RoleUserItem;
import io.dataease.plugins.common.base.domain.SysRole;
import io.dataease.plugins.common.request.KeywordRequest;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -12,7 +12,7 @@ import java.util.Map;
public interface ExtSysRoleMapper {
List<SysRole> query(GridExample example);
List<SysRole> query(KeywordRequest request);
int deleteRoleMenu(@Param("roleId") Long roleId);

View File

@ -9,18 +9,22 @@
<result property="name" column="name"/>
</resultMap>
<select id="query" parameterType="io.dataease.ext.query.GridExample" resultMap="io.dataease.plugins.common.base.mapper.SysRoleMapper.BaseResultMap">
select r.*
from sys_role r
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by r.update_time desc
<select id="query" parameterType="io.dataease.plugins.common.request.KeywordRequest" resultMap="io.dataease.plugins.common.base.mapper.SysRoleMapper.BaseResultMap">
select r.* from sys_role r
<if test="keyword != null">
where name like concat('%', #{keyword} , '%')
</if>
<choose>
<when test="orders!=null and orders.size > 0">
order by
<foreach collection="orders" item="item" open='' separator=',' close=''>
${item}
</foreach>
</when>
<otherwise>
order by create_time desc
</otherwise>
</choose>
</select>

View File

@ -1,12 +1,12 @@
package io.dataease.ext;
import io.dataease.ext.query.GridExample;
import io.dataease.controller.sys.request.UserGridRequest;
import io.dataease.controller.sys.response.SysUserGridResponse;
import java.util.List;
public interface ExtSysUserMapper {
List<SysUserGridResponse> query(GridExample example);
List<SysUserGridResponse> query(UserGridRequest request);
List<String> ldapUserNames(Integer from);

View File

@ -33,7 +33,7 @@
</resultMap>
<select id="query" parameterType="io.dataease.ext.query.GridExample" resultMap="BaseResultMap">
<select id="query" parameterType="io.dataease.controller.sys.request.UserGridRequest" resultMap="BaseResultMap">
SELECT DISTINCT
u.*,
u.user_id AS id,
@ -42,26 +42,50 @@
FROM
(
select * from sys_user
<if test="extendCondition != null">
<if test="keyword != null">
where
nick_name like concat('%', #{extendCondition} , '%')
nick_name like concat('%', #{keyword} , '%')
or
email like concat('%', #{extendCondition} , '%')
email like concat('%', #{keyword} , '%')
</if>
) u
LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
LEFT JOIN sys_users_roles sur ON sur.user_id = u.user_id
LEFT JOIN sys_role r ON r.role_id = sur.role_id
where 1 = 1
<if test="_parameter != null">
<include refid="io.dataease.ext.query.GridSql.gridCondition"/>
<if test="roleIdList != null and roleIdList.size() > 0">
and r.role_id in
<foreach collection="roleIdList" item="roleId" open='(' separator=',' close=')'>
#{roleId}
</foreach>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
<if test="deptIdList != null and deptIdList.size() > 0">
and d.dept_id in
<foreach collection="deptIdList" item="deptId" open='(' separator=',' close=')'>
#{deptId}
</foreach>
</if>
<if test="orderByClause == null">
order by u.update_time desc
<if test="enabledList != null and enabledList.size() > 0">
and u.enabled in
<foreach collection="enabledList" item="en" open='(' separator=',' close=')'>
#{en}
</foreach>
</if>
<choose>
<when test="orders!=null and orders.size > 0">
order by
<foreach collection="orders" item="item" open='' separator=',' close=''>
${item}
</foreach>
</when>
<otherwise>
order by u.update_time desc
</otherwise>
</choose>
</select>
<select id="queryRole" resultMap="sysUserRole">

View File

@ -1,303 +0,0 @@
package io.dataease.ext.query;
import io.dataease.controller.sys.base.ConditionEntity;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class GridExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
protected String extendCondition;
public GridExample() {
oredCriteria = new ArrayList<Criteria>();
}
public String getExtendCondition() {
return extendCondition;
}
public void setExtendCondition(String extendCondition) {
this.extendCondition = extendCondition;
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addNotNullCriterion(String condition) {
criteria.add(new Criterion(condition, null));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addSqlCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
Criterion criterion = new Criterion(condition, value);
criterion.sqlValue = true;
criteria.add(criterion);
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria addCondition(ConditionEntity conditionEntity){
String field = conditionEntity.getField();
Object value = conditionEntity.getValue();
String operator = conditionEntity.getOperator();
if (StringUtils.isEmpty(operator))
operator = "like";
switch (operator){
case "eq":
addCriterion(field+" = ", value, field);
break;
case "ne":
addCriterion(field+" <> ", value, field);
break;
case "like":
addCriterion(field+" like ", "%"+value+"%", field);
break;
case "not like":
addCriterion(field+" not like ", "%"+value+"%", field);
break;
case "in":
List<Object> invalues = (List<Object>)value;
addCriterion(field+" in", invalues, field);
break;
case "not in":
List<Object> notinvalues = (List<Object>)value;
addCriterion(field+" not in", notinvalues, field);
break;
case "between":
List<Object> values = (List<Object>)value;
Object v1 = values.get(0);
Object v2 = values.get(1);
addCriterion(field+" between", v1, v2, field);
break;
case "gt":
addCriterion(field+" > ", value, field);
break;
case "ge":
addCriterion(field+" >= ", value, field);
break;
case "lt":
addCriterion(field+" < ", value, field);
break;
case "le":
addCriterion(field+" <= ", value, field);
break;
case "not null":
addNotNullCriterion(field + " is not null ");
break;
case "extra":
addCriterion(field);
break;
case "sql in":
addCriterion(field+" in ", value, field);
break;
}
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
public boolean isSqlValue() {
return sqlValue;
}
public void setSqlValue(boolean sqlValue) {
this.sqlValue = sqlValue;
}
private boolean sqlValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if(value == null){
this.noValue = true;
}else if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

View File

@ -1,4 +0,0 @@
package io.dataease.ext.query;
public interface GridSql {
}

View File

@ -1,67 +0,0 @@
<?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="io.dataease.ext.query.GridSql">
<sql id="gridCondition">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="taskListGridCondition">
<where>
dataset_table.id in (SELECT `sys_auth`.`auth_source` FROM `sys_auth` LEFT JOIN `sys_auth_detail` ON `sys_auth`.`id` = `sys_auth_detail`.`auth_id` LEFT JOIN `dataset_table` ON `dataset_table`.`id` = `sys_auth`.`auth_source` WHERE `sys_auth_detail`.`privilege_type` = '1' and `sys_auth_detail`.`privilege_value` = '1'and `sys_auth`.`auth_source_type` = 'dataset' AND ((`sys_auth`.`auth_target_type` = 'dept' AND `sys_auth`.`auth_target` in ( SELECT dept_id FROM `sys_user` WHERE `sys_user`.`user_id` = #{extendCondition} )) OR (sys_auth.auth_target_type = 'user'AND sys_auth.auth_target = #{extendCondition} ) OR (sys_auth.auth_target_type = 'role' AND `sys_auth`.`auth_target` in ( SELECT role_id FROM `sys_users_roles` WHERE `sys_users_roles`.`user_id` = #{extendCondition} )) OR (1 = ( SELECT is_admin FROM `sys_user` WHERE `sys_user`.`user_id` = #{extendCondition} )))) and
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
</mapper>

View File

@ -1,8 +1,8 @@
package io.dataease.plugins.config;
import io.dataease.commons.utils.LogUtil;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.plugins.common.base.domain.MyPlugin;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.service.sys.PluginService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@ -37,11 +37,11 @@ public class PluginRunner implements ApplicationRunner {
}
@Override
public void run(ApplicationArguments args) {
// 执行加载插件逻辑
BaseGridRequest request = new BaseGridRequest();
pluginService.systemUpgrade();
KeywordRequest request = new KeywordRequest();
List<MyPlugin> plugins = pluginService.query(request);
if (CollectionUtils.isEmpty(plugins)) return;
Map<Boolean, List<MyPlugin>> groupMap = plugins.stream().collect(Collectors.groupingBy(this::isDiscard));

View File

@ -8,8 +8,6 @@ import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.entity.XpackConditionEntity;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.DataSetColumnPermissionsDTO;
import io.dataease.plugins.xpack.auth.dto.request.DatasetColumnPermissions;
@ -19,8 +17,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.ArrayList;
import java.util.List;
@ApiIgnore
@RestController
@RequestMapping("plugin/dataset/columnPermissions")
@ -36,15 +35,15 @@ public class ColumnPermissionsController {
request.setAuthTargetId(datasetColumnPermissions.getAuthTargetId());
request.setDatasetId(datasetColumnPermissions.getDatasetId());
List<DataSetColumnPermissionsDTO> columnPermissionsDTOS = columnPermissionService.searchPermissions(request);
if(StringUtils.isEmpty(datasetColumnPermissions.getId())){
if(!CollectionUtils.isEmpty(columnPermissionsDTOS)){
if (StringUtils.isEmpty(datasetColumnPermissions.getId())) {
if (!CollectionUtils.isEmpty(columnPermissionsDTOS)) {
throw new Exception(Translator.get("i18n_cp_exist"));
}
}else {
if(!CollectionUtils.isEmpty(columnPermissionsDTOS) && columnPermissionsDTOS.size() > 1){
} else {
if (!CollectionUtils.isEmpty(columnPermissionsDTOS) && columnPermissionsDTOS.size() > 1) {
throw new Exception(Translator.get("i18n_cp_exist"));
}
if(columnPermissionsDTOS.size() == 1 && !columnPermissionsDTOS.get(0).getId().equalsIgnoreCase(datasetColumnPermissions.getId())){
if (columnPermissionsDTOS.size() == 1 && !columnPermissionsDTOS.get(0).getId().equalsIgnoreCase(datasetColumnPermissions.getId())) {
throw new Exception(Translator.get("i18n_cp_exist"));
}
}
@ -56,7 +55,7 @@ public class ColumnPermissionsController {
@PostMapping("/list")
public List<DataSetColumnPermissionsDTO> searchPermissions(@RequestBody DataSetColumnPermissionsDTO request) {
ColumnPermissionService columnPermissionService = SpringContextUtil.getBean(ColumnPermissionService.class);
return columnPermissionService.searchPermissions(request);
return columnPermissionService.searchPermissions(request);
}
@DePermission(type = DePermissionType.DATASET, value = "datasetId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
@ -70,17 +69,11 @@ public class ColumnPermissionsController {
@DePermission(type = DePermissionType.DATASET, level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
@ApiOperation("分页查询")
@PostMapping("/pageList/{datasetId}/{goPage}/{pageSize}")
public Pager<List<DataSetColumnPermissionsDTO>> rowPermissions(@PathVariable String datasetId, @PathVariable int goPage, @PathVariable int pageSize, @RequestBody XpackGridRequest request) {
public Pager<List<DataSetColumnPermissionsDTO>> rowPermissions(@PathVariable String datasetId, @PathVariable int goPage, @PathVariable int pageSize) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
ColumnPermissionService columnPermissionService = SpringContextUtil.getBean(ColumnPermissionService.class);
List<XpackConditionEntity> conditionEntities = request.getConditions() == null ? new ArrayList<>() : request.getConditions();
XpackConditionEntity entity = new XpackConditionEntity();
entity.setField("dataset_column_permissions.dataset_id");
entity.setOperator("eq");
entity.setValue(datasetId);
conditionEntities.add(entity);
request.setConditions(conditionEntities);
return PageUtils.setPageInfo(page, columnPermissionService.queryPermissions(request));
return PageUtils.setPageInfo(page, columnPermissionService.queryPermissions(datasetId));
}
@DePermission(type = DePermissionType.DATASET, value = "datasetId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)

View File

@ -20,7 +20,6 @@ import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.response.DeptNodeResponse;
import io.dataease.dto.SysLogDTO;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.dept.dto.request.*;
import io.dataease.plugins.xpack.dept.dto.response.DeptUserItemDTO;
@ -33,7 +32,6 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
@ -64,17 +62,16 @@ public class XDeptServer {
@ApiOperation("搜索组织树")
@PostMapping("/search")
public List<DeptNodeResponse> search(@RequestBody XpackGridRequest request){
public List<DeptNodeResponse> search(@RequestBody XpackDeptGridRequest request){
DeptXpackService deptService = SpringContextUtil.getBean(DeptXpackService.class);
List<XpackSysDept> nodes = deptService.nodesTreeByCondition(request);
List<DeptNodeResponse> nodeResponses = nodes.stream().map(node -> {
return nodes.stream().map(node -> {
DeptNodeResponse deptNodeResponse = BeanUtils.copyBean(new DeptNodeResponse(), node);
deptNodeResponse.setHasChildren(node.getSubCount() > 0);
deptNodeResponse.setLeaf(node.getSubCount() == 0);
deptNodeResponse.setTop(node.getPid() == 0L);
return deptNodeResponse;
}).collect(Collectors.toList());
return nodeResponses;
}
@ApiIgnore

View File

@ -14,8 +14,6 @@ import io.dataease.commons.utils.*;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import io.dataease.plugins.common.entity.GlobalTaskInstance;
import io.dataease.plugins.common.entity.XpackConditionEntity;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.email.dto.request.*;
import io.dataease.plugins.xpack.email.dto.response.XpackTaskEntity;
@ -62,19 +60,17 @@ public class XEmailTaskServer {
@PostMapping("/queryTasks/{goPage}/{pageSize}")
@SqlInjectValidator(value = {"create_time"})
public Pager<List<XpackTaskGridDTO>> queryTask(@PathVariable int goPage, @PathVariable int pageSize,
@RequestBody XpackGridRequest request) {
@RequestBody XpackEmailTaskGridRequest request) {
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
CurrentUserDto user = AuthUtils.getUser();
if (!user.getIsAdmin()) {
Long userId = user.getUserId();
XpackConditionEntity condition = new XpackConditionEntity();
condition.setField("u.user_id");
condition.setOperator("eq");
condition.setValue(userId);
List<XpackConditionEntity> conditions = CollectionUtils.isEmpty(request.getConditions()) ? new ArrayList<>() : request.getConditions();
conditions.add(condition);
request.setConditions(conditions);
List<Long> userIdList = request.getUserIdList();
if (userIdList == null) {
userIdList = new ArrayList<>();
}
userIdList.add(user.getUserId());
request.setUserIdList(userIdList);
}
List<XpackTaskGridDTO> tasks = emailXpackService.taskGrid(request);
@ -100,8 +96,7 @@ public class XEmailTaskServer {
});
}
Pager<List<XpackTaskGridDTO>> listPager = PageUtils.setPageInfo(page, tasks);
return listPager;
return PageUtils.setPageInfo(page, tasks);
}
@RequiresPermissions("task-email:edit")
@ -110,7 +105,7 @@ public class XEmailTaskServer {
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
XpackTaskEntity xpackTaskEntity = emailXpackService.taskDetail(taskId);
GlobalTaskEntity globalTaskEntity = BeanUtils.copyBean(new GlobalTaskEntity(), xpackTaskEntity);
Boolean invalid = false;
boolean invalid = false;
if (CronUtils.taskExpire(globalTaskEntity.getEndTime())) {
globalTaskEntity.setEndTime(null);
invalid = true;
@ -325,12 +320,11 @@ public class XEmailTaskServer {
@PostMapping("/queryInstancies/{goPage}/{pageSize}")
public Pager<List<XpackTaskInstanceDTO>> instancesGrid(@PathVariable int goPage, @PathVariable int pageSize,
@RequestBody XpackGridRequest request) {
@RequestBody XpackEmailInstanceGridRequest request) {
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
List<XpackTaskInstanceDTO> instances = emailXpackService.taskInstanceGrid(request);
Pager<List<XpackTaskInstanceDTO>> listPager = PageUtils.setPageInfo(page, instances);
return listPager;
return PageUtils.setPageInfo(page, instances);
}
@PostMapping("/execInfo/{instanceId}")
@ -342,7 +336,7 @@ public class XEmailTaskServer {
@RequiresPermissions("task-email:read")
@PostMapping("/export")
public void export(@RequestBody XpackGridRequest request) throws Exception {
public void export(@RequestBody XpackEmailInstanceGridRequest request) throws Exception {
Pager<List<XpackTaskInstanceDTO>> listPager = instancesGrid(0, 0, request);
List<XpackTaskInstanceDTO> instanceDTOS = listPager.getListObject();
ExcelSheetModel excelSheetModel = excelSheetModel(instanceDTOS);

View File

@ -16,7 +16,7 @@ import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.dto.SysLogDTO;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.role.dto.request.RoleUserMappingRequest;
import io.dataease.plugins.xpack.role.dto.request.RoleUserRequest;
@ -31,12 +31,14 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import static io.dataease.commons.constants.SysLogConstants.OPERATE_TYPE;
import static io.dataease.commons.constants.SysLogConstants.SOURCE_TYPE;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import static io.dataease.commons.constants.SysLogConstants.OPERATE_TYPE;
import static io.dataease.commons.constants.SysLogConstants.SOURCE_TYPE;
@Api(tags = "xpack角色管理")
@RequestMapping("/plugin/role")
@RestController
@ -49,11 +51,11 @@ public class XRoleServer {
@ApiOperation("新增角色")
@PostMapping("/create")
@DeLog(
operatetype = SysLogConstants.OPERATE_TYPE.CREATE,
sourcetype = SysLogConstants.SOURCE_TYPE.ROLE,
value = "roleId"
operatetype = SysLogConstants.OPERATE_TYPE.CREATE,
sourcetype = SysLogConstants.SOURCE_TYPE.ROLE,
value = "roleId"
)
public void create(@RequestBody XpackRoleDto role){
public void create(@RequestBody XpackRoleDto role) {
RoleXpackService roleXpackService = SpringContextUtil.getBean(RoleXpackService.class);
roleXpackService.save(role);
}
@ -63,10 +65,10 @@ public class XRoleServer {
@ApiOperation("删除角色")
@PostMapping("/delete/{roleId}")
@DeLog(
operatetype = SysLogConstants.OPERATE_TYPE.DELETE,
sourcetype = SysLogConstants.SOURCE_TYPE.ROLE
operatetype = SysLogConstants.OPERATE_TYPE.DELETE,
sourcetype = SysLogConstants.SOURCE_TYPE.ROLE
)
public void delete(@PathVariable("roleId") Long roleId){
public void delete(@PathVariable("roleId") Long roleId) {
RoleXpackService roleXpackService = SpringContextUtil.getBean(RoleXpackService.class);
extAuthService.clearRoleResource(roleId);
roleXpackService.delete(roleId);
@ -77,11 +79,11 @@ public class XRoleServer {
@ApiOperation("更新角色")
@PostMapping("/update")
@DeLog(
operatetype = SysLogConstants.OPERATE_TYPE.MODIFY,
sourcetype = SysLogConstants.SOURCE_TYPE.ROLE,
value = "roleId"
operatetype = SysLogConstants.OPERATE_TYPE.MODIFY,
sourcetype = SysLogConstants.SOURCE_TYPE.ROLE,
value = "roleId"
)
public void update(@RequestBody XpackRoleDto role){
public void update(@RequestBody XpackRoleDto role) {
RoleXpackService roleXpackService = SpringContextUtil.getBean(RoleXpackService.class);
roleXpackService.update(role);
}
@ -90,16 +92,15 @@ public class XRoleServer {
@ApiOperation("分页查询")
@PostMapping("/roleGrid/{goPage}/{pageSize}")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", name = "goPage", value = "页码", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType = "path", name = "pageSize", value = "页容量", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
@ApiImplicitParam(paramType = "path", name = "goPage", value = "页码", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType = "path", name = "pageSize", value = "页容量", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
})
@SqlInjectValidator(value = {"create_time", "name"})
public Pager<List<XpackRoleDto>> roleGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody XpackGridRequest request) {
public Pager<List<XpackRoleDto>> roleGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody KeywordRequest request) {
RoleXpackService roleXpackService = SpringContextUtil.getBean(RoleXpackService.class);
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
Pager<List<XpackRoleDto>> listPager = PageUtils.setPageInfo(page, roleXpackService.query(request));
return listPager;
return PageUtils.setPageInfo(page, roleXpackService.query(request));
}
@ApiIgnore
@ -112,9 +113,9 @@ public class XRoleServer {
@RequiresPermissions({"role:read", "user:read"})
@ApiOperation("查询角色下用户")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", name = "goPage", value = "页码", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType = "path", name = "pageSize", value = "页容量", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
@ApiImplicitParam(paramType = "path", name = "goPage", value = "页码", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType = "path", name = "pageSize", value = "页容量", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
})
@PostMapping("/userGrid/{goPage}/{pageSize}")
public Pager<List<RoleUserItem>> userGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody RoleUserRequest request) {
@ -134,7 +135,7 @@ public class XRoleServer {
})
@PostMapping("/userGrid/{datasetId}")
public Pager<List<RoleUserItem>> userGrids(@PathVariable String datasetId, @RequestBody RoleUserRequest request) {
return userGrid(0,0, request);
return userGrid(0, 0, request);
}
@RequiresPermissions({"role:edit", "user:edit"})
@ -146,7 +147,7 @@ public class XRoleServer {
request.getUserIds().forEach(userId -> {
SysLogDTO sysLogDTO = DeLogUtils.buildBindRoleUserLog(request.getRoleId(), userId, OPERATE_TYPE.BIND, SOURCE_TYPE.ROLE);
DeLogUtils.save(sysLogDTO);
CacheUtils.remove( AuthConstants.USER_CACHE_NAME, "user" + userId);
CacheUtils.remove(AuthConstants.USER_CACHE_NAME, "user" + userId);
});
}
roleXpackService.addUser(request);
@ -162,7 +163,7 @@ public class XRoleServer {
request.getUserIds().forEach(userId -> {
SysLogDTO sysLogDTO = DeLogUtils.buildBindRoleUserLog(request.getRoleId(), userId, OPERATE_TYPE.UNBIND, SOURCE_TYPE.ROLE);
DeLogUtils.save(sysLogDTO);
CacheUtils.remove( AuthConstants.USER_CACHE_NAME, "user" + userId);
CacheUtils.remove(AuthConstants.USER_CACHE_NAME, "user" + userId);
});
}
roleXpackService.batchDelUser(request);

View File

@ -19,13 +19,12 @@ import io.dataease.commons.constants.*;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.*;
import io.dataease.controller.ResultHolder;
import io.dataease.controller.dataset.request.DataSetTaskInstanceGridRequest;
import io.dataease.controller.request.dataset.DataSetExportRequest;
import io.dataease.controller.request.dataset.DataSetGroupRequest;
import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.request.dataset.DataSetTaskRequest;
import io.dataease.controller.response.DataSetDetail;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.SysLogDTO;
import io.dataease.dto.dataset.*;
import io.dataease.dto.dataset.union.UnionDTO;
@ -794,14 +793,9 @@ public class DataSetTableService {
logger.error(e.getMessage());
DEException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage());
}
BaseGridRequest request = new BaseGridRequest();
ConditionEntity entity2 = new ConditionEntity();
entity2.setField("dataset_table_task_log.table_id");
entity2.setOperator("eq");
entity2.setValue(dataSetTableRequest.getId());
List<ConditionEntity> conditionEntities = new ArrayList<>();
conditionEntities.add(entity2);
request.setConditions(conditionEntities);
DataSetTaskInstanceGridRequest request = new DataSetTaskInstanceGridRequest();
request.setTableId(List.of(dataSetTableRequest.getId()));
List<DataSetTaskLogDTO> dataSetTaskLogDTOS = dataSetTableTaskLogService.listTaskLog(request, "excel");
if (CollectionUtils.isNotEmpty(dataSetTaskLogDTOS)) {
dataSetTaskLogDTOS.get(0).getStatus().equalsIgnoreCase(JobStatus.Underway.name());
@ -2445,7 +2439,8 @@ public class DataSetTableService {
fields.add(tableFiled);
}
String json = JSON.toJSONString(noModelDataListener.getData());
List<List<String>> data = JSON.parseObject(json, new TypeReference< List<List<String>>>(){});
List<List<String>> data = JSON.parseObject(json, new TypeReference<List<List<String>>>() {
});
data = (isPreview && noModelDataListener.getData().size() > 1000 ? new ArrayList<>(data.subList(0, 1000)) : data);
if (isPreview) {
for (List<String> datum : data) {
@ -3103,51 +3098,52 @@ public class DataSetTableService {
}
@Data
public class NoModelDataListener extends AnalysisEventListener<Map<Integer, String>> {
private List<List<String>> data = new ArrayList<>();
private List<String> header = new ArrayList<>();
@Data
public class NoModelDataListener extends AnalysisEventListener<Map<Integer, String>> {
private List<List<String>> data = new ArrayList<>();
private List<String> header = new ArrayList<>();
@Override
public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
super.invokeHead(headMap, context);
for (Integer key : headMap.keySet()) {
CellData cellData = headMap.get(key);
String value = cellData.getStringValue();
if (StringUtils.isEmpty(value)) {
value = "none_" + key;
}
header.add(value);
}
}
@Override
public void invoke(Map<Integer, String> dataMap, AnalysisContext context) {
List<String> line = new ArrayList<>();
for (Integer key : dataMap.keySet()) {
String value = dataMap.get(key);
if (StringUtils.isEmpty(value)) {
value = "";
}
line.add(value);
};
int size = line.size();
if(size < header.size()){
for (int i = 0; i < header.size() - size; i++) {
line.add("");
@Override
public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
super.invokeHead(headMap, context);
for (Integer key : headMap.keySet()) {
CellData cellData = headMap.get(key);
String value = cellData.getStringValue();
if (StringUtils.isEmpty(value)) {
value = "none_" + key;
}
header.add(value);
}
}
data.add(line);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
@Override
public void invoke(Map<Integer, String> dataMap, AnalysisContext context) {
List<String> line = new ArrayList<>();
for (Integer key : dataMap.keySet()) {
String value = dataMap.get(key);
if (StringUtils.isEmpty(value)) {
value = "";
}
line.add(value);
}
;
int size = line.size();
if (size < header.size()) {
for (int i = 0; i < header.size() - size; i++) {
line.add("");
}
}
data.add(line);
}
public void clear() {
data.clear();
header.clear();
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
public void clear() {
data.clear();
header.clear();
}
}
}
}

View File

@ -1,20 +1,16 @@
package io.dataease.service.dataset;
import cn.hutool.core.date.DateUtil;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.exception.DataEaseException;
import io.dataease.ext.ExtDataSetTaskMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.controller.dataset.request.DataSetTaskInstanceGridRequest;
import io.dataease.dto.dataset.DataSetTaskDTO;
import io.dataease.dto.dataset.DataSetTaskLogDTO;
import io.dataease.exception.DataEaseException;
import io.dataease.ext.ExtDataSetTaskMapper;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.DatasetTableTaskLog;
import io.dataease.plugins.common.base.domain.DatasetTableTaskLogExample;
import io.dataease.plugins.common.base.domain.SysLogWithBLOBs;
import io.dataease.plugins.common.base.mapper.DatasetTableTaskLogMapper;
import io.dataease.plugins.common.base.mapper.DatasetTableTaskMapper;
import org.apache.commons.collections4.CollectionUtils;
@ -33,7 +29,6 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@ -53,7 +48,7 @@ public class DataSetTableTaskLogService {
private DatasetTableTaskMapper datasetTableTaskMapper;
public DatasetTableTaskLog save(DatasetTableTaskLog datasetTableTaskLog, Boolean hasTask) {
if(hasTask && datasetTableTaskMapper.selectByPrimaryKey(datasetTableTaskLog.getTaskId()) == null){
if (hasTask && datasetTableTaskMapper.selectByPrimaryKey(datasetTableTaskLog.getTaskId()) == null) {
return datasetTableTaskLog;
}
if (StringUtils.isEmpty(datasetTableTaskLog.getId())) {
@ -70,7 +65,7 @@ public class DataSetTableTaskLogService {
datasetTableTaskLogMapper.deleteByPrimaryKey(id);
}
public void exportExcel(BaseGridRequest request) throws Exception {
public void exportExcel(DataSetTaskInstanceGridRequest request) throws Exception {
HttpServletResponse response = ServletUtils.response();
OutputStream outputStream = response.getOutputStream();
try {
@ -81,7 +76,7 @@ public class DataSetTableTaskLogService {
row[1] = item.getDatasetName();
row[2] = DateUtil.formatDateTime(new Date(item.getStartTime()));
row[3] = item.getEndTime() != null ? DateUtil.formatDateTime(new Date(item.getEndTime())) : "";
row[4] = Translator.get("I18N_TASK_LOG_" + item.getStatus().toUpperCase()) ;
row[4] = Translator.get("I18N_TASK_LOG_" + item.getStatus().toUpperCase());
return row;
}).collect(Collectors.toList());
String[] headArr = {Translator.get("I18N_TASK_NAME"), Translator.get("I18N_DATASET"), Translator.get("I18N_START_TIME"), Translator.get("I18N_END_TIME"), Translator.get("I18N_STATUS")};
@ -127,7 +122,7 @@ public class DataSetTableTaskLogService {
//文件名称
String fileName = "DataEase " + Translator.get("I18N_SYNC_LOG");
String encodeFileName = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename="+encodeFileName+".xls");
response.setHeader("Content-disposition", "attachment;filename=" + encodeFileName + ".xls");
wb.write(outputStream);
outputStream.flush();
outputStream.close();
@ -137,48 +132,22 @@ public class DataSetTableTaskLogService {
}
public List<DataSetTaskLogDTO> listTaskLog(BaseGridRequest request, String type) {
List<ConditionEntity> conditionEntities = request.getConditions();
if(!type.equalsIgnoreCase("excel")){
ConditionEntity entity = new ConditionEntity();
entity.setField("task_id");
entity.setOperator("not in");
List<String>status = new ArrayList<>();status.add("初始导入");status.add("替换");status.add("追加");
entity.setValue(status);
if(CollectionUtils.isEmpty(conditionEntities)){
conditionEntities = new ArrayList<>();
}
conditionEntities.add(entity);
public List<DataSetTaskLogDTO> listTaskLog(DataSetTaskInstanceGridRequest request, String type) {
if (!type.equalsIgnoreCase("excel")) {
request.setExcludedIdList(List.of("初始导入", "替换", "追加"));
}
ConditionEntity entity2 = new ConditionEntity();
entity2.setField("1");
entity2.setOperator("eq");
entity2.setValue("1");
conditionEntities.add(entity2);
conditionEntities = conditionEntities.stream().map(conditionEntity -> {
if(conditionEntity.getField().equals("dataset_table_task.last_exec_status")){
conditionEntity.setField("dataset_table_task_log.status");
}
return conditionEntity;
}).collect(Collectors.toList());
request.setConditions(conditionEntities);
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(AuthUtils.getUser().getUserId().toString());
if(AuthUtils.getUser().getIsAdmin()){
List<DataSetTaskLogDTO> dataSetTaskLogDTOS = extDataSetTaskMapper.listTaskLog(gridExample);
if (AuthUtils.getUser().getIsAdmin()) {
List<DataSetTaskLogDTO> dataSetTaskLogDTOS = extDataSetTaskMapper.listTaskLog(request);
dataSetTaskLogDTOS.forEach(dataSetTaskLogDTO -> {
if(StringUtils.isEmpty(dataSetTaskLogDTO.getName())){
if (StringUtils.isEmpty(dataSetTaskLogDTO.getName())) {
dataSetTaskLogDTO.setName(dataSetTaskLogDTO.getTaskId());
}
});
return dataSetTaskLogDTOS;
}else {
List<DataSetTaskLogDTO> dataSetTaskLogDTOS = extDataSetTaskMapper.listUserTaskLog(gridExample);
} else {
List<DataSetTaskLogDTO> dataSetTaskLogDTOS = extDataSetTaskMapper.listUserTaskLog(request);
dataSetTaskLogDTOS.forEach(dataSetTaskLogDTO -> {
if(StringUtils.isEmpty(dataSetTaskLogDTO.getName())){
if (StringUtils.isEmpty(dataSetTaskLogDTO.getName())) {
dataSetTaskLogDTO.setName(dataSetTaskLogDTO.getTaskId());
}
});
@ -187,38 +156,38 @@ public class DataSetTableTaskLogService {
}
public void deleteByTaskId(String taskId){
public void deleteByTaskId(String taskId) {
DatasetTableTaskLogExample datasetTableTaskLogExample = new DatasetTableTaskLogExample();
DatasetTableTaskLogExample.Criteria criteria = datasetTableTaskLogExample.createCriteria();
criteria.andTaskIdEqualTo(taskId);
datasetTableTaskLogMapper.deleteByExample(datasetTableTaskLogExample);
}
public List<DatasetTableTaskLog> getByTableId(String datasetId){
public List<DatasetTableTaskLog> getByTableId(String datasetId) {
DatasetTableTaskLogExample datasetTableTaskLogExample = new DatasetTableTaskLogExample();
DatasetTableTaskLogExample.Criteria criteria = datasetTableTaskLogExample.createCriteria();
criteria.andTableIdEqualTo(datasetId);
return datasetTableTaskLogMapper.selectByExampleWithBLOBs(datasetTableTaskLogExample);
}
public List<DatasetTableTaskLog> select(DatasetTableTaskLog datasetTableTaskLog){
public List<DatasetTableTaskLog> select(DatasetTableTaskLog datasetTableTaskLog) {
DatasetTableTaskLogExample example = getDatasetTableTaskLogExample(datasetTableTaskLog);
example.setOrderByClause("create_time desc");
return datasetTableTaskLogMapper.selectByExampleWithBLOBs(example);
}
public DataSetTaskDTO lastExecStatus(DataSetTaskDTO dataSetTaskDTO){
public DataSetTaskDTO lastExecStatus(DataSetTaskDTO dataSetTaskDTO) {
DatasetTableTaskLogExample example = new DatasetTableTaskLogExample();
DatasetTableTaskLogExample.Criteria criteria = example.createCriteria();
if(StringUtils.isNotEmpty(dataSetTaskDTO.getTableId())){
if (StringUtils.isNotEmpty(dataSetTaskDTO.getTableId())) {
criteria.andTableIdEqualTo(dataSetTaskDTO.getTableId());
}
if(StringUtils.isNotEmpty(dataSetTaskDTO.getId())){
if (StringUtils.isNotEmpty(dataSetTaskDTO.getId())) {
criteria.andTaskIdEqualTo(dataSetTaskDTO.getId());
}
example.setOrderByClause("create_time desc");
List<DatasetTableTaskLog> datasetTableTaskLogs = datasetTableTaskLogMapper.selectByExampleWithBLOBs(example);
if(CollectionUtils.isNotEmpty(datasetTableTaskLogs)){
List<DatasetTableTaskLog> datasetTableTaskLogs = datasetTableTaskLogMapper.selectByExampleWithBLOBs(example);
if (CollectionUtils.isNotEmpty(datasetTableTaskLogs)) {
dataSetTaskDTO.setLastExecStatus(datasetTableTaskLogs.get(0).getStatus());
dataSetTaskDTO.setLastExecTime(datasetTableTaskLogs.get(0).getCreateTime());
dataSetTaskDTO.setMsg(datasetTableTaskLogs.get(0).getInfo());
@ -229,13 +198,13 @@ public class DataSetTableTaskLogService {
private DatasetTableTaskLogExample getDatasetTableTaskLogExample(DatasetTableTaskLog datasetTableTaskLog) {
DatasetTableTaskLogExample example = new DatasetTableTaskLogExample();
DatasetTableTaskLogExample.Criteria criteria = example.createCriteria();
if(StringUtils.isNotEmpty(datasetTableTaskLog.getStatus())){
if (StringUtils.isNotEmpty(datasetTableTaskLog.getStatus())) {
criteria.andStatusEqualTo(datasetTableTaskLog.getStatus());
}
if(StringUtils.isNotEmpty(datasetTableTaskLog.getTableId())){
if (StringUtils.isNotEmpty(datasetTableTaskLog.getTableId())) {
criteria.andTableIdEqualTo(datasetTableTaskLog.getTableId());
}
if(StringUtils.isNotEmpty(datasetTableTaskLog.getTaskId())){
if (StringUtils.isNotEmpty(datasetTableTaskLog.getTaskId())) {
criteria.andTaskIdEqualTo(datasetTableTaskLog.getTaskId());
}
return example;

View File

@ -1,17 +1,15 @@
package io.dataease.service.dataset;
import io.dataease.ext.ExtDataSetTaskMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.commons.constants.JobStatus;
import io.dataease.commons.constants.ScheduleType;
import io.dataease.commons.constants.TaskStatus;
import io.dataease.commons.constants.TriggerType;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.dataset.request.DatasetTaskGridRequest;
import io.dataease.controller.request.dataset.DataSetTaskRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.dataset.DataSetTaskDTO;
import io.dataease.exception.DataEaseException;
import io.dataease.ext.ExtDataSetTaskMapper;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.base.mapper.DatasetTableMapper;
@ -24,10 +22,10 @@ import org.quartz.CronExpression;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
import javax.annotation.Resource;
import java.util.*;
import java.util.List;
import java.util.UUID;
/**
* @Author gin
@ -152,7 +150,7 @@ public class DataSetTableTaskService {
@Transactional
public void batchDelete(List<String> ids) {
if (CollectionUtils.isNotEmpty(ids)){
if (CollectionUtils.isNotEmpty(ids)) {
for (int i = 0; i < ids.size(); i++) {
String id = ids.get(i);
DatasetTableTask datasetTableTask = datasetTableTaskMapper.selectByPrimaryKey(id);
@ -195,12 +193,9 @@ public class DataSetTableTaskService {
public void checkTaskIsStopped(final DatasetTableTask datasetTableTask) {
if (StringUtils.isNotEmpty(datasetTableTask.getEnd()) && datasetTableTask.getEnd().equalsIgnoreCase("1")) {
BaseGridRequest request = new BaseGridRequest();
ConditionEntity conditionEntity = new ConditionEntity();
conditionEntity.setField("dataset_table_task.id");
conditionEntity.setOperator("eq");
conditionEntity.setValue(datasetTableTask.getId());
request.setConditions(Collections.singletonList(conditionEntity));
DatasetTaskGridRequest request = new DatasetTaskGridRequest();
request.setId(datasetTableTask.getId());
List<DataSetTaskDTO> dataSetTaskDTOS = taskWithTriggers(request);
if (CollectionUtils.isEmpty(dataSetTaskDTOS)) {
return;
@ -231,12 +226,8 @@ public class DataSetTableTaskService {
} else {
recore.setLastExecStatus(lastExecStatus.name());
if (StringUtils.isNotEmpty(datasetTableTask.getEnd()) && datasetTableTask.getEnd().equalsIgnoreCase("1")) {
BaseGridRequest request = new BaseGridRequest();
ConditionEntity conditionEntity = new ConditionEntity();
conditionEntity.setField("dataset_table_task.id");
conditionEntity.setOperator("eq");
conditionEntity.setValue(datasetTableTask.getId());
request.setConditions(Collections.singletonList(conditionEntity));
DatasetTaskGridRequest request = new DatasetTaskGridRequest();
request.setId(datasetTableTask.getId());
List<DataSetTaskDTO> dataSetTaskDTOS = taskWithTriggers(request);
if (CollectionUtils.isEmpty(dataSetTaskDTOS)) {
return;
@ -264,40 +255,26 @@ public class DataSetTableTaskService {
}
public List<DataSetTaskDTO> list(DatasetTableTask datasetTableTask) {
BaseGridRequest request = new BaseGridRequest();
List<ConditionEntity> conditionEntities = new ArrayList<>();
if(datasetTableTask != null && StringUtils.isNotEmpty(datasetTableTask.getTableId())){
ConditionEntity entity = new ConditionEntity();
entity.setField("table_id");
entity.setOperator("eq");
entity.setValue(datasetTableTask.getTableId());
conditionEntities.add(entity);
DatasetTaskGridRequest request = new DatasetTaskGridRequest();
if (datasetTableTask != null && StringUtils.isNotEmpty(datasetTableTask.getTableId())) {
request.setTableId(List.of(datasetTableTask.getTableId()));
}
request.setConditions(conditionEntities);
GridExample gridExample = request.convertExample();
return extDataSetTaskMapper.taskList(gridExample);
return extDataSetTaskMapper.taskList(request);
}
public List<DataSetTaskDTO> taskList4User(BaseGridRequest request) {
List<ConditionEntity> conditionEntities = request.getConditions() == null ? new ArrayList<>() : new ArrayList(request.getConditions());
ConditionEntity entity = new ConditionEntity();
entity.setField("1");
entity.setOperator("eq");
entity.setValue("1");
conditionEntities.add(entity);
request.setConditions(conditionEntities);
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(AuthUtils.getUser().getUserId().toString());
public List<DataSetTaskDTO> taskList4User(DatasetTaskGridRequest request) {
request.setUserId(null);
if (AuthUtils.getUser().getIsAdmin()) {
return extDataSetTaskMapper.taskList(gridExample);
return extDataSetTaskMapper.taskList(request);
} else {
return extDataSetTaskMapper.userTaskList(gridExample);
request.setUserId(AuthUtils.getUser().getUserId());
return extDataSetTaskMapper.userTaskList(request);
}
}
public List<DataSetTaskDTO> taskWithTriggers(BaseGridRequest request) {
GridExample gridExample = request.convertExample();
return extDataSetTaskMapper.taskWithTriggers(gridExample);
public List<DataSetTaskDTO> taskWithTriggers(DatasetTaskGridRequest request) {
request.setUserId(AuthUtils.getUser().getUserId());
return extDataSetTaskMapper.taskWithTriggers(request);
}
private void checkName(DataSetTaskRequest dataSetTaskRequest) {
@ -335,7 +312,7 @@ public class DataSetTableTaskService {
public void execTask(DatasetTableTask datasetTableTask) throws Exception {
execNow(datasetTableTask);
if(datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())){
if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) {
scheduleService.addSchedule(datasetTableTask);
}
if (!datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) {
@ -344,16 +321,9 @@ public class DataSetTableTaskService {
}
public DataSetTaskDTO detail(String id) {
BaseGridRequest request = new BaseGridRequest();
List<ConditionEntity> conditionEntities = request.getConditions() == null ? new ArrayList<>() : new ArrayList(request.getConditions());
ConditionEntity entity = new ConditionEntity();
entity.setField("dataset_table_task.id");
entity.setOperator("eq");
entity.setValue(id);
conditionEntities.add(entity);
request.setConditions(conditionEntities);
GridExample gridExample = request.convertExample();
List<DataSetTaskDTO> dataSetTaskDTOS = extDataSetTaskMapper.taskList(gridExample);
DatasetTaskGridRequest request = new DatasetTaskGridRequest();
request.setId(id);
List<DataSetTaskDTO> dataSetTaskDTOS = extDataSetTaskMapper.taskList(request);
if (CollectionUtils.isNotEmpty(dataSetTaskDTOS)) {
return dataSetTaskDTOS.get(0);
}

View File

@ -13,7 +13,6 @@ import io.dataease.controller.request.panel.PanelShareFineDto;
import io.dataease.controller.request.panel.PanelShareRemoveRequest;
import io.dataease.controller.request.panel.PanelShareRequest;
import io.dataease.controller.request.panel.PanelShareSearchRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelShareDto;
import io.dataease.dto.panel.PanelShareOutDTO;
import io.dataease.dto.panel.PanelSharePo;
@ -338,7 +337,7 @@ public class ShareService {
return extPanelShareMapper.queryOut(username);
}
public List<PanelShareDto> queryTree(BaseGridRequest request) {
public List<PanelShareDto> queryTree() {
CurrentUserDto user = AuthUtils.getUser();
Long userId = user.getUserId();
Long deptId = user.getDeptId();

View File

@ -1,18 +1,14 @@
package io.dataease.service.panel;
import io.dataease.ext.ExtPanelStoreMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.panel.PanelStoreDto;
import io.dataease.ext.ExtPanelStoreMapper;
import io.dataease.plugins.common.base.domain.PanelStore;
import io.dataease.plugins.common.base.domain.PanelStoreExample;
import io.dataease.plugins.common.base.mapper.PanelStoreMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
@ -40,17 +36,9 @@ public class StoreService {
panelStoreMapper.deleteByExample(panelStoreExample);
}
public List<PanelStoreDto> query(BaseGridRequest request) {
public List<PanelStoreDto> query() {
Long userId = AuthUtils.getUser().getUserId();
ConditionEntity condition = new ConditionEntity();
condition.setField("s.user_id");
condition.setOperator("eq");
condition.setValue(userId);
request.setConditions(new ArrayList<ConditionEntity>() {{
add(condition);
}});
GridExample example = request.convertExample();
return extPanelStoreMapper.query(example);
return extPanelStoreMapper.query(userId);
}
public Long count(String panelId) {

View File

@ -1,12 +0,0 @@
package io.dataease.service.panel.applog;
import io.dataease.ext.query.GridExample;
import lombok.Data;
import java.util.List;
@Data
public class AppLogQueryParam extends GridExample {
private String userId;
}

View File

@ -1,12 +1,9 @@
package io.dataease.service.panel.applog;
import com.google.gson.Gson;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.sys.request.KeyGridRequest;
import io.dataease.dto.SysLogDTO;
import io.dataease.controller.request.panel.AppLogGridRequest;
import io.dataease.dto.appTemplateMarket.AppLogGridDTO;
import io.dataease.ext.ExtAppLogMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.plugins.common.base.mapper.PanelAppTemplateLogMapper;
import io.dataease.service.dataset.DataSetGroupService;
import io.dataease.service.datasource.DatasourceService;
@ -21,7 +18,6 @@ import java.util.List;
@Service
public class AppLogService {
private Gson gson = new Gson();
@Resource
private PanelAppTemplateLogMapper appLogMapper;
@Resource
@ -34,17 +30,9 @@ public class AppLogService {
private DatasourceService datasourceService;
public List<AppLogGridDTO> query(KeyGridRequest request) {
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(request.getKeyWord());
AppLogQueryParam logQueryParam = gson.fromJson(gson.toJson(gridExample), AppLogQueryParam.class);
logQueryParam.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
List<AppLogGridDTO> voLogs = extAppLogMapper.query(logQueryParam);
return voLogs;
}
public void saveLog(SysLogDTO sysLogDTO) {
public List<AppLogGridDTO> query(AppLogGridRequest request) {
request.setUserId(AuthUtils.getUser().getUserId());
return extAppLogMapper.query(request);
}

View File

@ -24,6 +24,8 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Author: wangjiahao
@ -65,9 +67,12 @@ public class StaticResourceService {
LogUtil.error(e.getMessage(), e);
return false;
}
if (image == null || image.getWidth() <= 0 || image.getHeight() <= 0) {
Pattern pattern = Pattern.compile("\\.(png|jpg|jpeg|gif)$");
Matcher matcher = pattern.matcher(file.getOriginalFilename().toLowerCase());
if (image == null || image.getWidth() <= 0 || image.getHeight() <= 0 || !matcher.find()) {
return false;
}
return true;
}

View File

@ -1,23 +1,25 @@
package io.dataease.service.sys;
import io.dataease.ext.*;
import io.dataease.ext.query.GridExample;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.request.DeptCreateRequest;
import io.dataease.controller.sys.request.DeptDeleteRequest;
import io.dataease.controller.sys.request.DeptStatusRequest;
import io.dataease.controller.sys.request.SimpleTreeNode;
import io.dataease.controller.sys.response.DeptTreeNode;
import io.dataease.ext.ExtDeptMapper;
import io.dataease.plugins.common.base.domain.SysDept;
import io.dataease.plugins.common.base.domain.SysDeptExample;
import io.dataease.plugins.common.base.mapper.SysDeptMapper;
import io.dataease.plugins.xpack.dept.dto.request.XpackDeptGridRequest;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@ -31,12 +33,12 @@ public class DeptService {
@Autowired(required = false)
private ExtDeptMapper extDeptMapper;
public List<SysDept> nodesByPid(Long pid){
public List<SysDept> nodesByPid(Long pid) {
SysDeptExample example = new SysDeptExample();
SysDeptExample.Criteria criteria = example.createCriteria();
if (ObjectUtils.isEmpty(pid)){
if (ObjectUtils.isEmpty(pid)) {
criteria.andPidEqualTo(0L);
}else {
} else {
criteria.andPidEqualTo(pid);
}
example.setOrderByClause("dept_sort");
@ -44,10 +46,10 @@ public class DeptService {
}
@Transactional
public boolean add(DeptCreateRequest deptCreateRequest){
public boolean add(DeptCreateRequest deptCreateRequest) {
SysDept sysDept = BeanUtils.copyBean(new SysDept(), deptCreateRequest);
if (deptCreateRequest.isTop()){
if (deptCreateRequest.isTop()) {
sysDept.setPid(DEPT_ROOT_PID);
}
long now = System.currentTimeMillis();
@ -59,24 +61,24 @@ public class DeptService {
try {
int insert = sysDeptMapper.insert(sysDept);
Long pid;
if (!(pid = sysDept.getPid()).equals(DEPT_ROOT_PID)){
if (!(pid = sysDept.getPid()).equals(DEPT_ROOT_PID)) {
//这里需要更新上级节点SubCount
extDeptMapper.incrementalSubcount(pid);
}
if (insert == 1){
if (insert == 1) {
return true;
}
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Transactional
public int batchDelete(List<DeptDeleteRequest> requests){
public int batchDelete(List<DeptDeleteRequest> requests) {
List<Long> ids = requests.stream().map(request -> {
Long pid = request.getPid();
if (!pid.equals(DEPT_ROOT_PID)){
if (!pid.equals(DEPT_ROOT_PID)) {
extDeptMapper.decreasingSubcount(pid);
}
return request.getDeptId();
@ -85,9 +87,9 @@ public class DeptService {
}
@Transactional
public int update(DeptCreateRequest deptCreateRequest){
public int update(DeptCreateRequest deptCreateRequest) {
SysDept sysDept = BeanUtils.copyBean(new SysDept(), deptCreateRequest);
if (deptCreateRequest.isTop()){
if (deptCreateRequest.isTop()) {
sysDept.setPid(DEPT_ROOT_PID);
}
sysDept.setUpdateTime(System.currentTimeMillis());
@ -97,34 +99,34 @@ public class DeptService {
//如果PID发生了改变
//判断oldPid是否是跟节点PID nothing : parent.subcount-1
//判断newPid是否是跟节点PID nothing : parent.subcount+1
if (!sysDept.getPid().equals(dept_old.getPid())){
if (!sysDept.getPid().equals(dept_old.getPid())) {
Long oldPid = dept_old.getPid();
if (!oldPid.equals(DEPT_ROOT_PID)){
if (!oldPid.equals(DEPT_ROOT_PID)) {
extDeptMapper.decreasingSubcount(oldPid);
}
if (!sysDept.getPid().equals(DEPT_ROOT_PID)){
if (!sysDept.getPid().equals(DEPT_ROOT_PID)) {
extDeptMapper.incrementalSubcount(sysDept.getPid());
}
}
return sysDeptMapper.updateByPrimaryKeySelective(sysDept);
}
public int updateStatus(DeptStatusRequest request){
public int updateStatus(DeptStatusRequest request) {
Long deptId = request.getDeptId();
SysDept sysDept = new SysDept();
sysDept.setDeptId(deptId);
return sysDeptMapper.updateByPrimaryKeySelective(sysDept);
}
public List<SysDept> nodesTreeByCondition(BaseGridRequest request){
public List<SysDept> nodesTreeByCondition(XpackDeptGridRequest request) {
List<SimpleTreeNode> allNodes = allNodes();
List<SimpleTreeNode> targetNodes = nodeByCondition(request);
if(CollectionUtils.isEmpty(targetNodes)){
if (CollectionUtils.isEmpty(targetNodes)) {
return new ArrayList<>();
}
List<Long> ids = upTree(allNodes, targetNodes);
SysDeptExample example = new SysDeptExample();
if (CollectionUtils.isNotEmpty(ids)){
if (CollectionUtils.isNotEmpty(ids)) {
SysDeptExample.Criteria criteria = example.createCriteria();
criteria.andDeptIdIn(ids);
}
@ -132,14 +134,15 @@ public class DeptService {
return sysDeptMapper.selectByExample(example);
}
public List<DeptTreeNode> searchTree(Long deptId){
public List<DeptTreeNode> searchTree(Long deptId) {
List<SysDept> roots = nodesByPid(0L);
if (deptId.equals(DEPT_ROOT_PID)) return roots.stream().map(this::format).collect(Collectors.toList());
SysDept sysDept = sysDeptMapper.selectByPrimaryKey(deptId);
if (roots.stream().anyMatch(node -> node.getDeptId().equals(deptId))) return roots.stream().map(this::format).collect(Collectors.toList());
if (roots.stream().anyMatch(node -> node.getDeptId().equals(deptId)))
return roots.stream().map(this::format).collect(Collectors.toList());
SysDept current = sysDept;
DeptTreeNode currentNode = format(sysDept);
while (!current.getPid().equals(DEPT_ROOT_PID)){
while (!current.getPid().equals(DEPT_ROOT_PID)) {
SysDept parent = sysDeptMapper.selectByPrimaryKey(current.getPid()); //pid上有索引 所以效率不会太差
DeptTreeNode parentNode = format(parent);
parentNode.setChildren(currentNode.toList());
@ -151,7 +154,7 @@ public class DeptService {
return roots.stream().map(node -> node.getDeptId().equals(targetRootNode.getId()) ? targetRootNode : format(node)).collect(Collectors.toList());
}
private DeptTreeNode format(SysDept sysDept){
private DeptTreeNode format(SysDept sysDept) {
DeptTreeNode deptTreeNode = new DeptTreeNode();
deptTreeNode.setId(sysDept.getDeptId());
deptTreeNode.setLabel(sysDept.getName());
@ -159,22 +162,23 @@ public class DeptService {
return deptTreeNode;
}
private List<SimpleTreeNode> allNodes(){
private List<SimpleTreeNode> allNodes() {
return extDeptMapper.allNodes();
}
private List<SimpleTreeNode> nodeByCondition(BaseGridRequest request){
GridExample gridExample = request.convertExample();
return extDeptMapper.nodesByExample(gridExample);
private List<SimpleTreeNode> nodeByCondition(XpackDeptGridRequest request) {
return extDeptMapper.nodesByExample(request);
}
/**
* 找出目标节点所在路径上的所有节点 向上找
* @param allNodes 所有节点
*
* @param allNodes 所有节点
* @param targetNodes 目标节点
* @return
*/
private List<Long> upTree(List<SimpleTreeNode> allNodes, List<SimpleTreeNode> targetNodes){
private List<Long> upTree(List<SimpleTreeNode> allNodes, List<SimpleTreeNode> targetNodes) {
final Map<Long, SimpleTreeNode> map = allNodes.stream().collect(Collectors.toMap(SimpleTreeNode::getId, node -> node));
return targetNodes.parallelStream().flatMap(targetNode -> {
//向上逐级找爹

View File

@ -1,7 +1,6 @@
package io.dataease.service.sys;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.request.MenuCreateRequest;
import io.dataease.controller.sys.request.MenuDeleteRequest;
import io.dataease.controller.sys.request.SimpleTreeNode;
@ -168,28 +167,10 @@ public class MenuService {
}
public List<SysMenu> nodesTreeByCondition(BaseGridRequest request) {
List<SimpleTreeNode> allNodes = allNodes();
List<SimpleTreeNode> targetNodes = nodeByCondition(request);
if (org.apache.commons.collections.CollectionUtils.isEmpty(targetNodes)) {
return new ArrayList<>();
}
List<Long> ids = upTree(allNodes, targetNodes);
SysMenuExample example = new SysMenuExample();
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(ids)) {
SysMenuExample.Criteria criteria = example.createCriteria();
criteria.andMenuIdIn(ids);
}
return sysMenuMapper.selectByExample(example);
}
public List<SimpleTreeNode> allNodes() {
return extSysMenuMapper.allNodes();
}
public List<SimpleTreeNode> nodeByCondition(BaseGridRequest request) {
return extSysMenuMapper.nodesByExample(request.convertExample());
}
/**
* 找出目标节点所在路径上的所有节点 向上找

View File

@ -3,20 +3,19 @@ package io.dataease.service.sys;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import com.google.gson.Gson;
import io.dataease.commons.utils.IPUtils;
import io.dataease.dto.MyPluginDTO;
import io.dataease.ext.ExtSysPluginMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.commons.constants.AuthConstants;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.commons.utils.DeFileUtils;
import io.dataease.commons.utils.IPUtils;
import io.dataease.commons.utils.LogUtil;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.MyPluginDTO;
import io.dataease.ext.ExtSysPluginMapper;
import io.dataease.i18n.Translator;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.base.domain.MyPlugin;
import io.dataease.plugins.common.base.mapper.MyPluginMapper;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.plugins.config.LoadjarUtil;
import io.dataease.plugins.entity.PluginOperate;
import io.dataease.service.datasource.DatasourceService;
@ -65,9 +64,12 @@ public class PluginService {
private String version;
public List<MyPlugin> query(BaseGridRequest request) {
GridExample gridExample = request.convertExample();
return extSysPluginMapper.query(gridExample);
public List<MyPlugin> query(KeywordRequest request) {
return extSysPluginMapper.query(request);
}
public void systemUpgrade() {
extSysPluginMapper.updateVersion(version);
}
/**
@ -207,11 +209,9 @@ public class PluginService {
* @return
*/
public boolean pluginExist(MyPlugin myPlugin) {
GridExample gridExample = new GridExample();
List<MyPlugin> plugins = extSysPluginMapper.query(gridExample);
return plugins.stream().anyMatch(plugin -> {
return StringUtils.equals(myPlugin.getName(), plugin.getName()) || StringUtils.equals(myPlugin.getModuleName(), plugin.getModuleName());
});
KeywordRequest request = new KeywordRequest();
List<MyPlugin> plugins = extSysPluginMapper.query(request);
return plugins.stream().anyMatch(plugin -> StringUtils.equals(myPlugin.getName(), plugin.getName()) || StringUtils.equals(myPlugin.getModuleName(), plugin.getModuleName()));
}
/**

View File

@ -1,10 +1,10 @@
package io.dataease.service.sys;
import io.dataease.ext.ExtSysRoleMapper;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.response.RoleUserItem;
import io.dataease.ext.ExtSysRoleMapper;
import io.dataease.plugins.common.base.domain.SysRole;
import io.dataease.plugins.common.request.KeywordRequest;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -16,10 +16,9 @@ public class SysRoleService {
@Resource
private ExtSysRoleMapper extSysRoleMapper;
public List<SysRole> query(BaseGridRequest request) {
List<SysRole> result = extSysRoleMapper.query(request.convertExample());
public List<SysRole> query(KeywordRequest request) {
return result;
return extSysRoleMapper.query(request);
}
public List<RoleUserItem> allRoles() {

View File

@ -12,7 +12,6 @@ import io.dataease.controller.sys.request.*;
import io.dataease.controller.sys.response.SysUserGridResponse;
import io.dataease.controller.sys.response.SysUserRole;
import io.dataease.ext.ExtSysUserMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.base.mapper.SysUserAssistMapper;
@ -65,12 +64,11 @@ public class SysUserService {
private AuthUserService authUserService;
public List<SysUserGridResponse> query(KeyGridRequest request) {
String keyWord = request.getKeyWord();
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(keyWord);
List<SysUserGridResponse> lists = extSysUserMapper.query(gridExample);
public List<SysUserGridResponse> query(UserGridRequest request) {
List<SysUserGridResponse> lists = extSysUserMapper.query(request);
lists.forEach(item -> {
item.setPassword("");
List<SysUserRole> roles = item.getRoles();
List<Long> roleIds = roles.stream().filter(ObjectUtils::isNotEmpty).map(SysUserRole::getRoleId).collect(Collectors.toList());
item.setRoleIds(roleIds);

View File

@ -1,12 +0,0 @@
package io.dataease.service.sys.log;
import io.dataease.ext.query.GridExample;
import lombok.Data;
import java.util.List;
@Data
public class LogQueryParam extends GridExample {
private List<String> unionIds;
}

View File

@ -2,7 +2,6 @@ package io.dataease.service.sys.log;
import cn.hutool.core.date.DateUtil;
import com.google.gson.Gson;
import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.commons.constants.ParamConstants;
@ -11,14 +10,12 @@ import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.IPUtils;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.controller.sys.request.KeyGridRequest;
import io.dataease.controller.sys.request.LogGridRequest;
import io.dataease.dto.SysLogDTO;
import io.dataease.dto.SysLogGridDTO;
import io.dataease.dto.log.FolderItem;
import io.dataease.exception.DataEaseException;
import io.dataease.ext.ExtSysLogMapper;
import io.dataease.ext.query.GridExample;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysLogExample;
import io.dataease.plugins.common.base.domain.SysLogWithBLOBs;
@ -35,7 +32,10 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
@ -95,100 +95,10 @@ public class LogService {
}
public KeyGridRequest logRetentionProxy(KeyGridRequest request) {
String value = systemParameterService.getValue(ParamConstants.BASIC.LOG_TIME_OUT.getValue());
value = StringUtils.isBlank(value) ? LOG_RETENTION : value;
int logRetention = Integer.parseInt(value);
Calendar instance = Calendar.getInstance();
public List<SysLogGridDTO> query(LogGridRequest request) {
Calendar startInstance = (Calendar) instance.clone();
startInstance.add(Calendar.DATE, -logRetention);
startInstance.set(Calendar.HOUR_OF_DAY, 0);
startInstance.set(Calendar.MINUTE, 0);
startInstance.set(Calendar.SECOND, 0);
long startTime = startInstance.getTimeInMillis();
Calendar endInstance = (Calendar) instance.clone();
endInstance.add(Calendar.DATE, 1);
endInstance.set(Calendar.HOUR_OF_DAY, 0);
endInstance.set(Calendar.MINUTE, 0);
endInstance.set(Calendar.SECOND, 0);
long endTime = endInstance.getTimeInMillis();
List<ConditionEntity> conditions = request.getConditions();
if (CollectionUtils.isNotEmpty(conditions) && conditions.stream().anyMatch(condition -> StringUtils.equals("time", condition.getField()))) {
conditions.forEach(condition -> {
if (StringUtils.equals("time", condition.getField()) && startTime > ((List<Long>) condition.getValue()).get(0)) {
((List<Long>) condition.getValue()).set(0, startTime);
}
});
} else {
ConditionEntity conditionEntity = new ConditionEntity();
conditionEntity.setField("time");
conditionEntity.setOperator("between");
List<Long> times = new ArrayList<>();
times.add(startTime);
times.add(endTime);
conditionEntity.setValue(times);
conditions.add(conditionEntity);
}
return request;
}
public List<SysLogGridDTO> query(KeyGridRequest request) {
request = detailRequest(request);
String keyWord = request.getKeyWord();
List<String> ids = null;
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(keyWord);
LogQueryParam logQueryParam = gson.fromJson(gson.toJson(gridExample), LogQueryParam.class);
if (StringUtils.isNotBlank(keyWord)) {
List<FolderItem> types = types();
ids = types.stream().filter(item -> item.getName().toLowerCase().contains(keyWord.toLowerCase())).map(FolderItem::getId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(ids))
logQueryParam.setUnionIds(ids);
}
List<SysLogWithBLOBs> voLogs = extSysLogMapper.query(logQueryParam);
List<SysLogGridDTO> dtos = voLogs.stream().map(this::convertDTO).collect(Collectors.toList());
return dtos;
}
private KeyGridRequest detailRequest(KeyGridRequest request) {
List<ConditionEntity> conditions = request.getConditions();
if (CollectionUtils.isNotEmpty(conditions)) {
ConditionEntity uninCondition = null;
int matchIndex = -1;
for (int i = 0; i < conditions.size(); i++) {
ConditionEntity conditionEntity = conditions.get(i);
String field = conditionEntity.getField();
Object value = conditionEntity.getValue();
if (StringUtils.isNotBlank(field) && StringUtils.equals("optype", field) && ObjectUtils.isNotEmpty(value)) {
matchIndex = i;
uninCondition = new ConditionEntity();
List<String> values = (List<String>) value;
uninCondition.setField("concat(operate_type, '-de-', source_type)");
List<String> uninValue = values.stream().map(v -> v.replace("-", "-de-")).collect(Collectors.toList());
uninCondition.setValue(uninValue);
uninCondition.setOperator(conditionEntity.getOperator());
}
}
if (matchIndex >= 0) {
conditions.remove(matchIndex);
if (ObjectUtils.isNotEmpty(uninCondition)) conditions.add(uninCondition);
}
}
return request;
List<SysLogWithBLOBs> voLogs = extSysLogMapper.query(request);
return voLogs.stream().map(this::convertDTO).collect(Collectors.toList());
}
@ -350,24 +260,12 @@ public class LogService {
}
public void exportExcel(KeyGridRequest request) throws Exception {
request = logRetentionProxy(request);
request = detailRequest(request);
String keyWord = request.getKeyWord();
List<String> ids = null;
public void exportExcel(LogGridRequest request) throws Exception {
HttpServletResponse response = ServletUtils.response();
OutputStream outputStream = response.getOutputStream();
try {
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(keyWord);
LogQueryParam logQueryParam = gson.fromJson(gson.toJson(gridExample), LogQueryParam.class);
if (StringUtils.isNotBlank(keyWord)) {
List<FolderItem> types = types();
ids = types.stream().filter(item -> item.getName().toLowerCase().contains(keyWord.toLowerCase())).map(FolderItem::getId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(ids))
logQueryParam.setUnionIds(ids);
}
List<SysLogWithBLOBs> lists = extSysLogMapper.query(logQueryParam);
List<SysLogWithBLOBs> lists = extSysLogMapper.query(request);
List<String[]> details = lists.stream().map(item -> {
String operateTypeName = SysLogConstants.operateTypeName(item.getOperateType());
String sourceTypeName = SysLogConstants.sourceTypeName(item.getSourceType());

View File

@ -1,6 +1,6 @@
{
"name": "dataease",
"version": "1.18.10",
"version": "1.18.11",
"description": "dataease front",
"private": true,
"scripts": {
@ -88,7 +88,7 @@
"vuedraggable": "^2.24.3",
"vuex": "3.1.0",
"webpack": "^4.46.0",
"xlsx": "^0.17.0",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz",
"xss": "^1.0.14"
},
"devDependencies": {

View File

@ -53,12 +53,4 @@ export function treeByMenuId(menuId) {
})
}
export function queryCondition(data) {
return request({
url: '/api/menu/search',
method: 'post',
data
})
}
export default { addMenu, editMenu, delMenu, getMenusTree, getChild, treeByMenuId, queryCondition }
export default { addMenu, editMenu, delMenu, getMenusTree, getChild, treeByMenuId }

View File

@ -0,0 +1,28 @@
export const buildParam = (conditions, keyword) => {
const result = {}
conditions.forEach(condition => {
const key = condition.field
const val = condition.value
const keyArray = key.split('.')
const len = keyArray.length
const fieldKey = keyArray[len - 1]
result[formatField(fieldKey)] = val
})
if (keyword === 0 || !!keyword) {
result['keyword'] = keyword
}
return result
}
const formatField = fieldText => {
const array = fieldText.split('_')
let result = ''
for (let index = 0; index < array.length; index++) {
let temp = array[index]
if (index) {
temp = temp.substr(0, 1).toLocaleUpperCase() + temp.substr(1)
}
result += temp
}
return result
}

View File

@ -110,7 +110,7 @@
<el-col style="width: 130px!important;">
<el-upload
action=""
accept=".jpeg,.jpg,.png,.gif,.svg"
accept=".jpeg,.jpg,.png,.gif"
class="avatar-uploader"
list-type="picture-card"
:class="{disabled:uploadDisabled}"

View File

@ -334,6 +334,10 @@ export function baseTablePivot(s2, container, chart, action, headerAction, table
const columns = []
const meta = []
const fieldMap = fields.reduce((pre, next) => {
pre[next['dataeaseName']] = next['name']
return pre
}, {})
// add drill list
if (chart.drill) {
@ -486,10 +490,10 @@ export function baseTablePivot(s2, container, chart, action, headerAction, table
// hover
const size = customAttr?.size
if (size?.tableRowTooltip?.show) {
s2.on(S2Event.ROW_CELL_HOVER, event => showTooltip(s2, event))
s2.on(S2Event.ROW_CELL_HOVER, event => showTooltip(s2, event, fieldMap))
}
if (size?.tableColTooltip?.show) {
s2.on(S2Event.COL_CELL_HOVER, event => showTooltip(s2, event))
s2.on(S2Event.COL_CELL_HOVER, event => showTooltip(s2, event, fieldMap))
}
// theme
const customTheme = getCustomTheme(chart)
@ -703,10 +707,13 @@ function mappingColor(value, defaultColor, field, type) {
return color
}
function showTooltip(s2Instance, event) {
function showTooltip(s2Instance, event, fieldMap) {
const cell = s2Instance.getCell(event.target)
const content = cell.actualText
const meta = cell.getMeta()
let content = meta.value
if (fieldMap?.[content]) {
content = fieldMap?.[content]
}
s2Instance.showTooltip({
position: {
x: event.clientX,

View File

@ -1048,14 +1048,7 @@ export default {
},
listTaskLog(loading = true) {
const params = {
conditions: [
{
field: 'dataset_table_task_log.table_id',
operator: 'eq',
value: this.table.id
}
],
orders: []
tableId: [this.table.id]
}
post(
'/dataset/taskLog/listForDataset/' +

View File

@ -866,7 +866,7 @@ export default {
}
},
listTaskLog(loading = true) {
const params = { 'conditions': [{ 'field': 'dataset_table_task_log.table_id', 'operator': 'eq', 'value': this.table.id }], 'orders': [] }
const params = { 'tableId': [this.table.id], 'orders': [] }
post('/dataset/taskLog/listForDataset/' + this.table.type + '/' + this.page.currentPage + '/' + this.page.pageSize, params, loading).then(response => {
this.taskLogData = response.data.listObject
this.page.total = response.data.itemCount

View File

@ -86,7 +86,7 @@
<el-col style="width: 148px!important;height: 148px!important;overflow: hidden">
<el-upload
action=""
accept=".jpeg,.jpg,.png,.gif,.svg"
accept=".jpeg,.jpg,.png,.gif"
class="avatar-uploader"
list-type="picture-card"
:class="{disabled:uploadDisabled}"

View File

@ -94,12 +94,7 @@ export default {
searchWithKey(index) {
this.timeMachine = setTimeout(() => {
if (index === this.changeIndex) {
const condition = {
field: 'name',
operator: 'like',
value: this.keyWord
}
this.search(condition)
this.search()
}
this.destroyTimeMachine()
}, 1500)
@ -124,25 +119,25 @@ export default {
},
//
search(condition) {
search() {
this.treeData = []
let param = {}
if (condition && condition.value) {
param = { conditions: [condition] }
if (this.keyWord) {
param = { keyword: this.keyWord }
} else {
param = { conditions: [this.defaultCondition] }
param = { pid: 0 }
}
if (!this.sharesLoad) {
this.queryShareNodeIds(() => {
this.sharesLoad = true
this.loadTreeData(param, condition)
this.loadTreeData(param)
})
} else {
this.loadTreeData(param, condition)
this.loadTreeData(param)
}
},
loadTreeData(param, condition) {
loadTreeData(param) {
loadTable(param).then(res => {
let data = res.data
data = data.map(obj => {
@ -154,7 +149,7 @@ export default {
this.setCheckExpandNodes(data)
this.expandNodeIds = []
if (condition && condition.value) {
if (this.keyWord) {
this.treeData = this.buildTree(data)
this.$nextTick(() => {
this.expandResult(this.treeData)

View File

@ -28,7 +28,6 @@
<script>
import { roleGrid } from '@/api/system/user'
import { formatCondition } from '@/utils/index'
import { loadShares } from '@/api/panel/share'
export default {
name: 'GrantRole',
@ -70,9 +69,8 @@ export default {
this.columnLabel = this.defaultHeadName
},
search(condition) {
const temp = formatCondition(condition)
const param = temp || {}
search() {
const param = {}
roleGrid(1, 0, param).then(response => {
const data = response.data
this.data = data.listObject

View File

@ -208,8 +208,8 @@ export default {
},
formatCondition() {
const fildMap = {
optype: this.activeType,
'user_id': this.activeUser
optypeList: this.activeType,
userIdList: this.activeUser
}
const conditions = []
Object.keys(fildMap).forEach((ele) => {
@ -228,7 +228,7 @@ export default {
max = +max + 24 * 3600 * 1000
}
conditions.push({
field: 'time',
field: 'timeList',
operator: 'between',
value: [+min, +max]
})

View File

@ -146,6 +146,7 @@ import GridTable from '@/components/gridTable/index.vue'
import filterUser from './FilterUser'
import _ from 'lodash'
import keyEnter from '@/components/msgCfm/keyEnter.js'
import { buildParam } from '@/utils/GridConditionUtil'
import {
addOrder,
formatOrders
@ -197,13 +198,8 @@ export default {
})
},
exportData() {
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.keyWord = this.nickName
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
exportExcel(param).then((res) => {
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
@ -289,13 +285,9 @@ export default {
this.$refs.filterUser.init()
},
search() {
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.keyWord = this.nickName
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
const { currentPage, pageSize } = this.paginationConfig
logGrid(currentPage, pageSize, param).then((response) => {
this.data = response.data.listObject

View File

@ -219,13 +219,7 @@ export default {
search() {
const param = {}
if (this.name) {
param.conditions = [
{
field: 'name',
operator: 'like',
value: this.name
}
]
param.keyword = this.name
}
pluginLists(0, 0, param).then((response) => {
this.data = response.data.listObject.filter(item => item.pluginId > 1)

View File

@ -350,7 +350,7 @@ import filterUser from './FilterUser.vue'
import msgCfm from '@/components/msgCfm/index'
import _ from 'lodash'
import keyEnter from '@/components/msgCfm/keyEnter.js'
import { buildParam } from '@/utils/GridConditionUtil'
export default {
name: 'DatasetTaskList',
components: { GridTable, filterUser },
@ -502,23 +502,12 @@ export default {
},
search(showLoading = true) {
const { taskId, name } = this.transCondition
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.conditions.push({
field: `dataset_table_task.name`,
operator: 'like',
value: this.nickName
})
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
if (taskId && this.nickName === name) {
param.conditions.push({
operator: 'eq',
value: taskId,
field: 'dataset_table_task.id'
})
param['id'] = taskId
}
const { currentPage, pageSize } = this.paginationConfig
datasetTaskList(currentPage, pageSize, param, showLoading).then(

View File

@ -315,7 +315,7 @@ export default {
'dataset_table_task.rate': this.active.rate,
'dataset_table_task.status': this.active.status,
'dataset_table_task.last_exec_status': this.active.execStatus,
'dataset_table.id': this.activeDataset
'dataset_table.tableId': this.activeDataset
}
const conditions = []
Object.keys(fildMap).forEach((ele) => {

View File

@ -308,7 +308,7 @@ export default {
formatCondition() {
const fildMap = {
'dataset_table_task.last_exec_status': this.active.execStatus,
'dataset_table.id': this.activeDataset
'dataset_table.tableId': this.activeDataset
}
const conditions = []
Object.keys(fildMap).forEach((ele) => {

View File

@ -179,7 +179,7 @@ import GridTable from '@/components/gridTable/index.vue'
import filterUser from './FilterUserRecord.vue'
import _ from 'lodash'
import keyEnter from '@/components/msgCfm/keyEnter.js'
import { buildParam } from '@/utils/GridConditionUtil'
export default {
name: 'TaskRecord',
components: { GridTable, filterUser },
@ -258,23 +258,10 @@ export default {
},
exportData() {
const { taskId, name } = this.transCondition
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.conditions.push({
field: `dataset_table_task.name`,
operator: 'like',
value: this.nickName
})
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
if (taskId && this.nickName === name) {
param.conditions.push({
operator: 'eq',
value: taskId,
field: 'dataset_table_task.id'
})
param.id = taskId
}
exportExcel(param).then((res) => {
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
@ -368,23 +355,10 @@ export default {
this.lastRequestComplete = false
}
const { taskId, name } = this.transCondition
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.conditions.push({
field: `dataset_table_task.name`,
operator: 'like',
value: this.nickName
})
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
if (taskId && this.nickName === name) {
param.conditions.push({
operator: 'eq',
value: taskId,
field: 'dataset_table_task.id'
})
param.id = taskId
}
post(
'/dataset/taskLog/list/notexcel/' +
@ -405,23 +379,10 @@ export default {
},
search(condition, showLoading = true) {
const { taskId, name } = this.transCondition
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.conditions.push({
field: `dataset_table_task.name`,
operator: 'like',
value: this.nickName
})
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
if (taskId && this.nickName === name) {
param.conditions.push({
operator: 'eq',
value: taskId,
field: 'dataset_table_task.id'
})
param.id = taskId
}
post(
'/dataset/taskLog/list/notexcel/' +

View File

@ -322,9 +322,9 @@ export default {
},
formatCondition() {
const fildMap = {
'r.role_id': this.activeRole,
'd.dept_id': this.activeDept,
'u.enabled': this.activeStatus
'r.role_id_list': this.activeRole,
'd.dept_id_list': this.activeDept,
'u.enabled_list': this.activeStatus
}
const conditions = []
Object.keys(fildMap).forEach((ele) => {

View File

@ -126,8 +126,8 @@
@current-change="handleCurrentChange"
>
<el-table-column
prop="username"
key="username"
prop="username"
label="ID"
/>
<el-table-column
@ -139,8 +139,8 @@
/>
<!-- <el-table-column prop="gender" :label="$t('commons.gender')" width="60" /> -->
<el-table-column
prop="from"
key="from"
prop="from"
:label="$t('user.source')"
width="80"
>
@ -261,7 +261,10 @@
popper-class="reset-pwd"
trigger="click"
>
<svg-icon class="reset-pwd-icon" icon-class="icon_info_filled" />
<svg-icon
class="reset-pwd-icon"
icon-class="icon_info_filled"
/>
<div class="tips">{{ $t('user.recover_pwd') }}</div>
<div class="editer-form-title">
<span
@ -333,6 +336,7 @@ import { columnOptions } from './options'
import DeLayoutContent from '@/components/business/DeLayoutContent'
import { addOrder, formatOrders } from '@/utils/index'
import { pluginLoaded, defaultPwd } from '@/api/user'
import { buildParam } from '@/utils/GridConditionUtil'
import bus from '@/utils/bus'
import { Base64 } from 'js-base64'
/* import { ldapStatus, pluginLoaded } from '@/api/user' */
@ -568,17 +572,9 @@ export default {
})
},
search() {
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
}
if (this.nickName) {
param.conditions.push({
field: `concat(nick_name, ',' , email)`,
operator: 'like',
value: this.nickName
})
}
const param = buildParam(this.cacheCondition, this.nickName)
param.orders = formatOrders(this.orderConditions)
const { currentPage, pageSize } = this.paginationConfig
userLists(currentPage, pageSize, param).then((response) => {
this.data = response.data.listObject

View File

@ -1,6 +1,6 @@
{
"name": "dataease-mobile",
"version": "1.18.10",
"version": "1.18.11",
"private": true,
"scripts": {
"serve": "npm run dev:h5",

View File

@ -9,7 +9,7 @@
<packaging>pom</packaging>
<properties>
<dataease.version>1.18.10</dataease.version>
<dataease.version>1.18.11</dataease.version>
</properties>
<name>dataease</name>

View File

@ -1,17 +0,0 @@
package io.dataease.plugins.common.entity;
import io.dataease.plugins.common.annotation.PluginResultMap;
import lombok.Data;
import java.io.Serializable;
@Data
@PluginResultMap
public class XpackConditionEntity implements Serializable {
private String field;
private String operator;
private Object value;
}

View File

@ -1,271 +0,0 @@
package io.dataease.plugins.common.entity;
import io.dataease.plugins.common.annotation.PluginResultMap;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
@PluginResultMap
public class XpackGridExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
protected String extendCondition;
public XpackGridExample() {
oredCriteria = new ArrayList<Criteria>();
}
public String getExtendCondition() {
return extendCondition;
}
public void setExtendCondition(String extendCondition) {
this.extendCondition = extendCondition;
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria addCondition(XpackConditionEntity conditionEntity){
String field = conditionEntity.getField();
Object value = conditionEntity.getValue();
String operator = conditionEntity.getOperator();
if (StringUtils.isEmpty(operator))
operator = "like";
switch (operator){
case "eq":
addCriterion(field+" = ", value, field);
break;
case "ne":
addCriterion(field+" <> ", value, field);
break;
case "like":
addCriterion(field+" like ", "%"+value+"%", field);
break;
case "not like":
addCriterion(field+" not like ", "%"+value+"%", field);
break;
case "in":
List<Object> invalues = (List<Object>)value;
addCriterion(field+" in", invalues, field);
break;
case "not in":
List<Object> notinvalues = (List<Object>)value;
addCriterion(field+" not in", notinvalues, field);
break;
case "between":
List<Object> values = (List<Object>)value;
Object v1 = values.get(0);
Object v2 = values.get(1);
addCriterion(field+" between", v1, v2, field);
break;
case "gt":
addCriterion(field+" > ", value, field);
break;
case "ge":
addCriterion(field+" >= ", value, field);
break;
case "lt":
addCriterion(field+" < ", value, field);
break;
case "le":
addCriterion(field+" <= ", value, field);
break;
}
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

View File

@ -1,29 +0,0 @@
package io.dataease.plugins.common.entity;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.List;
@Data
public class XpackGridRequest implements Serializable {
private List<XpackConditionEntity> conditions;
private List<String> orders;
public XpackGridExample convertExample(){
XpackGridExample gridExample = new XpackGridExample();
if (!CollectionUtils.isEmpty(conditions)){
XpackGridExample.Criteria criteria = gridExample.createCriteria();
conditions.forEach(criteria::addCondition);
}
if (!CollectionUtils.isEmpty(orders)) {
String orderByClause = String.join(", ", orders);
gridExample.setOrderByClause(orderByClause);
}
return gridExample;
}
}

View File

@ -1,4 +0,0 @@
package io.dataease.plugins.common.mapper;
public interface PluginGridSql {
}

View File

@ -1,35 +0,0 @@
<?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="io.dataease.plugins.common.mapper.PluginGridSql">
<sql id="gridCondition">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
</mapper>

View File

@ -0,0 +1,16 @@
package io.dataease.plugins.common.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class KeywordRequest implements Serializable {
@ApiModelProperty("关键字")
private String keyword;
@ApiModelProperty("排序描述")
private List<String> orders;
}

View File

@ -1,11 +1,8 @@
package io.dataease.plugins.datasource.service;
import io.dataease.plugins.common.dto.datasource.DataSourceType;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.service.PluginComponentService;
import java.util.List;
public abstract class DatasourceService extends PluginComponentService {
abstract public DataSourceType getDataSourceType();

View File

@ -43,7 +43,7 @@
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.9</version>
<version>5.5.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>

View File

@ -1,6 +1,5 @@
package io.dataease.plugins.xpack.auth.service;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.service.PluginComponentService;
import io.dataease.plugins.xpack.auth.dto.request.DataSetColumnPermissionsDTO;
import io.dataease.plugins.xpack.auth.dto.request.DatasetColumnPermissions;
@ -9,9 +8,9 @@ import java.util.List;
public abstract class ColumnPermissionService extends PluginComponentService {
public abstract List<DataSetColumnPermissionsDTO> searchPermissions(DataSetColumnPermissionsDTO request);
public abstract List<DataSetColumnPermissionsDTO> queryPermissions(XpackGridRequest arg0) ;
public abstract List<DataSetColumnPermissionsDTO> queryPermissions(String tableId) ;
public abstract DatasetColumnPermissions save(DatasetColumnPermissions datasetColumnPermissions);
public abstract void delete(String id);
public abstract List<? extends Object> authObjs(DataSetColumnPermissionsDTO request);
public abstract List<?> authObjs(DataSetColumnPermissionsDTO request);
public abstract DataSetColumnPermissionsDTO permissionInfo(DataSetColumnPermissionsDTO datasetRowPermissions);
}

View File

@ -1,6 +1,5 @@
package io.dataease.plugins.xpack.auth.service;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.service.PluginComponentService;
import io.dataease.plugins.xpack.auth.dto.request.DataSetRowPermissionsDTO;
import io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions;
@ -9,7 +8,7 @@ import java.util.List;
public abstract class RowPermissionService extends PluginComponentService {
public abstract List<DataSetRowPermissionsDTO> searchRowPermissions(DataSetRowPermissionsDTO request);
public abstract List<DataSetRowPermissionsDTO> queryRowPermissions(XpackGridRequest arg0) ;
public abstract List<DataSetRowPermissionsDTO> queryRowPermissions(String tableId) ;
public abstract void save(DatasetRowPermissions datasetRowPermissions);
public abstract void delete(String id);
public abstract List<? extends Object> authObjs(DataSetRowPermissionsDTO request);

View File

@ -0,0 +1,10 @@
package io.dataease.plugins.xpack.dept.dto.request;
import io.dataease.plugins.common.request.KeywordRequest;
import lombok.Data;
@Data
public class XpackDeptGridRequest extends KeywordRequest {
private Long pid = 0L;
}

View File

@ -1,18 +1,18 @@
package io.dataease.plugins.xpack.dept.service;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.service.PluginMenuService;
import io.dataease.plugins.xpack.dept.dto.request.*;
import io.dataease.plugins.xpack.dept.dto.response.DeptUserItemDTO;
import io.dataease.plugins.xpack.dept.dto.response.XpackDeptTreeNode;
import io.dataease.plugins.xpack.dept.dto.response.XpackSysDept;
import java.util.List;
public abstract class DeptXpackService extends PluginMenuService {
public abstract List<XpackSysDept> nodesByPid(Long pid);
public abstract List<XpackSysDept> nodesTreeByCondition(XpackGridRequest request);
public abstract List<XpackSysDept> nodesTreeByCondition(XpackDeptGridRequest request);
public abstract List<XpackDeptTreeNode> searchTree(Long deptId);
@ -23,8 +23,11 @@ public abstract class DeptXpackService extends PluginMenuService {
public abstract int batchDelete(List<XpackDeleteDept> requests);
public abstract void move(XpackMoveDept xpackMoveDept);
public abstract void bindUser(XpackDeptBindRequest request);
public abstract void unBindUsers(XpackDeptBindRequest request);
public abstract List<DeptUserItemDTO> queryBinded(XpackDeptUserRequest request, boolean isPage);

Some files were not shown because too many files have changed in this diff Show More