Commit 29ef2d76 authored by trumansdo's avatar trumansdo
Browse files

用户管理功能,待完成最后一个操作角色功能

parent 4614a9a3
......@@ -184,7 +184,12 @@ public class UserConsoleService extends CoreBaseService<CoreUser> {
sqlManager.insert(userRole);
}
public List<UserExcelExportData> queryExcel(PageQuery<CoreUser> query) {
public List<UserExcelExportData> queryExcel(CoreUserParam coreUserParam) {
PageQuery<CoreUser> query = coreUserParam.createPageQuery();
// 取出全部符合条件的
// page.setPageSize(Integer.MAX_VALUE);
// page.setPageNumber(1);
// page.setTotalRow(Integer.MAX_VALUE);
PageQuery<CoreUser> ret = userConsoleDao.queryByCondtion(query);
List<CoreUser> list = ret.getList();
OrgItem orgRoot = platformService.buildOrg();
......@@ -203,7 +208,7 @@ public class UserConsoleService extends CoreBaseService<CoreUser> {
dict = dictService.findCoreDict(CoreDictType.JOB_TYPE, dictValue);
userItem.setJobType1Text(dict.getName());
}
Long orgId = user.getOrgId();
Long orgId = Optional.ofNullable(user.getOrg()).map(CoreOrg::getId).orElse(1L);
String orgName = orgRoot.findChild(orgId).getName();
userItem.setOrgText(orgName);
items.add(userItem);
......
package com.ibeetl.admin.console.web;
import com.ibeetl.admin.console.service.CoreOrgConsoleElService;
import com.ibeetl.admin.core.entity.CoreRole;
import com.ibeetl.admin.core.entity.ElCascaderData;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreRoleService;
import com.ibeetl.admin.core.util.enums.RoleTypeEnum;
import com.ibeetl.admin.core.web.JsonResult;
import java.util.ArrayList;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 角色字典数据获取
*
* @author 一日看尽长安花
*/
@Slf4j
@RestController
@RequestMapping(value = "/core/roles")
public class RoleCascaderElController {
@Autowired CorePlatformService corePlatformService;
@Autowired CoreOrgConsoleElService coreOrgConsoleElService;
@Autowired CoreRoleService coreRoleService;
@GetMapping("/immediateLoad")
public JsonResult<List<ElCascaderData>> immediateLoadCascaderDict() {
List<CoreRole> childDictList = coreRoleService.getAllRoles(RoleTypeEnum.ACCESS.getValue());
return JsonResult.success(coreRoleToElCascaderData(childDictList));
}
/**
* .将字典树转成element级联器组件的格式
*
* @author 一日看尽长安花
* @return List<ElCascaderData>
*/
private List<ElCascaderData> coreRoleToElCascaderData(List<CoreRole> coreRoles) {
List<ElCascaderData> elCascaderDatas = new ArrayList<ElCascaderData>(coreRoles.size());
for (CoreRole role : coreRoles) {
ElCascaderData data = new ElCascaderData();
data.setId(role.getId());
data.setLabel(role.getName());
data.setValue(role.getId());
elCascaderDatas.add(data);
}
return elCascaderDatas.isEmpty() ? null : elCascaderDatas;
}
}
package com.ibeetl.admin.console.web;
import com.ibeetl.admin.console.service.FunctionConsoleService;
import com.ibeetl.admin.console.service.OrgConsoleService;
import com.ibeetl.admin.console.service.RoleConsoleService;
import com.ibeetl.admin.console.web.dto.RoleDataAccessFunction;
import com.ibeetl.admin.console.web.query.RoleQuery;
import com.ibeetl.admin.console.web.query.RoleUserQuery;
import com.ibeetl.admin.core.annotation.Function;
import com.ibeetl.admin.core.annotation.Query;
import com.ibeetl.admin.core.entity.CoreRole;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.entity.ElCascaderData;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.AnnotationUtil;
import com.ibeetl.admin.core.util.ConvertUtil;
import com.ibeetl.admin.core.util.ValidateConfig;
import com.ibeetl.admin.core.web.JsonResult;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.engine.PageQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
/** 角色管理功能相关 */
@Slf4j
@RequestMapping("/admin/roles")
@RestController
public class RoleConsoleElController {
@Autowired private RoleConsoleService roleConsoleService;
@Autowired private FunctionConsoleService functionConsoleService;
@Autowired CorePlatformService platformService;
/**
* 列表页、 分页数据
*
* @param condtion
* @return
*/
@PostMapping("/list.json")
@Function("role.query")
public JsonResult<PageQuery> list(RoleQuery condtion) {
PageQuery page = condtion.getPageQuery();
roleConsoleService.queryByCondtion(page);
return JsonResult.success(page);
}
@GetMapping("/all.json")
@Function("role.query")
public JsonResult<List<CoreRole>> all() {
List<CoreRole> list = roleConsoleService.queryAllPermissionList();
return JsonResult.success(list);
}
/**
* 获取列表查询条件
*
* @return
*/
@PostMapping("/list/condition.json")
@Function("role.query")
public JsonResult<List<Map<String, Object>>> listCondtion() {
List<Map<String, Object>> list =
AnnotationUtil.getInstance().getAnnotations(Query.class, RoleQuery.class);
return JsonResult.success(list);
}
/**
* 保存
*
* @return
*/
@PostMapping("/add.json")
@Function("role.add")
public JsonResult addRole(@Validated(ValidateConfig.ADD.class) CoreRole role) {
CoreRole role1 = roleConsoleService.queryByCode(role.getCode());
if (role1 != null) {
return JsonResult.failMessage("用户编号已存在");
}
JsonResult result = new JsonResult();
role.setCreateTime(new Date());
roleConsoleService.save(role);
platformService.clearFunctionCache();
return result.success();
}
/**
* 更新
*
* @param role
* @return
*/
@PostMapping("/update.json")
@Function("role.edit")
public JsonResult<String> update(@Validated(ValidateConfig.UPDATE.class) CoreRole role) {
boolean success = roleConsoleService.update(role);
if (success) {
platformService.clearFunctionCache();
return new JsonResult().success();
} else {
return JsonResult.failMessage("保存失败");
}
}
/**
* 查询角色信息
*
* @param id
* @return
*/
@GetMapping("/view.json")
@Function("role.query")
public JsonResult<CoreRole> queryInfo(Long id) {
CoreRole role = roleConsoleService.queryById(id);
return JsonResult.success(role);
}
/**
* (批量)删除
*
* @param ids 角色id
* @return
*/
@PostMapping("/delete.json")
@Function("role.delete")
public JsonResult delete(String ids) {
if (ids.endsWith(",")) {
ids = StringUtils.substringBeforeLast(ids, ",");
}
List<Long> idList = ConvertUtil.str2longs(ids);
roleConsoleService.deleteById(idList);
return new JsonResult().success();
}
/** 查询角色下授权用户列表 */
@PostMapping("/user/list.json")
@Function("role.user.query")
public JsonResult<PageQuery<CoreUser>> userList(RoleUserQuery query) {
PageQuery page = query.getPageQuery();
PageQuery<CoreUser> pageQuery = roleConsoleService.queryRoleUser(page);
return JsonResult.success(page);
}
@PostMapping("/function/ids.json")
@Function("role.function.query")
public JsonResult<List<Long>> getFunctionIdByRole(Long roleId) {
List<Long> list = functionConsoleService.getFunctionByRole(roleId);
return JsonResult.success(list);
}
@GetMapping("/function/queryFunction.json")
@Function("role.function.query")
public JsonResult<List<RoleDataAccessFunction>> getQueryFunctionByRole(Long roleId) {
List<RoleDataAccessFunction> list = functionConsoleService.getQueryFunctionByRole(roleId);
return JsonResult.success(list);
}
@PostMapping("/function/update.json")
@Function("role.function.edit")
public JsonResult updateFunction(Long roleId, String ids) {
List<Long> all = ConvertUtil.str2longs(ids);
List<Long> addIds = new ArrayList<Long>();
List<Long> delIds = new ArrayList<Long>();
List<Long> dbs = functionConsoleService.getFunctionByRole(roleId);
Iterator<Long> it = all.iterator();
for (Long id : all) {
if (!dbs.contains(id)) {
addIds.add(id);
}
}
for (Long id : dbs) {
if (!all.contains(id)) {
delIds.add(id);
}
}
functionConsoleService.updateSysRoleFunction(roleId, addIds, delIds);
return JsonResult.success();
}
@PostMapping("/function/updateDataAccess.json")
@Function("role.function.updateDataAccess")
public JsonResult updateFunctionDataAccess(Long roleId, Long fnId, Integer accessType) {
RoleDataAccessFunction data = new RoleDataAccessFunction();
data.setRoleId(roleId);
data.setId(fnId);
data.setDataAccessType(accessType);
functionConsoleService.updateFunctionAccessByRole(Arrays.asList(data));
return JsonResult.success();
}
/*后端模板渲染*/
@PostMapping("/function/dataAccess.do")
@Function("role.function.updateDataAccess")
public ModelAndView datapage(Long roleId) {
List<RoleDataAccessFunction> list = functionConsoleService.getQueryFunctionByRole(roleId);
ModelAndView view = new ModelAndView("/admin/role/dataConfigPart.html");
view.addObject("list", list);
return view;
}
}
package com.ibeetl.admin.console.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.beetl.sql.core.engine.PageQuery;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.ibeetl.admin.console.service.OrgConsoleService;
import com.ibeetl.admin.console.service.RoleConsoleService;
import com.ibeetl.admin.console.service.UserConsoleService;
......@@ -38,12 +13,32 @@ import com.ibeetl.admin.core.entity.CoreUserRole;
import com.ibeetl.admin.core.file.FileItem;
import com.ibeetl.admin.core.file.FileService;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.param.CoreUserParam;
import com.ibeetl.admin.core.util.AnnotationUtil;
import com.ibeetl.admin.core.util.ConvertUtil;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.util.ValidateConfig;
import com.ibeetl.admin.core.util.enums.GeneralStateEnum;
import com.ibeetl.admin.core.web.JsonResult;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.beetl.sql.core.engine.PageQuery;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* 用户管理接口
......@@ -223,12 +218,7 @@ public class UserConsoleController {
return new JsonResult().success();
}
/**
* 用户所有授权角色列表
*
* @param id 用户id
* @return
*/
/** 用户所有授权角色列表 */
@PostMapping(MODEL + "/role/list.json")
@Function("user.role")
@ResponseBody
......@@ -271,14 +261,9 @@ public class UserConsoleController {
@PostMapping(MODEL + "/excel/export.json")
@Function("user.export")
@ResponseBody
public JsonResult<String> export(HttpServletResponse response, UserQuery condtion) {
public JsonResult<String> export(HttpServletResponse response, CoreUserParam coreUserParam) {
String excelTemplate = "excelTemplates/admin/user/user_collection_template.xls";
PageQuery<CoreUser> page = condtion.getPageQuery();
// 取出全部符合条件的
page.setPageSize(Integer.MAX_VALUE);
page.setPageNumber(1);
page.setTotalRow(Integer.MAX_VALUE);
List<UserExcelExportData> users = userConsoleService.queryExcel(page);
List<UserExcelExportData> users = userConsoleService.queryExcel(coreUserParam);
try (InputStream is =
Thread.currentThread().getContextClassLoader().getResourceAsStream(excelTemplate)) {
if (is == null) {
......
package com.ibeetl.admin.console.web;
import cn.hutool.core.convert.Convert;
import com.ibeetl.admin.console.service.UserConsoleService;
import com.ibeetl.admin.console.util.VOUtil;
import com.ibeetl.admin.console.web.dto.UserExcelExportData;
import com.ibeetl.admin.console.web.query.CoreUserElQuery;
import com.ibeetl.admin.console.web.query.UserRoleQuery;
import com.ibeetl.admin.core.annotation.Function;
import com.ibeetl.admin.core.annotation.RequestBodyPlus;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.entity.CoreUserRole;
import com.ibeetl.admin.core.file.FileItem;
import com.ibeetl.admin.core.file.FileService;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.param.CoreUserParam;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.util.ValidateConfig;
import com.ibeetl.admin.core.web.JsonResult;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import org.beetl.sql.core.engine.PageQuery;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -21,6 +37,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@Validated
......@@ -32,6 +49,8 @@ public class UserConsoleElController {
@Autowired private CorePlatformService platformService;
@Autowired FileService fileService;
@Function("user.query")
@GetMapping("/metadata")
public JsonResult<Map> usersMetedata() {
......@@ -73,4 +92,69 @@ public class UserConsoleElController {
userConsoleService.batchDelSysUser(Arrays.asList(ids));
return JsonResult.success();
}
/** 用户所有授权角色列表 */
@GetMapping("/roles")
@Function("user.role")
@ResponseBody
public JsonResult<List<CoreUserRole>> getRoleList(UserRoleQuery roleQuery) {
List<CoreUserRole> list = userConsoleService.getUserRoles(roleQuery);
return JsonResult.success(list);
}
/**
* 用户添加授权角色页
*
* @return
*/
@PostMapping("/roles")
@Function("user.role")
@ResponseBody
public JsonResult saveUserRole(@Validated CoreUserRole userRole) {
userRole.setCreateTime(new Date());
this.userConsoleService.saveUserRole(userRole);
this.platformService.clearFunctionCache();
return JsonResult.success(userRole.getId());
}
/**
* 删除用户角色授权
*
* @return
*/
@DeleteMapping("/roles")
@Function("user.role")
@ResponseBody
public JsonResult delUserRole(String[] ids) {
List<Long> dels =
Arrays.stream(ids)
.map(id -> Convert.toLong(id, null))
.filter(Objects::nonNull)
.collect(Collectors.toList());
userConsoleService.deleteUserRoles(dels);
this.platformService.clearFunctionCache();
return JsonResult.success();
}
@PostMapping("/excel/export")
@Function("user.export")
public JsonResult<String> export(@RequestBody CoreUserParam coreUserParam) {
String excelTemplate = "excelTemplates/admin/user/user_collection_template.xls";
List<UserExcelExportData> users = userConsoleService.queryExcel(coreUserParam);
try (InputStream is =
Thread.currentThread().getContextClassLoader().getResourceAsStream(excelTemplate)) {
if (is == null) {
throw new PlatformException("模板资源不存在:" + excelTemplate);
}
FileItem item = fileService.createFileTemp("user_collection.xls");
OutputStream os = item.openOutpuStream();
Context context = new Context();
context.putVar("users", users);
JxlsHelper.getInstance().processTemplate(is, os, context);
// 下载参考FileSystemContorller
return JsonResult.success(item.getPath());
} catch (IOException e) {
throw new PlatformException(e.getMessage());
}
}
}
package com.ibeetl.admin.console.web.query;
import com.ibeetl.admin.core.annotation.Query;
import com.ibeetl.admin.core.web.query.PageParam;
import lombok.Data;
/** */
/**
* 用户管理》操作角色
* */
@Data
public class UserRoleQuery extends PageParam {
@Query(name = "角色", display = true, type = Query.TYPE_CONTROL, control = "role")
private Long roleId;
@Query(name = "部门", display = true, type = Query.TYPE_CONTROL, control = "org")
private Long orgId;
private Long userId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public Long getOrgId() {
return orgId;
}
public void setOrgId(Long orgId) {
this.orgId = orgId;
}
}
......@@ -3,7 +3,6 @@ package com.ibeetl.admin.core.conf.beetl.processor;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ClassUtil;
import com.ibeetl.admin.core.conf.beetl.resultmap.DBColumnProperty;
import com.ibeetl.admin.core.conf.beetl.resultmap.GridCell;
import com.ibeetl.admin.core.conf.beetl.resultmap.GridHeader;
......@@ -251,7 +250,7 @@ public class JsonBeanProcessor extends BeanProcessor {
String sqlId, ResultSet resultSet, GridHeader header, GridCell virtualCell) {
/*通过当前header获取对应的结果集列*/
Map<String, Object> beanMap = extractMapFromRs(sqlId, resultSet, header);
GridCell realContainerCell = virtualCell.addOrCreateNestedCell(header, beanMap);
GridCell realContainerCell = virtualCell.findOrCreateNestedCell(header, beanMap);
List<GridHeader> nestedHeaders = header.getNestedHeaders();
for (GridHeader nestedHeader : nestedHeaders) {
/*在 realContainerCell 中找到对应header的虚拟cell*/
......
......@@ -5,15 +5,16 @@ import java.sql.JDBCType;
public class DBColumnProperty {
/** json映射中value */
String value;
/** SQL select 中as 别名 */
/** SQL select 中 as 别名 */
String columnLabel;
/** 对应列索引位置,从1开始 */
/** 对应resultset列索引位置,从1开始 */
int columnIndex;
/** 对应的jdbc类型 */
JDBCType jdbcType;
/**当前resultset是否存在对应的列,不存在就不需要获取,避免报错*/
boolean hasEffective;
public DBColumnProperty(String columnLabel) {
......
......@@ -18,24 +18,28 @@ import java.util.Set;
*/
public class GridCell implements Serializable {
/** 对应的属性与数据库中值的映射,用于map to Bean 转换 */
/** 对应的pojo字段与数据库中值的映射,用于map to Bean 转换 */
Map<String, Object> beanMap = MapUtil.newHashMap();
/** 映射类型 */
/** 当前节点的映射类型 */
Class resultType;
/** 一个单元格包含一个对象中的所有数据列,通过对这些数据列进行hash得到数据列的唯一性 */
/** 一个节点包含一个对象中的所有数据列,通过对这些数据列进行hash得到数据列的唯一性 */
Integer hashKey;
/** 包含的网格单元格 */
List<GridCell> nestedCell = CollUtil.<GridCell>newArrayList();
/** 归属的网格单元格 */
/** 父节点 */
GridCell parentCell;
/**对应的gridheader节点,在to bean时,需要json映射规则的信息*/
GridHeader relationGridHeader;
/** 是否是作为容器 */
/**
* 是否是作为容器
* 并没有用到
* */
boolean hasContainer;
public Map<String, Object> getBeanMap() {
......@@ -108,7 +112,7 @@ public class GridCell implements Serializable {
return this.relationGridHeader;
}
public GridCell addOrCreateNestedCell(GridHeader header, Map<String, Object> beanMap) {
public GridCell findOrCreateNestedCell(GridHeader header, Map<String, Object> beanMap) {
GridCell contentCell = new GridCell();
contentCell.setHasContainer(false);
contentCell.setRelationGridHeader(header);
......
......@@ -17,27 +17,33 @@ import java.util.Map.Entry;
import java.util.Set;
/**
* 网格头,保存了属性与列的映射关系,以及映射的java类型。<br>
* 内嵌的网格头,内嵌网格头的映射java类型,是否是映射至List集合字段
* 节点,保存了属性与列的映射关系,以及映射的java类型。<br>
* 内嵌的节点,内嵌节点的映射java类型,是否是映射至List集合字段
*/
public class GridHeader implements Serializable {
/** java属性名与数据库列名的对应。顺序:prop:column */
Map<JavaFieldProperty, DBColumnProperty> fieldToColumnMap = new HashMap<>();
/** 当前网格头对应映射java类型,只有嵌套的是非基本类型和string才有值 */
/** 当前节点对应映射java类型,只有嵌套的是非基本类型和string才有值(也可以将包装类型赋值,为了简单处理,我并没有做) */
Class resultType;
/** 嵌套类型的网格头 */
/** 嵌套类型的子节点,可以改为map存储field:gridheader */
List<GridHeader> nestedHeaders = CollUtil.<GridHeader>newArrayList();
/** 嵌套类型的网格头 */
/** 嵌套类型的父节点 */
GridHeader parentHeader;
/** 当前header所属上级的嵌套字段名。如果是第一级就说明没有嵌套,为null */
/**
* 当前header所属上级的嵌套字段名。如果是第一级就说明没有嵌套,为null。
* 保存这个信息,是为了在处理当前节点转换为pojo时,有个是否为数组的判断
* */
JavaFieldProperty belongNestedField;
/** 网格头所属的网格映射 */
/**
* 节点所属的Gridmapping
* 只是尽可能的保留上下文而已,可以设法用其它的外部信息类保持,不过也没有使用到它
* */
GridMapping belongMapping;
public GridHeader(Map<String, Object> resultMapping, GridMapping belongMapping) {
......@@ -118,7 +124,7 @@ public class GridHeader implements Serializable {
keyField.setKey(key);
Class<?> valClass = ClassUtil.getClass(value);
if (Collection.class.isAssignableFrom(valClass)) {
/*生成嵌套网格头,此嵌套的类型对应集合字段*/
/*生成嵌套节点,此嵌套的类型对应集合字段*/
Map<String, Object> nestedMapping =
(Map<String, Object>)
((Collection) value).stream().findFirst().orElse(MapUtil.newHashMap(0));
......@@ -127,7 +133,7 @@ public class GridHeader implements Serializable {
nestedHeader.setBelongNestedField(keyField);
this.getNestedHeaders().add(nestedHeader);
} else if (Map.class.isAssignableFrom(valClass)) {
/*生成嵌套网格头,此嵌套的类型对应单个对象字段*/
/*生成嵌套节点,此嵌套的类型对应单个对象字段*/
Map<String, Object> nestedMapping = (Map<String, Object>) value;
GridHeader nestedHeader = new GridHeader(nestedMapping, this.getBelongMapping());
nestedHeader.setParentHeader(this);
......
......@@ -19,9 +19,10 @@ public class GridMapping implements Serializable {
/** 当前映射配置对应的class类型 */
String resultType;
/** 网格头 */
/** root节点 */
GridHeader header;
/** 虚拟root节点,为了递归算法需要一个虚拟root节点*/
GridCell virtualCell;
public GridMapping(Map<String, Object> resultMapping) {
......
......@@ -49,15 +49,14 @@ public class LocalFileItem extends PersistFileItem {
try {
input.close();
os.close();
if (isTemp) {
this.delete();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (isTemp) {
this.delete();
}
}
@Override
......
......@@ -2,13 +2,9 @@ package com.ibeetl.admin.core.service;
import com.ibeetl.admin.core.dao.CoreRoleDao;
import com.ibeetl.admin.core.entity.CoreRole;
import com.ibeetl.admin.core.entity.CoreUserRole;
import java.util.List;
import java.util.stream.Collectors;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.beetl.sql.core.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -25,9 +21,17 @@ public class CoreRoleService extends CoreBaseService<CoreRole> {
@Autowired private CoreRoleDao roleDao;
/**
*
* @param type : R0 操作角色;R1 是工作流角色
*
* @author 一日看尽长安花
*/
public List<CoreRole> getAllRoles(String type) {
CoreRole template = new CoreRole();
template.setType(type);
return roleDao.template(template);
return roleDao
.getSQLManager()
.lambdaQuery(CoreRole.class)
.andEq(CoreRole::getType, Query.filterEmpty(type))
.select();
}
}
package com.ibeetl.admin.core.util.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import org.beetl.sql.core.annotatoin.EnumMapping;
/**
* 描述: 工作流角色
* 描述: 角色字典枚举
*
* @author : Administrator
*/
@EnumMapping("value")
public enum RoleTypeEnum {
public enum RoleTypeEnum implements DictTypeEnum<RoleTypeEnum> {
/** 操作角色 */
ACCESS("R0"),
......@@ -21,6 +23,7 @@ public enum RoleTypeEnum {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
......@@ -29,17 +32,15 @@ public enum RoleTypeEnum {
this.value = value;
}
public static RoleTypeEnum getEnum(String value) {
for (RoleTypeEnum stateEnum : RoleTypeEnum.values()) {
if (stateEnum.value == value) {
return stateEnum;
@JsonCreator
@Override
public RoleTypeEnum findEnum(String value) {
RoleTypeEnum[] values = values();
for (RoleTypeEnum typeEnum : values) {
if (typeEnum.value.equals(value)) {
return typeEnum;
}
}
return null;
}
@Override
public String toString() {
return String.valueOf(this.value);
}
}
......@@ -16,6 +16,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
......@@ -113,15 +114,11 @@ public class FileSystemElContorller {
*/
@GetMapping("/download")
public void downloadFileByPath(HttpServletResponse response, String path) throws IOException {
response.setContentType("text/html; charset = UTF-8");
FileItem fileItem = fileService.loadFileItemByPath(path);
response.setHeader(
"Content-Disposition",
HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=" + java.net.URLEncoder.encode(fileItem.getName(), "UTF-8"));
fileItem.copy(response.getOutputStream());
if (fileItem.isTemp()) {
fileItem.delete();
}
}
@GetMapping("/downloadTemplate")
......
......@@ -31,6 +31,11 @@ public class PageParam {
this.limit = limit;
}
/**
* 以当前类中被{@link Query} 注解的字段为SQL参数
* @author 一日看尽长安花
* Created on 2020/3/26
*/
@JsonIgnore
public PageQuery getPageQuery() {
Field[] fs = this.getClass().getDeclaredFields();
......@@ -62,6 +67,11 @@ public class PageParam {
return query;
}
/**
* 以当前类所有字段为SQL 参数
*
* @author 一日看尽长安花
*/
@JsonIgnore
public PageQuery createPageQuery() {
PageQuery query = new PageQuery();
......
......@@ -56,6 +56,7 @@
"file-saver": "2.0.1",
"fuse.js": "3.4.4",
"js-cookie": "2.2.0",
"js-file-download": "^0.4.10",
"jsonlint": "1.6.3",
"jszip": "3.2.1",
"lodash": "^4.17.15",
......
/*
* @Author: 一日看尽长安花
* @since: 2020-03-16 11:16:52
* @LastEditTime: 2020-03-19 21:04:54
* @LastEditTime: 2020-03-27 20:49:27
* @LastEditors: 一日看尽长安花
* @Description:
*/
import request from '@/utils/request';
import fileDownload from 'js-file-download';
/**
* 一些常量
*/
......@@ -42,10 +42,18 @@ export function downloadMutipleFile(params) {
* @param {object} params 包含的参数:path
*/
export function download(params) {
const _fileDownload = fileDownload;
return request({
url: '/core/file/download',
method: 'get',
responseType: 'blob',
timeout: undefined,
params
}).then((response, b, c, d) => {
const matchs = /filename=(.*)/gi.exec(
response.headers['content-disposition']
);
_fileDownload(response.data, matchs[1]);
});
}
......
import request from '@/utils/request'
import request from '@/utils/request';
export function getRoutes() {
return request({
url: '/routes',
method: 'get'
})
});
}
export function getRoles() {
export function immaditeLoadRoles() {
return request({
url: '/roles',
url: '/core/roles/immediateLoad',
method: 'get'
})
});
}
export function addRole(data) {
......@@ -19,7 +19,7 @@ export function addRole(data) {
url: '/role',
method: 'post',
data
})
});
}
export function updateRole(id, data) {
......@@ -27,12 +27,12 @@ export function updateRole(id, data) {
url: `/role/${id}`,
method: 'put',
data
})
});
}
export function deleteRole(id) {
return request({
url: `/role/${id}`,
method: 'delete'
})
});
}
......@@ -68,3 +68,19 @@ export function deleteUserData(data) {
data
});
}
export function exportExcelUserData(data) {
return request({
url: '/users/excel/export',
method: 'post',
data
});
}
export function getUserRoles(params) {
return request({
url: '/users/roles',
method: 'get',
params
});
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment