This commit is contained in:
tanyp 2023-07-06 17:34:53 +08:00
parent c883b9168a
commit 7d27d97aea
93 changed files with 540 additions and 3903 deletions

File diff suppressed because one or more lines are too long

View File

@ -22,7 +22,6 @@
"@vitejs/plugin-vue": "^4.0.0",
"sass": "^1.52.1",
"typescript": "^4.7.2",
"unocss": "^0.49.7",
"vite": "^4.1.2",
"vite-ssg": "^0.22.1",
"vue-tsc": "^1.1.3"

View File

@ -34,7 +34,7 @@ export function setMenus(menus:any) {
export function login(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/auth/login',
url: '/system/auth/login',
method: 'post',
data: {
username: data.username,
@ -42,8 +42,8 @@ export function login(data:any){
code: data.code
}
}).then((res:any) => {
setToken(res.data.result.token)
resolve(res.data.result.token)
setToken(res.data.result)
resolve(res.data.result)
}).catch((e:any) => {
reject(e)
})
@ -53,7 +53,7 @@ export function login(data:any){
// 登出
export function logout(){
request({
url: '/tansci/auth/logout',
url: '/system/auth/logout',
method: 'get'
}).then(() => {
removeToken()
@ -65,7 +65,7 @@ export function logout(){
export function getCode(){
return new Promise((resolve, reject) => {
request({
url: '/tansci/auth/code',
url: '/system/auth/code',
method: 'get'
}).then((res:any) => {
resolve(res)
@ -77,7 +77,7 @@ export function getCode(){
export async function getUserInfo() {
await request({
url: '/tansci/sysuser/info',
url: '/system/user/info',
method: 'get'
}).then((res:any) => {
if(res.data.result){

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lowcode/code/page',
url: '/system/lowcode/code/page',
method: 'get',
params: params
}).then((res:any) => {
@ -17,7 +17,7 @@ export function page(params:any){
export function del(id:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lowcode/code/delete/' + id,
url: '/system/lowcode/code/delete/' + id,
method: 'delete',
}).then((res:any) => {
resolve(res.data)
@ -30,7 +30,7 @@ export function del(id:String){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lowcode/code/save',
url: '/system/lowcode/code/save',
method: 'post',
data
}).then((res:any) => {
@ -44,7 +44,7 @@ export function save(data:any){
export function execute(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lowcode/code/execute',
url: '/system/lowcode/code/execute',
method: 'post',
data
}).then((res:any) => {

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/page',
url: '/system/lcPages/page',
method: 'get',
params: params
}).then((res:any) => {
@ -17,7 +17,7 @@ export function page(params:any){
export function getPagesInfo(menuId:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/getPagesInfo/' + menuId,
url: '/system/lcPages/getPagesInfo/' + menuId,
method: 'get'
}).then((res:any) => {
resolve(res.data)
@ -30,7 +30,7 @@ export function getPagesInfo(menuId:String){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/save',
url: '/system/lcPages/save',
method: 'post',
data
}).then((res:any) => {
@ -44,7 +44,7 @@ export function save(data:any){
export function update(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/update',
url: '/system/lcPages/update',
method: 'post',
data
}).then((res:any) => {
@ -58,7 +58,7 @@ export function update(data:any){
export function bindMenu(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/bindMenu',
url: '/system/lcPages/bindMenu',
method: 'post',
data
}).then((res:any) => {
@ -72,7 +72,7 @@ export function bindMenu(data:any){
export function del(id:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/delete/' + id,
url: '/system/lcPages/delete/' + id,
method: 'get',
}).then((res:any) => {
resolve(res.data)
@ -85,7 +85,7 @@ export function del(id:String){
export function batchDelete(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/lcPages/batchDelete',
url: '/system/lcPages/batchDelete',
method: 'post',
data
}).then((res:any) => {

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
export function tables(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/source/tables',
url: '/system/source/tables',
method: 'get',
params: params
}).then((res:any) => {
@ -17,7 +17,7 @@ export function tables(params:any){
export function columns(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/source/columns',
url: '/system/source/columns',
method: 'get',
params: params
}).then((res:any) => {
@ -31,7 +31,7 @@ export function columns(params:any){
export function primary(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/source/primary',
url: '/system/source/primary',
method: 'get',
params: params
}).then((res:any) => {

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/syslog/loginLog',
url: '/system/syslog/loginLog',
method: 'get',
params: params
}).then((res:any) => {

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/auth/onlineUser',
url: '/system/auth/onlineUser',
method: 'get',
params: params
}).then((res:any) => {
@ -17,7 +17,7 @@ export function page(params:any){
export function kick(token:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/auth/kick/' + token,
url: '/system/auth/kick/' + token,
method: 'get'
}).then((res:any) => {
resolve(res.data)

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/syslog/operLog',
url: '/system/syslog/operLog',
method: 'get',
params: params
}).then((res:any) => {

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function tree(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysdict/tree',
url: '/system/dict/tree',
method: 'get',
params: params
}).then((res:any) => {
@ -19,7 +19,7 @@ export function tree(params:any){
export function list(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysdict/list',
url: '/system/dict/list',
method: 'get',
params: params
}).then((res:any) => {
@ -34,7 +34,7 @@ export function list(params:any){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysdict/save',
url: '/system/dict/save',
method: 'post',
data: data
}).then((res:any) => {
@ -49,7 +49,7 @@ export function save(data:any){
export function del(id:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysdict/delete/' + id,
url: '/system/dict/delete/' + id,
method: 'get'
}).then((res:any) => {
resolve(res.data)
@ -63,7 +63,7 @@ export function del(id:String){
export function update(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysdict/update',
url: '/system/dict/update',
method: 'post',
data: data
}).then((res:any) => {

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function list(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysmenu/tree',
url: '/system/menu/tree',
method: 'get',
params: params
}).then((res:any) => {
@ -19,7 +19,7 @@ export function list(params:any){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysmenu/save',
url: '/system/menu/save',
method: 'post',
data: data
}).then((res:any) => {
@ -34,7 +34,7 @@ export function save(data:any){
export function update(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysmenu/update',
url: '/system/menu/update',
method: 'post',
data: data
}).then((res:any) => {
@ -49,7 +49,7 @@ export function update(data:any){
export function del(id:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysmenu/delete/' + id,
url: '/system/menu/delete/' + id,
method: 'get'
}).then((res:any) => {
resolve(res.data)

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function list(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysorg/list',
url: '/system/org/list',
method: 'get',
params: params
}).then((res:any) => {
@ -19,7 +19,7 @@ export function list(params:any){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysorg/save',
url: '/system/org/save',
method: 'post',
data: data
}).then((res:any) => {
@ -34,7 +34,7 @@ export function save(data:any){
export function del(id:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysorg/delete/' + id,
url: '/system/org/delete/' + id,
method: 'get'
}).then((res:any) => {
resolve(res.data)
@ -48,7 +48,7 @@ export function del(id:String){
export function update(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysorg/update',
url: '/system/org/update',
method: 'post',
data: data
}).then((res:any) => {

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/page',
url: '/system/role/page',
method: 'get',
params: params
}).then((res:any) => {
@ -19,7 +19,7 @@ export function page(params:any){
export function list(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/list',
url: '/system/role/list',
method: 'get',
params: params
}).then((res:any) => {
@ -34,7 +34,7 @@ export function list(params:any){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/save',
url: '/system/role/save',
method: 'post',
data: data
}).then((res:any) => {
@ -49,7 +49,7 @@ export function save(data:any){
export function del(id:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/delete/' + id,
url: '/system/role/delete/' + id,
method: 'get'
}).then((res:any) => {
resolve(res.data)
@ -63,7 +63,7 @@ export function del(id:String){
export function update(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/update',
url: '/system/role/update',
method: 'post',
data: data
}).then((res:any) => {
@ -78,7 +78,7 @@ export function update(data:any){
export function dataPermissions(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/dataPermissions',
url: '/system/role/dataPermissions',
method: 'post',
data: data
}).then((res:any) => {
@ -92,7 +92,7 @@ export function dataPermissions(data:any){
export function orgList(roleId:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/orgList/' + roleId,
url: '/system/role/orgList/' + roleId,
method: 'get'
}).then((res:any) => {
resolve(res.data)
@ -106,7 +106,7 @@ export function orgList(roleId:String){
export function menuPermissions(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/menuPermissions',
url: '/system/role/menuPermissions',
method: 'post',
data: data
}).then((res:any) => {
@ -120,7 +120,7 @@ export function menuPermissions(data:any){
export function menuList(roleId:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/menuList/' + roleId,
url: '/system/role/menuList/' + roleId,
method: 'get'
}).then((res:any) => {
resolve(res.data)

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
export function page(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysuser/page',
url: '/system/user/page',
method: 'get',
params: params
}).then((res:any) => {
@ -19,7 +19,7 @@ export function page(params:any){
export function list(params:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysuser/list',
url: '/system/user/list',
method: 'get',
params: params
}).then((res:any) => {
@ -34,7 +34,7 @@ export function list(params:any){
export function save(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysuser/save',
url: '/system/user/save',
method: 'post',
data: data
}).then((res:any) => {
@ -49,7 +49,7 @@ export function save(data:any){
export function del(id:String){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysuser/delete/' + id,
url: '/system/user/delete/' + id,
method: 'get'
}).then((res:any) => {
resolve(res.data)
@ -63,7 +63,7 @@ export function del(id:String){
export function update(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysuser/update',
url: '/system/user/update',
method: 'post',
data: data
}).then((res:any) => {
@ -78,7 +78,7 @@ export function update(data:any){
export function modifyPass(data:any){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysuser/modifyPass',
url: '/system/user/modifyPass',
method: 'post',
data: data
}).then((res:any) => {
@ -93,7 +93,7 @@ export function modifyPass(data:any){
export function roleList(){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysrole/list',
url: '/system/role/list',
method: 'get'
}).then((res:any) => {
resolve(res.data)

View File

@ -6,7 +6,6 @@ import 'element-plus/dist/index.css'
import './styles/index.scss'
import * as ElIcons from '@element-plus/icons-vue'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import 'uno.css'
import globalProperties from './utils/globalProperties'
import hasPermission from './utils/hasPermission'

View File

@ -55,7 +55,7 @@ export const loadView = (view:any) => {
export function generateRoutes(){
return new Promise((resolve, reject) => {
request({
url: '/tansci/sysmenu/menus',
url: '/system/menu/menus',
method: 'get'
}).then( (res:any) => {
const routers = filterRouter(res.data.result, 0)

View File

@ -1,14 +1,6 @@
import { defineConfig } from 'vite'
import path from 'path'
import vue from '@vitejs/plugin-vue'
import Unocss from 'unocss/vite'
import {
presetAttributify,
presetIcons,
presetUno,
transformerDirectives,
transformerVariantGroup,
} from 'unocss'
const url = "http://127.0.0.1:8000"
export default defineConfig({
@ -25,29 +17,15 @@ export default defineConfig({
},
},
plugins: [
vue(),
Unocss({
presets: [
presetUno(),
presetAttributify(),
presetIcons({
scale: 1.2,
warn: true,
}),
],
transformers: [
transformerDirectives(),
transformerVariantGroup(),
]
}),
vue()
],
server: {
proxy: {
'/tansci': {
'/system': {
target: url,
changeOrigin: true,
pathRewrite: {
'^/tansci':'/tansci'
'^/system':'/system'
}
}
}

View File

@ -20,7 +20,6 @@
<mybatis-plus-boot.varsion>3.4.3.1</mybatis-plus-boot.varsion>
<druid-spring-boot.varsion>1.2.6</druid-spring-boot.varsion>
<sa-token-spring-boot.varsion>1.34.0</sa-token-spring-boot.varsion>
<knife4j-spring-boot.version>3.0.3</knife4j-spring-boot.version>
<hutool-all.version>5.7.22</hutool-all.version>
<fastjson2.version>2.0.26</fastjson2.version>
<magic-api.version>2.1.0</magic-api.version>
@ -67,12 +66,6 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>

View File

@ -1,38 +0,0 @@
package com.tansci.common.annotation;
import java.lang.annotation.*;
/**
* @ClassName Log.java
* @ClassPath com.tansci.common.annotation.Log.java
* @Description 自定义操作日志注解
* @Author tanyp
* @Date 2023/4/7 14:05
**/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
/**
* 操作模块
*
* @return
*/
String modul() default "";
/**
* 操作类型
*
* @return
*/
String type() default "";
/**
* 操作说明
*
* @return
*/
String desc() default "";
}

View File

@ -1,180 +0,0 @@
package com.tansci.common.aop;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson2.JSON;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysOperLog;
import com.tansci.domain.vo.SysUserSessionVo;
import com.tansci.service.SysOperLogService;
import com.tansci.utils.SystemUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @ClassName OperLogAspect.java
* @ClassPath com.tansci.common.aop.OperLogAspect.java
* @Description 操作日志记录
* @Author tanyp
* @Date 2023/4/7 14:02
**/
@Slf4j
@Aspect
@Component
public class OperLogAspect {
/**
* 统计请求的处理时间
*/
ThreadLocal<Long> startTime = new ThreadLocal<>();
@Autowired
private SysOperLogService sysOperLogService;
/**
* @MonthName logPoinCut
* @Description 设置操作日志切入点 记录操作日志 在注解的位置切入代码
* @Author tanyp
* @Date 2023/4/7 14:06
* @Param []
* @return void
**/
@Pointcut("@annotation(com.tansci.common.annotation.Log)")
public void logPoinCut() {
}
/**
* @MonthName exceptionLogPoinCut
* @Description 设置操作异常切入点记录异常日志 扫描所有controller包下操作
* @Author tanyp
* @Date 2023/4/7 14:07
* @Param []
* @return void
**/
@Pointcut("execution(* com.tansci.controller..*.*(..))")
public void exceptionLogPoinCut() {
}
@Before("logPoinCut()")
public void doBefore() {
// 接收到请求记录请求开始时间
startTime.set(System.currentTimeMillis());
}
/**
* @MonthName doAfterReturning
* @Description 正常返回通知拦截用户操作日志连接点正常执行完成后执行 如果连接点抛出异常则不会执行
* @Author tanyp
* @Date 2023/4/7 14:08
* @Param [joinPoint, keys]
* @return void
**/
@AfterReturning(value = "logPoinCut()", returning = "keys")
public void doAfterReturning(JoinPoint joinPoint, Object keys) {
try {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
SysUserSessionVo sessionVo = (SysUserSessionVo) StpUtil.getSession().get(String.valueOf(StpUtil.getLoginId()));
SysOperLog operLog = SysOperLog.builder()
.reqParam(JSON.toJSONString(converMap(request.getParameterMap())))
.resParam(JSON.toJSONString(keys))
.takeUpTime(System.currentTimeMillis() - startTime.get())
.userId(String.valueOf(StpUtil.getLoginId()))
.userName(sessionVo.getUsername())
.method(joinPoint.getTarget().getClass().getName() + "." + method.getName())
.uri(request.getRequestURI())
.ip(SystemUtils.getIp(request))
.status(Constants.OPER_LOG_STATUS_SUCCESS)
.createTime(LocalDateTime.now())
.build();
Log log = method.getAnnotation(Log.class);
if (Objects.nonNull(log)) {
operLog.setModule(log.modul());
operLog.setType(log.type());
operLog.setMessage(log.desc());
}
sysOperLogService.save(operLog);
} catch (Exception e) {
log.error("记录操作日志异常:{}", e);
}
}
/**
* @MonthName doAfterThrowing
* @Description 异常返回通知用于拦截异常日志信息 连接点抛出异常后执行
* @Author tanyp
* @Date 2023/4/7 14:36
* @Param [joinPoint, e]
* @return void
**/
@AfterThrowing(pointcut = "exceptionLogPoinCut()", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, Throwable e) {
try {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
SysUserSessionVo sessionVo = (SysUserSessionVo) StpUtil.getSession().get(String.valueOf(StpUtil.getLoginId()));
SysOperLog operLog = SysOperLog.builder()
.reqParam(JSON.toJSONString(converMap(request.getParameterMap())))
.takeUpTime(System.currentTimeMillis() - startTime.get())
.userId(String.valueOf(StpUtil.getLoginId()))
.userName(sessionVo.getUsername())
.method(joinPoint.getTarget().getClass().getName() + "." + method.getName())
.uri(request.getRequestURI())
.ip(SystemUtils.getIp(request))
.status(Constants.OPER_LOG_STATUS_ERROR)
.unusual(stackTraceToString(e.getClass().getName(), e.getMessage(), e.getStackTrace()))
.createTime(LocalDateTime.now())
.build();
Log log = method.getAnnotation(Log.class);
if (Objects.nonNull(log)) {
operLog.setModule(log.modul());
operLog.setType(log.type());
operLog.setMessage(log.desc());
}
sysOperLogService.save(operLog);
} catch (Exception e2) {
log.error("记录操作日志异常:{}", e2);
}
}
public Map<String, String> converMap(Map<String, String[]> paramMap) {
Map<String, String> rtnMap = new HashMap<>();
for (String key : paramMap.keySet()) {
rtnMap.put(key, paramMap.get(key)[0]);
}
return rtnMap;
}
public String stackTraceToString(String exceptionName, String exceptionMessage, StackTraceElement[] elements) {
StringBuffer strbuff = new StringBuffer();
for (StackTraceElement stet : elements) {
strbuff.append(stet + "<br/>");
}
String message = exceptionName + ":" + exceptionMessage + "<br/>" + strbuff.toString();
return message;
}
}

View File

@ -1,48 +0,0 @@
package com.tansci.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @ClassName Knife4jConfig.java
* @ClassPath com.tansci.config.Knife4jConfig.java
* @Description Knife4j配置
* @Author tanyp
* @Date 2023/3/20 15:22
**/
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Knife4jConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.tansci.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("API 文档")
.description("接口文档")
.contact(new Contact("tanyp", "http://127.0.0.1:8081/doc.html", ""))
.version("1.0.0")
.build();
}
}

View File

@ -1,28 +0,0 @@
package com.tansci.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @ClassName MybatisPlusConfig.java
* @ClassPath com.tansci.config.MybatisPlusConfig.java
* @Description MybatisPlus分页配置
* @Author tanyp
* @Date 2023/3/20 15:24
**/
@Configuration
@MapperScan("com.tansci.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

View File

@ -23,7 +23,7 @@ public class SaTokenConfig implements WebMvcConfigurer {
// 验证所有接口
.addPathPatterns("/**")
// 忽略校验
.excludePathPatterns("/auth/**", "//magic/web/**");
.excludePathPatterns("/system/auth/**", "/api/web/**");
}
}

View File

@ -1,85 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.session.SaSessionCustomUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysLoginLog;
import com.tansci.domain.SysUser;
import com.tansci.domain.vo.SysUserVo;
import com.tansci.service.SysLoginLogService;
import com.tansci.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @ClassName AuthController.java
* @ClassPath com.tansci.controller.AuthController.java
* @Description 鉴权管理
* @Author tanyp
* @Date 2023/3/20 15:52
**/
@Slf4j
@RestController
@RequestMapping("/auth")
@Api(value = "auth", tags = "鉴权管理")
public class AuthController {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysLoginLogService sysLoginLogService;
@ApiOperation(value = "登录", notes = "登录")
@PostMapping("/login")
public Wrapper<SysUserVo> login(HttpServletRequest request, @RequestBody SysUser user) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.login(request, user));
}
@ApiOperation(value = "登出", notes = "登出")
@GetMapping("/logout")
public Wrapper<Object> logout() {
SaSessionCustomUtil.deleteSessionById(String.valueOf(StpUtil.getLoginId()));
StpUtil.logout();
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, "登出成功!");
}
@ApiOperation(value = "验证码", notes = "验证码")
@GetMapping("/code")
public Wrapper<Object> verificationCode(HttpServletRequest request) {
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(100, 60);
// 四则运算方式
// lineCaptcha.setGenerator(new MathGenerator());
// 验证码存session 60秒过期
request.getSession().setMaxInactiveInterval(60);
request.getSession().setAttribute("verifyCode", lineCaptcha.getCode());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lineCaptcha.getImageBase64());
}
@ApiOperation(value = "在线用户", notes = "在线用户")
@Log(modul = "鉴权管理", type = Constants.SELECT, desc = "在线用户")
@GetMapping("/onlineUser")
public Wrapper<IPage<SysLoginLog>> onlineUser(Page page, String username) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysLoginLogService.onlineUser(page, username));
}
@ApiOperation(value = "踢人", notes = "踢人")
@Log(modul = "鉴权管理", type = Constants.UPDATE, desc = "踢人")
@GetMapping("/kick/{token}")
public Wrapper<Object> kick(@PathVariable String token) {
StpUtil.logoutByTokenValue(token);
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, "ok");
}
}

View File

@ -1,57 +0,0 @@
package com.tansci.controller;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.vo.ColumnsVo;
import com.tansci.domain.vo.TablesVo;
import com.tansci.service.DataSourceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @ClassName DataSourceController.java
* @ClassPath com.tansci.controller.DataSourceController.java
* @Description 数据源
* @Author tanyp
* @Date 2023/4/23 15:19
**/
@Slf4j
@RestController
@RequestMapping("/source")
@Api(value = "source", tags = "数据源")
public class DataSourceController {
@Autowired
private DataSourceService dataSourceService;
@ApiOperation(value = "数据表", notes = "数据表")
@Log(modul = "数据源", type = Constants.SELECT, desc = "数据表")
@GetMapping("/tables")
public Wrapper<List<TablesVo>> tables(String name) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, dataSourceService.tables(name));
}
@ApiOperation(value = "数据列", notes = "数据列")
@Log(modul = "数据列", type = Constants.SELECT, desc = "数据列")
@GetMapping("/columns")
public Wrapper<List<ColumnsVo>> columns(String name) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, dataSourceService.columns(name));
}
@ApiOperation(value = "获取住建", notes = "获取住建")
@Log(modul = "数据源", type = Constants.SELECT, desc = "获取住建")
@GetMapping("/primary")
public Wrapper<Object> primary(String name) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, dataSourceService.primary(name));
}
}

View File

@ -1,102 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.LcPages;
import com.tansci.service.LcPagesSerice;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
/**
* @ClassName LcPagesController.java
* @ClassPath com.tansci.controller.LcPagesController.java
* @Description 页面管理
* @Author tanyp
* @Date 2023/5/11 8:57
**/
@Slf4j
@RestController
@RequestMapping("/lcPages")
@Api(value = "lcPages", tags = "页面管理")
public class LcPagesController {
@Autowired
private LcPagesSerice lcPagesSerice;
@ApiOperation(value = "分页", notes = "分页")
@Log(modul = "页面管理", type = Constants.SELECT, desc = "分页")
@GetMapping("/page")
public Wrapper<IPage<LcPages>> page(Page page, LcPages pages) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.page(page, pages));
}
@ApiOperation(value = "根据ID获取页面信息", notes = "根据ID获取页面信息")
@Log(modul = "页面管理", type = Constants.SELECT, desc = "根据ID获取页面信息")
@GetMapping("/get/{id}")
public Wrapper<LcPages> getById(@PathVariable("id") String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.getById(id));
}
@ApiOperation(value = "根据菜单ID获取页面信息", notes = "根据菜单ID获取页面信息")
@Log(modul = "页面管理", type = Constants.SELECT, desc = "根据菜单ID获取页面信息")
@GetMapping("/getPagesInfo/{menuId}")
public Wrapper<LcPages> getPagesInfo(@PathVariable("menuId") String menuId) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.getPagesInfo(menuId));
}
@ApiOperation(value = "添加", notes = "添加")
@Log(modul = "页面管理", type = Constants.INSERT, desc = "添加")
@PostMapping("/save")
@SaCheckPermission("pages:save")
public Wrapper<Object> save(@RequestBody LcPages pages) {
pages.setCreatorId(String.valueOf(StpUtil.getLoginId()));
pages.setUpdateTime(LocalDateTime.now());
pages.setCreateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.save(pages));
}
@ApiOperation(value = "修改", notes = "修改")
@Log(modul = "页面管理", type = Constants.UPDATE, desc = "修改")
@PostMapping("/update")
@SaCheckPermission("pages:update")
public Wrapper<Object> update(@RequestBody LcPages pages) {
pages.setUpdateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.updateById(pages));
}
@ApiOperation(value = "删除", notes = "删除")
@Log(modul = "页面管理", type = Constants.DELETE, desc = "删除")
@GetMapping("/delete/{id}")
@SaCheckPermission("pages:delete")
public Wrapper<Object> delete(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.delete(id));
}
@ApiOperation(value = "批量删除", notes = "批量删除")
@Log(modul = "页面管理", type = Constants.DELETE, desc = "批量删除")
@PostMapping("/batchDelete")
@SaCheckPermission("pages:delete")
public Wrapper<Object> batchDelete(@RequestBody LcPages pages) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.batchDelete(pages));
}
@ApiOperation(value = "绑定菜单", notes = "绑定菜单")
@Log(modul = "页面管理", type = Constants.DELETE, desc = "绑定菜单")
@PostMapping("/bindMenu")
@SaCheckPermission("pages:update")
public Wrapper<Object> bindMenu(@RequestBody LcPages pages) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, lcPagesSerice.bindMenu(pages));
}
}

View File

@ -1,22 +0,0 @@
package com.tansci.controller;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName ScreenController.java
* @ClassPath com.tansci.controller.ScreenController.java
* @Description 大屏管理
* @Author tanyp
* @Date 2023/5/9 11:17
**/
@Slf4j
@RestController
@RequestMapping("/screen")
@Api(value = "screen", tags = "大屏管理")
public class ScreenController {
}

View File

@ -1,76 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysDict;
import com.tansci.service.SysDictService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName SysDictController.java
* @ClassPath com.tansci.controller.SysDictController.java
* @Description 字典管理
* @Author tanyp
* @Date 2023/3/29 9:45
**/
@Slf4j
@RestController
@RequestMapping("/sysdict")
@Api(value = "sysdict", tags = "字典管理")
public class SysDictController {
@Autowired
private SysDictService sysDictService;
@ApiOperation(value = "列表树", notes = "列表树")
@Log(modul = "字典管理", type = Constants.SELECT, desc = "列表树")
@GetMapping("/tree")
public Wrapper<List<SysDict>> tree(SysDict dict) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysDictService.tree(dict));
}
@ApiOperation(value = "列表", notes = "列表")
@Log(modul = "字典管理", type = Constants.SELECT, desc = "列表")
@GetMapping("/list")
public Wrapper<List<SysDict>> list(SysDict dict) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysDictService.list(dict));
}
@ApiOperation(value = "添加", notes = "添加")
@Log(modul = "字典管理", type = Constants.INSERT, desc = "添加")
@PostMapping("/save")
@SaCheckPermission("dict:save")
public Wrapper<Object> save(@RequestBody SysDict dict) {
dict.setUpdateTime(LocalDateTime.now());
dict.setCreateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysDictService.save(dict));
}
@ApiOperation(value = "删除", notes = "删除")
@Log(modul = "字典管理", type = Constants.DELETE, desc = "删除")
@GetMapping("/delete/{id}")
@SaCheckPermission("dict:delete")
public Wrapper<Object> delete(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysDictService.delete(id));
}
@ApiOperation(value = "修改", notes = "修改")
@Log(modul = "字典管理", type = Constants.UPDATE, desc = "修改")
@PostMapping("/update")
@SaCheckPermission("dict:update")
public Wrapper<Object> update(@RequestBody SysDict dict) {
dict.setUpdateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysDictService.updateById(dict));
}
}

View File

@ -1,53 +0,0 @@
package com.tansci.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysLoginLog;
import com.tansci.domain.SysOperLog;
import com.tansci.service.SysLoginLogService;
import com.tansci.service.SysOperLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName SysLogController.java
* @ClassPath com.tansci.controller.SysLogController.java
* @Description 日志管理
* @Author tanyp
* @Date 2023/3/29 9:45
**/
@Slf4j
@RestController
@RequestMapping("/syslog")
@Api(value = "syslog", tags = "日志管理")
public class SysLogController {
@Autowired
private SysLoginLogService sysLoginLogService;
@Autowired
private SysOperLogService sysOperLogService;
@ApiOperation(value = "登录日志", notes = "登录日志")
@Log(modul = "日志管理", type = Constants.DELETE, desc = "登录日志")
@GetMapping("/loginLog")
public Wrapper<IPage<SysLoginLog>> loginLog(Page page) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysLoginLogService.page(page));
}
@ApiOperation(value = "操作日志", notes = "操作日志")
@Log(modul = "日志管理", type = Constants.DELETE, desc = "操作日志")
@GetMapping("/operLog")
public Wrapper<IPage<SysOperLog>> operLog(Page page) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysOperLogService.page(page));
}
}

View File

@ -1,87 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysMenu;
import com.tansci.domain.vo.SysMenuVo;
import com.tansci.service.SysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName SysMenuController.java
* @ClassPath com.tansci.controller.SysMenuController.java
* @Description 菜单管理
* @Author tanyp
* @Date 2023/3/29 9:45
**/
@Slf4j
@RestController
@RequestMapping("/sysmenu")
@Api(value = "sysmenu", tags = "菜单管理")
public class SysMenuController {
@Autowired
private SysMenuService sysMenuService;
@ApiOperation(value = "当前用户权限菜单列表", notes = "当前用户权限菜单列表")
@Log(modul = "菜单管理", type = Constants.SELECT, desc = "当前用户权限菜单列表")
@GetMapping("/menus")
public Wrapper<List<SysMenuVo>> menus() {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.menus());
}
@ApiOperation(value = "菜单树", notes = "菜单树")
@Log(modul = "菜单管理", type = Constants.SELECT, desc = "菜单树")
@GetMapping("/tree")
@SaCheckPermission("menu:list")
public Wrapper<List<SysMenu>> tree(SysMenu menu) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.tree(menu));
}
@ApiOperation(value = "详情", notes = "详情")
@Log(modul = "菜单管理", type = Constants.SELECT, desc = "详情")
@GetMapping("/getById/{id}")
@SaCheckPermission("menu:view")
public Wrapper<SysMenu> getById(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.getById(id));
}
@ApiOperation(value = "添加", notes = "添加")
@Log(modul = "菜单管理", type = Constants.INSERT, desc = "添加")
@PostMapping("/save")
@SaCheckPermission("menu:save")
public Wrapper<Object> save(@RequestBody SysMenu menu) {
menu.setIsDel(Constants.NOT_DEL_FALG);
menu.setUpdateTime(LocalDateTime.now());
menu.setCreateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.save(menu));
}
@ApiOperation(value = "删除", notes = "删除")
@Log(modul = "菜单管理", type = Constants.DELETE, desc = "删除")
@GetMapping("/delete/{id}")
@SaCheckPermission("menu:delete")
public Wrapper<Object> delete(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.delete(id));
}
@ApiOperation(value = "修改", notes = "修改")
@Log(modul = "菜单管理", type = Constants.UPDATE, desc = "修改")
@PostMapping("/update")
@SaCheckPermission("menu:update")
public Wrapper<Object> update(@RequestBody SysMenu menu) {
menu.setUpdateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.updateById(menu));
}
}

View File

@ -1,73 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysOrg;
import com.tansci.service.SysOrgService;
import com.tansci.utils.UUIDUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName SysOrgController.java
* @ClassPath com.tansci.controller.SysOrgController.java
* @Description 组织管理
* @Author tanyp
* @Date 2023/3/29 9:46
**/
@Slf4j
@RestController
@RequestMapping("/sysorg")
@Api(value = "sysorg", tags = "组织管理")
public class SysOrgController {
@Autowired
private SysOrgService sysOrgService;
@ApiOperation(value = "列表", notes = "列表")
@Log(modul = "组织管理", type = Constants.SELECT, desc = "列表")
@GetMapping("/list")
@SaCheckPermission("org:list")
public Wrapper<List<SysOrg>> list(SysOrg org) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysOrgService.list(org));
}
@ApiOperation(value = "添加", notes = "添加")
@Log(modul = "组织管理", type = Constants.INSERT, desc = "添加")
@PostMapping("/save")
@SaCheckPermission("org:save")
public Wrapper<Object> save(@RequestBody SysOrg org) {
org.setCode("SO" + UUIDUtils.getUUID(10).toUpperCase());
org.setIsDel(Constants.NOT_DEL_FALG);
org.setUpdateTime(LocalDateTime.now());
org.setCreateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysOrgService.save(org));
}
@ApiOperation(value = "删除", notes = "删除")
@Log(modul = "组织管理", type = Constants.DELETE, desc = "删除")
@GetMapping("/delete/{id}")
@SaCheckPermission("org:delete")
public Wrapper<Object> delete(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysOrgService.delete(id));
}
@ApiOperation(value = "修改", notes = "修改")
@Log(modul = "组织管理", type = Constants.UPDATE, desc = "修改")
@PostMapping("/update")
@SaCheckPermission("org:update")
public Wrapper<Object> update(@RequestBody SysOrg org) {
org.setUpdateTime(LocalDateTime.now());
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysOrgService.updateById(org));
}
}

View File

@ -1,107 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysRole;
import com.tansci.service.SysRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassName SysRoleController.java
* @ClassPath com.tansci.controller.SysRoleController.java
* @Description 角色管理
* @Author tanyp
* @Date 2023/3/29 9:46
**/
@Slf4j
@RestController
@RequestMapping("/sysrole")
@Api(value = "sysrole", tags = "角色管理")
public class SysRoleController {
@Autowired
private SysRoleService sysRoleService;
@ApiOperation(value = "分页", notes = "分页")
@Log(modul = "角色管理", type = Constants.SELECT, desc = "列表")
@GetMapping("/page")
public Wrapper<IPage<SysRole>> page(Page page, SysRole role) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.page(page, role));
}
@ApiOperation(value = "列表", notes = "列表")
@Log(modul = "角色管理", type = Constants.SELECT, desc = "列表")
@GetMapping("/list")
@SaCheckPermission("role:list")
public Wrapper<List<SysRole>> list(SysRole role) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.list(role));
}
@ApiOperation(value = "添加", notes = "添加")
@Log(modul = "角色管理", type = Constants.INSERT, desc = "添加")
@PostMapping("/save")
@SaCheckPermission("role:save")
public Wrapper<Object> save(@RequestBody SysRole role) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.insert(role));
}
@ApiOperation(value = "删除", notes = "删除")
@Log(modul = "角色管理", type = Constants.DELETE, desc = "删除")
@GetMapping("/delete/{id}")
@SaCheckPermission("role:delete")
public Wrapper<Object> delete(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.delete(id));
}
@ApiOperation(value = "修改", notes = "修改")
@Log(modul = "角色管理", type = Constants.UPDATE, desc = "修改")
@PostMapping("/update")
@SaCheckPermission("role:update")
public Wrapper<Object> update(@RequestBody SysRole role) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.update(role));
}
@ApiOperation(value = "数据权限", notes = "数据权限")
@Log(modul = "角色管理", type = Constants.UPDATE, desc = "数据权限")
@PostMapping("/dataPermissions")
@SaCheckPermission("role:data")
public Wrapper<Object> dataPermissions(@RequestBody SysRole role) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.dataPermissions(role));
}
@ApiOperation(value = "获取权限组织", notes = "获取权限组织")
@Log(modul = "角色管理", type = Constants.UPDATE, desc = "获取权限组织")
@GetMapping("/orgList/{roleId}")
@SaCheckPermission("role:data")
public Wrapper<Object> orgList(@PathVariable String roleId) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.orgList(roleId));
}
@ApiOperation(value = "菜单权限", notes = "菜单权限")
@Log(modul = "角色管理", type = Constants.UPDATE, desc = "菜单权限")
@PostMapping("/menuPermissions")
@SaCheckPermission("role:menu")
public Wrapper<Object> menuPermissions(@RequestBody SysRole role) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.menuPermissions(role));
}
@ApiOperation(value = "获取权限菜单", notes = "获取权限菜单")
@Log(modul = "角色管理", type = Constants.UPDATE, desc = "获取权限菜单")
@GetMapping("/menuList/{roleId}")
@SaCheckPermission("role:menu")
public Wrapper<Object> menuList(@PathVariable String roleId) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.menuList(roleId));
}
}

View File

@ -1,91 +0,0 @@
package com.tansci.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tansci.common.WrapMapper;
import com.tansci.common.Wrapper;
import com.tansci.common.annotation.Log;
import com.tansci.common.constant.Constants;
import com.tansci.domain.SysUser;
import com.tansci.domain.vo.UserAuthVo;
import com.tansci.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassName SysUserController.java
* @ClassPath com.tansci.controller.SysUserController.java
* @Description 用户管理
* @Author tanyp
* @Date 2023/3/20 15:52
**/
@Slf4j
@RestController
@RequestMapping("/sysuser")
@Api(value = "sysuser", tags = "用户管理")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@ApiOperation(value = "分页", notes = "分页")
@Log(modul = "用户管理", type = Constants.SELECT, desc = "分页")
@GetMapping("/page")
public Wrapper<IPage<SysUser>> page(Page page, SysUser user) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.page(page, user));
}
@ApiOperation(value = "列表", notes = "列表")
@Log(modul = "用户管理", type = Constants.SELECT, desc = "列表")
@GetMapping("/list")
@SaCheckPermission("user:list")
public Wrapper<List<SysUser>> list(SysUser user) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.list(user));
}
@ApiOperation(value = "用户信息", notes = "用户信息")
@Log(modul = "用户管理", type = Constants.SELECT, desc = "用户信息")
@GetMapping("/info")
public Wrapper<UserAuthVo> info() {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.info());
}
@ApiOperation(value = "添加", notes = "添加")
@Log(modul = "用户管理", type = Constants.INSERT, desc = "添加")
@PostMapping("/save")
@SaCheckPermission("user:save")
public Wrapper<Object> save(@RequestBody SysUser user) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.insert(user));
}
@ApiOperation(value = "修改", notes = "修改")
@Log(modul = "用户管理", type = Constants.UPDATE, desc = "修改")
@PostMapping("/update")
@SaCheckPermission("user:update")
public Wrapper<Object> update(@RequestBody SysUser user) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.update(user));
}
@ApiOperation(value = "删除", notes = "删除")
@Log(modul = "用户管理", type = Constants.DELETE, desc = "删除")
@GetMapping("/delete/{id}")
@SaCheckPermission("user:delete")
public Wrapper<Object> delete(@PathVariable String id) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.del(id));
}
@ApiOperation(value = "修改密码", notes = "修改密码")
@Log(modul = "用户管理", type = Constants.UPDATE, desc = "修改密码")
@PostMapping("/modifyPass")
@SaCheckPermission("user:password")
public Wrapper<Object> modifyPass(@RequestBody SysUser user) {
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.modifyPass(user));
}
}

View File

@ -1,74 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName LcPages.java
* @ClassPath com.tansci.domain.LcPages.java
* @Description 页面管理
* @Author tanyp
* @Date 2023/5/11 8:47
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "页面管理")
@TableName(value = "lc_pages")
public class LcPages {
@TableId(type = IdType.ASSIGN_UUID)
@ApiModelProperty(value = "主键id")
private String id;
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "副标题")
private String subtitle;
@ApiModelProperty(value = "父ID")
private String parentId;
@ApiModelProperty(value = "页面json")
private String pageschema;
@ApiModelProperty(value = "状态0、正常1、禁用")
private Integer status;
@ApiModelProperty(value = "创建人")
private String creatorId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "描述")
private String remarks;
@ApiModelProperty(value = "IDS")
@TableField(exist = false)
private List<String> ids;
@ApiModelProperty(value = "菜单ids")
@TableField(exist = false)
private List<String> menuIds;
}

View File

@ -1,32 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName LcPagesMenu.java
* @ClassPath com.tansci.domain.LcPagesMenu.java
* @Description 页面菜单关系表
* @Author tanyp
* @Date 2023/5/11 8:47
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "页面菜单关系")
@TableName(value = "lc_pages_menu")
public class LcPagesMenu {
@ApiModelProperty(value = "页面id")
private String pagesId;
@ApiModelProperty(value = "菜单id")
private String menuId;
}

View File

@ -1,79 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName SysDict.java
* @ClassPath com.tansci.SysDict.java
* @Description 数据字典
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_dict")
@ApiModel(value = "数据字典")
public class SysDict {
@TableId(type = IdType.ASSIGN_UUID)
@ApiModelProperty(value = "主键id", hidden = true)
private String id;
@ApiModelProperty(value = "父ID")
private String parentId;
@ApiModelProperty(value = "分组名称")
private String groupName;
@ApiModelProperty(value = "类型0、系统1、业务")
private Integer type;
@ApiModelProperty(value = "")
private Integer dicValue;
@ApiModelProperty(value = "名称")
private String dicLabel;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "预留字段1")
private String text1;
@ApiModelProperty(value = "预留字段3")
private String text2;
@ApiModelProperty(value = "预留字段2")
private String text3;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "描述")
private String remarks;
@TableField(exist = false)
private List<SysDict> children;
}

View File

@ -1,67 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @pathcom.tansci.domain.SysLoginLog.java
* @classNameSysLoginLog.java
* @description登录日志
* @authortanyp
* @dateTime2023/03/22 11:33
* @editNote
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_login_log")
@ApiModel(value = "登录日志")
public class SysLoginLog {
@ApiModelProperty(value = "主键id")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@ApiModelProperty(value = "登录账号")
private String username;
@ApiModelProperty(value = "失败密码")
private String failPassword;
@ApiModelProperty(value = "登录类型:成功、失败)")
private String type;
@ApiModelProperty(value = "浏览器")
private String browser;
@ApiModelProperty(value = "操作系统")
private String os;
@ApiModelProperty(value = "地理位置")
private String address;
@ApiModelProperty(value = "请求IP")
private String ip;
@ApiModelProperty(value = "token")
private String token;
@ApiModelProperty(value = "失败原因")
private String message;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime createTime;
}

View File

@ -1,94 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName SysMenu.java
* @ClassPath com.tansci.domain.SysMenu.java
* @Description 菜单
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "sys_menu")
@ApiModel(value = "菜单")
public class SysMenu {
@TableId(type = IdType.ASSIGN_UUID)
@ApiModelProperty(value = "主键id", hidden = true)
private String id;
@ApiModelProperty(value = "父菜单ID")
private String parentId;
@ApiModelProperty(value = "菜单名称")
private String name;
@ApiModelProperty(value = "菜单链接")
private String url;
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "中文名称")
private String chineseName;
@ApiModelProperty(value = "英文名称")
private String englishName;
@ApiModelProperty(value = "权限")
private String permission;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "组件名称")
private String component;
@ApiModelProperty(value = "组件类型0、默认1、amis")
private Integer componentType;
@ApiModelProperty(value = "打开方式0、默认1、iframe2、新标签页")
private Integer openMode;
@ApiModelProperty(value = "是否删除0、未删除1、已删除")
private Integer isDel;
@ApiModelProperty(value = "是否缓存0、不缓存1、缓存")
private Integer keepAlive;
@ApiModelProperty(value = "是否显示0、不显示1、显示")
private Integer isShow;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "描述")
private String remarks;
@TableField(exist = false)
@ApiModelProperty(value = "子级菜单")
private List<SysMenu> children;
}

View File

@ -1,82 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @pathcom.tansci.domain.SysOperLog.java
* @classNameSysOperLog.java
* @description操作日志
* @authortanyp
* @dateTime2023/03/22 11:33
* @editNote
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_oper_log")
@ApiModel(value = "操作日志")
public class SysOperLog {
@ApiModelProperty(value = "主键id")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@ApiModelProperty(value = "功能模块")
private String module;
@ApiModelProperty(value = "操作类型")
private String type;
@ApiModelProperty(value = "操作描述")
private String message;
@ApiModelProperty(value = "请求参数")
private String reqParam;
@ApiModelProperty(value = "响应参数")
private String resParam;
@ApiModelProperty(value = "耗时")
private Long takeUpTime;
@ApiModelProperty(value = "操作用户id")
private String userId;
@ApiModelProperty(value = "状态0、成功1、失败")
private Integer status;
@ApiModelProperty(value = "操作用户名称")
private String userName;
@ApiModelProperty(value = "操作方法")
private String method;
@ApiModelProperty(value = "请求url")
private String uri;
@ApiModelProperty(value = "请求IP")
private String ip;
@ApiModelProperty(value = "版本号")
private String version;
@ApiModelProperty(value = "异常信息")
private String unusual;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime createTime;
}

View File

@ -1,68 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
/**
* @pathcom.tansci.domain.SysOrg.java
* @classNameSysOrg.java
* @description组织
* @authortanyp
* @dateTime2023/03/23 13:35
* @editNote
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_org")
@ApiModel(value = "组织")
public class SysOrg {
@ApiModelProperty(value = "主键id")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@ApiModelProperty(value = "组织名称")
private String name;
@ApiModelProperty(value = "父id")
private String parentId;
@ApiModelProperty(value = "组织编码")
private String code;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "删除状态0、正常1、已删除")
private Integer isDel;
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime updateTime;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime createTime;
@ApiModelProperty(value = "描述")
private String remarks;
@ApiModelProperty(value = "子集")
@TableField(exist = false)
private List<SysOrg> children;
}

View File

@ -1,74 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName SysRole.java
* @ClassPath com.tansci.domain.SysRole.java
* @Description 角色
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_role")
@ApiModel(value = "角色")
public class SysRole {
@TableId(type = IdType.ASSIGN_UUID)
@ApiModelProperty(value = "主键id")
private String id;
@ApiModelProperty(value = "角色名称")
private String name;
@ApiModelProperty(value = "角色编码")
private String code;
@ApiModelProperty(value = "权限0全部1自定义2本级级子级3本级")
private String permission;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否删除0、未删除1、已删除")
private Integer isDel;
@ApiModelProperty(value = "创建人")
private String creator;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "描述")
private String remarks;
@TableField(exist = false)
@ApiModelProperty(value = "菜单权限")
private List<String> menuIds;
@TableField(exist = false)
@ApiModelProperty(value = "数据权限")
private List<String> orgIds;
}

View File

@ -1,32 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SysRoleMenu.java
* @ClassPath com.tansci.domain.SysRoleMenu.java
* @Description 角色和菜单关联表
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_role_menu")
@ApiModel(value = "角色和菜单关联表")
public class SysRoleMenu {
@ApiModelProperty(value = "角色id")
private String roleId;
@ApiModelProperty(value = "菜单id")
private String menuId;
}

View File

@ -1,32 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SysRoleOrg.java
* @ClassPath com.tansci.domain.SysRoleOrg.java
* @Description 用户组织机构关联表
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_role_org")
@ApiModel(value = "用户组织机构关联表")
public class SysRoleOrg {
@ApiModelProperty(value = "角色id")
private String roleId;
@ApiModelProperty(value = "组织机构id")
private String orgId;
}

View File

@ -1,108 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* @pathcom.tansci.domain.SysUser.java
* @classNameSysUser.java
* @description 用户
* @authortanyp
* @dateTime2023/03/20 10:38
* @editNote
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_user")
@ApiModel(value = "用户")
public class SysUser {
@ApiModelProperty(value = "主键ID")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@ApiModelProperty(value = "用户名称")
private String username;
@ApiModelProperty(value = "密码")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户类型1、管理员2、普通用户")
private Integer type;
@ApiModelProperty(value = "手机号")
private String phone;
@ApiModelProperty(value = "头像")
private String avatar;
@ApiModelProperty(value = "性别0、男1、女")
private Integer gender;
@ApiModelProperty(value = "出生日期")
private LocalDate birthday;
@ApiModelProperty(value = "地址")
private String address;
@ApiModelProperty(value = "唯一标识")
private String openId;
@ApiModelProperty(value = "身份证号码")
private String idCard;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "禁止登录0未禁用1已禁用")
private Integer isLogin;
@ApiModelProperty(value = "删除标识0未删除1已删除")
private Integer isDel;
@ApiModelProperty(value = "创建人")
private String createBy;
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime updateTime;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime createTime;
@ApiModelProperty(value = "备注")
private String remarks;
@TableField(exist = false)
@ApiModelProperty(value = "原密码")
private String oldPassword;
@TableField(exist = false)
@ApiModelProperty(value = "角色ID")
private String roleId;
@TableField(exist = false)
@ApiModelProperty(value = "验证码")
private String code;
}

View File

@ -1,32 +0,0 @@
package com.tansci.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SysUserRole.java
* @ClassPath com.tansci.domain.SysUserRole.java
* @Description 用户角色
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_user_role")
@ApiModel(value = "用户角色")
public class SysUserRole {
@ApiModelProperty(value = "角色id")
private String roleId;
@ApiModelProperty(value = "用户id")
private String userId;
}

View File

@ -1,51 +0,0 @@
package com.tansci.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName ColumnsVo.java
* @ClassPath com.tansci.domain.vo.ColumnsVo.java
* @Description 数据列
* @Author tanyp
* @Date 2023/4/23 15:00
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "数据列")
public class ColumnsVo {
@ApiModelProperty(value = "数据库")
private String tableSchema;
@ApiModelProperty(value = "数据表")
private String tableName;
@ApiModelProperty(value = "列名称")
private String columnName;
@ApiModelProperty(value = "列描述")
private String columnComment;
@ApiModelProperty(value = "键值")
private String columnKey;
@ApiModelProperty(value = "数据类型")
private String dataType;
@ApiModelProperty(value = "是否为空")
private String isNullable;
@ApiModelProperty(value = "列类型")
private String columnType;
@ApiModelProperty(value = "列长")
private String columnLength;
}

View File

@ -1,60 +0,0 @@
package com.tansci.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* @ClassName SysMenuVo.java
* @ClassPath com.tansci.domain.SysMenuVo.java
* @Description 菜单
* @Author tanyp
* @Date 2023/03/20 10:38
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "菜单")
public class SysMenuVo {
@ApiModelProperty(value = "主键id")
private String id;
@ApiModelProperty(value = "父菜单ID")
private String parentId;
@ApiModelProperty(value = "菜单名称")
private String name;
@ApiModelProperty(value = "菜单链接")
private String path;
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "组件名称")
private String component;
@ApiModelProperty(value = "组件类型0、默认1、amis")
private Integer componentType;
@ApiModelProperty(value = "是否显示0、不显示1、显示")
private Boolean isShow;
@ApiModelProperty(value = "meta对象")
private Map<String, Object> meta;
@ApiModelProperty(value = "子级菜单")
private List<SysMenuVo> children;
}

View File

@ -1,36 +0,0 @@
package com.tansci.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SysUserSession.java
* @ClassPath com.tansci.domain.vo.SysUserSession.java
* @Description 用户session信息
* @Author tanyp
* @Date 2023/3/29 11:02
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "用户session信息")
public class SysUserSessionVo {
@ApiModelProperty(value = "用户ID")
private String id;
@ApiModelProperty(value = "用户名称")
private String username;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户类型1、管理员2、普通用户")
private Integer type;
}

View File

@ -1,46 +0,0 @@
package com.tansci.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @ClassName SysUserVo.java
* @ClassPath com.tansci.domain.vo.SysUserVo.java
* @Description 用户信息
* @Author tanyp
* @Date 2023/3/29 9:13
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "用户信息")
public class SysUserVo {
@ApiModelProperty(value = "用户名称")
private String username;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户类型1、管理员2、普通用户")
private Integer type;
@ApiModelProperty(value = "头像")
private String avatar;
@ApiModelProperty(value = "token")
private String token;
@ApiModelProperty(value = "登录时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime loginTime;
}

View File

@ -1,33 +0,0 @@
package com.tansci.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName TablesVo.java
* @ClassPath com.tansci.domain.vo.TablesVo.java
* @Description 数据表
* @Author tanyp
* @Date 2023/4/23 14:53
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "数据表")
public class TablesVo {
@ApiModelProperty(value = "数据库")
private String tableSchema;
@ApiModelProperty(value = "数据表")
private String tableName;
@ApiModelProperty(value = "描述")
private String tableComment;
}

View File

@ -1,47 +0,0 @@
package com.tansci.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName UserAuthVo.java
* @ClassPath com.tansci.domain.vo.UserAuthVo.java
* @Description 用户权限信息
* @Author tanyp
* @Date 2023/3/29 9:13
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "用户权限信息")
public class UserAuthVo {
@ApiModelProperty(value = "用户名称")
private String username;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户类型1、管理员2、普通用户")
private Integer type;
@ApiModelProperty(value = "头像")
private String avatar;
@ApiModelProperty(value = "手机号")
private String phone;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "权限code")
private List<String> authorities;
}

View File

@ -1,119 +1,119 @@
package com.tansci.handler;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.tansci.common.constant.Constants;
import com.tansci.common.constant.Enums;
import com.tansci.domain.SysMenu;
import com.tansci.domain.SysRoleMenu;
import com.tansci.domain.SysUserRole;
import com.tansci.domain.vo.SysUserSessionVo;
import com.tansci.service.SysMenuService;
import com.tansci.service.SysRoleMenuService;
import com.tansci.service.SysUserRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName StpInterfaceHandler.java
* @ClassPath com.tansci.handler.StpInterfaceHandler.java
* @Description 自定义权限验证
* @Author tanyp
* @Date 2023/4/7 15:07
**/
@Component
public class StpInterfaceHandler implements StpInterface {
@Autowired
private SysUserRoleService sysUserRoleService;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysMenuService sysMenuService;
/**
* @MonthName getPermissionList
* @Description 返回一个账号所拥有的权限码集合
* @Author tanyp
* @Date 2023/4/7 15:08
* @Param [o, s]
* @return java.util.List<java.lang.String>
**/
@Override
public List<String> getPermissionList(Object loginId, String loginType) {
SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
if (Objects.nonNull(userSession)) {
if (Objects.nonNull(StpUtil.getSession().get(Constants.PERMISSION_KEY))) {
return (List<String>) StpUtil.getSession().get(Constants.PERMISSION_KEY);
}
if (Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
List<SysMenu> menus = sysMenuService.list(
Wrappers.<SysMenu>lambdaQuery()
.eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG)
.ne(SysMenu::getPermission, "")
.isNotNull(SysMenu::getPermission)
);
List<String> permissions = menus.stream().map(SysMenu::getPermission).collect(Collectors.toList());
StpUtil.getSession().set(Constants.PERMISSION_KEY, permissions);
return permissions;
} else {
List<SysUserRole> roles = sysUserRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, StpUtil.getLoginId()));
if (Objects.nonNull(roles) && roles.size() > 0) {
List<String> roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
List<SysRoleMenu> roleMenus = sysRoleMenuService.list(Wrappers.<SysRoleMenu>lambdaQuery().in(SysRoleMenu::getRoleId, roleIds));
if (Objects.nonNull(roleMenus) && roleMenus.size() > 0) {
List<SysMenu> menus = sysMenuService.list(
Wrappers.<SysMenu>lambdaQuery()
.in(SysMenu::getId, roleMenus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()))
.eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG)
.ne(SysMenu::getPermission, "")
.isNotNull(SysMenu::getPermission)
);
List<String> permissions = menus.stream().map(SysMenu::getPermission).collect(Collectors.toList());
StpUtil.getSession().set(Constants.PERMISSION_KEY, permissions);
return permissions;
}
}
}
}
return null;
}
/**
* @MonthName getRoleList
* @Description 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
* @Author tanyp
* @Date 2023/4/7 15:08
* @Param [o, s]
* @return java.util.List<java.lang.String>
**/
@Override
public List<String> getRoleList(Object loginId, String loginType) {
SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
if (Objects.nonNull(userSession)) {
if (Objects.nonNull(StpUtil.getSession().get(Constants.ROLE_KEY))) {
return (List<String>) StpUtil.getSession().get(Constants.ROLE_KEY);
}
if (Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
List<String> roleIds = sysUserRoleService.list().stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
StpUtil.getSession().set(Constants.ROLE_KEY, roleIds);
return roleIds;
} else {
List<SysUserRole> roles = sysUserRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, StpUtil.getLoginId()));
if (Objects.nonNull(roles) && roles.size() > 0) {
List<String> roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
StpUtil.getSession().set(Constants.ROLE_KEY, roleIds);
return roleIds;
}
}
}
return null;
}
}
//package com.tansci.handler;
//
//import cn.dev33.satoken.stp.StpInterface;
//import cn.dev33.satoken.stp.StpUtil;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.tansci.common.constant.Constants;
//import com.tansci.common.constant.Enums;
//import com.tansci.domain.SysMenu;
//import com.tansci.domain.SysRoleMenu;
//import com.tansci.domain.SysUserRole;
//import com.tansci.domain.vo.SysUserSessionVo;
//import com.tansci.service.SysMenuService;
//import com.tansci.service.SysRoleMenuService;
//import com.tansci.service.SysUserRoleService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//import java.util.Objects;
//import java.util.stream.Collectors;
//
///**
// * @ClassName StpInterfaceHandler.java
// * @ClassPath com.tansci.handler.StpInterfaceHandler.java
// * @Description 自定义权限验证
// * @Author tanyp
// * @Date 2023/4/7 15:07
// **/
//@Component
//public class StpInterfaceHandler implements StpInterface {
//
// @Autowired
// private SysUserRoleService sysUserRoleService;
// @Autowired
// private SysRoleMenuService sysRoleMenuService;
// @Autowired
// private SysMenuService sysMenuService;
//
// /**
// * @MonthName getPermissionList
// * @Description 返回一个账号所拥有的权限码集合
// * @Author tanyp
// * @Date 2023/4/7 15:08
// * @Param [o, s]
// * @return java.util.List<java.lang.String>
// **/
// @Override
// public List<String> getPermissionList(Object loginId, String loginType) {
// SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
// if (Objects.nonNull(userSession)) {
// if (Objects.nonNull(StpUtil.getSession().get(Constants.PERMISSION_KEY))) {
// return (List<String>) StpUtil.getSession().get(Constants.PERMISSION_KEY);
// }
//
// if (Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
// List<SysMenu> menus = sysMenuService.list(
// Wrappers.<SysMenu>lambdaQuery()
// .eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG)
// .ne(SysMenu::getPermission, "")
// .isNotNull(SysMenu::getPermission)
// );
// List<String> permissions = menus.stream().map(SysMenu::getPermission).collect(Collectors.toList());
// StpUtil.getSession().set(Constants.PERMISSION_KEY, permissions);
// return permissions;
// } else {
// List<SysUserRole> roles = sysUserRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, StpUtil.getLoginId()));
// if (Objects.nonNull(roles) && roles.size() > 0) {
// List<String> roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
// List<SysRoleMenu> roleMenus = sysRoleMenuService.list(Wrappers.<SysRoleMenu>lambdaQuery().in(SysRoleMenu::getRoleId, roleIds));
// if (Objects.nonNull(roleMenus) && roleMenus.size() > 0) {
// List<SysMenu> menus = sysMenuService.list(
// Wrappers.<SysMenu>lambdaQuery()
// .in(SysMenu::getId, roleMenus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()))
// .eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG)
// .ne(SysMenu::getPermission, "")
// .isNotNull(SysMenu::getPermission)
// );
// List<String> permissions = menus.stream().map(SysMenu::getPermission).collect(Collectors.toList());
// StpUtil.getSession().set(Constants.PERMISSION_KEY, permissions);
// return permissions;
// }
// }
// }
// }
// return null;
// }
//
// /**
// * @MonthName getRoleList
// * @Description 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
// * @Author tanyp
// * @Date 2023/4/7 15:08
// * @Param [o, s]
// * @return java.util.List<java.lang.String>
// **/
// @Override
// public List<String> getRoleList(Object loginId, String loginType) {
// SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
// if (Objects.nonNull(userSession)) {
// if (Objects.nonNull(StpUtil.getSession().get(Constants.ROLE_KEY))) {
// return (List<String>) StpUtil.getSession().get(Constants.ROLE_KEY);
// }
//
// if (Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
// List<String> roleIds = sysUserRoleService.list().stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
// StpUtil.getSession().set(Constants.ROLE_KEY, roleIds);
// return roleIds;
// } else {
// List<SysUserRole> roles = sysUserRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, StpUtil.getLoginId()));
// if (Objects.nonNull(roles) && roles.size() > 0) {
// List<String> roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
// StpUtil.getSession().set(Constants.ROLE_KEY, roleIds);
// return roleIds;
// }
// }
// }
// return null;
// }
//}

View File

@ -1,30 +0,0 @@
package com.tansci.mapper;
import com.tansci.domain.vo.ColumnsVo;
import com.tansci.domain.vo.TablesVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @ClassName DataSourceMapper.java
* @ClassPath com.tansci.mapper.DataSourceMapper.java
* @Description数据源
* @Author tanyp
* @Date 2023/4/23 14:44
**/
@Mapper
public interface DataSourceMapper {
@Select("select table_schema,table_name,table_comment from information_schema.tables where table_schema = #{sourceName}")
List<TablesVo> tables(@Param("sourceName") String sourceName);
@Select("select table_schema,table_name,column_name,column_comment,column_key,column_type,data_type,is_nullable,CHARACTER_MAXIMUM_LENGTH as columnLength from information_schema.columns where table_name = #{tableName}")
List<ColumnsVo> columns(@Param("tableName") String tableName);
@Select("select column_name from information_schema.columns where table_name = #{tableName} and column_key = 'PRI' and table_schema = database() limit 1")
String primary(@Param("tableName") String tableName);
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.LcPages;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName LcPagesMapper.java
* @ClassPath com.tansci.mapper.LcPagesMapper.java
* @Description 页面管理
* @Author tanyp
* @Date 2023/5/11 8:56
**/
@Mapper
public interface LcPagesMapper extends BaseMapper<LcPages> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.LcPagesMenu;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName LcPagesMenuMapper.java
* @ClassPath com.tansci.mapper.LcPagesMenuMapper.java
* @Description 页面菜单关系
* @Author tanyp
* @Date 2023/5/11 9:06
**/
@Mapper
public interface LcPagesMenuMapper extends BaseMapper<LcPagesMenu> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysDict;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysDictMapper.java
* @ClassPath com.tansci.mapper.SysDictMapper.java
* @Description 字典信息
* @Author tanyp
* @Date 2023/3/29 9:28
**/
@Mapper
public interface SysDictMapper extends BaseMapper<SysDict> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysLoginLog;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysLoginLogMapper.java
* @ClassPath com.tansci.mapper.SysLoginLogMapper.java
* @Description 登录日志
* @Author tanyp
* @Date 2023/3/29 9:29
**/
@Mapper
public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysMenu;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysMenuMapper.java
* @ClassPath com.tansci.mapper.SysMenuMapper.java
* @Description 菜单信息
* @Author tanyp
* @Date 2023/3/29 9:26
**/
@Mapper
public interface SysMenuMapper extends BaseMapper<SysMenu> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysOperLog;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysOperLogMapper.java
* @ClassPath com.tansci.mapper.SysOperLogMapper.java
* @Description 操作日志
* @Author tanyp
* @Date 2023/3/29 9:29
**/
@Mapper
public interface SysOperLogMapper extends BaseMapper<SysOperLog> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysOrg;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysOrgMapper.java
* @ClassPath com.tansci.mapper.SysOrgMapper.java
* @Description 组织机构
* @Author tanyp
* @Date 2023/3/29 9:27
**/
@Mapper
public interface SysOrgMapper extends BaseMapper<SysOrg> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysRole;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysRoleMapper.java
* @ClassPath com.tansci.mapper.SysRoleMapper.java
* @Description 角色信息
* @Author tanyp
* @Date 2023/3/29 9:25
**/
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysRoleMenu;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysRoleMenuMapper.java
* @ClassPath com.tansci.mapper.SysRoleMenuMapper.java
* @Description 菜单角色
* @Author tanyp
* @Date 2023/3/29 9:30
**/
@Mapper
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysRoleOrg;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysRoleOrgMapper.java
* @ClassPath com.tansci.mapper.SysRoleOrgMapper.java
* @Description 组织角色
* @Author tanyp
* @Date 2023/3/29 9:30
**/
@Mapper
public interface SysRoleOrgMapper extends BaseMapper<SysRoleOrg> {
}

View File

@ -1,31 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @ClassName SysUserMapper.java
* @ClassPath com.tansci.mapper.SysUserMapper.java
* @Description 用户信息
* @Author tanyp
* @Date 2023/3/20 15:50
**/
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
@Select("SELECT DISTINCT sm.permission\n" +
"FROM sys_menu sm\n" +
"right JOIN sys_role_menu srm ON sm.id = srm.menu_id\n" +
"right JOIN sys_user_role sur ON sur.role_id = srm.role_id\n" +
"right JOIN sys_user su ON su.id = sur.user_id AND su.id = #{userId} AND su.is_del = 0\n" +
"WHERE sm.is_del = 0\n" +
"AND sm.permission != ''\n" +
"AND sm.permission IS NOT NULL")
List<String> authorities(@Param("userId") String userId);
}

View File

@ -1,16 +0,0 @@
package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysUserRole;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassName SysUserRoleMapper.java
* @ClassPath com.tansci.mapper.SysUserRoleMapper.java
* @Description 用户权限
* @Author tanyp
* @Date 2023/3/29 9:30
**/
@Mapper
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
}

View File

@ -1,23 +0,0 @@
package com.tansci.service;
import com.tansci.domain.vo.ColumnsVo;
import com.tansci.domain.vo.TablesVo;
import java.util.List;
/**
* @ClassName DataSourceService.java
* @ClassPath com.tansci.service.DataSourceService.java
* @Description 数据源
* @Author tanyp
* @Date 2023/4/23 15:20
**/
public interface DataSourceService {
List<TablesVo> tables(String sourceName);
List<ColumnsVo> columns(String tableName);
String primary(String tableName);
}

View File

@ -1,14 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.LcPagesMenu;
/**
* @ClassName LcPagesMenuService.java
* @ClassPath com.tansci.service.LcPagesMenuService.java
* @Description 页面菜单关系
* @Author tanyp
* @Date 2023/5/11 9:07
**/
public interface LcPagesMenuService extends IService<LcPagesMenu> {
}

View File

@ -1,27 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.LcPages;
/**
* @ClassName LcPagesSerice.java
* @ClassPath com.tansci.service.LcPagesSerice.java
* @Description 页面管理
* @Author tanyp
* @Date 2023/5/11 8:56
**/
public interface LcPagesSerice extends IService<LcPages> {
IPage<LcPages> page(Page page, LcPages pages);
LcPages getPagesInfo(String menuId);
Object bindMenu(LcPages pages);
Object delete(String id);
Object batchDelete(LcPages pages);
}

View File

@ -1,22 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysDict;
import java.util.List;
/**
* @ClassName SysDictService.java
* @ClassPath com.tansci.service.SysDictService.java
* @Description 字典信息
* @Author tanyp
* @Date 2023/3/29 9:33
**/
public interface SysDictService extends IService<SysDict> {
List<SysDict> tree(SysDict dict);
List<SysDict> list(SysDict dict);
Object delete(String id);
}

View File

@ -1,19 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysLoginLog;
/**
* @ClassName SysLoginLogService.java
* @ClassPath com.tansci.service.SysLoginLogService.java
* @Description 登录日志
* @Author tanyp
* @Date 2023/3/29 9:34
**/
public interface SysLoginLogService extends IService<SysLoginLog> {
IPage<SysLoginLog> onlineUser(Page page, String username);
}

View File

@ -1,24 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysMenu;
import com.tansci.domain.vo.SysMenuVo;
import java.util.List;
/**
* @ClassName SysMenuService.java
* @ClassPath com.tansci.service.SysMenuService.java
* @Description 菜单信息
* @Author tanyp
* @Date 2023/3/29 9:35
**/
public interface SysMenuService extends IService<SysMenu> {
List<SysMenu> tree(SysMenu menu);
List<SysMenuVo> menus();
Object delete(String id);
}

View File

@ -1,14 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysOperLog;
/**
* @ClassName SysOperLogService.java
* @ClassPath com.tansci.service.SysOperLogService.java
* @Description 操作日志
* @Author tanyp
* @Date 2023/3/29 9:35
**/
public interface SysOperLogService extends IService<SysOperLog> {
}

View File

@ -1,21 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysOrg;
import java.util.List;
/**
* @ClassName SysOrgService.java
* @ClassPath com.tansci.service.SysOrgService.java
* @Description 组织信息
* @Author tanyp
* @Date 2023/3/29 9:36
**/
public interface SysOrgService extends IService<SysOrg> {
List<SysOrg> list(SysOrg org);
Object delete(String id);
}

View File

@ -1,14 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysRoleMenu;
/**
* @ClassName SysRoleMenuService.java
* @ClassPath com.tansci.service.SysRoleMenuService.java
* @Description 菜单角色
* @Author tanyp
* @Date 2023/3/29 10:26
**/
public interface SysRoleMenuService extends IService<SysRoleMenu> {
}

View File

@ -1,14 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysRoleOrg;
/**
* @ClassName SysRoleOrgService.java
* @ClassPath com.tansci.service.SysRoleOrgService.java
* @Description 组织权限
* @Author tanyp
* @Date 2023/4/11 13:36
**/
public interface SysRoleOrgService extends IService<SysRoleOrg> {
}

View File

@ -1,37 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysRole;
import java.util.List;
/**
* @ClassName SysRoleService.java
* @ClassPath com.tansci.service.SysRoleService.java
* @Description 角色信息
* @Author tanyp
* @Date 2023/3/29 9:37
**/
public interface SysRoleService extends IService<SysRole> {
IPage<SysRole> page(Page page, SysRole role);
List<SysRole> list(SysRole role);
Object insert(SysRole role);
Object update(SysRole role);
Object delete(String id);
Object dataPermissions(SysRole role);
Object orgList(String roleId);
Object menuPermissions(SysRole role);
Object menuList(String roleId);
}

View File

@ -1,14 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysUserRole;
/**
* @ClassName SysUserRoleService.java
* @ClassPath com.tansci.service.SysUserRoleService.java
* @Description 用户角色
* @Author tanyp
* @Date 2023/3/29 10:04
**/
public interface SysUserRoleService extends IService<SysUserRole> {
}

View File

@ -1,38 +0,0 @@
package com.tansci.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tansci.domain.SysUser;
import com.tansci.domain.vo.SysUserVo;
import com.tansci.domain.vo.UserAuthVo;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @ClassName SysUserService.java
* @ClassPath com.tansci.service.SysUserService.java
* @Description 用户信息
* @Author tanyp
* @Date 2023/3/20 15:51
**/
public interface SysUserService extends IService<SysUser> {
IPage<SysUser> page(Page page, SysUser user);
List<SysUser> list(SysUser user);
UserAuthVo info();
Object insert(SysUser user);
Object update(SysUser user);
Object del(String id);
SysUserVo login(HttpServletRequest request, SysUser user);
Object modifyPass(SysUser user);
}

View File

@ -1,41 +0,0 @@
package com.tansci.service.impl;
import com.tansci.domain.vo.ColumnsVo;
import com.tansci.domain.vo.TablesVo;
import com.tansci.mapper.DataSourceMapper;
import com.tansci.service.DataSourceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName DataSourceServiceImpl.java
* @ClassPath com.tansci.service.impl.DataSourceServiceImpl.java
* @Description 数据源
* @Author tanyp
* @Date 2023/4/23 15:20
**/
@Slf4j
@Service
public class DataSourceServiceImpl implements DataSourceService {
@Autowired
private DataSourceMapper dataSourceMapper;
@Override
public List<TablesVo> tables(String sourceName) {
return dataSourceMapper.tables(sourceName);
}
@Override
public List<ColumnsVo> columns(String tableName) {
return dataSourceMapper.columns(tableName);
}
@Override
public String primary(String tableName) {
return dataSourceMapper.primary(tableName);
}
}

View File

@ -1,20 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.domain.LcPagesMenu;
import com.tansci.mapper.LcPagesMenuMapper;
import com.tansci.service.LcPagesMenuService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @ClassName LcPagesMenuServiceImpl.java
* @ClassPath com.tansci.service.impl.LcPagesMenuServiceImpl.java
* @Description 页面菜单关系
* @Author tanyp
* @Date 2023/5/11 9:07
**/
@Slf4j
@Service
public class LcPagesMenuServiceImpl extends ServiceImpl<LcPagesMenuMapper, LcPagesMenu> implements LcPagesMenuService {
}

View File

@ -1,98 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.common.exception.BusinessException;
import com.tansci.domain.LcPages;
import com.tansci.domain.LcPagesMenu;
import com.tansci.mapper.LcPagesMapper;
import com.tansci.service.LcPagesMenuService;
import com.tansci.service.LcPagesSerice;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName LcPagesServiceImpl.java
* @ClassPath com.tansci.service.impl.LcPagesServiceImpl.java
* @Description 页面管理
* @Author tanyp
* @Date 2023/5/11 8:57
**/
@Slf4j
@Service
public class LcPagesServiceImpl extends ServiceImpl<LcPagesMapper, LcPages> implements LcPagesSerice {
@Autowired
private LcPagesMenuService lcPagesMenuService;
@Override
public IPage<LcPages> page(Page page, LcPages pages) {
IPage<LcPages> iPage = this.baseMapper.selectPage(page,
Wrappers.<LcPages>lambdaQuery()
.eq(Objects.nonNull(pages.getStatus()), LcPages::getStatus, pages.getStatus())
.eq(Objects.nonNull(pages.getParentId()), LcPages::getParentId, pages.getParentId())
.eq(Objects.nonNull(pages.getCreatorId()), LcPages::getCreatorId, pages.getCreatorId())
.like(Objects.nonNull(pages.getTitle()), LcPages::getTitle, pages.getTitle())
.orderByDesc(LcPages::getUpdateTime)
);
if (Objects.nonNull(iPage.getRecords()) && iPage.getRecords().size() > 0) {
List<LcPagesMenu> menus = lcPagesMenuService.list(Wrappers.<LcPagesMenu>lambdaQuery().in(LcPagesMenu::getPagesId, iPage.getRecords().stream().map(LcPages::getId).collect(Collectors.toList())));
iPage.getRecords().forEach(item -> {
item.setMenuIds(menus.stream().filter(i -> Objects.equals(i.getPagesId(), item.getId())).map(LcPagesMenu::getMenuId).collect(Collectors.toList()));
});
}
return iPage;
}
@Override
public LcPages getPagesInfo(String menuId) {
LcPagesMenu pagesMenu = lcPagesMenuService.getOne(Wrappers.<LcPagesMenu>lambdaQuery().eq(LcPagesMenu::getMenuId, menuId));
if (Objects.isNull(pagesMenu)) {
throw new BusinessException("该菜单未绑定页面");
}
return this.baseMapper.selectById(pagesMenu.getPagesId());
}
@Override
@Transactional
public Object bindMenu(LcPages pages) {
lcPagesMenuService.remove(Wrappers.<LcPagesMenu>lambdaQuery().eq(LcPagesMenu::getPagesId, pages.getId()));
if (Objects.nonNull(pages.getMenuIds()) && pages.getMenuIds().size() > 0) {
lcPagesMenuService.remove(Wrappers.<LcPagesMenu>lambdaQuery().in(LcPagesMenu::getMenuId, pages.getMenuIds()));
List<LcPagesMenu> menus = Lists.newArrayList();
pages.getMenuIds().forEach(item -> {
menus.add(
LcPagesMenu.builder().pagesId(pages.getId()).menuId(item).build()
);
});
lcPagesMenuService.saveBatch(menus);
}
return "ok";
}
@Override
@Transactional
public Object delete(String id) {
lcPagesMenuService.remove(Wrappers.<LcPagesMenu>lambdaQuery().eq(LcPagesMenu::getPagesId, id));
return this.baseMapper.deleteById(id);
}
@Override
@Transactional
public Object batchDelete(LcPages pages) {
lcPagesMenuService.remove(Wrappers.<LcPagesMenu>lambdaQuery().in(LcPagesMenu::getPagesId, pages.getIds()));
return this.baseMapper.deleteBatchIds(pages.getIds());
}
}

View File

@ -1,62 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.tansci.domain.SysDict;
import com.tansci.mapper.SysDictMapper;
import com.tansci.service.SysDictService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName SysDictServiceImpl.java
* @ClassPath com.tansci.service.impl.SysDictServiceImpl.java
* @Description 字典信息
* @Author tanyp
* @Date 2023/3/29 9:39
**/
@Slf4j
@Service
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
@Override
public List<SysDict> tree(SysDict dict) {
List<SysDict> list = this.baseMapper.selectList(
Wrappers.<SysDict>lambdaQuery()
.eq(Objects.nonNull(dict.getParentId()), SysDict::getParentId, dict.getParentId())
.eq(Objects.nonNull(dict.getGroupName()), SysDict::getGroupName, dict.getGroupName())
.eq(Objects.nonNull(dict.getDicValue()), SysDict::getDicValue, dict.getDicValue())
.orderByDesc(SysDict::getUpdateTime)
);
list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysDict::getId))), ArrayList::new));
Map<String, List<SysDict>> map = list.stream().collect(Collectors.groupingBy(SysDict::getParentId, Collectors.toList()));
list.stream().forEach(item -> item.setChildren(map.get(item.getId())));
List<SysDict> orgList = map.get("0").stream().sorted(Comparator.comparing(SysDict::getSort)).collect(Collectors.toList());
return orgList;
}
@Override
public List<SysDict> list(SysDict dict) {
return this.baseMapper.selectList(
Wrappers.<SysDict>lambdaQuery()
.eq(Objects.nonNull(dict.getParentId()), SysDict::getParentId, dict.getParentId())
.eq(Objects.nonNull(dict.getGroupName()), SysDict::getGroupName, dict.getGroupName())
.eq(Objects.nonNull(dict.getDicValue()), SysDict::getDicValue, dict.getDicValue())
.orderByDesc(SysDict::getUpdateTime)
);
}
@Override
public Object delete(String id) {
List<SysDict> orgs = this.baseMapper.selectList(Wrappers.<SysDict>lambdaQuery().eq(SysDict::getParentId, id));
List<String> ids = Lists.newArrayList(id);
ids.addAll(orgs.stream().map(SysDict::getId).collect(Collectors.toList()));
return this.baseMapper.deleteBatchIds(ids);
}
}

View File

@ -1,42 +0,0 @@
package com.tansci.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.domain.SysLoginLog;
import com.tansci.mapper.SysLoginLogMapper;
import com.tansci.service.SysLoginLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName SysLoginLogServiceImpl.java
* @ClassPath com.tansci.service.impl.SysLoginLogServiceImpl.java
* @Description 登录日志
* @Author tanyp
* @Date 2023/3/29 9:40
**/
@Slf4j
@Service
public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements SysLoginLogService {
@Override
public IPage<SysLoginLog> onlineUser(Page page, String username) {
List<String> tokens = StpUtil.searchTokenValue("", -1, 99999, true);
if (Objects.nonNull(tokens) && tokens.size() > 0) {
return this.baseMapper.selectPage(page,
Wrappers.<SysLoginLog>lambdaQuery()
.in(SysLoginLog::getToken, tokens.stream().map(item -> item.replace("token:login:token:", "")).collect(Collectors.toList()))
.eq(Objects.nonNull(username), SysLoginLog::getUsername, username)
);
}
return new Page<>();
}
}

View File

@ -1,149 +0,0 @@
package com.tansci.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.tansci.common.constant.Constants;
import com.tansci.common.constant.Enums;
import com.tansci.domain.SysMenu;
import com.tansci.domain.SysRoleMenu;
import com.tansci.domain.vo.SysMenuVo;
import com.tansci.domain.vo.SysUserSessionVo;
import com.tansci.mapper.SysMenuMapper;
import com.tansci.service.SysMenuService;
import com.tansci.service.SysRoleMenuService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName SysMenuServiceImpl.java
* @ClassPath com.tansci.service.impl.SysMenuServiceImpl.java
* @Description 菜单信息
* @Author tanyp
* @Date 2023/3/29 9:41
**/
@Slf4j
@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Override
public List<SysMenu> tree(SysMenu menu) {
List<String> menuIds = Lists.newArrayList();
SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
if (Objects.nonNull(userSession) && Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
menuIds.addAll(this.list().stream().map(SysMenu::getId).collect(Collectors.toList()));
} else {
List<SysRoleMenu> menus = sysRoleMenuService.list(Wrappers.<SysRoleMenu>lambdaQuery().
in(Objects.nonNull(StpUtil.getRoleList()) && StpUtil.getRoleList().size() > 0, SysRoleMenu::getRoleId, StpUtil.getRoleList())
);
menuIds.addAll(menus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()));
}
if (Objects.isNull(menuIds) || menuIds.size() == 0) {
return Lists.newArrayList();
}
List<SysMenu> list = this.baseMapper.selectList(
Wrappers.<SysMenu>lambdaQuery()
.eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG)
.in(Objects.nonNull(menuIds) && menuIds.size() > 0, SysMenu::getId, menuIds)
.eq(Objects.nonNull(menu.getParentId()), SysMenu::getParentId, menu.getParentId())
.eq(Objects.nonNull(menu.getIsShow()), SysMenu::getIsShow, menu.getIsShow())
.like(Objects.nonNull(menu.getName()), SysMenu::getName, menu.getName())
.like(Objects.nonNull(menu.getChineseName()), SysMenu::getChineseName, menu.getChineseName())
.orderByDesc(SysMenu::getUpdateTime)
);
if (Objects.isNull(list) || list.size() == 0) {
return Lists.newArrayList();
}
list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysMenu::getId))), ArrayList::new));
Map<String, List<SysMenu>> map = list.stream().collect(Collectors.groupingBy(SysMenu::getParentId, Collectors.toList()));
list.stream().forEach(item -> item.setChildren(map.get(item.getId())));
List<SysMenu> menuList = map.get("0").stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
return menuList;
}
@Override
public List<SysMenuVo> menus() {
List<String> menuIds = Lists.newArrayList();
SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
if (Objects.nonNull(userSession) && Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
menuIds.addAll(this.list().stream().map(SysMenu::getId).collect(Collectors.toList()));
} else {
List<SysRoleMenu> menus = sysRoleMenuService.list(Wrappers.<SysRoleMenu>lambdaQuery().
in(Objects.nonNull(StpUtil.getRoleList()) && StpUtil.getRoleList().size() > 0, SysRoleMenu::getRoleId, StpUtil.getRoleList())
);
menuIds.addAll(menus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()));
}
if (Objects.isNull(menuIds) || menuIds.size() == 0) {
return Lists.newArrayList();
}
List<SysMenu> list = this.baseMapper.selectList(
Wrappers.<SysMenu>lambdaQuery()
.eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG)
.eq(SysMenu::getIsShow, 1)
.in(Objects.nonNull(menuIds) && menuIds.size() > 0, SysMenu::getId, menuIds)
.orderByAsc(SysMenu::getSort)
);
if (Objects.isNull(list) || list.size() == 0) {
return Lists.newArrayList();
}
List<SysMenuVo> newList = new ArrayList<>();
for (SysMenu menu : list) {
Map<String, Object> meta = new HashMap<>();
meta.put("title", menu.getChineseName());
meta.put("keepAlive", Objects.equals(1, menu.getKeepAlive()) ? true : false);
meta.put("isShow", Objects.equals(1, menu.getIsShow()) ? true : false);
meta.put("id", menu.getId());
meta.put("openMode", menu.getOpenMode());
meta.put("type", menu.getComponentType());
newList.add(
SysMenuVo.builder()
.id(menu.getId())
.parentId(menu.getParentId())
.name(menu.getName())
.path(menu.getUrl())
.icon(menu.getIcon())
.sort(menu.getSort())
.component(Objects.nonNull(menu.getComponent()) && menu.getComponent().length() > 0 ? menu.getComponent() : "Layout")
.componentType(menu.getComponentType())
.isShow(Objects.equals(1, menu.getIsShow()) ? true : false)
.meta(meta)
.build()
);
}
newList = newList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysMenuVo::getId))), ArrayList::new));
Map<String, List<SysMenuVo>> map = newList.stream().collect(Collectors.groupingBy(SysMenuVo::getParentId, Collectors.toList()));
newList.stream().forEach(item -> item.setChildren(map.get(item.getId())));
List<SysMenuVo> menuList = map.get("0").stream().sorted(Comparator.comparing(SysMenuVo::getSort)).collect(Collectors.toList());
return menuList;
}
@Override
public Object delete(String id) {
List<SysMenu> menus = this.baseMapper.selectList(Wrappers.<SysMenu>lambdaQuery().eq(SysMenu::getParentId, id));
List<String> ids = Lists.newArrayList(id);
ids.addAll(menus.stream().map(SysMenu::getId).collect(Collectors.toList()));
int row = this.baseMapper.deleteBatchIds(ids);
if (row > 0) {
sysRoleMenuService.remove(Wrappers.<SysRoleMenu>lambdaQuery().in(SysRoleMenu::getMenuId, ids));
}
return row;
}
}

View File

@ -1,20 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.domain.SysOperLog;
import com.tansci.mapper.SysOperLogMapper;
import com.tansci.service.SysOperLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @ClassName SysOperLogServiceImpl.java
* @ClassPath com.tansci.service.impl.SysOperLogServiceImpl.java
* @Description 操作日志
* @Author tanyp
* @Date 2023/3/29 9:42
**/
@Slf4j
@Service
public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog> implements SysOperLogService {
}

View File

@ -1,81 +0,0 @@
package com.tansci.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.tansci.common.constant.Constants;
import com.tansci.common.constant.Enums;
import com.tansci.domain.SysOrg;
import com.tansci.domain.SysRoleOrg;
import com.tansci.domain.vo.SysUserSessionVo;
import com.tansci.mapper.SysOrgMapper;
import com.tansci.service.SysOrgService;
import com.tansci.service.SysRoleOrgService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName SysOrgServiceImpl.java
* @ClassPath com.tansci.service.impl.SysOrgServiceImpl.java
* @Description 组织信息
* @Author tanyp
* @Date 2023/3/29 9:43
**/
@Slf4j
@Service
public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> implements SysOrgService {
@Autowired
private SysRoleOrgService sysRoleOrgService;
@Override
public List<SysOrg> list(SysOrg org) {
List<String> orgIds = Lists.newArrayList();
SysUserSessionVo userSession = (SysUserSessionVo) StpUtil.getSession().get(StpUtil.getLoginId().toString());
if (Objects.nonNull(userSession) && Objects.equals(Enums.USER_TYPE_1.getKey(), userSession.getType())) {
orgIds.addAll(this.baseMapper.selectList(Wrappers.lambdaQuery()).stream().map(SysOrg::getId).collect(Collectors.toList()));
} else {
List<SysRoleOrg> menus = sysRoleOrgService.list(Wrappers.<SysRoleOrg>lambdaQuery().
in(Objects.nonNull(StpUtil.getRoleList()) && StpUtil.getRoleList().size() > 0, SysRoleOrg::getRoleId, StpUtil.getRoleList())
);
orgIds.addAll(menus.stream().map(SysRoleOrg::getOrgId).collect(Collectors.toList()));
}
if (Objects.isNull(orgIds) || orgIds.size() == 0) {
return Lists.newArrayList();
}
List<SysOrg> list = this.baseMapper.selectList(
Wrappers.<SysOrg>lambdaQuery()
.eq(SysOrg::getIsDel, Constants.NOT_DEL_FALG)
.in(Objects.nonNull(orgIds) && orgIds.size() > 0, SysOrg::getId, orgIds)
.eq(Objects.nonNull(org.getParentId()), SysOrg::getParentId, org.getParentId())
.eq(Objects.nonNull(org.getCode()), SysOrg::getCode, org.getCode())
.like(Objects.nonNull(org.getName()), SysOrg::getName, org.getName())
.orderByDesc(SysOrg::getUpdateTime)
);
list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysOrg::getId))), ArrayList::new));
Map<String, List<SysOrg>> map = list.stream().collect(Collectors.groupingBy(SysOrg::getParentId, Collectors.toList()));
list.stream().forEach(item -> item.setChildren(map.get(item.getId())));
List<SysOrg> orgList = map.get("0").stream().sorted(Comparator.comparing(SysOrg::getSort)).collect(Collectors.toList());
return orgList;
}
@Override
public Object delete(String id) {
List<SysOrg> orgs = this.baseMapper.selectList(Wrappers.<SysOrg>lambdaQuery().eq(SysOrg::getParentId, id));
List<String> ids = Lists.newArrayList(id);
ids.addAll(orgs.stream().map(SysOrg::getId).collect(Collectors.toList()));
int row = this.baseMapper.deleteBatchIds(ids);
if (row > 0) {
sysRoleOrgService.remove(Wrappers.<SysRoleOrg>lambdaQuery().in(SysRoleOrg::getOrgId, ids));
}
return row;
}
}

View File

@ -1,20 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.domain.SysRoleMenu;
import com.tansci.mapper.SysRoleMenuMapper;
import com.tansci.service.SysRoleMenuService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @ClassName SysRoleMenuServiceImpl.java
* @ClassPath com.tansci.service.impl.SysRoleMenuServiceImpl.java
* @Description 菜单权限
* @Author tanyp
* @Date 2023/3/29 10:26
**/
@Slf4j
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
}

View File

@ -1,20 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.domain.SysRoleOrg;
import com.tansci.mapper.SysRoleOrgMapper;
import com.tansci.service.SysRoleOrgService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @ClassName SysRoleOrgServiceImpl.java
* @ClassPath com.tansci.service.impl.SysRoleOrgServiceImpl.java
* @Description 组织权限
* @Author tanyp
* @Date 2023/4/11 13:36
**/
@Slf4j
@Service
public class SysRoleOrgServiceImpl extends ServiceImpl<SysRoleOrgMapper, SysRoleOrg> implements SysRoleOrgService {
}

View File

@ -1,132 +0,0 @@
package com.tansci.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.common.constant.Constants;
import com.tansci.domain.*;
import com.tansci.mapper.SysRoleMapper;
import com.tansci.service.*;
import com.tansci.utils.UUIDUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName SysRoleServiceImpl.java
* @ClassPath com.tansci.service.impl.SysRoleServiceImpl.java
* @Description 权限信息
* @Author tanyp
* @Date 2023/3/29 9:44
**/
@Slf4j
@Service
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysMenuService sysMenuService;
@Autowired
private SysRoleOrgService sysRoleOrgService;
@Autowired
private SysOrgService sysOrgService;
@Override
public IPage<SysRole> page(Page page, SysRole role) {
return this.baseMapper.selectPage(page,
Wrappers.<SysRole>lambdaQuery().eq(SysRole::getIsDel, Constants.NOT_DEL_FALG)
.eq(Objects.nonNull(role.getCode()), SysRole::getCode, role.getCode())
.eq(Objects.nonNull(role.getCreator()), SysRole::getCreator, role.getCreator())
.like(Objects.nonNull(role.getName()), SysRole::getName, role.getName())
.orderByDesc(SysRole::getUpdateTime)
);
}
@Override
public List<SysRole> list(SysRole role) {
return this.baseMapper.selectList(
Wrappers.<SysRole>lambdaQuery().eq(SysRole::getIsDel, Constants.NOT_DEL_FALG)
.eq(Objects.nonNull(role.getCode()), SysRole::getCode, role.getCode())
.eq(Objects.nonNull(role.getCreator()), SysRole::getCreator, role.getCreator())
.like(Objects.nonNull(role.getName()), SysRole::getName, role.getName())
.orderByDesc(SysRole::getUpdateTime)
);
}
@Override
public Object insert(SysRole role) {
role.setCreator(String.valueOf(StpUtil.getLoginId()));
role.setCode("SR"+UUIDUtils.getUUID(10).toUpperCase());
role.setIsDel(Constants.NOT_DEL_FALG);
role.setUpdateTime(LocalDateTime.now());
role.setCreateTime(LocalDateTime.now());
return this.baseMapper.insert(role);
}
@Override
public Object update(SysRole role) {
role.setUpdateTime(LocalDateTime.now());
return this.baseMapper.updateById(role);
}
@Override
public Object delete(String id) {
int row = this.baseMapper.deleteById(id);
if (row > 0) {
sysRoleMenuService.remove(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, id));
sysRoleOrgService.remove(Wrappers.<SysRoleOrg>lambdaQuery().eq(SysRoleOrg::getRoleId, id));
}
return row;
}
@Override
public Object dataPermissions(SysRole role) {
sysRoleOrgService.remove(Wrappers.<SysRoleOrg>lambdaQuery().eq(SysRoleOrg::getRoleId, role.getId()));
List<SysRoleOrg> orgs = new ArrayList<>();
role.getOrgIds().forEach(item -> {
orgs.add(SysRoleOrg.builder().roleId(role.getId()).orgId(item).build());
});
return sysRoleOrgService.saveBatch(orgs);
}
@Override
public Object orgList(String roleId) {
Map<String, Object> map = new HashMap<>();
map.put("list", sysOrgService.list(SysOrg.builder().build()));
List<SysRoleOrg> orgs = sysRoleOrgService.list(Wrappers.<SysRoleOrg>lambdaQuery().eq(SysRoleOrg::getRoleId, roleId));
if (Objects.nonNull(orgs) && orgs.size() > 0) {
map.put("selected", orgs.stream().map(SysRoleOrg::getOrgId).collect(Collectors.toList()));
}
return map;
}
@Override
public Object menuPermissions(SysRole role) {
sysRoleMenuService.remove(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, role.getId()));
List<SysRoleMenu> menus = new ArrayList<>();
role.getMenuIds().forEach(item -> {
menus.add(SysRoleMenu.builder().roleId(role.getId()).menuId(item).build());
});
return sysRoleMenuService.saveBatch(menus);
}
@Override
public Object menuList(String roleId) {
Map<String, Object> map = new HashMap<>();
map.put("list", sysMenuService.tree(SysMenu.builder().build()));
List<SysRoleMenu> menus = sysRoleMenuService.list(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, roleId));
if (Objects.nonNull(menus) && menus.size() > 0) {
map.put("selected", menus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()));
}
return map;
}
}

View File

@ -1,20 +0,0 @@
package com.tansci.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.domain.SysUserRole;
import com.tansci.mapper.SysUserRoleMapper;
import com.tansci.service.SysUserRoleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @ClassName SysUserRoleServiceImpl.java
* @ClassPath com.tansci.service.impl.SysUserRoleServiceImpl.java
* @Description 用户权限
* @Author tanyp
* @Date 2023/3/29 10:05
**/
@Slf4j
@Service
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
}

View File

@ -1,201 +0,0 @@
package com.tansci.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tansci.common.constant.Constants;
import com.tansci.common.exception.BusinessException;
import com.tansci.domain.SysLoginLog;
import com.tansci.domain.SysUser;
import com.tansci.domain.SysUserRole;
import com.tansci.domain.vo.SysUserSessionVo;
import com.tansci.domain.vo.SysUserVo;
import com.tansci.domain.vo.UserAuthVo;
import com.tansci.mapper.SysUserMapper;
import com.tansci.service.SysLoginLogService;
import com.tansci.service.SysUserRoleService;
import com.tansci.service.SysUserService;
import com.tansci.utils.Sha256Util;
import com.tansci.utils.SystemUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* @ClassName SysUserServiceImpl.java
* @ClassPath com.tansci.service.impl.SysUserServiceImpl.java
* @Description 用户信息
* @Author tanyp
* @Date 2023/3/20 15:51
**/
@Slf4j
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
@Autowired
private SysUserRoleService sysUserRoleService;
@Autowired
private SysLoginLogService sysLoginLogService;
@Override
public IPage<SysUser> page(Page page, SysUser user) {
IPage<SysUser> iPage = this.baseMapper.selectPage(page,
Wrappers.<SysUser>lambdaQuery()
.eq(SysUser::getIsDel, Constants.NOT_DEL_FALG)
.eq(Objects.nonNull(user.getUsername()), SysUser::getUsername, user.getUsername())
.eq(Objects.nonNull(user.getPhone()), SysUser::getPhone, user.getPhone())
.eq(Objects.nonNull(user.getNickname()), SysUser::getNickname, user.getNickname())
.eq(Objects.nonNull(user.getType()), SysUser::getType, user.getType())
);
if (Objects.nonNull(iPage) && Objects.nonNull(iPage.getRecords())) {
List<SysUserRole> roles = sysUserRoleService.list();
iPage.getRecords().forEach(item -> {
Optional<SysUserRole> rOptional = roles.stream().filter(u -> Objects.equals(u.getUserId(), item.getId())).findFirst();
if (rOptional.isPresent()) {
item.setRoleId(rOptional.get().getRoleId());
}
});
}
return iPage;
}
@Override
public List<SysUser> list(SysUser user) {
return this.baseMapper.selectList(
Wrappers.<SysUser>lambdaQuery()
.eq(SysUser::getIsDel, Constants.NOT_DEL_FALG)
.eq(Objects.nonNull(user.getType()), SysUser::getType, user.getType())
);
}
@Override
public UserAuthVo info() {
SysUser user = this.baseMapper.selectById(String.valueOf(StpUtil.getLoginId()));
// 获取当前用户权限code
List<String> authorities = this.baseMapper.authorities(String.valueOf(StpUtil.getLoginId()));
return UserAuthVo.builder()
.username(user.getUsername())
.nickname(user.getNickname())
.type(user.getType())
.phone(user.getPhone())
.email(user.getEmail())
.authorities(authorities)
.build();
}
@Override
public Object insert(SysUser user) {
Integer count = this.baseMapper.selectCount(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, user.getUsername()));
if (Objects.nonNull(count) && count > 0) {
throw new BusinessException("用户名称已存在!");
}
user.setIsDel(Constants.NOT_DEL_FALG);
user.setUpdateTime(LocalDateTime.now());
user.setCreateTime(LocalDateTime.now());
user.setPassword(Sha256Util.getSHA256(user.getPassword()));
int rows = this.baseMapper.insert(user);
if (rows > 0) {
sysUserRoleService.save(SysUserRole.builder().userId(user.getId()).roleId(user.getRoleId()).build());
}
return rows;
}
@Override
public Object update(SysUser user) {
user.setUpdateTime(LocalDateTime.now());
return this.baseMapper.updateById(user);
}
@Override
public Object del(String id) {
int rows = this.baseMapper.deleteById(id);
if (rows > 0) {
sysUserRoleService.remove(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, id));
}
return rows;
}
@Override
public SysUserVo login(HttpServletRequest request, SysUser user) {
SysLoginLog loginLog = SysLoginLog.builder()
.username(user.getUsername())
.failPassword(user.getPassword())
.type("成功")
.ip(SystemUtils.getIp(request))
.address(SystemUtils.getAddress(request))
.browser(SystemUtils.getBrowser(request))
.os(SystemUtils.getOS(request))
.build();
try {
// 校验验证码
String code = (String) request.getSession().getAttribute("verifyCode");
if (Objects.isNull(user.getCode()) || !Objects.equals(code, user.getCode())) {
loginLog.setType("失败");
loginLog.setMessage("验证码有误");
throw new BusinessException("验证码有误,请重新获取!");
}
SysUser sysUser = this.baseMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, user.getUsername()));
if (Objects.isNull(sysUser) && !Objects.equals(sysUser.getPassword(), Sha256Util.getSHA256(user.getPassword()))) {
loginLog.setType("失败");
loginLog.setMessage("用户名或密码有误");
throw new BusinessException("登录失败,用户名或密码有误!");
}
if (Objects.equals(Constants.USER_IS_LOGIN_ON, sysUser.getIsLogin())) {
loginLog.setType("失败");
loginLog.setMessage("该账号已被禁用");
throw new BusinessException("登录失败,该账号已被禁用!");
}
// 生成token
StpUtil.login(sysUser.getId());
loginLog.setToken(StpUtil.getTokenInfo().getTokenValue());
// 存储session
StpUtil.getSession().set(sysUser.getId(),
SysUserSessionVo.builder()
.id(sysUser.getId())
.username(sysUser.getUsername())
.nickname(sysUser.getNickname())
.type(sysUser.getType())
.build()
);
return SysUserVo.builder()
.username(sysUser.getUsername())
.nickname(sysUser.getNickname())
.type(sysUser.getType())
.avatar(sysUser.getAvatar())
.loginTime(LocalDateTime.now())
.token(StpUtil.getTokenInfo().getTokenValue())
.build();
} finally {
sysLoginLogService.save(loginLog);
}
}
@Override
public Object modifyPass(SysUser user) {
SysUser sysUser = this.baseMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, user.getUsername()));
if (Objects.isNull(sysUser) || !Objects.equals(sysUser.getPassword(), Sha256Util.getSHA256(user.getOldPassword()))) {
throw new BusinessException("原始密码错误,请重新输入!");
}
sysUser.setPassword(Sha256Util.getSHA256(user.getPassword()));
sysUser.setUpdateTime(LocalDateTime.now());
return this.baseMapper.updateById(sysUser);
}
}

View File

@ -103,8 +103,7 @@ public class SystemUtils {
* @Param [ip]
* @return java.lang.String
**/
public static String getAddress(HttpServletRequest request) {
String ip = getIp(request);
public static String getAddress(String ip) {
try {
if (Ipv4Util.isInnerIP(ip)) {
return "内网IP";

View File

@ -1,7 +1,5 @@
server:
port: 8000
servlet:
context-path: /tansci/
spring:
jackson:
@ -59,13 +57,13 @@ sa-token:
# magic-api
magic-api:
# 配置web页面入口
web: /magic/web
web: /api/web
# 配置文件存储位置
resource:
type: database # 配置存储在数据库中
tableName: magic_api_file # 数据库中的表名
# datasource: tansci_boot # 指定数据源(单数据源时无需配置,多数据源时默认使用主数据源,如果存在其他数据源中需要指定。)
prefix: /magic-api # key前缀
prefix: /tansci-api # key前缀
readonly: false # 是否是只读模式
# location: data/magic-api #存储路径
prefix: / # 接口前缀,可以不配置