Merge pull request #6079 from dataease/pr@dev@fix_grid_sql_inject_incomplete

fix: 修复sql注入漏洞
This commit is contained in:
fit2cloud-chenyw 2023-09-12 13:22:09 +08:00 committed by GitHub
commit a2b694af94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
96 changed files with 4236 additions and 1794 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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,11 @@
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);
}

View File

@ -3,18 +3,13 @@
<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>

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,10 @@ public class PluginRunner implements ApplicationRunner {
}
@Override
public void run(ApplicationArguments args) {
// 执行加载插件逻辑
BaseGridRequest request = new BaseGridRequest();
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

@ -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,8 @@ 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);
}
/**
@ -207,11 +205,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,11 +64,9 @@ 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();

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

@ -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

@ -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

@ -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,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

@ -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);

View File

@ -0,0 +1,16 @@
package io.dataease.plugins.xpack.email.dto.request;
import io.dataease.plugins.common.request.KeywordRequest;
import lombok.Data;
import java.util.List;
@Data
public class XpackEmailInstanceGridRequest extends KeywordRequest {
private List<String> statusList;
private Long[] timeArray;
private Long taskId;
}

View File

@ -0,0 +1,13 @@
package io.dataease.plugins.xpack.email.dto.request;
import lombok.Data;
import java.util.List;
@Data
public class XpackEmailTaskGridRequest extends XpackEmailInstanceGridRequest {
private List<Long> userIdList;
}

View File

@ -1,11 +1,10 @@
package io.dataease.plugins.xpack.email.service;
import java.util.List;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import io.dataease.plugins.common.entity.GlobalTaskInstance;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.service.PluginMenuService;
import io.dataease.plugins.xpack.email.dto.request.XpackEmailInstanceGridRequest;
import io.dataease.plugins.xpack.email.dto.request.XpackEmailTaskGridRequest;
import io.dataease.plugins.xpack.email.dto.request.XpackEmailTaskRequest;
import io.dataease.plugins.xpack.email.dto.request.XpackPixelEntity;
import io.dataease.plugins.xpack.email.dto.response.XpackEmailTemplateDTO;
@ -13,15 +12,17 @@ import io.dataease.plugins.xpack.email.dto.response.XpackTaskEntity;
import io.dataease.plugins.xpack.email.dto.response.XpackTaskGridDTO;
import io.dataease.plugins.xpack.email.dto.response.XpackTaskInstanceDTO;
import java.util.List;
public abstract class EmailXpackService extends PluginMenuService {
public abstract int save(XpackEmailTaskRequest request) throws Exception;
public abstract List<XpackTaskGridDTO> taskGrid(XpackGridRequest request);
public abstract List<XpackTaskGridDTO> taskGrid(XpackEmailTaskGridRequest request);
public abstract Boolean status(GlobalTaskEntity taskEntity);
public abstract List<XpackTaskInstanceDTO> taskInstanceGrid(XpackGridRequest request);
public abstract List<XpackTaskInstanceDTO> taskInstanceGrid(XpackEmailInstanceGridRequest request);
public abstract void delete(Long taskId) throws Exception;
@ -51,7 +52,6 @@ public abstract class EmailXpackService extends PluginMenuService {
public abstract void batchDel(List<Long> taskIds);
public abstract void export(XpackGridRequest request);
public abstract Boolean status(Long taskId);

View File

@ -1,6 +1,6 @@
package io.dataease.plugins.xpack.role.service;
import io.dataease.plugins.common.entity.XpackGridRequest;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.plugins.common.service.PluginMenuService;
import io.dataease.plugins.xpack.role.dto.request.RoleUserMappingRequest;
import io.dataease.plugins.xpack.role.dto.request.RoleUserRequest;
@ -14,14 +14,13 @@ import java.util.List;
public abstract class RoleXpackService extends PluginMenuService {
public abstract void save(XpackRoleDto dto);
public abstract void delete(Long roleId);
public abstract void update(XpackRoleDto dto);
public abstract List<XpackRoleDto> query(XpackGridRequest request);
public abstract List<XpackRoleDto> query(KeywordRequest request);
public abstract List<XpackRoleItemDto> allRoles();