Commit 101727f9 authored by tianhongyang's avatar tianhongyang

Merge branch 'V20230915' of http://192.168.60.201/root/dsk-operate-sys into V20230915

parents f32d1c0f d0c2615b
...@@ -12,8 +12,11 @@ import cn.hutool.core.util.ReUtil; ...@@ -12,8 +12,11 @@ import cn.hutool.core.util.ReUtil;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.constant.GlobalConstants; import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.tenant.helper.TenantHelper; import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.redis.RedisUtils; import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.jsk.util.IpUtil;
import com.dsk.system.domain.SysMenu; import com.dsk.system.domain.SysMenu;
import com.dsk.system.domain.SysUser; import com.dsk.system.domain.SysUser;
import com.dsk.common.core.domain.model.EmailLoginBody; import com.dsk.common.core.domain.model.EmailLoginBody;
...@@ -74,13 +77,12 @@ public class SysLoginController { ...@@ -74,13 +77,12 @@ public class SysLoginController {
// return R.ok(ajax); // return R.ok(ajax);
String ipAddr = IpUtil.getIpAddr(request);
LoginVo loginVo=loginService.passwordLogin(loginBody); LoginVo loginVo = loginService.passwordLogin(loginBody, ipAddr);
return R.ok(loginVo); return R.ok(loginVo);
} }
// /** // /**
// * 发送短信验证码 // * 发送短信验证码
// * // *
...@@ -107,20 +109,18 @@ public class SysLoginController { ...@@ -107,20 +109,18 @@ public class SysLoginController {
@PostMapping("/smsLogin") @PostMapping("/smsLogin")
public R<LoginVo> smsLogin(@Validated @RequestBody SmsLoginBody smsLoginBody) { public R<LoginVo> smsLogin(@Validated @RequestBody SmsLoginBody smsLoginBody) {
// 生成令牌 // 生成令牌
LoginVo loginVo=loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode()); LoginVo loginVo = loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode());
return R.ok(loginVo); return R.ok(loginVo);
} }
/** /**
* 动态切换租户 * 动态切换租户
*
*/ */
@SaCheckLogin @SaCheckLogin
@PostMapping("/switch/tenant") @PostMapping("/switch/tenant")
public R<LoginVo> switchTenant(String tenantId) { public R<LoginVo> switchTenant(String tenantId) {
LoginVo loginVo=loginService.switchTenant(tenantId); LoginVo loginVo = loginService.switchTenant(tenantId);
return R.ok(loginVo); return R.ok(loginVo);
} }
...@@ -134,7 +134,7 @@ public class SysLoginController { ...@@ -134,7 +134,7 @@ public class SysLoginController {
@PostMapping("/user/tenants") @PostMapping("/user/tenants")
public R<List<SysTenantVo>> userTenants() { public R<List<SysTenantVo>> userTenants() {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
List<SysTenantVo> tenantList=loginService.tenantListByAccount(loginUser.getUserPhone()); List<SysTenantVo> tenantList = loginService.tenantListByAccount(loginUser.getUserPhone());
return R.ok(tenantList); return R.ok(tenantList);
} }
...@@ -146,12 +146,12 @@ public class SysLoginController { ...@@ -146,12 +146,12 @@ public class SysLoginController {
*/ */
@SaIgnore @SaIgnore
@PostMapping("/user/tenant/list") @PostMapping("/user/tenant/list")
public R<List<SysTenantVo>> userTenantList (String phone) { public R<List<SysTenantVo>> userTenantList(String phone) {
if(!ReUtil.isMatch(RegexPool.MOBILE, phone)) { if (!ReUtil.isMatch(RegexPool.MOBILE, phone)) {
return R.ok(new ArrayList<>()); return R.ok(new ArrayList<>());
} }
List<SysTenantVo> tenantList=loginService.tenantListByAccount(phone); List<SysTenantVo> tenantList = loginService.tenantListByAccount(phone);
if(CollectionUtil.isNotEmpty(tenantList)){ if (CollectionUtil.isNotEmpty(tenantList)) {
for (SysTenantVo sysTenantVo : tenantList) { for (SysTenantVo sysTenantVo : tenantList) {
sysTenantVo.setCompanyName(""); sysTenantVo.setCompanyName("");
} }
...@@ -161,21 +161,23 @@ public class SysLoginController { ...@@ -161,21 +161,23 @@ public class SysLoginController {
/** /**
* 获取当前用户默认租户 * 获取当前用户默认租户
*
* @return * @return
*/ */
@SaCheckLogin @SaCheckLogin
@PostMapping("/user/default/tenant") @PostMapping("/user/default/tenant")
public R<Map> userDefaultTenant() { public R<Map> userDefaultTenant() {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
Assert.notNull(loginUser,"用户信息不存在!"); Assert.notNull(loginUser, "用户信息不存在!");
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUser.getUserPhone(); String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUser.getUserPhone();
String defaultTenant = RedisUtils.getCacheObject(defaultTenantKey); String defaultTenant = RedisUtils.getCacheObject(defaultTenantKey);
return R.ok(MapUtil.of("tenantId",defaultTenant)); return R.ok(MapUtil.of("tenantId", defaultTenant));
} }
/** /**
* 获取当前用户默认租户 * 获取当前用户默认租户
*
* @return * @return
*/ */
@SaIgnore @SaIgnore
...@@ -185,7 +187,7 @@ public class SysLoginController { ...@@ -185,7 +187,7 @@ public class SysLoginController {
// Assert.notNull(loginUser,"用户信息不存在!"); // Assert.notNull(loginUser,"用户信息不存在!");
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + phone; String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + phone;
String defaultTenant = RedisUtils.getCacheObject(defaultTenantKey); String defaultTenant = RedisUtils.getCacheObject(defaultTenantKey);
return R.ok(MapUtil.of("tenantId",defaultTenant)); return R.ok(MapUtil.of("tenantId", defaultTenant));
} }
/** /**
...@@ -235,8 +237,13 @@ public class SysLoginController { ...@@ -235,8 +237,13 @@ public class SysLoginController {
* @return 用户信息 * @return 用户信息
*/ */
@GetMapping("getInfo") @GetMapping("getInfo")
public R<Map<String, Object>> getInfo() { public R<Map<String, Object>> getInfo(HttpServletRequest request) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
//校验当前发请求的IP与登录账号的IP是否相同
String loginUserIpaddr = loginUser.getIpaddr();
if (StringUtils.isNotBlank(loginUserIpaddr) && !Objects.equals(IpUtil.getIpAddr(request), loginUserIpaddr)) {
throw new ServiceException("该账号已在其他地方登录,请求失败!", 401);
}
SysUser user = userService.selectUserById(loginUser.getUserId()); SysUser user = userService.selectUserById(loginUser.getUserId());
Map<String, Object> ajax = new HashMap<>(); Map<String, Object> ajax = new HashMap<>();
ajax.put("user", user); ajax.put("user", user);
......
...@@ -108,7 +108,7 @@ spring: ...@@ -108,7 +108,7 @@ spring:
# 端口,默认为6379 # 端口,默认为6379
port: 6379 port: 6379
# 数据库索引 # 数据库索引
database: 6 database: 13
# 密码 # 密码
password: Xi8$r*@d7zn5FaP2 password: Xi8$r*@d7zn5FaP2
# 密码(如没有密码请注释掉) # 密码(如没有密码请注释掉)
......
...@@ -105,7 +105,7 @@ spring: ...@@ -105,7 +105,7 @@ spring:
# 端口,默认为6379 # 端口,默认为6379
port: 6379 port: 6379
# 数据库索引 # 数据库索引
database: 10 database: 13
# 密码 # 密码
password: zfTFIJjaN#6xB83r password: zfTFIJjaN#6xB83r
# 密码(如没有密码请注释掉) # 密码(如没有密码请注释掉)
......
...@@ -41,7 +41,6 @@ import java.util.Map; ...@@ -41,7 +41,6 @@ import java.util.Map;
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/api/goview/project") @RequestMapping("/api/goview/project")
public class GoViewProjectAPIController extends BaseController { public class GoViewProjectAPIController extends BaseController {
private final GoviewProjectDataMapper projectDataMapper; private final GoviewProjectDataMapper projectDataMapper;
private final GoviewProjectMapper projectMapper; private final GoviewProjectMapper projectMapper;
...@@ -59,6 +58,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -59,6 +58,7 @@ public class GoViewProjectAPIController extends BaseController {
/** /**
* 新增保存 * 新增保存
*
* @param * @param
* @return * @return
*/ */
...@@ -70,6 +70,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -70,6 +70,7 @@ public class GoViewProjectAPIController extends BaseController {
/** /**
* 项目表删除 * 项目表删除
*
* @param ids * @param ids
* @return * @return
*/ */
...@@ -101,6 +102,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -101,6 +102,7 @@ public class GoViewProjectAPIController extends BaseController {
/** /**
* 获取项目存储数据 * 获取项目存储数据
*
* @param id 项目id * @param id 项目id
* @param mmap * @param mmap
* @return * @return
...@@ -125,7 +127,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -125,7 +127,7 @@ public class GoViewProjectAPIController extends BaseController {
} }
@PostMapping("/save/data") @PostMapping("/save/data")
public AjaxResult saveData(GoviewProjectData data) { public AjaxResult saveData(@RequestBody GoviewProjectData data) {
boolean exists = projectDataMapper boolean exists = projectDataMapper
.exists(Wrappers.<GoviewProjectData>lambdaQuery().eq(GoviewProjectData::getProjectId, data.getProjectId())); .exists(Wrappers.<GoviewProjectData>lambdaQuery().eq(GoviewProjectData::getProjectId, data.getProjectId()));
...@@ -142,6 +144,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -142,6 +144,7 @@ public class GoViewProjectAPIController extends BaseController {
/** /**
* 模拟请求 * 模拟请求
*
* @return * @return
*/ */
@PostMapping("/magicHttp") @PostMapping("/magicHttp")
...@@ -151,6 +154,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -151,6 +154,7 @@ public class GoViewProjectAPIController extends BaseController {
/** /**
* 上传文件 * 上传文件
*
* @param file 文件流对象 * @param file 文件流对象
* @return * @return
* @throws Exception * @throws Exception
...@@ -167,8 +171,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -167,8 +171,7 @@ public class GoViewProjectAPIController extends BaseController {
if (StrUtil.isNotBlank(goviewProperties.getHost())) { if (StrUtil.isNotBlank(goviewProperties.getHost())) {
url = goviewProperties.getHost() + goviewProperties.getGatewayPrefix() + "/api/project/get-file/" url = goviewProperties.getHost() + goviewProperties.getGatewayPrefix() + "/api/project/get-file/"
+ object.getOriginalFilename(); + object.getOriginalFilename();
} } else {
else {
url = goviewProperties.getGatewayPrefix() + "/api/project/get-file/" + object.getOriginalFilename(); url = goviewProperties.getGatewayPrefix() + "/api/project/get-file/" + object.getOriginalFilename();
} }
map.put("link", url); map.put("link", url);
...@@ -179,6 +182,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -179,6 +182,7 @@ public class GoViewProjectAPIController extends BaseController {
/** /**
* 文件获取 * 文件获取
*
* @param fileName 文件名 * @param fileName 文件名
*/ */
@GetMapping("/get-file/{fileName}") @GetMapping("/get-file/{fileName}")
...@@ -191,8 +195,7 @@ public class GoViewProjectAPIController extends BaseController { ...@@ -191,8 +195,7 @@ public class GoViewProjectAPIController extends BaseController {
return new ResponseEntity<>( return new ResponseEntity<>(
FileCopyUtils.copyToByteArray(new File(goviewProperties.getImgPath() + fileName)), headers, FileCopyUtils.copyToByteArray(new File(goviewProperties.getImgPath() + fileName)), headers,
HttpStatus.OK); HttpStatus.OK);
} } catch (IOException e) {
catch (IOException e) {
log.warn(e.getLocalizedMessage()); log.warn(e.getLocalizedMessage());
} }
return null; return null;
......
...@@ -83,9 +83,10 @@ public class SysLoginService { ...@@ -83,9 +83,10 @@ public class SysLoginService {
* 登录验证 * 登录验证
* *
* @param loginBody 唯一标识 * @param loginBody 唯一标识
* @param ipAddr IP地址
* @return 结果 * @return 结果
*/ */
public LoginVo passwordLogin(LoginBody loginBody) { public LoginVo passwordLogin(LoginBody loginBody, String ipAddr) {
String tenantId = loginBody.getTenantId(); String tenantId = loginBody.getTenantId();
String username = loginBody.getUsername(); String username = loginBody.getUsername();
String password = SaBase64Util.decode(loginBody.getPassword()); String password = SaBase64Util.decode(loginBody.getPassword());
...@@ -96,12 +97,12 @@ public class SysLoginService { ...@@ -96,12 +97,12 @@ public class SysLoginService {
validateCaptcha(username, code, uuid); validateCaptcha(username, code, uuid);
} }
if(ReUtil.isMatch(RegexPool.MOBILE, username)) { if (ReUtil.isMatch(RegexPool.MOBILE, username)) {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username); String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username); log.info("登录用户:{} 获取缓存默认租户:" + tenantId, username);
if(StrUtil.isEmpty(tenantId)&&StrUtil.isNotBlank(defaultTenantId)){ if (StrUtil.isEmpty(tenantId) && StrUtil.isNotBlank(defaultTenantId)) {
defaultTenantId= checkDefaultTenant(defaultTenantId,username); defaultTenantId = checkDefaultTenant(defaultTenantId, username);
tenantId=defaultTenantId; tenantId = defaultTenantId;
} }
} }
...@@ -119,7 +120,7 @@ public class SysLoginService { ...@@ -119,7 +120,7 @@ public class SysLoginService {
throw new UserException("user.not.exists", username); throw new UserException("user.not.exists", username);
} }
tenantId = sysUser.getTenantId(); tenantId = sysUser.getTenantId();
}else { } else {
SysUser sysUser = sysUsers.get(0); SysUser sysUser = sysUsers.get(0);
tenantId = sysUser.getTenantId(); tenantId = sysUser.getTenantId();
} }
...@@ -143,6 +144,7 @@ public class SysLoginService { ...@@ -143,6 +144,7 @@ public class SysLoginService {
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
LoginUser loginUser = buildLoginUser(user); LoginUser loginUser = buildLoginUser(user);
// 生成token // 生成token
loginUser.setIpaddr(ipAddr);
LoginHelper.loginByDevice(loginUser, DeviceType.PC); LoginHelper.loginByDevice(loginUser, DeviceType.PC);
recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
...@@ -189,13 +191,13 @@ public class SysLoginService { ...@@ -189,13 +191,13 @@ public class SysLoginService {
} }
public LoginVo smsLogin(String username, String smsCode) { public LoginVo smsLogin(String username, String smsCode) {
String tenantId=null; String tenantId = null;
if(ReUtil.isMatch(RegexPool.MOBILE, username)) { if (ReUtil.isMatch(RegexPool.MOBILE, username)) {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username); String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username); log.info("登录用户:{} 获取缓存默认租户:" + tenantId, username);
if(StrUtil.isNotBlank(defaultTenantId)){ if (StrUtil.isNotBlank(defaultTenantId)) {
defaultTenantId= checkDefaultTenant(defaultTenantId,username); defaultTenantId = checkDefaultTenant(defaultTenantId, username);
tenantId=defaultTenantId; tenantId = defaultTenantId;
} }
} }
...@@ -213,7 +215,7 @@ public class SysLoginService { ...@@ -213,7 +215,7 @@ public class SysLoginService {
throw new UserException("user.not.exists", username); throw new UserException("user.not.exists", username);
} }
tenantId = sysUser.getTenantId(); tenantId = sysUser.getTenantId();
}else { } else {
SysUser sysUser = sysUsers.get(0); SysUser sysUser = sysUsers.get(0);
tenantId = sysUser.getTenantId(); tenantId = sysUser.getTenantId();
} }
...@@ -516,7 +518,7 @@ public class SysLoginService { ...@@ -516,7 +518,7 @@ public class SysLoginService {
} }
public String checkDefaultTenant(String tenantId,String phoneNumber) { public String checkDefaultTenant(String tenantId, String phoneNumber) {
if (!TenantHelper.isEnable()) { if (!TenantHelper.isEnable()) {
return null; return null;
} }
...@@ -557,7 +559,7 @@ public class SysLoginService { ...@@ -557,7 +559,7 @@ public class SysLoginService {
if (ReUtil.isMatch(RegexPool.MOBILE, username)) { if (ReUtil.isMatch(RegexPool.MOBILE, username)) {
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<SysUser>() LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserName, SysUser::getStatus, SysUser::getTenantId,SysUser::getDelFlag) .select(SysUser::getUserName, SysUser::getStatus, SysUser::getTenantId, SysUser::getDelFlag)
.eq(SysUser::getPhonenumber, username) .eq(SysUser::getPhonenumber, username)
.orderByDesc(SysUser::getUserId); .orderByDesc(SysUser::getUserId);
// sysUsers = userMapper.selectUserByTenantPhone(username); // sysUsers = userMapper.selectUserByTenantPhone(username);
...@@ -582,10 +584,10 @@ public class SysLoginService { ...@@ -582,10 +584,10 @@ public class SysLoginService {
Assert.notNull(userId, "企业切换失败!"); Assert.notNull(userId, "企业切换失败!");
// 如果 切换租户和当前登录租户一致,仅保存默认租户 // 如果 切换租户和当前登录租户一致,仅保存默认租户
LoginUser loginUserVo = LoginHelper.getLoginUser(); LoginUser loginUserVo = LoginHelper.getLoginUser();
if(tenantId.equals(loginUserVo.getTenantId())){ if (tenantId.equals(loginUserVo.getTenantId())) {
//保存当前账号的默认租户 //保存当前账号的默认租户
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUserVo.getUserPhone(); String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUserVo.getUserPhone();
RedisUtils.setCacheObject(defaultTenantKey,tenantId, Duration.ofDays(90)); RedisUtils.setCacheObject(defaultTenantKey, tenantId, Duration.ofDays(90));
LoginVo loginVo = new LoginVo(); LoginVo loginVo = new LoginVo();
loginVo.setTenantId(TenantHelper.getTenantId()); loginVo.setTenantId(TenantHelper.getTenantId());
loginVo.setAccessToken(StpUtil.getTokenValue()); loginVo.setAccessToken(StpUtil.getTokenValue());
...@@ -618,10 +620,10 @@ public class SysLoginService { ...@@ -618,10 +620,10 @@ public class SysLoginService {
LoginHelper.loginByDevice(loginUser, DeviceType.PC); LoginHelper.loginByDevice(loginUser, DeviceType.PC);
log.info("当前租户由"+sysUser.getTenantId()+"切换为"+tenantId); log.info("当前租户由" + sysUser.getTenantId() + "切换为" + tenantId);
//保存当前账号的默认租户 //保存当前账号的默认租户
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUser.getUserPhone(); String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUser.getUserPhone();
RedisUtils.setCacheObject(defaultTenantKey,tenantId, Duration.ofDays(90)); RedisUtils.setCacheObject(defaultTenantKey, tenantId, Duration.ofDays(90));
recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
recordLoginInfo(user.getUserId(), username); recordLoginInfo(user.getUserId(), username);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment