refactor(system): 重构系统模块代码
- 重命名接口和服务类,统一命名规范 - 优化代码结构,提高可维护性 - 异步处理用户JWT和在线用户相关操作 - 更新MyBatis Plus相关类名和方法名
This commit is contained in:
@@ -16,7 +16,7 @@ const getters = {
|
||||
fileUploadApi: state => state.api.fileUploadApi,
|
||||
updateAvatarApi: state => state.api.updateAvatarApi,
|
||||
qiNiuUploadApi: state => state.api.qiNiuUploadApi,
|
||||
sqlApi: state => state.api.sqlApi,
|
||||
druidSqlApi: state => state.api.druidSqlApi,
|
||||
swaggerApi: state => state.api.swaggerApi,
|
||||
websocketApi: state => state.api.websocketApi,
|
||||
sidebarRouters: state => state.permission.sidebarRouters
|
||||
|
||||
@@ -9,7 +9,7 @@ const api = {
|
||||
// 上传文件到七牛云
|
||||
qiNiuUploadApi: baseUrl + '/api/qiNiuContent',
|
||||
// Sql 监控
|
||||
sqlApi: baseUrl + '/druid/index.html',
|
||||
druidSqlApi: baseUrl + '/druid/index.html',
|
||||
// websocket
|
||||
websocketApi: baseUrl + '/webSocket/{sid}',
|
||||
// swagger
|
||||
|
||||
+3
-3
@@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<elFrame :src="sqlApi" />
|
||||
<elFrame :src="druidSqlApi" />
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import elFrame from '@/components/Iframe/index'
|
||||
export default {
|
||||
name: 'Sql',
|
||||
name: 'DruidSqlConsole',
|
||||
components: { elFrame },
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'sqlApi'
|
||||
'druidSqlApi'
|
||||
])
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -24,8 +24,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Config from './config'
|
||||
import Send from './send'
|
||||
import Config from './config.vue'
|
||||
import Send from './send.vue'
|
||||
export default {
|
||||
name: 'Email',
|
||||
components: { Config, Send },
|
||||
+2
-2
@@ -10,8 +10,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import QiNiu from './qiniu/index'
|
||||
import Local from './local/index'
|
||||
import QiNiu from './qiniu/index.vue'
|
||||
import Local from './local/index.vue'
|
||||
export default {
|
||||
name: 'Storage',
|
||||
components: { QiNiu, Local },
|
||||
+1
-1
@@ -69,7 +69,7 @@
|
||||
import crudQiNiu from '@/api/tools/qiniu'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import eForm from './form'
|
||||
import eForm from './form.vue'
|
||||
import CRUD, { presenter, header, crud } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
@@ -57,7 +57,7 @@
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input v-model="form.username" @keydown.native="keydown($event)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" prop="phone">
|
||||
<el-form-item label="手机号" prop="phone">
|
||||
<el-input v-model.number="form.phone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="昵称" prop="nickName">
|
||||
@@ -138,7 +138,7 @@
|
||||
<el-table-column :show-overflow-tooltip="true" prop="username" label="用户名" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="nickName" label="昵称" />
|
||||
<el-table-column prop="gender" label="性别" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="phone" width="100" label="电话" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="phone" width="100" label="手机号" />
|
||||
<el-table-column :show-overflow-tooltip="true" width="135" prop="email" label="邮箱" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="dept" label="部门">
|
||||
<template slot-scope="scope">
|
||||
|
||||
+4
-4
@@ -11,16 +11,16 @@ import lombok.Getter;
|
||||
public enum SystemCaptchaBizEnum {
|
||||
|
||||
/* 通过手机号码重置邮箱 */
|
||||
PHONE_RESET_EMAIL_CODE("10000", "phone_reset_email_code_", "email.ftl","通过手机号码重置邮箱"),
|
||||
PHONE_RESET_EMAIL_CODE("10000", "phone_reset_email_code_", "email.ftl", "通过手机号码重置邮箱"),
|
||||
|
||||
/* 通过旧邮箱重置邮箱 */
|
||||
EMAIL_RESET_EMAIL_CODE("10001", "email_reset_email_code_", "email.ftl","通过旧邮箱重置邮箱"),
|
||||
EMAIL_RESET_EMAIL_CODE("10001", "email_reset_email_code_", "email.ftl", "通过旧邮箱重置邮箱"),
|
||||
|
||||
/* 通过手机号码重置密码 */
|
||||
PHONE_RESET_PWD_CODE("10002", "phone_reset_pwd_code_", "email.ftl","通过手机号码重置密码"),
|
||||
PHONE_RESET_PWD_CODE("10002", "phone_reset_pwd_code_", "email.ftl", "通过手机号码重置密码"),
|
||||
|
||||
/* 通过邮箱重置密码 */
|
||||
EMAIL_RESET_PWD_CODE("10003", "email_reset_pwd_code_", "email.ftl","通过邮箱重置密码");
|
||||
EMAIL_RESET_PWD_CODE("10003", "email_reset_pwd_code_", "email.ftl", "通过邮箱重置密码");
|
||||
|
||||
/**
|
||||
* 业务编码
|
||||
|
||||
+5
-5
@@ -4,16 +4,16 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.odboy.annotation.AnonymousPostMapping;
|
||||
import cn.odboy.constant.SystemConst;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineServiceImpl;
|
||||
import cn.odboy.core.constant.LoginCodeEnum;
|
||||
import cn.odboy.core.dal.redis.system.SystemRedisKey;
|
||||
import cn.odboy.core.dal.model.system.SystemUserInfoVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserLoginArgs;
|
||||
import cn.odboy.core.dal.redis.system.SystemRedisKey;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineDAO;
|
||||
import cn.odboy.core.framework.permission.core.SecurityHelper;
|
||||
import cn.odboy.core.framework.permission.core.handler.TokenProvider;
|
||||
import cn.odboy.core.framework.permission.core.handler.UserDetailsHandler;
|
||||
import cn.odboy.core.framework.properties.AppProperties;
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserLoginArgs;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.RsaEncryptUtil;
|
||||
@@ -50,7 +50,7 @@ import java.util.concurrent.TimeUnit;
|
||||
@Api(tags = "系统:系统授权接口")
|
||||
public class SystemAuthController {
|
||||
private final RedisHelper redisHelper;
|
||||
private final SystemUserOnlineServiceImpl onlineUserService;
|
||||
private final SystemUserOnlineDAO onlineUserService;
|
||||
private final TokenProvider tokenProvider;
|
||||
private final AppProperties properties;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
+5
-2
@@ -2,9 +2,9 @@ package cn.odboy.core.controller.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDeptTb;
|
||||
import cn.odboy.core.service.system.SystemDeptService;
|
||||
import cn.odboy.core.dal.model.system.CreateSystemDeptArgs;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemDeptArgs;
|
||||
import cn.odboy.core.service.system.SystemDeptService;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -16,7 +16,10 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
|
||||
+1
-1
@@ -2,9 +2,9 @@ package cn.odboy.core.controller.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDictTb;
|
||||
import cn.odboy.core.service.system.SystemDictService;
|
||||
import cn.odboy.core.dal.model.system.CreateSystemDictArgs;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemDictArgs;
|
||||
import cn.odboy.core.service.system.SystemDictService;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
+1
-1
@@ -2,9 +2,9 @@ package cn.odboy.core.controller.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDictDetailTb;
|
||||
import cn.odboy.core.service.system.SystemDictDetailService;
|
||||
import cn.odboy.core.dal.model.system.CreateSystemDictDetailArgs;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemDictDetailArgs;
|
||||
import cn.odboy.core.service.system.SystemDictDetailService;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
package cn.odboy.core.controller.system;
|
||||
|
||||
import cn.odboy.core.dal.dataobject.system.SystemEmailConfigTb;
|
||||
import cn.odboy.core.service.system.SystemEmailService;
|
||||
import cn.odboy.core.dal.model.system.SendSystemEmailArgs;
|
||||
import cn.odboy.core.service.system.SystemEmailService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
+1
-1
@@ -2,9 +2,9 @@ package cn.odboy.core.controller.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemJobTb;
|
||||
import cn.odboy.core.service.system.SystemJobService;
|
||||
import cn.odboy.core.dal.model.system.CreateSystemJobArgs;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemJobArgs;
|
||||
import cn.odboy.core.service.system.SystemJobService;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
+1
-1
@@ -3,8 +3,8 @@ package cn.odboy.core.controller.system;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.constant.FileTypeEnum;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemLocalStorageTb;
|
||||
import cn.odboy.core.service.system.SystemLocalStorageService;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemLocalStorageArgs;
|
||||
import cn.odboy.core.service.system.SystemLocalStorageService;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
+1
-1
@@ -3,10 +3,10 @@ package cn.odboy.core.controller.system;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemMenuTb;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemMenuArgs;
|
||||
import cn.odboy.core.dal.model.system.SystemMenuVo;
|
||||
import cn.odboy.core.framework.permission.core.SecurityHelper;
|
||||
import cn.odboy.core.service.system.SystemMenuService;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemMenuArgs;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
|
||||
+1
@@ -10,6 +10,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
|
||||
+5
-7
@@ -1,9 +1,8 @@
|
||||
package cn.odboy.core.controller.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineApi;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineService;
|
||||
import cn.odboy.core.dal.model.system.SystemUserOnlineVo;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineDAO;
|
||||
import cn.odboy.util.DesEncryptUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -25,21 +24,20 @@ import java.util.Set;
|
||||
@RequestMapping("/auth/online")
|
||||
@Api(tags = "系统:在线用户管理")
|
||||
public class SystemOnlineController {
|
||||
private final SystemUserOnlineApi systemUserOnlineApi;
|
||||
private final SystemUserOnlineService systemUserOnlineService;
|
||||
private final SystemUserOnlineDAO systemUserOnlineDAO;
|
||||
|
||||
@ApiOperation("查询在线用户")
|
||||
@GetMapping
|
||||
@PreAuthorize("@el.check()")
|
||||
public ResponseEntity<CsResultVo<List<SystemUserOnlineVo>>> queryOnlineUser(String username, Pageable pageable) {
|
||||
return new ResponseEntity<>(systemUserOnlineApi.queryUserOnlineModelPage(username, pageable), HttpStatus.OK);
|
||||
return new ResponseEntity<>(systemUserOnlineDAO.queryUserOnlineModelPage(username, pageable), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@ApiOperation("导出数据")
|
||||
@GetMapping(value = "/download")
|
||||
@PreAuthorize("@el.check()")
|
||||
public void exportOnlineUser(HttpServletResponse response, String username) throws IOException {
|
||||
systemUserOnlineService.downloadUserOnlineModelExcel(systemUserOnlineApi.queryUserOnlineModelListByUsername(username), response);
|
||||
systemUserOnlineDAO.downloadUserOnlineModelExcel(systemUserOnlineDAO.queryUserOnlineModelListByUsername(username), response);
|
||||
}
|
||||
|
||||
@ApiOperation("踢出用户")
|
||||
@@ -49,7 +47,7 @@ public class SystemOnlineController {
|
||||
for (String token : keys) {
|
||||
// 解密Key
|
||||
token = DesEncryptUtil.desDecrypt(token);
|
||||
systemUserOnlineService.logoutByToken(token);
|
||||
systemUserOnlineDAO.logoutByToken(token);
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,9 +3,9 @@ package cn.odboy.core.controller.system;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQiniuConfigTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQiniuContentTb;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemQiniuArgs;
|
||||
import cn.odboy.core.service.system.SystemQiniuConfigService;
|
||||
import cn.odboy.core.service.system.SystemQiniuContentService;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemQiniuArgs;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
+1
-1
@@ -4,9 +4,9 @@ import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.context.SpringBeanHolder;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQuartzJobTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQuartzLogTb;
|
||||
import cn.odboy.core.service.system.SystemQuartzJobService;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemQuartzJobArgs;
|
||||
import cn.odboy.core.dal.model.system.UpdateSystemQuartzJobArgs;
|
||||
import cn.odboy.core.service.system.SystemQuartzJobService;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
|
||||
+2
-5
@@ -16,11 +16,8 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
|
||||
+2
-4
@@ -3,17 +3,15 @@ package cn.odboy.core.controller.system;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.base.CsSelectOptionItemVo;
|
||||
import cn.odboy.core.service.system.*;
|
||||
import cn.odboy.core.service.system.SystemDataService;
|
||||
import cn.odboy.core.constant.system.SystemCaptchaBizEnum;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDeptTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemRoleTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemUserTb;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemUserArgs;
|
||||
import cn.odboy.core.dal.model.system.UpdateSystemUserPasswordArgs;
|
||||
import cn.odboy.core.framework.permission.core.SecurityHelper;
|
||||
import cn.odboy.core.framework.properties.AppProperties;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemUserArgs;
|
||||
import cn.odboy.core.service.system.SystemDeptService;
|
||||
import cn.odboy.core.service.system.*;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import cn.odboy.util.RsaEncryptUtil;
|
||||
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
|
||||
public interface SystemUserJwtApi {
|
||||
/**
|
||||
* 返回用户缓存
|
||||
*
|
||||
* @param username 用户名
|
||||
* @return UserJwtVo
|
||||
*/
|
||||
SystemUserJwtVo queryUserJwtModelByUsername(String username);
|
||||
}
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.StringUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SystemUserJwtApiImpl implements SystemUserJwtApi {
|
||||
@Resource
|
||||
private RedisHelper redisHelper;
|
||||
|
||||
@Override
|
||||
public SystemUserJwtVo queryUserJwtModelByUsername(String username) {
|
||||
// 转小写
|
||||
username = StringUtil.lowerCase(username);
|
||||
if (StringUtil.isNotEmpty(username)) {
|
||||
// 获取数据
|
||||
return redisHelper.get(SystemRedisKey.USER_INFO + username, SystemUserJwtVo.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+35
-5
@@ -4,19 +4,26 @@ import cn.hutool.core.util.RandomUtil;
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.StringUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 用户缓存管理
|
||||
*/
|
||||
@Service
|
||||
public class SystemUserJwtServiceImpl implements SystemUserJwtService {
|
||||
@Component
|
||||
public class SystemUserJwtDAO {
|
||||
@Resource
|
||||
private RedisHelper redisHelper;
|
||||
|
||||
@Override
|
||||
/**
|
||||
* 添加缓存到Redis
|
||||
*
|
||||
* @param userName 用户名
|
||||
*/
|
||||
@Async
|
||||
|
||||
public void saveUserJwtModelByUserName(String userName, SystemUserJwtVo user) {
|
||||
// 转小写
|
||||
userName = StringUtil.lowerCase(userName);
|
||||
@@ -27,8 +34,14 @@ public class SystemUserJwtServiceImpl implements SystemUserJwtService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理用户缓存信息
|
||||
* 用户信息变更时
|
||||
*
|
||||
* @param userName 用户名
|
||||
*/
|
||||
@Async
|
||||
|
||||
@Override
|
||||
public void cleanUserJwtModelCacheByUsername(String userName) {
|
||||
// 转小写
|
||||
userName = StringUtil.lowerCase(userName);
|
||||
@@ -37,4 +50,21 @@ public class SystemUserJwtServiceImpl implements SystemUserJwtService {
|
||||
redisHelper.del(SystemRedisKey.USER_INFO + userName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回用户缓存
|
||||
*
|
||||
* @param username 用户名
|
||||
* @return UserJwtVo
|
||||
*/
|
||||
|
||||
public SystemUserJwtVo queryUserJwtModelByUsername(String username) {
|
||||
// 转小写
|
||||
username = StringUtil.lowerCase(username);
|
||||
if (StringUtil.isNotEmpty(username)) {
|
||||
// 获取数据
|
||||
return redisHelper.get(SystemRedisKey.USER_INFO + username, SystemUserJwtVo.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
||||
public interface SystemUserJwtService {
|
||||
/**
|
||||
* 添加缓存到Redis
|
||||
*
|
||||
* @param userName 用户名
|
||||
*/
|
||||
@Async
|
||||
void saveUserJwtModelByUserName(String userName, SystemUserJwtVo user);
|
||||
|
||||
/**
|
||||
* 清理用户缓存信息
|
||||
* 用户信息变更时
|
||||
*
|
||||
* @param userName 用户名
|
||||
*/
|
||||
@Async
|
||||
void cleanUserJwtModelCacheByUsername(String userName);
|
||||
}
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserOnlineVo;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SystemUserOnlineApi {
|
||||
|
||||
/**
|
||||
* 查询全部数据
|
||||
*
|
||||
* @param username /
|
||||
* @param pageable /
|
||||
* @return /
|
||||
*/
|
||||
CsResultVo<List<SystemUserOnlineVo>> queryUserOnlineModelPage(String username, Pageable pageable);
|
||||
|
||||
/**
|
||||
* 查询全部数据,不分页
|
||||
*
|
||||
* @param username /
|
||||
* @return /
|
||||
*/
|
||||
List<SystemUserOnlineVo> queryUserOnlineModelListByUsername(String username);
|
||||
|
||||
/**
|
||||
* 查询用户
|
||||
*
|
||||
* @param key /
|
||||
* @return /
|
||||
*/
|
||||
SystemUserOnlineVo queryUserOnlineModelByKey(String key);
|
||||
}
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserOnlineVo;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import cn.odboy.util.StringUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SystemUserOnlineApiImpl implements SystemUserOnlineApi {
|
||||
private final RedisHelper redisHelper;
|
||||
|
||||
@Override
|
||||
public CsResultVo<List<SystemUserOnlineVo>> queryUserOnlineModelPage(String username, Pageable pageable) {
|
||||
List<SystemUserOnlineVo> onlineUserList = queryUserOnlineModelListByUsername(username);
|
||||
List<SystemUserOnlineVo> paging = PageUtil.softPaging(pageable.getPageNumber(), pageable.getPageSize(), onlineUserList);
|
||||
return PageUtil.toPage(paging, onlineUserList.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SystemUserOnlineVo> queryUserOnlineModelListByUsername(String username) {
|
||||
String loginKey = SystemRedisKey.ONLINE_USER + (StringUtil.isBlank(username) ? "" : "*" + username);
|
||||
List<String> keys = redisHelper.scan(loginKey + "*");
|
||||
Collections.reverse(keys);
|
||||
List<SystemUserOnlineVo> onlineUserList = new ArrayList<>();
|
||||
for (String key : keys) {
|
||||
onlineUserList.add(redisHelper.get(key, SystemUserOnlineVo.class));
|
||||
}
|
||||
onlineUserList.sort((o1, o2) -> o2.getLoginTime().compareTo(o1.getLoginTime()));
|
||||
return onlineUserList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SystemUserOnlineVo queryUserOnlineModelByKey(String key) {
|
||||
return redisHelper.get(key, SystemUserOnlineVo.class);
|
||||
}
|
||||
}
|
||||
+76
-11
@@ -1,16 +1,15 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
import cn.odboy.core.framework.permission.core.handler.TokenProvider;
|
||||
import cn.odboy.core.framework.properties.AppProperties;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserOnlineVo;
|
||||
import cn.odboy.core.framework.permission.core.handler.TokenProvider;
|
||||
import cn.odboy.core.framework.properties.AppProperties;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.BrowserUtil;
|
||||
import cn.odboy.util.DesEncryptUtil;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import cn.odboy.util.IpUtil;
|
||||
import cn.odboy.util.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -22,12 +21,19 @@ import java.util.concurrent.TimeUnit;
|
||||
@Slf4j
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SystemUserOnlineServiceImpl implements SystemUserOnlineService {
|
||||
public class SystemUserOnlineDAO {
|
||||
private final AppProperties properties;
|
||||
private final TokenProvider tokenProvider;
|
||||
private final RedisHelper redisHelper;
|
||||
|
||||
@Override
|
||||
/**
|
||||
* 保存在线用户信息
|
||||
*
|
||||
* @param userJwtVo /
|
||||
* @param token /
|
||||
* @param request /
|
||||
*/
|
||||
|
||||
public void saveUserJwtModelByToken(SystemUserJwtVo userJwtVo, String token, HttpServletRequest request) {
|
||||
String dept = userJwtVo.getUser().getDept().getName();
|
||||
String ip = BrowserUtil.getIp(request);
|
||||
@@ -53,14 +59,25 @@ public class SystemUserOnlineServiceImpl implements SystemUserOnlineService {
|
||||
redisHelper.set(loginKey, userOnlineVo, properties.getJwt().getTokenValidityInSeconds(), TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*
|
||||
* @param token /
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void logoutByToken(String token) {
|
||||
String loginKey = tokenProvider.loginKey(token);
|
||||
redisHelper.del(loginKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* 导出
|
||||
*
|
||||
* @param all /
|
||||
* @param response /
|
||||
* @throws IOException /
|
||||
*/
|
||||
|
||||
public void downloadUserOnlineModelExcel(List<SystemUserOnlineVo> all, HttpServletResponse response) throws IOException {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (SystemUserOnlineVo user : all) {
|
||||
@@ -76,10 +93,58 @@ public class SystemUserOnlineServiceImpl implements SystemUserOnlineService {
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户名强退用户
|
||||
*
|
||||
* @param username /
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void kickOutByUsername(String username) {
|
||||
String loginKey = SystemRedisKey.ONLINE_USER + username + "*";
|
||||
redisHelper.scanDel(loginKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部数据
|
||||
*
|
||||
* @param username /
|
||||
* @param pageable /
|
||||
* @return /
|
||||
*/
|
||||
|
||||
public CsResultVo<List<SystemUserOnlineVo>> queryUserOnlineModelPage(String username, Pageable pageable) {
|
||||
List<SystemUserOnlineVo> onlineUserList = queryUserOnlineModelListByUsername(username);
|
||||
List<SystemUserOnlineVo> paging = PageUtil.softPaging(pageable.getPageNumber(), pageable.getPageSize(), onlineUserList);
|
||||
return PageUtil.toPage(paging, onlineUserList.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部数据,不分页
|
||||
*
|
||||
* @param username /
|
||||
* @return /
|
||||
*/
|
||||
|
||||
public List<SystemUserOnlineVo> queryUserOnlineModelListByUsername(String username) {
|
||||
String loginKey = SystemRedisKey.ONLINE_USER + (StringUtil.isBlank(username) ? "" : "*" + username);
|
||||
List<String> keys = redisHelper.scan(loginKey + "*");
|
||||
Collections.reverse(keys);
|
||||
List<SystemUserOnlineVo> onlineUserList = new ArrayList<>();
|
||||
for (String key : keys) {
|
||||
onlineUserList.add(redisHelper.get(key, SystemUserOnlineVo.class));
|
||||
}
|
||||
onlineUserList.sort((o1, o2) -> o2.getLoginTime().compareTo(o1.getLoginTime()));
|
||||
return onlineUserList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户
|
||||
*
|
||||
* @param key /
|
||||
* @return /
|
||||
*/
|
||||
|
||||
public SystemUserOnlineVo queryUserOnlineModelByKey(String key) {
|
||||
return redisHelper.get(key, SystemUserOnlineVo.class);
|
||||
}
|
||||
}
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
package cn.odboy.core.dal.redis.system;
|
||||
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserOnlineVo;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public interface SystemUserOnlineService {
|
||||
/**
|
||||
* 保存在线用户信息
|
||||
*
|
||||
* @param userJwtVo /
|
||||
* @param token /
|
||||
* @param request /
|
||||
*/
|
||||
void saveUserJwtModelByToken(SystemUserJwtVo userJwtVo, String token, HttpServletRequest request);
|
||||
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*
|
||||
* @param token /
|
||||
*/
|
||||
void logoutByToken(String token);
|
||||
|
||||
/**
|
||||
* 导出
|
||||
*
|
||||
* @param all /
|
||||
* @param response /
|
||||
* @throws IOException /
|
||||
*/
|
||||
void downloadUserOnlineModelExcel(List<SystemUserOnlineVo> all, HttpServletResponse response) throws IOException;
|
||||
|
||||
|
||||
/**
|
||||
* 根据用户名强退用户
|
||||
*
|
||||
* @param username /
|
||||
*/
|
||||
void kickOutByUsername(String username);
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@ package cn.odboy.core.framework.mybatisplus.config;
|
||||
/**
|
||||
* 动态查询 枚举
|
||||
*/
|
||||
public enum QueryTypeEnum {
|
||||
public enum CsMpQTypeEnum {
|
||||
/**
|
||||
* 相等
|
||||
*/
|
||||
+1
-1
@@ -21,7 +21,7 @@ public @interface CsMpQuery {
|
||||
/**
|
||||
* 查询方式
|
||||
*/
|
||||
QueryTypeEnum type() default QueryTypeEnum.EQUAL;
|
||||
CsMpQTypeEnum type() default CsMpQTypeEnum.EQUAL;
|
||||
|
||||
/**
|
||||
* 连接查询的属性名, 如User类中的dept
|
||||
|
||||
+7
-7
@@ -16,12 +16,12 @@ import java.util.List;
|
||||
*/
|
||||
public class CsMpAnyQUtil {
|
||||
public static <T> T selectOne(BaseMapper<T> baseMapper, Object queryParams) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
return baseMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
public static <T, M> M selectOne(BaseMapper<T> baseMapper, Object queryParams, Class<M> mapperClazz) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
T mapperTarget = baseMapper.selectOne(queryWrapper);
|
||||
if (mapperTarget == null) {
|
||||
return null;
|
||||
@@ -30,12 +30,12 @@ public class CsMpAnyQUtil {
|
||||
}
|
||||
|
||||
public static <T> List<T> selectList(BaseMapper<T> baseMapper, Object queryParams) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public static <T, M> List<M> selectList(BaseMapper<T> baseMapper, Object queryParams, Class<M> mapperClazz) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
List<T> mapperTarget = baseMapper.selectList(queryWrapper);
|
||||
if (mapperTarget == null) {
|
||||
return new ArrayList<>();
|
||||
@@ -44,17 +44,17 @@ public class CsMpAnyQUtil {
|
||||
}
|
||||
|
||||
public static <T> Long selectCount(BaseMapper<T> baseMapper, Object queryParams) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
|
||||
public static <T> Page<T> selectPage(BaseMapper<T> baseMapper, Page<T> page, Object queryParams) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
return baseMapper.selectPage(page, queryWrapper);
|
||||
}
|
||||
|
||||
public static <T, M> Page<M> selectPage(BaseMapper<T> baseMapper, Page<T> page, Object queryParams, Class<M> mapperClazz) {
|
||||
QueryWrapper<T> queryWrapper = CsMpSimpleQUtil.build(queryParams);
|
||||
QueryWrapper<T> queryWrapper = CsMpQUtil.build(queryParams);
|
||||
Page<T> tPage = baseMapper.selectPage(page, queryWrapper);
|
||||
Page<M> mapperTarget = new Page<>();
|
||||
mapperTarget.setRecords(BeanUtil.copyToList(tPage.getRecords(), mapperClazz));
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import java.util.stream.Collectors;
|
||||
* 查询条件创建工具
|
||||
*/
|
||||
@Slf4j
|
||||
public class CsMpSimpleQUtil {
|
||||
public class CsMpQUtil {
|
||||
public static <R, Q> QueryWrapper<R> build(Q query) {
|
||||
QueryWrapper<R> queryWrapper = new QueryWrapper<>();
|
||||
if (query == null) {
|
||||
+5
-5
@@ -18,7 +18,7 @@ package cn.odboy.core.framework.mybatisplus.core.interfaces;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.framework.mybatisplus.core.CsMpSimpleQUtil;
|
||||
import cn.odboy.core.framework.mybatisplus.core.CsMpQUtil;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -146,7 +146,7 @@ public class CsMpServiceImpl<M extends CsMpMapper<T>, T> extends ServiceImpl<M,
|
||||
* @param criteria 动态条件
|
||||
*/
|
||||
public <Q> List<T> queryClazzListByArgs(Q criteria) {
|
||||
QueryWrapper<T> predicate = CsMpSimpleQUtil.build(criteria);
|
||||
QueryWrapper<T> predicate = CsMpQUtil.build(criteria);
|
||||
return baseMapper.selectList(predicate);
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ public class CsMpServiceImpl<M extends CsMpMapper<T>, T> extends ServiceImpl<M,
|
||||
* @param targetClazz 目标类型
|
||||
*/
|
||||
public <G, Q> List<G> queryFeatureClazzListByArgs(Q criteria, Class<G> targetClazz) {
|
||||
QueryWrapper<T> predicate = CsMpSimpleQUtil.build(criteria);
|
||||
QueryWrapper<T> predicate = CsMpQUtil.build(criteria);
|
||||
List<T> data = baseMapper.selectList(predicate);
|
||||
return BeanUtil.copyToList(data, targetClazz);
|
||||
}
|
||||
@@ -217,13 +217,13 @@ public class CsMpServiceImpl<M extends CsMpMapper<T>, T> extends ServiceImpl<M,
|
||||
}
|
||||
|
||||
public <G, Q> CsResultVo<List<G>> queryFeatureClazzPageByArgs(Q criteria, IPage<T> pageable, Class<G> targetClazz) {
|
||||
QueryWrapper<T> wrapper = CsMpSimpleQUtil.build(criteria);
|
||||
QueryWrapper<T> wrapper = CsMpQUtil.build(criteria);
|
||||
IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper);
|
||||
return new CsResultVo<>(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal());
|
||||
}
|
||||
|
||||
public <Q> CsResultVo<List<T>> queryClazzPageByArgs(Q criteria, IPage<T> pageable) {
|
||||
QueryWrapper<T> wrapper = CsMpSimpleQUtil.build(criteria);
|
||||
QueryWrapper<T> wrapper = CsMpQUtil.build(criteria);
|
||||
IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper);
|
||||
return new CsResultVo<>(originPageData.getRecords(), originPageData.getTotal());
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
package cn.odboy.core.framework.permission.config;
|
||||
|
||||
import cn.odboy.constant.RequestMethodEnum;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineApi;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineDAO;
|
||||
import cn.odboy.core.framework.permission.core.handler.JwtAccessDeniedHandler;
|
||||
import cn.odboy.core.framework.permission.core.handler.JwtAuthenticationEntryPoint;
|
||||
import cn.odboy.core.framework.permission.core.handler.TokenProvider;
|
||||
@@ -34,7 +34,7 @@ public class SpringSecurityConfig {
|
||||
private final JwtAuthenticationEntryPoint authenticationErrorHandler;
|
||||
private final JwtAccessDeniedHandler jwtAccessDeniedHandler;
|
||||
private final ApplicationContext applicationContext;
|
||||
private final SystemUserOnlineApi systemUserOnlineApi;
|
||||
private final SystemUserOnlineDAO systemUserOnlineDAO;
|
||||
|
||||
@Bean
|
||||
public GrantedAuthorityDefaults grantedAuthorityDefaults() {
|
||||
@@ -112,6 +112,6 @@ public class SpringSecurityConfig {
|
||||
}
|
||||
|
||||
private TokenConfigurer securityConfigurerAdapter() {
|
||||
return new TokenConfigurer(tokenProvider, systemUserOnlineApi);
|
||||
return new TokenConfigurer(tokenProvider, systemUserOnlineDAO);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
package cn.odboy.core.framework.permission.config;
|
||||
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineApi;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineDAO;
|
||||
import cn.odboy.core.framework.permission.core.handler.TokenFilter;
|
||||
import cn.odboy.core.framework.permission.core.handler.TokenProvider;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -12,11 +12,11 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
|
||||
@RequiredArgsConstructor
|
||||
public class TokenConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {
|
||||
private final TokenProvider tokenProvider;
|
||||
private final SystemUserOnlineApi systemUserOnlineApi;
|
||||
private final SystemUserOnlineDAO systemUserOnlineDAO;
|
||||
|
||||
@Override
|
||||
public void configure(HttpSecurity http) {
|
||||
TokenFilter customFilter = new TokenFilter(tokenProvider, systemUserOnlineApi);
|
||||
TokenFilter customFilter = new TokenFilter(tokenProvider, systemUserOnlineDAO);
|
||||
http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -2,8 +2,8 @@ package cn.odboy.core.framework.permission.core.handler;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.odboy.constant.SystemConst;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineApi;
|
||||
import cn.odboy.core.dal.model.system.SystemUserOnlineVo;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineDAO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
@@ -20,14 +20,14 @@ import java.io.IOException;
|
||||
@Slf4j
|
||||
public class TokenFilter extends GenericFilterBean {
|
||||
private final TokenProvider tokenProvider;
|
||||
private final SystemUserOnlineApi systemUserOnlineApi;
|
||||
private final SystemUserOnlineDAO systemUserOnlineDAO;
|
||||
|
||||
/**
|
||||
* @param tokenProvider Token
|
||||
* @param systemUserOnlineApi 用户在线
|
||||
* @param systemUserOnlineDAO 用户在线
|
||||
*/
|
||||
public TokenFilter(TokenProvider tokenProvider, SystemUserOnlineApi systemUserOnlineApi) {
|
||||
this.systemUserOnlineApi = systemUserOnlineApi;
|
||||
public TokenFilter(TokenProvider tokenProvider, SystemUserOnlineDAO systemUserOnlineDAO) {
|
||||
this.systemUserOnlineDAO = systemUserOnlineDAO;
|
||||
this.tokenProvider = tokenProvider;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public class TokenFilter extends GenericFilterBean {
|
||||
if (StrUtil.isNotBlank(token)) {
|
||||
// 获取用户Token的Key
|
||||
String loginKey = tokenProvider.loginKey(token);
|
||||
SystemUserOnlineVo userOnlineVo = systemUserOnlineApi.queryUserOnlineModelByKey(loginKey);
|
||||
SystemUserOnlineVo userOnlineVo = systemUserOnlineDAO.queryUserOnlineModelByKey(loginKey);
|
||||
// 判断用户在线信息是否为空
|
||||
if (userOnlineVo != null) {
|
||||
// Token 续期判断
|
||||
|
||||
+5
-7
@@ -1,10 +1,9 @@
|
||||
package cn.odboy.core.framework.permission.core.handler;
|
||||
|
||||
import cn.odboy.core.dal.dataobject.system.SystemUserTb;
|
||||
import cn.odboy.core.dal.model.system.SystemRoleCodeVo;
|
||||
import cn.odboy.core.dal.model.system.SystemUserJwtVo;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserJwtApi;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserJwtService;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemUserTb;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserJwtDAO;
|
||||
import cn.odboy.core.service.system.SystemDataService;
|
||||
import cn.odboy.core.service.system.SystemRoleService;
|
||||
import cn.odboy.core.service.system.SystemUserService;
|
||||
@@ -23,12 +22,11 @@ public class UserDetailsHandler implements UserDetailsService {
|
||||
private final SystemRoleService systemRoleService;
|
||||
private final SystemUserService systemUserService;
|
||||
private final SystemDataService systemDataService;
|
||||
private final SystemUserJwtService systemUserJwtService;
|
||||
private final SystemUserJwtApi systemUserJwtApi;
|
||||
private final SystemUserJwtDAO systemUserJwtDAO;
|
||||
|
||||
@Override
|
||||
public SystemUserJwtVo loadUserByUsername(String username) {
|
||||
SystemUserJwtVo userJwtVo = systemUserJwtApi.queryUserJwtModelByUsername(username);
|
||||
SystemUserJwtVo userJwtVo = systemUserJwtDAO.queryUserJwtModelByUsername(username);
|
||||
if (userJwtVo == null) {
|
||||
SystemUserTb user = systemUserService.queryUserByUsername(username);
|
||||
if (user == null) {
|
||||
@@ -42,7 +40,7 @@ public class UserDetailsHandler implements UserDetailsService {
|
||||
// 初始化JwtUserDto
|
||||
userJwtVo = new SystemUserJwtVo(user, systemDataService.queryDeptIdListByArgs(user), authorities);
|
||||
// 添加缓存数据
|
||||
systemUserJwtService.saveUserJwtModelByUserName(username, userJwtVo);
|
||||
systemUserJwtDAO.saveUserJwtModelByUserName(username, userJwtVo);
|
||||
}
|
||||
}
|
||||
return userJwtVo;
|
||||
|
||||
+1
@@ -12,6 +12,7 @@ import java.awt.*;
|
||||
|
||||
/**
|
||||
* 验证码配置
|
||||
*
|
||||
* @author odboy
|
||||
*/
|
||||
@Getter
|
||||
|
||||
+1
@@ -5,6 +5,7 @@ import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 登录配置
|
||||
*
|
||||
* @author odboy
|
||||
*/
|
||||
@Getter
|
||||
|
||||
+3
-3
@@ -8,10 +8,10 @@ import cn.hutool.extra.template.TemplateUtil;
|
||||
import cn.odboy.context.SpringBeanHolder;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQuartzJobTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQuartzLogTb;
|
||||
import cn.odboy.core.dal.mysql.system.SystemQuartzLogMapper;
|
||||
import cn.odboy.core.service.system.SystemQuartzJobService;
|
||||
import cn.odboy.core.service.system.SystemEmailService;
|
||||
import cn.odboy.core.dal.model.system.SendSystemEmailArgs;
|
||||
import cn.odboy.core.dal.mysql.system.SystemQuartzLogMapper;
|
||||
import cn.odboy.core.service.system.SystemEmailService;
|
||||
import cn.odboy.core.service.system.SystemQuartzJobService;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
+2
-6
@@ -5,14 +5,10 @@ import cn.odboy.core.constant.system.SystemDataScopeEnum;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDeptTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemRoleTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemUserTb;
|
||||
import cn.odboy.core.dal.redis.system.SystemRedisKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 数据权限服务实现
|
||||
|
||||
+2
-1
@@ -42,6 +42,7 @@ public interface SystemDeptService extends IService<SystemDeptTb> {
|
||||
* @throws IOException /
|
||||
*/
|
||||
void downloadDeptExcel(List<SystemDeptTb> depts, HttpServletResponse response) throws IOException;
|
||||
|
||||
/**
|
||||
* 查询所有数据
|
||||
*
|
||||
@@ -120,7 +121,7 @@ public interface SystemDeptService extends IService<SystemDeptTb> {
|
||||
/**
|
||||
* 遍历所有部门和子部门
|
||||
*
|
||||
* @param ids /
|
||||
* @param ids /
|
||||
*/
|
||||
Set<SystemDeptTb> traverseDeptByIdWithPids(Set<Long> ids);
|
||||
}
|
||||
|
||||
+2
-7
@@ -21,16 +21,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
|
||||
+2
@@ -6,6 +6,7 @@ import cn.odboy.core.dal.model.system.CreateSystemDictDetailArgs;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemDictDetailArgs;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -31,6 +32,7 @@ public interface SystemDictDetailService extends IService<SystemDictDetailTb> {
|
||||
* @param id /
|
||||
*/
|
||||
void removeDictDetailById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
|
||||
+1
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
|
||||
+2
-4
@@ -3,14 +3,12 @@ package cn.odboy.core.service.system;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemDictArgs;
|
||||
import cn.odboy.core.dal.redis.system.SystemRedisKey;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDictDetailTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemDictTb;
|
||||
import cn.odboy.core.dal.model.system.CreateSystemDictArgs;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemDictArgs;
|
||||
import cn.odboy.core.dal.mysql.system.SystemDictDetailMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemDictMapper;
|
||||
import cn.odboy.core.dal.model.system.CreateSystemDictArgs;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
+1
@@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
@Service
|
||||
|
||||
+1
@@ -43,6 +43,7 @@ public interface SystemJobService extends IService<SystemJobTb> {
|
||||
* @throws IOException /
|
||||
*/
|
||||
void downloadJobExcel(List<SystemJobTb> jobs, HttpServletResponse response) throws IOException;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
|
||||
+4
-8
@@ -8,7 +8,6 @@ import cn.odboy.core.dal.model.system.QuerySystemJobArgs;
|
||||
import cn.odboy.core.dal.mysql.system.SystemJobMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemUserMapper;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.exception.EntityExistException;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -16,13 +15,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -35,7 +31,7 @@ public class SystemJobServiceImpl extends ServiceImpl<SystemJobMapper, SystemJob
|
||||
public void saveJob(CreateSystemJobArgs resources) {
|
||||
SystemJobTb job = systemJobMapper.getJobByName(resources.getName());
|
||||
if (job != null) {
|
||||
throw new EntityExistException(SystemJobTb.class, "name", resources.getName());
|
||||
throw new BadRequestException("职位名称已存在");
|
||||
}
|
||||
save(BeanUtil.copyProperties(resources, SystemJobTb.class));
|
||||
}
|
||||
@@ -46,7 +42,7 @@ public class SystemJobServiceImpl extends ServiceImpl<SystemJobMapper, SystemJob
|
||||
SystemJobTb job = getById(resources.getId());
|
||||
SystemJobTb old = systemJobMapper.getJobByName(resources.getName());
|
||||
if (old != null && !old.getId().equals(resources.getId())) {
|
||||
throw new EntityExistException(SystemJobTb.class, "name", resources.getName());
|
||||
throw new BadRequestException("职位名称已存在");
|
||||
}
|
||||
resources.setId(job.getId());
|
||||
saveOrUpdate(resources);
|
||||
|
||||
+9
-12
@@ -13,7 +13,6 @@ import cn.odboy.core.dal.mysql.system.SystemMenuMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemRoleMenuMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemUserMapper;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.exception.EntityExistException;
|
||||
import cn.odboy.util.ClassUtil;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import cn.odboy.util.StringUtil;
|
||||
@@ -21,16 +20,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@@ -50,11 +44,11 @@ public class SystemMenuServiceImpl extends ServiceImpl<SystemMenuMapper, SystemM
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveMenu(SystemMenuTb resources) {
|
||||
if (systemMenuMapper.getMenuByTitle(resources.getTitle()) != null) {
|
||||
throw new EntityExistException(SystemMenuTb.class, "title", resources.getTitle());
|
||||
throw new BadRequestException("菜单标题已存在");
|
||||
}
|
||||
if (StringUtil.isNotBlank(resources.getComponentName())) {
|
||||
if (systemMenuMapper.getMenuByComponentName(resources.getComponentName()) != null) {
|
||||
throw new EntityExistException(SystemMenuTb.class, "componentName", resources.getComponentName());
|
||||
throw new BadRequestException("菜单组件名称已存在");
|
||||
}
|
||||
}
|
||||
if (Long.valueOf(0L).equals(resources.getPid())) {
|
||||
@@ -87,7 +81,7 @@ public class SystemMenuServiceImpl extends ServiceImpl<SystemMenuMapper, SystemM
|
||||
SystemMenuTb menu1 = systemMenuMapper.getMenuByTitle(resources.getTitle());
|
||||
|
||||
if (menu1 != null && !menu1.getId().equals(menu.getId())) {
|
||||
throw new EntityExistException(SystemMenuTb.class, "title", resources.getTitle());
|
||||
throw new BadRequestException("菜单标题已存在");
|
||||
}
|
||||
|
||||
if (resources.getPid().equals(0L)) {
|
||||
@@ -101,7 +95,7 @@ public class SystemMenuServiceImpl extends ServiceImpl<SystemMenuMapper, SystemM
|
||||
if (StringUtil.isNotBlank(resources.getComponentName())) {
|
||||
menu1 = systemMenuMapper.getMenuByComponentName(resources.getComponentName());
|
||||
if (menu1 != null && !menu1.getId().equals(menu.getId())) {
|
||||
throw new EntityExistException(SystemMenuTb.class, "componentName", resources.getComponentName());
|
||||
throw new BadRequestException("菜单组件名称已存在");
|
||||
}
|
||||
}
|
||||
menu.setTitle(resources.getTitle());
|
||||
@@ -116,6 +110,9 @@ public class SystemMenuServiceImpl extends ServiceImpl<SystemMenuMapper, SystemM
|
||||
menu.setComponentName(resources.getComponentName());
|
||||
menu.setPermission(resources.getPermission());
|
||||
menu.setType(resources.getType());
|
||||
// auto fill
|
||||
menu.setUpdateBy(null);
|
||||
menu.setUpdateTime(null);
|
||||
saveOrUpdate(menu);
|
||||
// 计算父级菜单节点数目
|
||||
updateSubCnt(oldPid);
|
||||
|
||||
-4
@@ -6,9 +6,6 @@ import cn.odboy.core.dal.mysql.system.SystemQiniuConfigMapper;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -37,7 +34,6 @@ public class SystemQiniuConfigServiceImpl extends ServiceImpl<SystemQiniuConfigM
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public SystemQiniuConfigTb queryQiniuConfig() {
|
||||
SystemQiniuConfigTb qiniuConfig = systemQiniuConfigMapper.selectById(1L);
|
||||
|
||||
+1
@@ -56,6 +56,7 @@ public interface SystemQiniuContentService extends IService<SystemQiniuContentTb
|
||||
* @param id 文件id
|
||||
*/
|
||||
void removeFileById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
|
||||
-1
@@ -22,7 +22,6 @@ import com.qiniu.storage.model.FileInfo;
|
||||
import com.qiniu.util.Auth;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
+1
-1
@@ -7,10 +7,10 @@ import cn.odboy.base.CsResultVo;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQuartzJobTb;
|
||||
import cn.odboy.core.dal.dataobject.system.SystemQuartzLogTb;
|
||||
import cn.odboy.core.dal.model.system.QuerySystemQuartzJobArgs;
|
||||
import cn.odboy.core.dal.model.system.UpdateSystemQuartzJobArgs;
|
||||
import cn.odboy.core.dal.mysql.system.SystemQuartzJobMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemQuartzLogMapper;
|
||||
import cn.odboy.core.framework.quartz.core.QuartzManage;
|
||||
import cn.odboy.core.dal.model.system.UpdateSystemQuartzJobArgs;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.redis.RedisHelper;
|
||||
import cn.odboy.util.FileUtil;
|
||||
|
||||
+1
@@ -55,6 +55,7 @@ public interface SystemRoleService extends IService<SystemRoleTb> {
|
||||
* @throws IOException /
|
||||
*/
|
||||
void downloadRoleExcel(List<SystemRoleTb> roles, HttpServletResponse response) throws IOException;
|
||||
|
||||
/**
|
||||
* 查询全部数据
|
||||
*
|
||||
|
||||
+4
-12
@@ -14,9 +14,7 @@ import cn.odboy.core.dal.mysql.system.SystemRoleDeptMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemRoleMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemRoleMenuMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemUserMapper;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserJwtService;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.exception.EntityExistException;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import cn.odboy.util.StringUtil;
|
||||
@@ -25,15 +23,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -43,13 +36,12 @@ public class SystemRoleServiceImpl extends ServiceImpl<SystemRoleMapper, SystemR
|
||||
private final SystemRoleDeptMapper systemRoleDeptMapper;
|
||||
private final SystemRoleMenuMapper systemRoleMenuMapper;
|
||||
private final SystemUserMapper systemUserMapper;
|
||||
private final SystemUserJwtService systemUserJwtService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveRole(CreateSystemRoleArgs resources) {
|
||||
if (systemRoleMapper.getRoleByName(resources.getName()) != null) {
|
||||
throw new EntityExistException(SystemRoleTb.class, "name", resources.getName());
|
||||
throw new BadRequestException("角色名称已存在");
|
||||
}
|
||||
save(BeanUtil.copyProperties(resources, SystemRoleTb.class));
|
||||
// 判断是否有部门数据,若有,则需创建关联
|
||||
@@ -64,7 +56,7 @@ public class SystemRoleServiceImpl extends ServiceImpl<SystemRoleMapper, SystemR
|
||||
SystemRoleTb role = getById(resources.getId());
|
||||
SystemRoleTb role1 = systemRoleMapper.getRoleByName(resources.getName());
|
||||
if (role1 != null && !role1.getId().equals(role.getId())) {
|
||||
throw new EntityExistException(SystemRoleTb.class, "name", resources.getName());
|
||||
throw new BadRequestException("角色名称已存在");
|
||||
}
|
||||
role.setName(resources.getName());
|
||||
role.setDescription(resources.getDescription());
|
||||
|
||||
+16
-24
@@ -8,13 +8,11 @@ import cn.odboy.core.dal.model.system.QuerySystemUserArgs;
|
||||
import cn.odboy.core.dal.mysql.system.SystemUserJobMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemUserMapper;
|
||||
import cn.odboy.core.dal.mysql.system.SystemUserRoleMapper;
|
||||
import cn.odboy.core.dal.redis.system.SystemRedisKey;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserJwtService;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineService;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserJwtDAO;
|
||||
import cn.odboy.core.dal.redis.system.SystemUserOnlineDAO;
|
||||
import cn.odboy.core.framework.permission.core.SecurityHelper;
|
||||
import cn.odboy.core.framework.properties.AppProperties;
|
||||
import cn.odboy.exception.BadRequestException;
|
||||
import cn.odboy.exception.EntityExistException;
|
||||
import cn.odboy.util.FileUtil;
|
||||
import cn.odboy.util.PageUtil;
|
||||
import cn.odboy.util.StringUtil;
|
||||
@@ -24,18 +22,12 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -45,21 +37,21 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
||||
private final SystemUserJobMapper systemUserJobMapper;
|
||||
private final SystemUserRoleMapper systemUserRoleMapper;
|
||||
private final AppProperties properties;
|
||||
private final SystemUserJwtService systemUserJwtService;
|
||||
private final SystemUserOnlineService systemUserOnlineService;
|
||||
private final SystemUserJwtDAO systemUserJwtDAO;
|
||||
private final SystemUserOnlineDAO systemUserOnlineDAO;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveUser(SystemUserTb resources) {
|
||||
resources.setDeptId(resources.getDept().getId());
|
||||
if (systemUserMapper.getUserByUsername(resources.getUsername()) != null) {
|
||||
throw new EntityExistException(SystemUserTb.class, "username", resources.getUsername());
|
||||
throw new BadRequestException("用户名已存在");
|
||||
}
|
||||
if (systemUserMapper.getUserByEmail(resources.getEmail()) != null) {
|
||||
throw new EntityExistException(SystemUserTb.class, "email", resources.getEmail());
|
||||
throw new BadRequestException("邮箱已存在");
|
||||
}
|
||||
if (systemUserMapper.getUserByPhone(resources.getPhone()) != null) {
|
||||
throw new EntityExistException(SystemUserTb.class, "phone", resources.getPhone());
|
||||
throw new BadRequestException("手机号已存在");
|
||||
}
|
||||
save(resources);
|
||||
// 保存用户岗位
|
||||
@@ -76,17 +68,17 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
||||
SystemUserTb user2 = systemUserMapper.getUserByEmail(resources.getEmail());
|
||||
SystemUserTb user3 = systemUserMapper.getUserByPhone(resources.getPhone());
|
||||
if (user1 != null && !user.getId().equals(user1.getId())) {
|
||||
throw new EntityExistException(SystemUserTb.class, "username", resources.getUsername());
|
||||
throw new BadRequestException("用户名已存在");
|
||||
}
|
||||
if (user2 != null && !user.getId().equals(user2.getId())) {
|
||||
throw new EntityExistException(SystemUserTb.class, "email", resources.getEmail());
|
||||
throw new BadRequestException("邮箱已存在");
|
||||
}
|
||||
if (user3 != null && !user.getId().equals(user3.getId())) {
|
||||
throw new EntityExistException(SystemUserTb.class, "phone", resources.getPhone());
|
||||
throw new BadRequestException("手机号已存在");
|
||||
}
|
||||
// 如果用户被禁用,则清除用户登录信息
|
||||
if (!resources.getEnabled()) {
|
||||
systemUserOnlineService.kickOutByUsername(resources.getUsername());
|
||||
systemUserOnlineDAO.kickOutByUsername(resources.getUsername());
|
||||
}
|
||||
user.setDeptId(resources.getDept().getId());
|
||||
user.setUsername(resources.getUsername());
|
||||
@@ -115,7 +107,7 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
||||
SystemUserTb user = getById(resources.getId());
|
||||
SystemUserTb user1 = systemUserMapper.getUserByPhone(resources.getPhone());
|
||||
if (user1 != null && !user.getId().equals(user1.getId())) {
|
||||
throw new EntityExistException(SystemUserTb.class, "phone", resources.getPhone());
|
||||
throw new BadRequestException("手机号已存在");
|
||||
}
|
||||
user.setNickName(resources.getNickName());
|
||||
user.setPhone(resources.getPhone());
|
||||
@@ -155,7 +147,7 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
||||
// 清除缓存
|
||||
flushLoginCacheInfo(user.getUsername());
|
||||
// 强制退出
|
||||
systemUserOnlineService.kickOutByUsername(user.getUsername());
|
||||
systemUserOnlineDAO.kickOutByUsername(user.getUsername());
|
||||
});
|
||||
// 重置密码
|
||||
systemUserMapper.updatePasswordByUserIds(password, ids);
|
||||
@@ -221,7 +213,7 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
||||
* @param username /
|
||||
*/
|
||||
private void flushLoginCacheInfo(String username) {
|
||||
systemUserJwtService.cleanUserJwtModelCacheByUsername(username);
|
||||
systemUserJwtDAO.cleanUserJwtModelCacheByUsername(username);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user