!284 更新常量 GenConstants,优化 Map 返回结构

* update 优化返回结构, 将 Map 改为指定 Vo 对象 ;
* update GenConstants 扩展数据库数据类型, 更新 BO, VO, ENTITY 字段, 并移动到 generator 模块 ;
This commit is contained in:
MichelleChung
2023-02-03 01:47:41 +00:00
committed by 疯狂的狮子Li
parent 5cce09b5c2
commit 2787212362
23 changed files with 361 additions and 78 deletions

View File

@@ -0,0 +1,191 @@
package com.ruoyi.generator.constant;
/**
* 代码生成通用常量
*
* @author ruoyi
*/
public interface GenConstants {
/**
* 单表(增删改查)
*/
String TPL_CRUD = "crud";
/**
* 树表(增删改查)
*/
String TPL_TREE = "tree";
/**
* 树编码字段
*/
String TREE_CODE = "treeCode";
/**
* 树父编码字段
*/
String TREE_PARENT_CODE = "treeParentCode";
/**
* 树名称字段
*/
String TREE_NAME = "treeName";
/**
* 上级菜单ID字段
*/
String PARENT_MENU_ID = "parentMenuId";
/**
* 上级菜单名称字段
*/
String PARENT_MENU_NAME = "parentMenuName";
/**
* 数据库字符串类型
*/
String[] COLUMNTYPE_STR = {"char", "varchar", "enum", "set", "nchar", "nvarchar", "varchar2", "nvarchar2"};
/**
* 数据库文本类型
*/
String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext", "binary", "varbinary", "blob",
"ntext", "image", "bytea"};
/**
* 数据库时间类型
*/
String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp", "year", "interval",
"smalldatetime", "datetime2", "datetimeoffset"};
/**
* 数据库数字类型
*/
String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
"bit", "bigint", "float", "double", "decimal", "numeric", "real", "double precision",
"smallserial", "serial", "bigserial", "money", "smallmoney"};
/**
* BO对象 不需要添加字段
*/
String[] COLUMNNAME_NOT_ADD = {"create_dept", "create_by", "create_time", "del_flag", "update_by",
"update_time", "version"};
/**
* BO对象 不需要编辑字段
*/
String[] COLUMNNAME_NOT_EDIT = {"create_dept", "create_by", "create_time", "del_flag", "update_by",
"update_time", "version"};
/**
* VO对象 不需要返回字段
*/
String[] COLUMNNAME_NOT_LIST = {"create_dept", "create_by", "create_time", "del_flag", "update_by",
"update_time", "version"};
/**
* BO对象 不需要查询字段
*/
String[] COLUMNNAME_NOT_QUERY = {"id", "create_dept", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark", "version"};
/**
* Entity基类字段
*/
String[] BASE_ENTITY = {"createDept", "createBy", "createTime", "updateBy", "updateTime"};
/**
* Tree基类字段
*/
String[] TREE_ENTITY = {"parentName", "parentId", "children"};
/**
* 文本框
*/
String HTML_INPUT = "input";
/**
* 文本域
*/
String HTML_TEXTAREA = "textarea";
/**
* 下拉框
*/
String HTML_SELECT = "select";
/**
* 单选框
*/
String HTML_RADIO = "radio";
/**
* 复选框
*/
String HTML_CHECKBOX = "checkbox";
/**
* 日期控件
*/
String HTML_DATETIME = "datetime";
/**
* 图片上传控件
*/
String HTML_IMAGE_UPLOAD = "imageUpload";
/**
* 文件上传控件
*/
String HTML_FILE_UPLOAD = "fileUpload";
/**
* 富文本控件
*/
String HTML_EDITOR = "editor";
/**
* 字符串类型
*/
String TYPE_STRING = "String";
/**
* 整型
*/
String TYPE_INTEGER = "Integer";
/**
* 长整型
*/
String TYPE_LONG = "Long";
/**
* 浮点型
*/
String TYPE_DOUBLE = "Double";
/**
* 高精度计算类型
*/
String TYPE_BIGDECIMAL = "BigDecimal";
/**
* 时间类型
*/
String TYPE_DATE = "Date";
/**
* 模糊查询
*/
String QUERY_LIKE = "LIKE";
/**
* 相等查询
*/
String QUERY_EQ = "EQ";
/**
* 需要
*/
String REQUIRE = "1";
}

View File

@@ -1,7 +1,7 @@
package com.ruoyi.generator.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.generator.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.mybatis.core.domain.BaseEntity;
import jakarta.validation.Valid;

View File

@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.generator.constant.GenConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StreamUtils;
import com.ruoyi.common.core.utils.StringUtils;

View File

@@ -1,6 +1,6 @@
package com.ruoyi.generator.util;
import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.generator.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.generator.config.GenConfig;

View File

@@ -3,7 +3,7 @@ package com.ruoyi.generator.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Dict;
import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.generator.constant.GenConstants;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.json.utils.JsonUtils;

View File

@@ -11,6 +11,7 @@ import com.ruoyi.common.json.utils.JsonUtils;
import com.ruoyi.common.redis.utils.CacheUtils;
import com.ruoyi.common.redis.utils.RedisUtils;
import com.ruoyi.system.domain.SysCache;
import com.ruoyi.system.domain.vo.CacheListInfoVo;
import lombok.RequiredArgsConstructor;
import org.redisson.spring.data.connection.RedissonConnectionFactory;
import org.springframework.data.redis.connection.RedisConnection;
@@ -49,7 +50,7 @@ public class CacheController {
*/
@SaCheckPermission("monitor:cache:list")
@GetMapping()
public R<Map<String, Object>> getInfo() throws Exception {
public R<CacheListInfoVo> getInfo() throws Exception {
RedisConnection connection = connectionFactory.getConnection();
Properties commandStats = connection.commands().info("commandstats");
@@ -63,11 +64,12 @@ public class CacheController {
pieList.add(data);
});
}
return R.ok(Map.of(
"info", connection.commands().info(),
"dbSize", connection.commands().dbSize(),
"commandStats", pieList
));
CacheListInfoVo infoVo = new CacheListInfoVo();
infoVo.setInfo(connection.commands().info());
infoVo.setDbSize(connection.commands().dbSize());
infoVo.setCommandStats(pieList);
return R.ok(infoVo);
}
/**

View File

@@ -10,6 +10,7 @@ import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.common.web.core.BaseController;
import com.ruoyi.system.domain.bo.SysMenuBo;
import com.ruoyi.system.domain.vo.MenuTreeSelectVo;
import com.ruoyi.system.domain.vo.SysMenuVo;
import com.ruoyi.system.service.ISysMenuService;
import lombok.RequiredArgsConstructor;
@@ -17,7 +18,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 菜单信息
@@ -68,12 +68,12 @@ public class SysMenuController extends BaseController {
* @param roleId 角色ID
*/
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
public R<Map<String, Object>> roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
public R<MenuTreeSelectVo> roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
List<SysMenuVo> menus = menuService.selectMenuList(LoginHelper.getUserId());
return R.ok(Map.of(
"checkedKeys", menuService.selectMenuListByRoleId(roleId),
"menus", menuService.buildMenuTreeSelect(menus)
));
MenuTreeSelectVo selectVo = new MenuTreeSelectVo();
selectVo.setCheckedKeys(menuService.selectMenuListByRoleId(roleId));
selectVo.setMenus(menuService.buildMenuTreeSelect(menus));
return R.ok(selectVo);
}
/**

View File

@@ -12,6 +12,7 @@ import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.system.domain.bo.SysOssBo;
import com.ruoyi.system.domain.vo.SysOssUploadVo;
import com.ruoyi.system.domain.vo.SysOssVo;
import com.ruoyi.system.service.ISysOssService;
import jakarta.servlet.http.HttpServletResponse;
@@ -25,7 +26,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 文件上传 控制层
@@ -70,16 +70,16 @@ public class SysOssController extends BaseController {
@SaCheckPermission("system:oss:upload")
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Map<String, String>> upload(@RequestPart("file") MultipartFile file) {
public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) {
if (ObjectUtil.isNull(file)) {
throw new ServiceException("上传文件不能为空");
}
SysOssVo oss = iSysOssService.upload(file);
return R.ok(Map.of(
"url", oss.getUrl(),
"fileName", oss.getOriginalName(),
"ossId", oss.getOssId().toString()
));
SysOssUploadVo uploadVo = new SysOssUploadVo();
uploadVo.setUrl(oss.getUrl());
uploadVo.setFileName(oss.getOriginalName());
uploadVo.setOssId(oss.getOssId().toString());
return R.ok(uploadVo);
}
/**

View File

@@ -11,6 +11,8 @@ import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.domain.vo.AvatarVo;
import com.ruoyi.system.domain.vo.ProfileVo;
import com.ruoyi.system.domain.vo.SysOssVo;
import com.ruoyi.system.service.ISysOssService;
import com.ruoyi.system.service.ISysUserService;
@@ -21,7 +23,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.Map;
/**
* 个人信息 业务处理
@@ -41,13 +42,13 @@ public class SysProfileController extends BaseController {
* 个人信息
*/
@GetMapping
public R<Map<String, Object>> profile() {
public R<ProfileVo> profile() {
SysUser user = userService.selectUserById(LoginHelper.getUserId());
return R.ok(Map.of(
"user", user,
"roleGroup", userService.selectUserRoleGroup(user.getUserName()),
"postGroup", userService.selectUserPostGroup(user.getUserName())
));
ProfileVo profileVo = new ProfileVo();
profileVo.setUser(user);
profileVo.setRoleGroup(userService.selectUserRoleGroup(user.getUserName()));
profileVo.setPostGroup(userService.selectUserPostGroup(user.getUserName()));
return R.ok(profileVo);
}
/**
@@ -107,7 +108,7 @@ public class SysProfileController extends BaseController {
*/
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Map<String, Object>> avatar(@RequestPart("avatarfile") MultipartFile avatarfile) {
public R<AvatarVo> avatar(@RequestPart("avatarfile") MultipartFile avatarfile) {
if (!avatarfile.isEmpty()) {
String extension = FileUtil.extName(avatarfile.getOriginalFilename());
if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) {
@@ -116,7 +117,9 @@ public class SysProfileController extends BaseController {
SysOssVo oss = iSysOssService.upload(avatarfile);
String avatar = oss.getUrl();
if (userService.updateUserAvatar(LoginHelper.getUsername(), avatar)) {
return R.ok(Map.of("imgUrl", avatar));
AvatarVo avatarVo = new AvatarVo();
avatarVo.setImgUrl(avatar);
return R.ok(avatarVo);
}
}
return R.fail("上传图片异常,请联系管理员");

View File

@@ -16,6 +16,7 @@ import com.ruoyi.system.domain.SysDept;
import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.domain.bo.SysRoleBo;
import com.ruoyi.system.domain.vo.DeptTreeSelectVo;
import com.ruoyi.system.domain.vo.SysRoleVo;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysRoleService;
@@ -27,7 +28,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 角色信息
@@ -228,10 +228,10 @@ public class SysRoleController extends BaseController {
*/
@SaCheckPermission("system:role:list")
@GetMapping(value = "/deptTree/{roleId}")
public R<Map<String, Object>> roleDeptTreeselect(@PathVariable("roleId") Long roleId) {
return R.ok(Map.of(
"checkedKeys", deptService.selectDeptListByRoleId(roleId),
"depts", deptService.selectDeptTreeList(new SysDept())
));
public R<DeptTreeSelectVo> roleDeptTreeselect(@PathVariable("roleId") Long roleId) {
DeptTreeSelectVo selectVo = new DeptTreeSelectVo();
selectVo.setCheckedKeys(deptService.selectDeptListByRoleId(roleId));
selectVo.setDepts(deptService.selectDeptTreeList(new SysDept()));
return R.ok(selectVo);
}
}

View File

@@ -24,6 +24,7 @@ import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.domain.vo.SysRoleVo;
import com.ruoyi.system.domain.vo.SysUserExportVo;
import com.ruoyi.system.domain.vo.SysUserImportVo;
import com.ruoyi.system.domain.vo.SysUserInfoVo;
import com.ruoyi.system.listener.SysUserImportListener;
import com.ruoyi.system.service.*;
import jakarta.servlet.http.HttpServletResponse;
@@ -109,19 +110,19 @@ public class SysUserController extends BaseController {
*/
@SaCheckPermission("system:user:query")
@GetMapping(value = {"/", "/{userId}"})
public R<Map<String, Object>> getInfo(@PathVariable(value = "userId", required = false) Long userId) {
public R<SysUserInfoVo> getInfo(@PathVariable(value = "userId", required = false) Long userId) {
userService.checkUserDataScope(userId);
Map<String, Object> ajax = new HashMap<>();
SysUserInfoVo userInfoVo = new SysUserInfoVo();
List<SysRoleVo> roles = roleService.selectRoleAll();
ajax.put("roles", LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
ajax.put("posts", postService.selectPostAll());
userInfoVo.setRoles(LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
userInfoVo.setPosts(postService.selectPostAll());
if (ObjectUtil.isNotNull(userId)) {
SysUser sysUser = userService.selectUserById(userId);
ajax.put("user", sysUser);
ajax.put("postIds", postService.selectPostListByUserId(userId));
ajax.put("roleIds", StreamUtils.toList(sysUser.getRoles(), SysRole::getRoleId));
userInfoVo.setUser(sysUser);
userInfoVo.setRoleIds(StreamUtils.toList(sysUser.getRoles(), SysRole::getRoleId));
userInfoVo.setPostIds(postService.selectPostListByUserId(userId));
}
return R.ok(ajax);
return R.ok(userInfoVo);
}
/**
@@ -212,13 +213,13 @@ public class SysUserController extends BaseController {
*/
@SaCheckPermission("system:user:query")
@GetMapping("/authRole/{userId}")
public R<Map<String, Object>> authRole(@PathVariable Long userId) {
public R<SysUserInfoVo> authRole(@PathVariable Long userId) {
SysUser user = userService.selectUserById(userId);
List<SysRoleVo> roles = roleService.selectRolesByUserId(userId);
return R.ok(Map.of(
"user", user,
"roles", LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin())
));
SysUserInfoVo userInfoVo = new SysUserInfoVo();
userInfoVo.setUser(user);
userInfoVo.setRoles(LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
return R.ok(userInfoVo);
}
/**

View File

@@ -0,0 +1,18 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
/**
* 用户头像信息
*
* @author Michelle.Chung
*/
@Data
public class AvatarVo {
/**
* 头像地址
*/
private String imgUrl;
}

View File

@@ -0,0 +1,23 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* 缓存监控列表信息
*
* @author Michelle.Chung
*/
@Data
public class CacheListInfoVo {
private Properties info;
private Long dbSize;
private List<Map<String, String>> commandStats;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.system.domain.vo;
import cn.hutool.core.lang.tree.Tree;
import lombok.Data;
import java.util.List;
/**
* 角色部门列表树信息
*
* @author Michelle.Chung
*/
@Data
public class DeptTreeSelectVo {
/**
* 选中部门列表
*/
private List<Long> checkedKeys;
/**
* 下拉树结构列表
*/
private List<Tree<Long>> depts;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.system.domain.vo;
import cn.hutool.core.lang.tree.Tree;
import lombok.Data;
import java.util.List;
/**
* 角色菜单列表树信息
*
* @author Michelle.Chung
*/
@Data
public class MenuTreeSelectVo {
/**
* 选中菜单列表
*/
private List<Long> checkedKeys;
/**
* 菜单下拉树结构列表
*/
private List<Tree<Long>> menus;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.system.domain.vo;
import com.ruoyi.system.domain.SysUser;
import lombok.Data;
/**
* 用户个人信息
*
* @author Michelle.Chung
*/
@Data
public class ProfileVo {
/**
* 用户信息
*/
private SysUser user;
/**
* 用户所属角色组
*/
private String roleGroup;
/**
* 用户所属岗位组
*/
private String postGroup;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
/**
* 上传对象信息
*
* @author Michelle.Chung
*/
@Data
public class SysOssUploadVo {
/**
* URL地址
*/
private String url;
/**
* 文件名
*/
private String fileName;
/**
* 对象存储主键
*/
private String ossId;
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.system.domain.vo;
import com.ruoyi.system.domain.SysUser;
import lombok.Data;
import java.util.List;
/**
* 用户信息
*
* @author Michelle.Chung
*/
@Data
public class SysUserInfoVo {
/**
* 用户信息
*/
private SysUser user;
/**
* 角色ID列表
*/
private List<Long> roleIds;
/**
* 角色列表
*/
private List<SysRoleVo> roles;
/**
* 岗位ID列表
*/
private List<Long> postIds;
/**
* 岗位列表
*/
private List<SysPostVo> posts;
}