From 0595237e8b794cd4af3de852752ac0a6371627a4 Mon Sep 17 00:00:00 2001 From: Liu Wu <2780205363@qq.com> Date: Thu, 26 Sep 2024 15:26:07 +0800 Subject: [PATCH] =?UTF-8?q?saas=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/auth/controller/TokenController.java | 5 +- .../muyu/auth/service/SysLoginService.java | 11 +++- .../com/muyu/common/system/domain/Firm.java | 22 ++++++++ .../system/remote/RemoteUserService.java | 7 +-- .../factory/RemoteUserFallbackFactory.java | 5 +- cloud-modules/cloud-modules-car/pom.xml | 5 ++ .../src/main/resources/bootstrap.yml | 2 +- .../controller/SysProfileController.java | 13 +++-- .../system/controller/SysUserController.java | 11 ++-- .../muyu/system/mapper/SysDictTypeMapper.java | 1 + .../muyu/system/service/SysUserService.java | 3 +- .../service/impl/SysUserServiceImpl.java | 50 +++++++++++++++++-- 12 files changed, 111 insertions(+), 24 deletions(-) create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/Firm.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 24f5ecf..76e9200 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 @@ -42,11 +42,12 @@ public class TokenController { Firm firm = sysFirmService.findFirmByName(form.getFirmName()); //不能存在提示 - if (firm==null){ + if (firm.getDatabaseName()==null){ return Result.error(null,"公司不存在"); } + // 用户登录 - LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); + LoginUser userInfo = sysLoginService.login(firm.getDatabaseName(),form.getUsername(), form.getPassword()); // 获取登录token return Result.success(tokenService.createToken(userInfo)); } 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..2bce27b 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 @@ -12,6 +12,7 @@ import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.ip.IpUtils; import com.muyu.common.redis.service.RedisService; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.Firm; import com.muyu.common.system.remote.RemoteUserService; import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.domain.LoginUser; @@ -40,7 +41,7 @@ public class SysLoginService { /** * 登录 */ - public LoginUser login (String username, String password) { + public LoginUser login (String databaseName,String username, String password) { // 用户名或密码为空 错误 if (StringUtils.isAnyBlank(username, password)) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); @@ -64,8 +65,14 @@ public class SysLoginService { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } + + Firm firm = new Firm(); + firm.setDatabaseName(databaseName); + firm.setUserName(username); + + // 查询用户信息 - Result userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + Result userResult = remoteUserService.getUserInfo(firm, SecurityConstants.INNER); if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/Firm.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/Firm.java new file mode 100644 index 0000000..d468de4 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/Firm.java @@ -0,0 +1,22 @@ +package com.muyu.common.system.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Firm { + + private Integer id; + + private String firmName; + + private String databaseName; + + private String userName; + + + +} 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 3dc4521..9dec349 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 @@ -4,6 +4,7 @@ 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.core.web.page.TableDataInfo; +import com.muyu.common.system.domain.Firm; import com.muyu.common.system.domain.SysFirmUser; import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.remote.factory.RemoteUserFallbackFactory; @@ -23,13 +24,13 @@ public interface RemoteUserService { /** * 通过用户名查询用户信息 * - * @param username 用户名 + * @param * @param source 请求来源 * * @return 结果 */ - @GetMapping("/user/info/{username}") - public Result getUserInfo (@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @PostMapping("/user/info") + public Result getUserInfo (@RequestBody Firm firm, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** * 注册用户信息 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 071490a..d3efb79 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 @@ -2,6 +2,7 @@ package com.muyu.common.system.remote.factory; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.system.domain.Firm; import com.muyu.common.system.domain.SysFirmUser; import com.muyu.common.system.remote.RemoteUserService; import com.muyu.common.system.domain.SysUser; @@ -26,8 +27,10 @@ public class RemoteUserFallbackFactory implements FallbackFactory getUserInfo (String username, String source) { + public Result getUserInfo(Firm firm, String source) { return Result.error("获取用户失败:" + throwable.getMessage()); } diff --git a/cloud-modules/cloud-modules-car/pom.xml b/cloud-modules/cloud-modules-car/pom.xml index 85a3751..17330b6 100644 --- a/cloud-modules/cloud-modules-car/pom.xml +++ b/cloud-modules/cloud-modules-car/pom.xml @@ -80,6 +80,11 @@ cloud-common-api-doc + + com.muyu + cloud-common-saas + + diff --git a/cloud-modules/cloud-modules-car/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-car/src/main/resources/bootstrap.yml index ab80c71..8ac80be 100644 --- a/cloud-modules/cloud-modules-car/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-car/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 47.101.53.251:8848 user-name: nacos password: nacos - namespace: lgy + namespace: four # Spring spring: diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java index ae49255..04470ab 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java @@ -9,6 +9,7 @@ import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.service.TokenService; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.Firm; import com.muyu.common.system.remote.RemoteFileService; import com.muyu.common.system.domain.SysFile; import com.muyu.common.system.domain.SysUser; @@ -43,8 +44,12 @@ public class SysProfileController extends BaseController { */ @GetMapping public Result profile () { - String username = SecurityUtils.getUsername(); - SysUser user = userService.selectUserByUserName(username); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String username = loginUser.getUsername(); + Firm firm = new Firm(); + + firm.setUserName(username); + SysUser user = userService.selectUserByUserName(firm); return Result.success( ProfileResp.builder() .roleGroup( userService.selectUserRoleGroup(username) ) @@ -87,7 +92,9 @@ public class SysProfileController extends BaseController { @PutMapping("/updatePwd") public Result updatePwd (String oldPassword, String newPassword) { String username = SecurityUtils.getUsername(); - SysUser user = userService.selectUserByUserName(username); + Firm firm = new Firm(); + firm.setUserName(username); + SysUser user = userService.selectUserByUserName(firm); String password = user.getPassword(); if (!SecurityUtils.matchesPassword(oldPassword, password)) { return error("修改密码失败,旧密码错误"); 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 d3aa7ca..b4b6dcd 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 @@ -10,10 +10,7 @@ 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.system.domain.resp.AuthRoleResp; import com.muyu.system.domain.resp.UserDetailInfoResp; import com.muyu.system.domain.resp.UserInfoResp; @@ -103,9 +100,9 @@ public class SysUserController extends BaseController { * 获取当前用户信息 */ @InnerAuth - @GetMapping("/info/{username}") - public Result info (@PathVariable("username") String username) { - SysUser sysUser = userService.selectUserByUserName(username); + @PostMapping("/info") + public Result info (@RequestBody Firm firm) { + SysUser sysUser = userService.selectUserByUserName(firm); if (StringUtils.isNull(sysUser)) { return Result.error("用户名或密码错误"); } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java index 0a4ffe6..f3d347c 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java @@ -18,6 +18,7 @@ public interface SysDictTypeMapper extends BaseMapper { * * @return 字典类型集合信息 */ + public List selectDictTypeList (SysDictType dictType); /** diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java index c4b693c..e1068cc 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java @@ -1,6 +1,7 @@ package com.muyu.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.Firm; import com.muyu.common.system.domain.SysUser; import java.util.List; @@ -45,7 +46,7 @@ public interface SysUserService extends IService { * * @return 用户对象信息 */ - public SysUser selectUserByUserName (String userName); + public SysUser selectUserByUserName (Firm firm); /** * 通过用户ID查询用户 diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java index 3015fb7..defb3c4 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java @@ -8,6 +8,8 @@ import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.bean.BeanValidators; import com.muyu.common.datascope.annotation.DataScope; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.Firm; +import com.muyu.common.system.domain.SysDept; import com.muyu.common.system.domain.SysRole; import com.muyu.common.system.domain.SysUser; import com.muyu.system.domain.SysPost; @@ -99,14 +101,18 @@ public class SysUserServiceImpl extends ServiceImpl impl * @return 用户对象信息 */ @Override - public SysUser selectUserByUserName (String userName) { + public SysUser selectUserByUserName (Firm firm) { + String databaseName = firm.getDatabaseName(); + String userName = firm.getUserName(); + + String user="root"; String password="Lw030106"; SysUser sysUser=new SysUser(); try { DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); - Connection connection = DriverManager.getConnection("jdbc:mysql://47.101.53.251:3306/datasource?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=false", user, password); + Connection connection = DriverManager.getConnection("jdbc:mysql://47.101.53.251:3306/"+databaseName+"?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=false", user, password); String sql="select u.user_id,\n" + " u.dept_id,\n" + " u.user_name,\n" + @@ -136,12 +142,12 @@ public class SysUserServiceImpl extends ServiceImpl impl " r.role_key,\n" + " r.role_sort,\n" + " r.data_scope,\n" + - " r.status as role_status\n" + + " r.status as role_status " + " from sys_user u\n" + " left join sys_dept d on u.dept_id = d.dept_id\n" + " left join sys_user_role ur on u.user_id = ur.user_id\n" + " left join sys_role r on r.role_id = ur.role_id" + - "where u.del_flag = '0' and u.user_name = '"+userName+"'"; + " where u.del_flag = '0' and u.user_name = '"+userName+"'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(sql); @@ -151,7 +157,43 @@ public class SysUserServiceImpl extends ServiceImpl impl sysUser.setDeptId(rs.getLong("dept_id")); sysUser.setUserName(rs.getString("user_name")); sysUser.setNickName(rs.getString("nick_name")); + sysUser.setEmail(rs.getString("email")); + sysUser.setAvatar(rs.getString("avatar")); + sysUser.setPhonenumber(rs.getString("phonenumber")); + sysUser.setPassword(rs.getString("password")); + sysUser.setSex(rs.getString("sex")); + sysUser.setStatus(rs.getString("status")); + sysUser.setDatabaseName(rs.getString("database_name")); + sysUser.setDelFlag(rs.getString("del_flag")); + sysUser.setLoginIp(rs.getString("login_ip")); + sysUser.setLoginDate(rs.getDate("login_date")); + sysUser.setCreateBy(rs.getString("create_by")); + sysUser.setCreateTime(rs.getDate("create_time")); + + SysDept sysDept = new SysDept(); + + sysDept.setDeptId(rs.getLong("dept_id")); + sysDept.setParentId(rs.getLong("parent_id")); + sysDept.setAncestors(rs.getString("ancestors")); + sysDept.setDeptName(rs.getString("dept_name")); + sysDept.setOrderNum(rs.getInt("order_num")); + sysDept.setLeader(rs.getString("leader")); + sysDept.setStatus(rs.getString("dept_status")); + sysUser.setDept(sysDept); + + SysRole sysRole = new SysRole(); + + sysRole.setRoleId(rs.getLong("role_id")); + sysRole.setRoleName(rs.getString("role_name")); + sysRole.setRoleKey(rs.getString("role_key")); + sysRole.setRoleSort(rs.getInt("role_sort")); + sysRole.setDataScope(rs.getString("data_scope")); + sysRole.setStatus(rs.getString("role_status")); + + ArrayList sysRoles = new ArrayList<>(); + sysRoles.add(sysRole); + sysUser.setRoles(sysRoles); }