saas 优化
parent
981706944a
commit
0595237e8b
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
|
||||
Result<LoginUser> userResult = remoteUserService.getUserInfo(firm, SecurityConstants.INNER);
|
||||
|
||||
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) {
|
||||
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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<LoginUser> getUserInfo (@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
@PostMapping("/user/info")
|
||||
public Result<LoginUser> getUserInfo (@RequestBody Firm firm, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
|
||||
/**
|
||||
* 注册用户信息
|
||||
|
|
|
@ -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<RemoteUserServ
|
|||
public RemoteUserService create (Throwable throwable) {
|
||||
log.error("用户服务调用失败:{}", throwable.getMessage());
|
||||
return new RemoteUserService() {
|
||||
|
||||
|
||||
@Override
|
||||
public Result<LoginUser> getUserInfo (String username, String source) {
|
||||
public Result<LoginUser> getUserInfo(Firm firm, String source) {
|
||||
return Result.error("获取用户失败:" + throwable.getMessage());
|
||||
}
|
||||
|
||||
|
|
|
@ -80,6 +80,11 @@
|
|||
<artifactId>cloud-common-api-doc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.muyu</groupId>
|
||||
<artifactId>cloud-common-saas</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ nacos:
|
|||
addr: 47.101.53.251:8848
|
||||
user-name: nacos
|
||||
password: nacos
|
||||
namespace: lgy
|
||||
namespace: four
|
||||
|
||||
# Spring
|
||||
spring:
|
||||
|
|
|
@ -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("修改密码失败,旧密码错误");
|
||||
|
|
|
@ -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<LoginUser> info (@PathVariable("username") String username) {
|
||||
SysUser sysUser = userService.selectUserByUserName(username);
|
||||
@PostMapping("/info")
|
||||
public Result<LoginUser> info (@RequestBody Firm firm) {
|
||||
SysUser sysUser = userService.selectUserByUserName(firm);
|
||||
if (StringUtils.isNull(sysUser)) {
|
||||
return Result.error("用户名或密码错误");
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
|
|||
*
|
||||
* @return 字典类型集合信息
|
||||
*/
|
||||
|
||||
public List<SysDictType> selectDictTypeList (SysDictType dictType);
|
||||
|
||||
/**
|
||||
|
|
|
@ -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<SysUser> {
|
|||
*
|
||||
* @return 用户对象信息
|
||||
*/
|
||||
public SysUser selectUserByUserName (String userName);
|
||||
public SysUser selectUserByUserName (Firm firm);
|
||||
|
||||
/**
|
||||
* 通过用户ID查询用户
|
||||
|
|
|
@ -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<SysUserMapper, SysUser> 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<SysUserMapper, SysUser> 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<SysUserMapper, SysUser> 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<SysRole> sysRoles = new ArrayList<>();
|
||||
sysRoles.add(sysRole);
|
||||
sysUser.setRoles(sysRoles);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue