From 4a8cf4e6034604e332f12065eac8433377fb5953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=A8=E5=93=80?= <2076029107@qq.com> Date: Wed, 9 Oct 2024 08:14:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:()=20=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/auth/controller/TokenController.java | 2 +- .../java/com/muyu/auth/form/LoginBody.java | 27 ++-- .../muyu/auth/service/SysLoginService.java | 20 ++- .../core/constant/ServiceNameConstants.java | 5 + .../com/muyu/common/core/utils/JwtUtils.java | 11 ++ .../many/datasource/ManyDataSource.java | 29 ++-- .../domain/model/DataSourceInfo.java | 12 +- .../common/saas/domain/model/EntInfo.java | 6 + .../common/security/service/TokenService.java | 2 +- .../muyu/common/system/domain/SysDept.java | 4 + .../muyu/common/system/domain/SysFirm.java | 29 ++++ .../system/domain/SysFirmDatasource.java | 32 ++++ .../muyu/common/system/domain/SysUser.java | 12 +- .../system/domain/resp/SysFirmResp.java | 30 ++++ .../system/remote/RemoteUserService.java | 8 +- .../factory/RemoteUserFallbackFactory.java | 11 +- .../com/muyu/gateway/filter/AuthFilter.java | 1 + .../main/java/com/muyu/domain/FirmUser.java | 152 ++++++++++++++++++ .../cloud-modules-enterprise-remote/pom.xml | 27 ++++ .../remote/RemoteFirmUserService.java | 28 ++++ .../RemoteFirmUserFallbackFactory.java | 34 ++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../cloud-modules-enterprise-server/pom.xml | 6 + .../CloudEnterpriseApplication.java | 9 ++ .../controller/ElectController.java | 3 +- .../controller/FirmUserController.java | 104 ++++++++++++ .../controller/MessageTemplateController.java | 4 +- .../controller/VehicleController.java | 4 +- .../controller/WarnRuleController.java | 3 +- .../enterprise/mapper/FirmUserMapper.java | 16 ++ .../enterprise/service/FirmUserService.java | 14 ++ .../service/impl/FirmUserServiceImpl.java | 20 +++ .../cloud-modules-enterprise/pom.xml | 1 + .../consumer/OnLineMonitoringConsumer.java | 4 +- .../muyu/processing/controller/TestKafka.java | 2 +- .../src/main/resources/bootstrap.yml | 2 +- cloud-modules/cloud-modules-system/pom.xml | 10 ++ .../system/controller/SysDeptController.java | 1 + .../system/controller/SysFirmController.java | 64 ++++++++ .../SysFirmDatasourceController.java | 27 ++++ .../system/controller/SysUserController.java | 34 +++- .../mapper/SysFirmDatasourceMapper.java | 16 ++ .../com/muyu/system/mapper/SysFirmMapper.java | 16 ++ .../service/SysFirmDatasourceService.java | 14 ++ .../muyu/system/service/SysFirmService.java | 14 ++ .../impl/SysFirmDatasourceServiceImpl.java | 20 +++ .../service/impl/SysFirmServiceImpl.java | 20 +++ .../resources/mapper/system/SysUserMapper.xml | 2 - pom.xml | 15 ++ 49 files changed, 866 insertions(+), 62 deletions(-) create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirm.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirmDatasource.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/resp/SysFirmResp.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FirmUser.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/pom.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteFirmUserService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/factory/RemoteFirmUserFallbackFactory.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FirmUserController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FirmUserMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/FirmUserService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FirmUserServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmDatasourceController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmDatasourceMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmDatasourceService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmDatasourceServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmServiceImpl.java diff --git a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java index d870762..04d4b25 100644 --- a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java +++ b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java @@ -34,7 +34,7 @@ public class TokenController { @PostMapping("login") public Result login (@RequestBody LoginBody form) { // 用户登录 - LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); + LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(),form.getFirmId()); // 获取登录token return Result.success(tokenService.createToken(userInfo)); } diff --git a/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java b/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java index 999ad44..0ea8244 100644 --- a/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java +++ b/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java @@ -1,10 +1,19 @@ package com.muyu.auth.form; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + /** * 用户登录对象 * * @author muyu */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class LoginBody { /** * 用户名 @@ -16,19 +25,9 @@ public class LoginBody { */ private String password; - public String getUsername () { - return username; - } + /** + * 公司Id + */ + private Long firmId; - public void setUsername (String username) { - this.username = username; - } - - public String getPassword () { - return password; - } - - public void setPassword (String password) { - this.password = password; - } } diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java index ff0af1a..771c2c0 100644 --- a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java +++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java @@ -37,14 +37,15 @@ public class SysLoginService { @Autowired private RedisService redisService; + /** * 登录 */ - public LoginUser login (String username, String password) { + public LoginUser login (String username, String password, Long firmId) { // 用户名或密码为空 错误 - if (StringUtils.isAnyBlank(username, password)) { + if (StringUtils.isAnyBlank(username, password,String.valueOf(firmId))) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); - throw new ServiceException("用户/密码必须填写"); + throw new ServiceException("用户/密码/公司 必须填写"); } // 密码如果不在指定范围内 错误 if (password.length() < UserConstants.PASSWORD_MIN_LENGTH @@ -60,12 +61,21 @@ public class SysLoginService { } // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } - // 查询用户信息 - Result userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + + Result userResult = null; + + if (firmId == 1){ + userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + }else { + userResult = remoteUserService.getFirmUserInfo(username, firmId,SecurityConstants.INNER); + } + + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java index bb59b70..c86af33 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java @@ -16,6 +16,11 @@ public class ServiceNameConstants { */ public static final String SYSTEM_SERVICE = "cloud-system"; + /** + * 系统模块的serviceid + */ + public static final String ENTERPRISE_SERVICE = "cloud-car"; + /** * 文件服务的serviceid */ diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java index 62816cb..14e45bf 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java @@ -151,6 +151,17 @@ public class JwtUtils { return getValue(claims, SecurityConstants.DETAILS_USERNAME); } + /** + * 根据身份信息获取用户名 + * + * @param claims 身份信息 + * + * @return 用户名 + */ + public static String getDatabaseName (Claims claims) { + return getValue(claims, SecurityConstants.DATABASE_NAME); + } + /** * 根据身份信息获取键值 * diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java index c9dbd87..deb7554 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java @@ -9,9 +9,12 @@ import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory; import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; import com.muyu.cloud.common.saas.domain.model.EntInfo; import com.muyu.cloud.common.saas.exception.SaaSException; +import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.system.domain.SysFirm; import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.resp.SysFirmResp; import com.muyu.common.system.remote.RemoteUserService; import lombok.extern.log4j.Log4j2; import org.springframework.boot.ApplicationArguments; @@ -20,6 +23,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -36,22 +40,25 @@ import java.util.Map; @AutoConfiguration(before = MybatisPlusAutoConfiguration.class) public class ManyDataSource implements ApplicationRunner{ - private List dataSourceInfoList(){ RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class); - Result> tableDataInfoResult = remoteUserService.companyList(); - if (tableDataInfoResult==null){ + Result> firmList = remoteUserService.getFirmList(SecurityConstants.INNER); + if (firmList==null) { throw new SaaSException("saas远调数据源错误"); } - List data = tableDataInfoResult.getData(); - if (tableDataInfoResult.getCode() == Result.SUCCESS && data !=null){ + + List data = firmList.getData(); + if (firmList.getCode() == Result.SUCCESS && data !=null){ List list = new ArrayList<>(); - for (SysUser row : data) { + for (SysFirmResp row : data) { list.add( EntInfo.builder() - .entCode(row.getDatabaseName()) - .ip(DatasourceContent.IP) - .port(DatasourceContent.PORT) + .url(row.getSysFirmDatasource().getUrl()) + .entCode(row.getSysFirmDatasource().getDatabase()) + .ip(row.getSysFirmDatasource().getIp()) + .port(row.getSysFirmDatasource().getPort()) + .password(row.getSysFirmDatasource().getPassword()) + .username(row.getSysFirmDatasource().getUsername()) .build() ); } @@ -79,7 +86,7 @@ public class ManyDataSource implements ApplicationRunner{ Map dataSourceMap = new HashMap<>(); dataSourceInfoList() .stream() - .map(entInfo -> DataSourceInfo.hostAndPortBuild(entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort())) + .map(entInfo -> DataSourceInfo.hostAndPortBuild(entInfo)) .forEach(dataSourceInfo -> { dataSourceMap.put(dataSourceInfo.getKey(), druidDataSourceFactory.create(dataSourceInfo)); }); @@ -98,7 +105,7 @@ public class ManyDataSource implements ApplicationRunner{ DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class); for (EntInfo entInfo : dataSourceInfoList()) { DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild( - entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort() + entInfo ); DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo); dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource); diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java index 73cc26e..8fdfd33 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java @@ -1,7 +1,9 @@ package com.muyu.cloud.common.many.datasource.domain.model; import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; +import com.muyu.cloud.common.saas.domain.model.EntInfo; import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.system.domain.SysFirmDatasource; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -39,12 +41,12 @@ public class DataSourceInfo { private String password; - public static DataSourceInfo hostAndPortBuild(String key, String host, Integer port) { + public static DataSourceInfo hostAndPortBuild(EntInfo entInfo) { return DataSourceInfo.builder() - .key(key) - .url(StringUtils.format(DatasourceContent.DATASOURCE_URL, host, port, key)) - .password(DatasourceContent.PASSWORD) - .userName(DatasourceContent.USER_NAME) + .key(entInfo.getEntCode()) + .url(StringUtils.format(entInfo.getUrl(), entInfo.getIp(), entInfo.getPort(), entInfo.getEntCode())) + .password(entInfo.getUsername()) + .userName(entInfo.getPassword()) .build(); } } diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java index 5c1985a..64eca98 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java @@ -19,7 +19,13 @@ public class EntInfo { private String entCode; + private String url; + private String ip; private Integer port; + + private String username; + + private String password; } diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java index c0ec0c3..c444a59 100644 --- a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java @@ -56,7 +56,7 @@ public class TokenService { claimsMap.put(SecurityConstants.USER_KEY, token); claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); - claimsMap.put(SecurityConstants.DATABASE_NAME, loginUser.getSysUser().getDatabaseName()); + claimsMap.put(SecurityConstants.DATABASE_NAME, loginUser.getSysUser().getDatabase()); // 接口返回信息 Map rspMap = new HashMap(); rspMap.put("access_token", JwtUtils.createToken(claimsMap)); diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java index 65ada9e..c1157f7 100644 --- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java @@ -78,6 +78,10 @@ public class SysDept extends BaseEntity { * 父部门名称 */ private String parentName; + /** + * 公司Id + */ + private Long firmId; /** * 子部门 diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirm.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirm.java new file mode 100644 index 0000000..20afc26 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirm.java @@ -0,0 +1,29 @@ +package com.muyu.common.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.domain + * @Project:cloud-vehicle + * @name:SysFirm + * @Date:2024/10/8 19:41 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@TableName("sys_firm") +public class SysFirm { + @TableId(type = IdType.AUTO) + private Integer firmId; + private String firmName; + private String firmCode; + private Integer datasourceId; +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirmDatasource.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirmDatasource.java new file mode 100644 index 0000000..b6d5c48 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirmDatasource.java @@ -0,0 +1,32 @@ +package com.muyu.common.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.domain + * @Project:cloud-vehicle + * @name:SysFirmDatasource + * @Date:2024/10/8 19:44 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@TableName("sys_firm_datasource") +public class SysFirmDatasource { + @TableId(type = IdType.AUTO) + private Long id; + private String url; + private String ip; + private Integer port; + private String database; + private String username; + private String password; +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java index 309fe95..62e9552 100644 --- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java @@ -55,6 +55,11 @@ public class SysUser extends BaseEntity { @Excel(name = "用户名称") private String nickName; + /** + * 用户类型 + */ + private String userType; + /** * 用户邮箱 */ @@ -106,6 +111,9 @@ public class SysUser extends BaseEntity { @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) private Date loginDate; + + private String database; + /** * 部门对象 */ @@ -136,10 +144,10 @@ public class SysUser extends BaseEntity { private Long roleId; /** - * 数据库名称 + * 公司Id * @param userId */ - private String databaseName; + private String firmId; public SysUser (Long userId) { diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/resp/SysFirmResp.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/resp/SysFirmResp.java new file mode 100644 index 0000000..07baec5 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/resp/SysFirmResp.java @@ -0,0 +1,30 @@ +package com.muyu.common.system.domain.resp; + +import com.muyu.common.system.domain.SysFirm; +import com.muyu.common.system.domain.SysFirmDatasource; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.system.domain + * @Project:cloud-vehicle + * @name:SysFirmDTO + * @Date:2024/10/8 20:23 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SysFirmResp { + /** + * 公司信息 + */ + private SysFirm sysFirm; + /** + * 公司数据源信息 + */ + private SysFirmDatasource sysFirmDatasource; +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java index 1730fb9..3975cda 100644 --- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java @@ -3,7 +3,9 @@ package com.muyu.common.system.remote; import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.constant.ServiceNameConstants; import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.SysFirm; import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.resp.SysFirmResp; import com.muyu.common.system.remote.factory.RemoteUserFallbackFactory; import com.muyu.common.system.domain.LoginUser; import org.springframework.cloud.openfeign.FeignClient; @@ -40,6 +42,8 @@ public interface RemoteUserService { @PostMapping("/user/register") public Result registerUserInfo (@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - @GetMapping("/user/companyList") - public Result> companyList (); + @GetMapping("/firm/firmInnList") + Result> getFirmList(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/user/firmUserInfo/{username}/{firmId}") + Result getFirmUserInfo(@PathVariable("username") String username,@PathVariable("firmId") Long firmId,@RequestHeader(SecurityConstants.FROM_SOURCE) String inner); } diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java index f274462..2511b46 100644 --- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java @@ -1,6 +1,7 @@ package com.muyu.common.system.remote.factory; import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.resp.SysFirmResp; import com.muyu.common.system.remote.RemoteUserService; import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.domain.LoginUser; @@ -33,9 +34,15 @@ public class RemoteUserFallbackFactory implements FallbackFactory registerUserInfo (SysUser sysUser, String source) { return Result.error("注册用户失败:" + throwable.getMessage()); } + @Override - public Result> companyList() { - return Result.error("saas连接system失败:" + throwable.getMessage()); + public Result> getFirmList(String source) { + return Result.error("注册用户失败:" + throwable.getMessage()); + } + + @Override + public Result getFirmUserInfo(String username, Long firmId, String inner) { + return Result.error("注册用户失败:" + throwable.getMessage()); } }; } diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java index 47e073f..a62fec8 100644 --- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java @@ -71,6 +71,7 @@ public class AuthFilter implements GlobalFilter, Ordered { addHeader(mutate, SecurityConstants.USER_KEY, userkey); addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + addHeader(mutate,SecurityConstants.DATABASE_NAME, JwtUtils.getDatabaseName(claims)); // 内部请求来源参数清除 removeHeader(mutate, SecurityConstants.FROM_SOURCE); return chain.filter(exchange.mutate().request(mutate.build()).build()); diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FirmUser.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FirmUser.java new file mode 100644 index 0000000..711a751 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FirmUser.java @@ -0,0 +1,152 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.common.system.domain.SysUser; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * @Author:杨鹏 + * @Package:com.muyu.domain + * @Project:cloud-vehicle + * @name:FirmUser + * @Date:2024/10/8 18:59 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@TableName("sys_user") +@Tag(name = "企业用户") +public class FirmUser extends BaseEntity { + + /** + * 用户ID + */ + @Schema(name = "用户ID") + @TableId(type = IdType.AUTO) + private Long userId; + /** + * 部门ID + */ + @Schema(name = "部门ID") + private Long deptId; + /** + * 用户账号 + */ + @Schema(name = "用户账号") + private String userName; + /** + * 用户昵称 + */ + @Schema(name = "用户昵称") + private String nickName; + /** + * 用户类型(00系统用户) + */ + @Schema(name = "用户类型(00系统用户)") + private String userType; + /** + * 用户邮箱 + */ + @Schema(name = "用户邮箱") + private String email; + /** + * 手机号码 + */ + @Schema(name = "手机号码") + private String phonenumber; + /** + * 用户性别(0男 1女 2未知) + */ + @Schema(name = "用户性别(0男 1女 2未知)") + private String sex; + /** + * 头像地址 + */ + @Schema(name = "头像地址") + private String avatar; + /** + * 密码 + */ + @Schema(name = "密码") + private String password; + /** + * 帐号状态(0正常 1停用) + */ + @Schema(name = "帐号状态(0正常 1停用)") + private String status; + /** + * 删除标志(0代表存在 2代表删除) + */ + @Schema(name = "删除标志(0代表存在 2代表删除)") + private String delFlag; + /** + * 最后登录IP + */ + @Schema(name = "最后登录IP") + private String loginIp; + /** + * 最后登录时间 + */ + @Schema(name = "最后登录时间") + private Date loginDate; + + public static FirmUser builderFirmUser(SysUser sysUser) { + return FirmUser.builder() + .userId(sysUser.getUserId()) + .deptId(sysUser.getDeptId()) + .userType(sysUser.getUserType()) + .userName(sysUser.getUserName()) + .nickName(sysUser.getNickName()) + .email(sysUser.getEmail()) + .phonenumber(sysUser.getPhonenumber()) + .sex(sysUser.getSex()) + .avatar(sysUser.getAvatar()) + .password(sysUser.getPassword()) + .status(sysUser.getStatus()) + .delFlag(sysUser.getDelFlag()) + .loginIp(sysUser.getLoginIp()) + .loginDate(sysUser.getLoginDate()) + .createBy(sysUser.getCreateBy()) + .createTime(sysUser.getCreateTime()) + .updateBy(sysUser.getUpdateBy()) + .updateTime(sysUser.getUpdateTime()) + .remark(sysUser.getRemark()) + .build(); + } + public static SysUser builderSysUser(FirmUser sysUser) { + return SysUser.builder() + .userId(sysUser.getUserId()) + .deptId(sysUser.getDeptId()) + .userName(sysUser.getUserName()) + .userType(sysUser.getUserType()) + .nickName(sysUser.getNickName()) + .email(sysUser.getEmail()) + .phonenumber(sysUser.getPhonenumber()) + .sex(sysUser.getSex()) + .avatar(sysUser.getAvatar()) + .password(sysUser.getPassword()) + .status(sysUser.getStatus()) + .delFlag(sysUser.getDelFlag()) + .loginIp(sysUser.getLoginIp()) + .loginDate(sysUser.getLoginDate()) + .createBy(sysUser.getCreateBy()) + .createTime(sysUser.getCreateTime()) + .updateBy(sysUser.getUpdateBy()) + .updateTime(sysUser.getUpdateTime()) + .remark(sysUser.getRemark()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/pom.xml new file mode 100644 index 0000000..5375102 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.muyu + cloud-modules-enterprise + 3.6.3 + + + cloud-modules-enterprise-remote + + + 17 + 17 + UTF-8 + + + + + com.muyu + cloud-modules-enterprise-common + + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteFirmUserService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteFirmUserService.java new file mode 100644 index 0000000..8154d78 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteFirmUserService.java @@ -0,0 +1,28 @@ +package com.muyu.enterprise.remote; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.SysUser; +import com.muyu.enterprise.remote.factory.RemoteFirmUserFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * @Author:杨鹏 + * @Package:com.muyu.enterpries.remote + * @Project:cloud-vehicle + * @name:RemoteFirmUserService + * @Date:2024/10/8 19:58 + */ +@FeignClient(contextId = "remoteFirmUserService", + value = ServiceNameConstants.ENTERPRISE_SERVICE, + fallbackFactory = RemoteFirmUserFallbackFactory.class) +public interface RemoteFirmUserService { + + @GetMapping("/firm/query_by_username/{username}") + Result queryByUsername(@PathVariable("username") String username,@RequestHeader(SecurityConstants.INNER) String source,@RequestHeader("ent_code") String databaseName); + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/factory/RemoteFirmUserFallbackFactory.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/factory/RemoteFirmUserFallbackFactory.java new file mode 100644 index 0000000..66b6ccf --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/factory/RemoteFirmUserFallbackFactory.java @@ -0,0 +1,34 @@ +package com.muyu.enterprise.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.remote.factory.RemoteFileFallbackFactory; +import com.muyu.enterprise.remote.RemoteFirmUserService; +import lombok.extern.log4j.Log4j2; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @Author:杨鹏 + * @Package:com.muyu.enterprise.remote.factory + * @Project:cloud-vehicle + * @name:RemoteFirmUserFallbackFactory + * @Date:2024/10/8 20:01 + */ +@Component +@Log4j2 +public class RemoteFirmUserFallbackFactory implements FallbackFactory +{ + @Override + public RemoteFirmUserService create(Throwable cause) { + log.error("文件服务调用失败:{}", cause.getMessage()); + return new RemoteFirmUserService() { + @Override + public Result queryByUsername(String username, String source,String databaseName) { + return Result.error("saas连接失败:" + cause.getMessage()); + } + }; + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..121163e --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.enterprise.remote.factory.RemoteFirmUserFallbackFactory diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml index 27e500d..7a3d881 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml @@ -23,6 +23,12 @@ + + + + + + com.alibaba.cloud diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java index ac28d2f..3a96687 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java @@ -1,15 +1,24 @@ package com.muyu.enterprise; +import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; import com.muyu.common.security.annotation.EnableCustomConfig; import com.muyu.common.security.annotation.EnableMyFeignClients; import lombok.extern.log4j.Log4j2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @Log4j2 @EnableCustomConfig @EnableMyFeignClients @SpringBootApplication +// ( +// exclude = { +// DataSourceAutoConfiguration.class, +// DruidDataSourceAutoConfigure.class, +// DynamicDataSourceAutoConfiguration.class +// }) public class CloudEnterpriseApplication { public static void main(String[] args) { SpringApplication.run(CloudEnterpriseApplication.class,args); diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java index 8e62d0f..13999e6 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java @@ -78,9 +78,8 @@ public class ElectController extends BaseController { //获取用户信息 LoginUser loginUser = SecurityUtils.getLoginUser(); //获取租户唯一标识 - String databaseName = loginUser.getSysUser().getDatabaseName(); //将信息存到Redis - fenceCahceService.put(databaseName+fence.getCoordinates(),fence); + fenceCahceService.put(fence.getCoordinates(),fence); return Result.success(save?"操作成功":"操作失败"); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FirmUserController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FirmUserController.java new file mode 100644 index 0000000..68280a8 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FirmUserController.java @@ -0,0 +1,104 @@ +package com.muyu.enterprise.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.security.annotation.InnerAuth; +import com.muyu.common.system.domain.SysUser; +import com.muyu.domain.FirmUser; +import com.muyu.enterprise.service.FirmUserService; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Author:杨鹏 + * @Package:com.muyu.enterprise.controller + * @Project:cloud-vehicle + * @name:SysUserController + * @Date:2024/10/8 18:59 + */ +@RestController +@RequestMapping("/firm_user") +@Tag(name = "企业用户控制层") +public class FirmUserController extends BaseController { + + /** + * 企业用户业务层 + */ + @Resource + private FirmUserService firmUserService; + + /** + * 企业用户列表 + * @return 返回企业用户列表 + */ + @Schema(description = "企业用户列表") + @GetMapping("/list") + public Result list(){ + return success(firmUserService.list()); + } + + /** + * 查询企业用户 + * @param userId 主键 + * @return 返回用户信息 + */ + @Schema(description = "查询企业用户") + @GetMapping("/query/{userId}") + public Result query(@PathVariable("userId") Long userId){ + return success(firmUserService.getById(userId)); + } + + @Schema(description = "根据用户名查询企业用户") + @GetMapping("/query_by_username/{username}") + @InnerAuth + public Result queryByUsername(@PathVariable("username") String username){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(FirmUser::getUserName, username); + FirmUser firmUser = firmUserService.getOne(queryWrapper); + return success(FirmUser.builderSysUser(firmUser)); + } + + /** + * 新增企业用户 + * @param sysUser 新增参数 + * @return 返回新增主键 + */ + @Schema(description = "新增企业用户") + @PostMapping("/add") + public Result add(@RequestBody SysUser sysUser){ + FirmUser firmUser = FirmUser.builderFirmUser(sysUser); + firmUserService.save(firmUser); + return success(firmUser.getUserId()); + } + + /** + * 修改企业用户 + * @param sysUser 修改参数 + * @return + */ + @Schema(description = "修改企业用户") + @PutMapping("/edit") + public Result edit(@RequestBody SysUser sysUser){ + FirmUser firmUser = FirmUser.builderFirmUser(sysUser); + firmUserService.updateById(firmUser); + return success(); + } + + /** + * 删除企业用户 + * @param userId 主键 + * @return + */ + @Schema(description = "删除企业用户") + @DeleteMapping("/remove/{userId}") + public Result remove(@PathVariable("userId") Long userId){ + firmUserService.removeById(userId); + return success(); + } + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java index 8da6fd8..f56e974 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java @@ -67,9 +67,9 @@ public class MessageTemplateController { //获取用户信息 LoginUser loginUser = SecurityUtils.getLoginUser(); //获取租户唯一标识 - String databaseName = loginUser.getSysUser().getDatabaseName(); + //添加到缓存 - templateCacheService.put(databaseName+messageTemplateAddReq.getMessageTemplateName(), MessageTemplate.addBuild(messageTemplateAddReq)); + templateCacheService.put(messageTemplateAddReq.getMessageTemplateName(), MessageTemplate.addBuild(messageTemplateAddReq)); return Result.success(save? "新增成功" : "新增失败"); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java index 349d913..fd2019f 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java @@ -101,10 +101,8 @@ public class VehicleController extends BaseController { boolean save = vehicleService.save(Vehicle.addBuild(vehicleAddReq)); //获取用户信息 LoginUser loginUser = SecurityUtils.getLoginUser(); - //获取租户唯一标识 - String databaseName = loginUser.getSysUser().getDatabaseName(); //存到redis - vehicleCacheService.put(databaseName+vehicleAddReq.getVehicleVin(), Vehicle.addBuild(vehicleAddReq)); + vehicleCacheService.put(vehicleAddReq.getVehicleVin(), Vehicle.addBuild(vehicleAddReq)); return Result.success(save? "新增成功" : "新增失败"); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java index b1612ec..62681e7 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java @@ -64,8 +64,7 @@ public class WarnRuleController { //获取用户信息 LoginUser loginUser = SecurityUtils.getLoginUser(); //获取租户唯一标识 - String databaseName = loginUser.getSysUser().getDatabaseName(); - warnRuleCacheService.put(databaseName+warnRule.getRuleName(),warnRule); + warnRuleCacheService.put(warnRule.getRuleName(),warnRule); return Result.success(save); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FirmUserMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FirmUserMapper.java new file mode 100644 index 0000000..7b34405 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FirmUserMapper.java @@ -0,0 +1,16 @@ +package com.muyu.enterprise.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.domain.FirmUser; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author:杨鹏 + * @Package:com.muyu.enterprise.mapper + * @Project:cloud-vehicle + * @name:FirmUserMapper + * @Date:2024/10/8 19:05 + */ +@Mapper +public interface FirmUserMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/FirmUserService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/FirmUserService.java new file mode 100644 index 0000000..dac3483 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/FirmUserService.java @@ -0,0 +1,14 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.FirmUser; + +/** + * @Author:杨鹏 + * @Package:com.muyu.enterprise.service + * @Project:cloud-vehicle + * @name:FirmUserService + * @Date:2024/10/8 19:04 + */ +public interface FirmUserService extends IService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FirmUserServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FirmUserServiceImpl.java new file mode 100644 index 0000000..1607827 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FirmUserServiceImpl.java @@ -0,0 +1,20 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.domain.FirmUser; +import com.muyu.enterprise.mapper.FirmUserMapper; +import com.muyu.enterprise.service.FirmUserService; +import org.springframework.stereotype.Service; + +/** + * @Author:杨鹏 + * @Package:com.muyu.enterprise.service.impl + * @Project:cloud-vehicle + * @name:FirmUserServiceImpl + * @Date:2024/10/8 19:05 + */ +@Service +public class FirmUserServiceImpl + extends ServiceImpl + implements FirmUserService { +} diff --git a/cloud-modules/cloud-modules-enterprise/pom.xml b/cloud-modules/cloud-modules-enterprise/pom.xml index d34833d..c0fcd1f 100644 --- a/cloud-modules/cloud-modules-enterprise/pom.xml +++ b/cloud-modules/cloud-modules-enterprise/pom.xml @@ -24,6 +24,7 @@ cloud-modules-enterprise-common cloud-modules-enterprise-server cloud-modules-enterprise-cache + cloud-modules-enterprise-remote pom diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/OnLineMonitoringConsumer.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/OnLineMonitoringConsumer.java index 1dd079f..c9d0d83 100644 --- a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/OnLineMonitoringConsumer.java +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/OnLineMonitoringConsumer.java @@ -72,7 +72,7 @@ public class OnLineMonitoringConsumer { Object breakdown = faultCacheService.get(vin); Vehicle vehicle = vehicleCacheService.get(vin); WarnRule warnRule = warnRuleCacheService.get(vin); - WarnRuleResp warnStrategy = warnStrategyCacheService.get(vin); + WarnRuleResp warnRuleResp = warnStrategyCacheService.get(vin); VehicleManageResp vehicleManageResp = allVehicleCacheService.get(vin); // 封装从redis中获得的数据 HashMap map = new HashMap<>(); @@ -80,7 +80,7 @@ public class OnLineMonitoringConsumer { map.put("breakdown",breakdown); map.put("vehicle",vehicle); map.put("warnRule",warnRule); - map.put("warnStrategy",warnStrategy); + map.put("warnRuleResp",warnRuleResp); map.put("vehicleManageResp",vehicleManageResp); // 添加到本地缓存中 cacheUtil.put(vin,map); diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java index 7477697..87203d8 100644 --- a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java @@ -25,7 +25,7 @@ import javax.annotation.Resource; public class TestKafka { private static final String TIPSY = "tipsy"; - private static final String VIN = "1123wsdfr54323wsd"; + private static final String VIN = "63YCZDY6336C8H4CA"; /** * 上线监听队列名称 diff --git a/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml index eda0de7..6937759 100644 --- a/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 47.101.49.53:8848 user-name: nacos password: nacos - namespace: dev + namespace: seven # SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all # Spring spring: diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml index e65eaf8..fe75bc8 100644 --- a/cloud-modules/cloud-modules-system/pom.xml +++ b/cloud-modules/cloud-modules-system/pom.xml @@ -17,6 +17,16 @@ + + com.muyu + cloud-modules-enterprise-remote + + + + com.muyu + cloud-modules-enterprise-remote + + com.alibaba.cloud diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java index 37e48fc..a8affb8 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java @@ -29,6 +29,7 @@ public class SysDeptController extends BaseController { @Autowired private SysDeptService deptService; + /** * 获取部门列表 */ diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmController.java new file mode 100644 index 0000000..6b16d6a --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmController.java @@ -0,0 +1,64 @@ +package com.muyu.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.security.annotation.InnerAuth; +import com.muyu.common.system.domain.SysFirm; +import com.muyu.common.system.domain.SysFirmDatasource; +import com.muyu.common.system.domain.resp.SysFirmResp; +import com.muyu.system.service.SysFirmDatasourceService; +import com.muyu.system.service.SysFirmService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 企业控制层 + * @Author:杨鹏 + * @Package:com.muyu.system.controller + * @Project:cloud-vehicle + * @name:SysFirmController + * @Date:2024/10/8 19:41 + */ +@RestController +@RequestMapping("/firm") +public class SysFirmController extends BaseController { + + @Resource + private SysFirmService sysFirmService; + @Resource + private SysFirmDatasourceService sysFirmDatasourceService; + + /** + * 企业下拉框列表 + * @return + */ + @GetMapping("/firmList") + public Result> firmList(){ + return success(sysFirmService.list()); + } + + @GetMapping("/firmInnList") + @InnerAuth + public Result> firmInnList(){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.ne(SysFirm::getFirmId, 1); + return success(sysFirmService.list(wrapper) + .stream() + .map(sysFirm -> + SysFirmResp.builder() + .sysFirm(sysFirm) + .sysFirmDatasource( + sysFirmDatasourceService.getById(sysFirm.getDatasourceId()) + ) + ) + ); + } + + + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmDatasourceController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmDatasourceController.java new file mode 100644 index 0000000..8273dc2 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysFirmDatasourceController.java @@ -0,0 +1,27 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.system.service.SysFirmDatasourceService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 数据源管理 + * @Author:杨鹏 + * @Package:com.muyu.system.controller + * @Project:cloud-vehicle + * @name:SysFirmDatasourceController + * @Date:2024/10/8 19:49 + */ +@RestController +@RequestMapping("/firmDatasource") +public class SysFirmDatasourceController extends BaseController { + + @Resource + private SysFirmDatasourceService sysFirmDatasourceService; + + + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java index ce7145d..7c60822 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java @@ -1,5 +1,6 @@ package com.muyu.system.controller; +import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.poi.ExcelUtil; @@ -10,10 +11,8 @@ import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.InnerAuth; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.common.security.utils.SecurityUtils; -import com.muyu.common.system.domain.SysDept; -import com.muyu.common.system.domain.SysRole; -import com.muyu.common.system.domain.SysUser; -import com.muyu.common.system.domain.LoginUser; +import com.muyu.common.system.domain.*; +import com.muyu.enterprise.remote.RemoteFirmUserService; import com.muyu.system.domain.resp.AuthRoleResp; import com.muyu.system.domain.resp.UserDetailInfoResp; import com.muyu.system.domain.resp.UserInfoResp; @@ -25,6 +24,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import jakarta.servlet.http.HttpServletResponse; + +import javax.annotation.Resource; import java.io.IOException; import java.util.List; import java.util.Set; @@ -55,6 +56,31 @@ public class SysUserController extends BaseController { @Autowired private SysConfigService configService; + @Resource + private RemoteFirmUserService remoteFirmUserService; + + @Resource + private SysFirmDatasourceService sysFirmDatasourceService; + + + @GetMapping("/firmUserInfo/{username}/{firmId}") + @InnerAuth + Result getFirmUserInfo(@PathVariable("username") String username,@PathVariable("firmId") Long firmId){ + SysFirmDatasource sysFirmDatasource = sysFirmDatasourceService.getById(firmId); + Result sysUserResult = remoteFirmUserService.queryByUsername(username, SecurityConstants.INNER, sysFirmDatasource.getDatabase()); + List sysRoles = roleService.selectRolesByUserId(firmId); + SysUser sysUser = sysUserResult.getData(); + // 角色集合 + Set roles = permissionService.getRolePermission(sysUser); + // 权限集合 + Set permissions = permissionService.getMenuPermission(sysUser); + LoginUser loginUser = new LoginUser(); + loginUser.setSysUser(sysUser); + loginUser.setRoles(roles); + loginUser.setPermissions(permissions); + + return success(loginUser); + } /** * 获取用户列表 diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmDatasourceMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmDatasourceMapper.java new file mode 100644 index 0000000..243f442 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmDatasourceMapper.java @@ -0,0 +1,16 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysFirmDatasource; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.mapper + * @Project:cloud-vehicle + * @name:SysFirmDatasourceMapper + * @Date:2024/10/8 19:47 + */ +@Mapper +public interface SysFirmDatasourceMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmMapper.java new file mode 100644 index 0000000..c4bcdec --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysFirmMapper.java @@ -0,0 +1,16 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysFirm; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.mapper + * @Project:cloud-vehicle + * @name:SysFirmMapper + * @Date:2024/10/8 19:45 + */ +@Mapper +public interface SysFirmMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmDatasourceService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmDatasourceService.java new file mode 100644 index 0000000..4699d3b --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmDatasourceService.java @@ -0,0 +1,14 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysFirmDatasource; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.service.impl + * @Project:cloud-vehicle + * @name:SysFirmDatasourceService + * @Date:2024/10/8 19:48 + */ +public interface SysFirmDatasourceService extends IService { +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmService.java new file mode 100644 index 0000000..5040e1e --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysFirmService.java @@ -0,0 +1,14 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysFirm; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.service + * @Project:cloud-vehicle + * @name:SysFirmService + * @Date:2024/10/8 19:46 + */ +public interface SysFirmService extends IService { +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmDatasourceServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmDatasourceServiceImpl.java new file mode 100644 index 0000000..e26e0f2 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmDatasourceServiceImpl.java @@ -0,0 +1,20 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.system.domain.SysFirmDatasource; +import com.muyu.system.mapper.SysFirmDatasourceMapper; +import com.muyu.system.service.SysFirmDatasourceService; +import org.springframework.stereotype.Service; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.service.impl + * @Project:cloud-vehicle + * @name:SysFirmDatasourceServiceImpl + * @Date:2024/10/8 19:48 + */ +@Service +public class SysFirmDatasourceServiceImpl + extends ServiceImpl + implements SysFirmDatasourceService { +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmServiceImpl.java new file mode 100644 index 0000000..4aa8a18 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysFirmServiceImpl.java @@ -0,0 +1,20 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.system.domain.SysFirm; +import com.muyu.system.mapper.SysFirmMapper; +import com.muyu.system.service.SysFirmService; +import org.springframework.stereotype.Service; + +/** + * @Author:杨鹏 + * @Package:com.muyu.system.service.im + * @Project:cloud-vehicle + * @name:SysFirmServiceImpl + * @Date:2024/10/8 19:46 + */ +@Service +public class SysFirmServiceImpl + extends ServiceImpl + implements SysFirmService { +} diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml index f4f75bb..8ca0708 100644 --- a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -23,7 +23,6 @@ - @@ -64,7 +63,6 @@ u.create_by, u.create_time, u.remark, - u.database_name, d.dept_id, d.parent_id, d.ancestors, diff --git a/pom.xml b/pom.xml index a07dac0..c3e95d0 100644 --- a/pom.xml +++ b/pom.xml @@ -267,18 +267,33 @@ ${muyu.version} + com.muyu cloud-common-kafka ${muyu.version} + + + com.muyu + cloud-common-saas + ${muyu.version} + + com.muyu cloud-modules-enterprise-common ${muyu.version} + + + + com.muyu + cloud-modules-enterprise-remote + ${muyu.version} +