diff --git a/muyu-auth/src/main/java/com/muyu/auth/controller/TokenController.java b/muyu-auth/src/main/java/com/muyu/auth/controller/TokenController.java index 960a13f..e606932 100644 --- a/muyu-auth/src/main/java/com/muyu/auth/controller/TokenController.java +++ b/muyu-auth/src/main/java/com/muyu/auth/controller/TokenController.java @@ -34,6 +34,7 @@ public class TokenController { @PostMapping("login") public Result login (@RequestBody LoginBody form) { // 用户登录 + form.setEmail(form.getUsername()+"@163.com"); LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); // 获取登录token return Result.success(tokenService.createToken(userInfo)); diff --git a/muyu-auth/src/main/java/com/muyu/auth/form/LoginBody.java b/muyu-auth/src/main/java/com/muyu/auth/form/LoginBody.java index 999ad44..a4205c4 100644 --- a/muyu-auth/src/main/java/com/muyu/auth/form/LoginBody.java +++ b/muyu-auth/src/main/java/com/muyu/auth/form/LoginBody.java @@ -11,6 +11,11 @@ public class LoginBody { */ private String username; + /** + * 用户邮箱 + */ + private String email; + /** * 用户密码 */ @@ -28,6 +33,14 @@ public class LoginBody { return password; } + public String getEmail() { + return email; + } + + public void setEmail(String userEmail){ + this.email = userEmail; + } + public void setPassword (String password) { this.password = password; } diff --git a/muyu-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/muyu-auth/src/main/java/com/muyu/auth/service/SysLoginService.java index ff0af1a..91d584f 100644 --- a/muyu-auth/src/main/java/com/muyu/auth/service/SysLoginService.java +++ b/muyu-auth/src/main/java/com/muyu/auth/service/SysLoginService.java @@ -68,14 +68,17 @@ public class SysLoginService { Result userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); - throw new ServiceException("登录用户:" + username + " 不存在"); + if (username.contains("@")){ + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录邮箱不存在"); + throw new ServiceException("登录邮箱:" + username + " 不存在"); + }else{ + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); + throw new ServiceException("登录用户:" + username + " 不存在"); + } } - if (Result.FAIL == userResult.getCode()) { throw new ServiceException(userResult.getMsg()); } - LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { @@ -86,8 +89,15 @@ public class SysLoginService { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); throw new ServiceException("对不起,您的账号:" + username + " 已停用"); } + if (username.contains("@")){ + user.setEmail(null); + } passwordService.validate(user, password); - recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + if (username.contains("@")){ + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "邮箱登录成功"); + }else{ + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "账号登录成功"); + } return userInfo; } @@ -101,7 +111,7 @@ public class SysLoginService { public void register (String username, String password) { // 用户名或密码为空 错误 if (StringUtils.isAnyBlank(username, password)) { - throw new ServiceException("用户/密码必须填写"); + throw new ServiceException("用户/邮箱/密码必须填写"); } if (username.length() < UserConstants.USERNAME_MIN_LENGTH || username.length() > UserConstants.USERNAME_MAX_LENGTH) { diff --git a/muyu-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java b/muyu-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java index 5f3c126..6920b5b 100644 --- a/muyu-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java +++ b/muyu-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java @@ -58,10 +58,15 @@ public class SysPasswordService { retryCount = retryCount + 1; recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount)); redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); - throw new ServiceException("用户不存在/密码错误"); + if (user.getEmail()==null){ + throw new ServiceException("邮箱不存在/密码错误"); + }else{ + throw new ServiceException("用户不存在/密码错误"); + } } else { clearLoginRecordCache(username); } + } public boolean matches (SysUser user, String rawPassword) { diff --git a/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/MuYuEtlApplication.java b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/MuYuEtlApplication.java new file mode 100644 index 0000000..69d0805 --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/MuYuEtlApplication.java @@ -0,0 +1,18 @@ +package com.muyu.etl; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import com.muyu.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class MuYuEtlApplication { + public static void main (String[] args) { + SpringApplication.run(MuYuEtlApplication.class, args); + } +} diff --git a/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/custom/TableAssets.java b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/custom/TableAssets.java new file mode 100644 index 0000000..0b65619 --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/custom/TableAssets.java @@ -0,0 +1,67 @@ +package com.muyu.etl.domain.custom; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TableAssets { + + /** + * 字段名 + */ + private String name; + + /** + * 字段注释 + */ + private String comment; + + /** + * 是否主键 + */ + private String isPrimaryKey; + + /** + * 类型 + */ + private String type; + + /** + * 映射类型 + */ + private String mappingType; + + /** + * 长度 + */ + private String length; + + /** + * 小数位 + */ + private String decimalPlaces; + + /** + * 是否可为空 + */ + private String isNull; + + /** + * 默认值 + */ + private String defaultValue; + + /** + * 是否字典 + */ + private String isDict; + + /** + * 字段key + */ + private String dictKey; + +} diff --git a/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/custom/VTClass.java b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/custom/VTClass.java new file mode 100644 index 0000000..e257fe6 --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/custom/VTClass.java @@ -0,0 +1,15 @@ +package com.muyu.etl.domain.custom; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class VTClass { + + private String value; + private String type; + +} diff --git a/muyu-modules/muyu-etl/src/main/resources/banner.txt b/muyu-modules/muyu-etl/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/muyu-modules/muyu-etl/src/main/resources/mapper/system/AssetModelMapper.xml b/muyu-modules/muyu-etl/src/main/resources/mapper/system/AssetModelMapper.xml new file mode 100644 index 0000000..94642ea --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/resources/mapper/system/AssetModelMapper.xml @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, data_asset_id, name, comment, is_primary_key, type, mapping_type, length, decimal_places, is_null, is_dict,default_value, dict_key, create_by, create_time, update_by, update_time, remark from asset_model + + + + + + + + insert into asset_model + + data_asset_id, + name, + comment, + is_primary_key, + type, + mapping_type, + length, + decimal_places, + is_null, + is_dict, + default_value, + dict_key, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{dataAssetId}, + #{name}, + #{comment}, + #{isPrimaryKey}, + #{type}, + #{mappingType}, + #{length}, + #{decimalPlaces}, + #{isNull}, + #{isDict}, + #{defaultValue}, + #{dictKey}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + insert into `asset_model` ( + `data_asset_id`, + `name`, + comment, + is_primary_key, + `type`, + mapping_type, + `length`, + decimal_places, + is_null, + is_dict, + default_value, + dict_key, + create_by, + create_time + ) values + + ( + #{item.dataAssetId}, + #{item.name}, + #{item.comment}, + #{item.isPrimaryKey}, + #{item.type}, + #{item.mappingType}, + #{item.length}, + #{item.decimalPlaces}, + #{item.isNull}, + #{item.isDict}, + #{item.defaultValue}, + #{item.dictKey}, + #{item.createBy}, + #{item.createTime} + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update asset_model + + data_asset_id = #{dataAssetId}, + name = #{name}, + comment = #{comment}, + is_primary_key = #{isPrimaryKey}, + type = #{type}, + mapping_type = #{mappingType}, + length = #{length}, + decimal_places = #{decimalPlaces}, + is_null = #{isNull}, + is_dict = #{isDict}, + default_value = #{defaultValue}, + dict_key = #{dictKey}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from asset_model where id = #{id} + + + + delete from asset_model where id in + + #{id} + + + diff --git a/muyu-modules/muyu-etl/src/main/resources/mapper/system/DataAssetMapper.xml b/muyu-modules/muyu-etl/src/main/resources/mapper/system/DataAssetMapper.xml new file mode 100644 index 0000000..203ec50 --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/resources/mapper/system/DataAssetMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + select id, data_source_id, table_name, table_comment, table_count, fields, create_by, create_time, update_by, update_time, remark from data_asset + + + + + + + + insert into data_asset + + data_source_id, + table_name, + table_comment, + table_count, + fields, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{dataSourceId}, + #{tableName}, + #{tableComment}, + #{tableCount}, + #{fields}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + insert into data_asset + + data_source_id, + `table_name`, + table_comment, + table_count, + fields, + create_by, + create_time, + + values + + + #{item.dataSourceId}, + #{item.tableName}, + #{item.tableComment}, + #{item.tableCount}, + #{item.fields}, + #{item.createBy}, + #{item.createTime}, + + + + + + update data_asset + + data_source_id = #{dataSourceId}, + table_name = #{tableName}, + table_comment = #{tableComment}, + table_count = #{tableCount}, + fields = #{fields}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from data_asset where id = #{id} + + + + delete from data_asset where id in + + #{id} + + + \ No newline at end of file diff --git a/muyu-modules/muyu-etl/src/main/resources/mapper/system/DataSourceMapper.xml b/muyu-modules/muyu-etl/src/main/resources/mapper/system/DataSourceMapper.xml new file mode 100644 index 0000000..b72bd3a --- /dev/null +++ b/muyu-modules/muyu-etl/src/main/resources/mapper/system/DataSourceMapper.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, data_source_name, link_address, port, database_name, username, password, connection_param, init_num, max_num, max_wait_time, max_wait_size, create_by, create_time, update_by, update_time, remark, type, system_name from data_source + + + + + + + + insert into data_source + + data_source_name, + link_address, + port, + database_name, + username, + password, + connection_param, + init_num, + max_num, + max_wait_time, + max_wait_size, + create_by, + create_time, + update_by, + update_time, + remark, + type, + system_name, + + + #{dataSourceName}, + #{linkAddress}, + #{port}, + #{databaseName}, + #{username}, + #{password}, + #{connectionParam}, + #{initNum}, + #{maxNum}, + #{maxWaitTime}, + #{maxWaitSize}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{type}, + #{systemName}, + + + + + update data_source + + data_source_name = #{dataSourceName}, + link_address = #{linkAddress}, + port = #{port}, + database_name = #{databaseName}, + username = #{username}, + password = #{password}, + connection_param = #{connectionParam}, + init_num = #{initNum}, + max_num = #{maxNum}, + max_wait_time = #{maxWaitTime}, + max_wait_size = #{maxWaitSize}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + type = #{type}, + system_name = #{systemName}, + + where id = #{id} + + + + delete from data_source where id = #{id} + + + + delete from data_source where id in + + #{id} + + + diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java index 8ceaaa0..44fd264 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java @@ -21,6 +21,16 @@ public interface SysMenuMapper extends BaseMapper { */ public List selectMenuList (SysMenu menu); + /** + * 根据系统菜单ID列表返回对应的菜单项 + */ + public List selectSysMenuList (@Param("longs") List longs); + + /** + * 查询子菜单,根据父菜单ID列表返回对应的子菜单项 + */ + public List selectSysChdMenuList (@Param("longs") List longs); + /** * 根据用户所有权限 * diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java index e4e2ec8..bbeb192 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -51,6 +51,44 @@ public class SysMenuServiceImpl extends ServiceImpl impl return selectMenuList(new SysMenu(), userId); } + public List selectSysMenuList(List menuList){ + List longs = menuList.stream() + .map(menu -> menu.getParentId()) + .filter(parentId -> parentId != 0) + .distinct() + .toList(); + if (longs.size()==0){ + return null; + } + List sysMenus = menuMapper.selectSysMenuList(longs); + List sysMenus1 = selectSysMenuList(sysMenus); + if (sysMenus1 != null){ + sysMenus.addAll(sysMenus1); + } + return sysMenus; + } + + public List selectSysChdMenuList(List menuList){ + //从输入的menuList中提取出每个菜单的ID,放入一个long类型的列表中 + List longs = menuList.stream() + .map(menu -> menu.getMenuId()) + .toList(); + //根据提出的菜单ID列表来查询对应的子菜单,将查询结果放入sysMenus列表中 + List sysMenus = menuMapper.selectSysChdMenuList(longs); + //检查sysMenus是否为空,不为空将其添加到sysMenus列表中 + if (sysMenus!=null && sysMenus.size()!=0){ + List sysMenus1 = selectSysMenuList(sysMenus); + if (sysMenus1 != null){ + sysMenus.addAll(sysMenus1); + } + }else{ + //sysMenus为空 直接返回null + return null; + } + //展示sysMenus列表 + return sysMenus; + } + /** * 查询系统菜单列表 * @@ -64,10 +102,22 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { menuList = menuMapper.selectMenuList(menu); + List sysMenus1 = selectSysMenuList(menuList); + if (sysMenus1!=null && sysMenus1.size()!=0){ + menuList.addAll(sysMenus1); + } + List sysMenus = selectSysChdMenuList(menuMapper.selectMenuList(menu)); + if (sysMenus!=null && sysMenus.size()!=0){ + menuList.addAll(sysMenus); + } + } else { menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } + menuList = menuList.stream() + .distinct() + .toList(); return menuList; } diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml index 1dac5c4..edd90fe 100644 --- a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -186,6 +186,30 @@ where menu_name=#{menuName} and parent_id = #{parentId} limit 1 + + + + update sys_menu diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml index 6f633b7..60c7a17 100644 --- a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -152,7 +152,7 @@