Compare commits

...

15 Commits

Author SHA1 Message Date
f49b9db4d7 Merge pull request 'feat: 代码风格调整' (#7) from feature-xiaolfeng into master
Some checks failed
代码检查 / 代码检查 (push) Failing after 26s
Reviewed-on: #7
2024-04-10 09:53:00 +08:00
c273913442
feat: 代码风格调整
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 19s
2024-04-10 09:37:39 +08:00
13270ed1b6
feat: 修改为错误
All checks were successful
代码检查 / 代码检查 (push) Successful in 14s
2024-04-10 09:19:29 +08:00
6574d8a12e
feat: 重新处理 codecheck
All checks were successful
代码检查 / 代码检查 (push) Successful in 13s
2024-04-10 09:09:15 +08:00
ccac929478
feat: 重新处理 codecheck
All checks were successful
代码检查 / 代码检查 (push) Successful in 14s
2024-04-10 09:05:57 +08:00
767d9f75e1
feat: 重新处理 codecheck
All checks were successful
代码检查 / 代码检查 (push) Successful in 22s
2024-04-10 09:04:58 +08:00
fe4dfb77e6
patch: 符合开发规约
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 54s
代码检查 / 代码检查 (push) Failing after 1m11s
2024-04-10 01:22:55 +08:00
06bb45ba5d
patch: 符合开发规约 2024-04-10 01:22:31 +08:00
78da5c90c4
patch: 注释内容修改,代码规范化 2024-04-10 00:36:57 +08:00
34c6ea1a8b
debug: 去除 qodana,添加 检查
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 51s
代码检查 / 代码检查 (push) Failing after 1m17s
2024-04-09 23:56:39 +08:00
7d680aeb87
Merge branch 'refs/heads/master' into feature-xiaolfeng 2024-04-09 23:56:30 +08:00
d2d761deb5 更新 .github/workflows/code-check.yaml
Some checks failed
JslGroup/JslDeveloper/JSL_OrganizeInternalOA/pipeline/head This commit looks good
代码检查 / 代码检查 (push) Failing after 1m3s
2024-04-09 23:02:58 +08:00
f4ef0ce63b 测试
Some checks failed
JslGroup/JslDeveloper/JSL_OrganizeInternalOA/pipeline/head This commit looks good
代码检查 / 代码检查 (push) Failing after 34s
Signed-off-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-09 20:56:36 +08:00
c324ce2bca
debug: 去除 Jenkinsfile 2024-04-09 20:50:55 +08:00
b48d89f22e
debug: 内容 Debug 测试提交
All checks were successful
JslGroup/JslDeveloper/JSL_OrganizeInternalOA/pipeline/head This commit looks good
JslGroup/JslDeveloper/JSL_OrganizeInternalOA/pipeline/pr-master This commit looks good
JslGroup/JslDeveloper/JSL_OrganizeInternalOA/pipeline/pr-develop This commit looks good
2024-04-09 20:46:54 +08:00
118 changed files with 1203 additions and 779 deletions

177
.github/linters/alibaba-checkstyle.xml vendored Normal file
View File

@ -0,0 +1,177 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="severity" value="error"/>
<!-- 检查文件是否以一个空行结束 -->
<module name="NewlineAtEndOfFile"/>
<!-- 文件长度不超过1500行 -->
<module name="FileLength">
<property name="max" value="1500"/>
</module>
<!-- 每行不超过140个字符 -->
<module name="LineLength">
<property name="max" value="120" />
</module>
<!-- 每个java文件一个语法树 -->
<module name="TreeWalker">
<!-- import检查-->
<!-- 检查是否从非法的包中导入了类 -->
<module name="IllegalImport"/>
<!-- 检查是否导入了多余的包 -->
<module name="RedundantImport"/>
<!-- 没用的import检查比如1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
<module name="UnusedImports" />
<!-- 注释检查 -->
<!-- 检查构造函数的javadoc -->
<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
<message key="javadoc.missing" value="类注释缺少Javadoc注释。"/>
</module>
<!-- 命名检查 -->
<!-- 局部的final变量包括catch中的参数的检查 -->
<module name="LocalFinalVariableName" />
<!-- 局部的非final型的变量包括catch中的参数的检查 -->
<module name="LocalVariableName" />
<!-- 包名的检查(只允许小写字母),默认^[a-z]+(\.[a-zA-Z_][a-zA-Z_0-9_]*)*$ -->
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
<message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/>
</module>
<!-- 仅仅是static型的变量不包括static final型的检查 -->
<module name="StaticVariableName" />
<!-- Class或Interface名检查默认^[A-Z][a-zA-Z0-9]*$-->
<module name="TypeName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="名称 ''{0}'' 要符合 ''{1}''格式."/>
</module>
<!-- 非static型变量的检查 -->
<module name="MemberName" />
<!-- 方法名的检查 -->
<module name="MethodName" />
<!-- 方法的参数名 -->
<module name="ParameterName " />
<!-- 常量名的检查(只允许大写),默认^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ -->
<module name="ConstantName" />
<!-- 定义检查 -->
<!-- 检查数组类型定义的样式 -->
<module name="ArrayTypeStyle"/>
<!-- 检查long型定义是否有大写的“L” -->
<module name="UpperEll"/>
<!-- 长度检查 -->
<!-- 方法的参数个数不超过5个。 并且不对构造方法进行检查-->
<module name="ParameterNumber">
<property name="max" value="8" />
<property name="ignoreOverriddenMethods" value="true"/>
<property name="tokens" value="METHOD_DEF" />
</module>
<!-- 空格检查-->
<!-- 方法名后跟左圆括号"(" -->
<module name="MethodParamPad" />
<!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 -->
<module name="TypecastParenPad" />
<!-- 检查在某个特定关键字之后应保留空格 -->
<module name="NoWhitespaceAfter"/>
<!-- 检查在某个特定关键字之前应保留空格 -->
<module name="NoWhitespaceBefore"/>
<!-- 操作符换行策略检查 -->
<module name="OperatorWrap"/>
<!-- 圆括号空白 -->
<module name="ParenPad"/>
<!-- 检查分隔符是否在空白之后 -->
<module name="WhitespaceAfter"/>
<!-- 检查分隔符周围是否有空白 -->
<module name="WhitespaceAround"/>
<!-- 修饰符检查 -->
<!-- 检查修饰符的顺序是否遵照java语言规范默认public、protected、private、abstract、static、final、transient、volatile、synchronized、native、strictfp -->
<module name="ModifierOrder"/>
<!-- 检查接口和annotation中是否有多余修饰符如接口方法不必使用public -->
<module name="RedundantModifier"/>
<!-- 代码块检查 -->
<!-- 检查是否有嵌套代码块 -->
<module name="AvoidNestedBlocks"/>
<!-- 检查是否有空代码块 -->
<module name="EmptyBlock"/>
<!-- 检查左大括号位置 -->
<module name="LeftCurly"/>
<!-- 检查代码块是否缺失{} -->
<module name="NeedBraces"/>
<!-- 检查右大括号位置 -->
<module name="RightCurly"/>
<!-- 代码检查 -->
<!-- 检查空的代码段 -->
<module name="EmptyStatement"/>
<!-- 检查在重写了equals方法后是否重写了hashCode方法 -->
<module name="EqualsHashCode"/>
<!-- 检查局部变量或参数是否隐藏了类中的变量 -->
<module name="HiddenField">
<property name="tokens" value="VARIABLE_DEF"/>
</module>
<!-- 检查子表达式中是否有赋值操作 -->
<module name="InnerAssignment"/>
<!-- 检查switch语句是否有default -->
<module name="MissingSwitchDefault"/>
<!-- 检查是否有过度复杂的布尔表达式 -->
<module name="SimplifyBooleanExpression"/>
<!-- 检查是否有过于复杂的布尔返回代码段 -->
<module name="SimplifyBooleanReturn"/>
<!-- 类设计检查 -->
<!-- 检查类是否为扩展设计l -->
<!-- 检查只有private构造函数的类是否声明为final -->
<module name="FinalClass"/>
<!-- 检查接口是否仅定义类型 -->
<module name="InterfaceIsType"/>
<!-- 检查类成员的可见度 检查类成员的可见性。只有static final 成员是public的
除非在本检查的protectedAllowed和packagedAllowed属性中进行了设置-->
<module name="VisibilityModifier">
<property name="packageAllowed" value="true"/>
<property name="protectedAllowed" value="true"/>
</module>
<!-- 语法 -->
<!-- String的比较不能用!= 和 == -->
<module name="StringLiteralEquality"/>
<!-- 限制for循环最多嵌套2层 -->
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<!-- if最多嵌套3层 -->
<module name="NestedIfDepth">
<property name="max" value="3"/>
</module>
<!-- 检查未被注释的main方法,排除以Appllication结尾命名的类 -->
<module name="UncommentedMain">
<property name="excludedClasses" value=".*[Application,Test]$"/>
</module>
<!-- 禁止使用System.out.println -->
<module name="Regexp">
<property name="format" value="System\.out\.println"/>
<property name="illegalPattern" value="true"/>
</module>
<!--try catch 异常处理数量 3-->
<module name="NestedTryDepth ">
<property name="max" value="3"/>
</module>
<!-- clone方法必须调用了super.clone() -->
<module name="SuperClone" />
<!-- finalize 必须调用了super.finalize() -->
<module name="SuperFinalize" />
</module>
</module>

View File

@ -5,12 +5,14 @@ on:
branches:
- master
pull_request:
- develop
branches:
- master
- develop
jobs:
build:
name: 代码检查
runs-on: linux_amd64
runs-on: ubuntu-22.04
permissions:
contents: read
@ -21,12 +23,13 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
with:
# super-linter needs the full git history to get the
# list of files that changed across commits
fetch-depth: 0
- name: Super-linter
uses: super-linter/super-linter@v6.3.1
env:
# To report GitHub Actions status checks
GITHUB_TOKEN: ${{ secrets.MyGitHubToken }}
GITHUB_TOKEN: ${{ secrets.MyGitHubToken }}
VALIDATE_ALL_CODEBASE: false
IGNORE_GITIGNORED_FILES: true
VALIDATE_JAVA: true
JAVA_FILE_NAME: alibaba-checkstyle.xml

24
Jenkinsfile vendored
View File

@ -1,24 +0,0 @@
pipeline {
environment {
QODANA_TOKEN=credentials('qodana-token')
}
agent {
docker {
args '''
-v "${WORKSPACE}":/data/project
--entrypoint=""
'''
image 'jetbrains/qodana-jvm'
}
}
stages {
stage('Qodana') {
when {
branch 'feature'
}
steps {
sh '''qodana'''
}
}
}
}

View File

@ -1,41 +0,0 @@
#-------------------------------------------------------------------------------#
# Qodana analysis is configured by qodana.yaml file #
# https://www.jetbrains.com/help/qodana/qodana-yaml.html #
#-------------------------------------------------------------------------------#
version: "1.0"
#Specify inspection profile for code analysis
profile:
name: qodana.starter
#Enable inspections
#include:
# - name: <SomeEnabledInspectionId>
#Disable inspections
#exclude:
# - name: <SomeDisabledInspectionId>
# paths:
# - <path/where/not/run/inspection>
projectJDK: 17 #(Applied in CI/CD pipeline)
#Execute shell command before Qodana execution (Applied in CI/CD pipeline)
#bootstrap: sh ./prepare-qodana.sh
#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)
#plugins:
# - id: <plugin.id> #(plugin id can be found at https://plugins.jetbrains.com)
#Specify Qodana linter for analysis (Applied in CI/CD pipeline)
linter: jetbrains/qodana-jvm:latest
include:
- name: ClassLoaderInstantiation
- name: NonThreadSafeLazyInitialization
- name: DoubleBraceInitialization
- name: JavaLangImport
- name: UNUSED_IMPORT
- name: SamePackageImport
- name: ArgNamesErrorsInspection
- name: ArgNamesWarningsInspection
- name: AssertMessageNotString
- name: EqualsCalledOnEnumConstant
- name: ListIndexOfReplaceableByContains
- name: ObjectsEqualsCanBeSimplified
- name: SizeReplaceableByIsEmpty
- name: ArrayCreationWithoutNewKeyword
exclude:
- name: VulnerableLibrariesLocal

View File

@ -4,10 +4,22 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* 主类
*
* @since v1.0.0-SNAPSHOT
* @version 1.0.0-SNAPSHOT
* @author xiao_lfeng
*/
@SpringBootApplication
@EnableScheduling
public class JslOrganizeInternalOaApplication {
// debug
/**
* 入口
*
* @param args 参数
*/
public static void main(String[] args) {
SpringApplication.run(JslOrganizeInternalOaApplication.class, args);
}

View File

@ -3,8 +3,8 @@ package com.jsl.oa;
import com.google.gson.Gson;
import com.jsl.oa.common.constant.SafeConstants;
import com.jsl.oa.mapper.InfoMapper;
import com.jsl.oa.model.doData.ConfigDO;
import com.jsl.oa.model.voData.business.InfoAboutSecurityKey;
import com.jsl.oa.model.dodata.ConfigDO;
import com.jsl.oa.model.vodata.business.InfoAboutSecurityKey;
import com.jsl.oa.utils.Processing;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.SmartInitializingSingleton;
@ -21,6 +21,7 @@ import java.sql.Timestamp;
* @see org.springframework.boot.SpringApplication
* @see org.springframework.boot.autoconfigure.SpringBootApplication
* @since v1.1.0
* @author xiaofeng
*/
@Component
@RequiredArgsConstructor
@ -28,6 +29,12 @@ public class JslOrganizeInternalOaRunnerApplication implements SmartInitializing
private final Gson gson = new Gson();
private final InfoMapper infoMapper;
/**
* <h1>获取安全密钥</h1>
* <hr/>
* 从数据库中获取安全密钥
*/
@Override
public void afterSingletonsInstantiated() {
// 获取数据库中的 SecurityKey

View File

@ -6,9 +6,9 @@ import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
@ -61,7 +61,9 @@ public class AnnotationsAspect {
public Object checkUserHasPermission(@NotNull ProceedingJoinPoint pjp) throws Throwable {
log.info("用户权限检查");
// 获取 HttpServletRequest 对象
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
HttpServletRequest request =
((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
.getRequest();
// 获取注解方法
CheckUserHasPermission checkUserHasPermission = getCheckUserHasPermission(pjp);
@ -90,17 +92,17 @@ public class AnnotationsAspect {
} else {
log.info("\t> 用户权限不足,检查是否是管理员");
// 检查用户是管理员
RoleUserDO roleUserDO = roleDAO.roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO != null) {
RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin");
if (roleUserDO.getRid().equals(roleDO.getId())) {
return pjp.proceed();
} else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
} else {
RoleUserDO roleUserDO = roleDAO.roleMapper
.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO == null) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin");
if (roleUserDO.getRid().equals(roleDO.getId())) {
return pjp.proceed();
} else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
}
} else {
return pjp.proceed();
@ -115,7 +117,9 @@ public class AnnotationsAspect {
public Object checkUserAbleToUse(ProceedingJoinPoint pjp) throws Throwable {
log.info("检查用户是否有权限继续");
// 获取 HttpServletRequest 对象
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
HttpServletRequest request =
((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
.getRequest();
// 获取注解方法
CheckUserAbleToUse check = getCheckUserAbleToUse(pjp);

View File

@ -46,7 +46,9 @@ public class AuthControllerAspect {
@Around("execution(* com.jsl.oa.controllers.*.*(..)) && !execution(* com.jsl.oa.controllers.IndexController.*(..))")
public Object controllerAround(ProceedingJoinPoint pjp) throws Throwable {
// 获取HttpServletRequest对象
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
HttpServletRequest request =
((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
.getRequest();
// 时间戳检查
if (checkTimestamp(request)) {
@ -66,21 +68,23 @@ public class AuthControllerAspect {
* @return {@link Object}
* @throws Throwable 异常
*/
@Around("execution(* com.jsl.oa.controllers.*.*(..)) " +
"&& !execution(* com.jsl.oa.controllers.AuthController.authSendEmailCode(..))" +
"&& !execution(* com.jsl.oa.controllers.AuthController.authLoginByEmail(..))" +
"&& !execution(* com.jsl.oa.controllers.AuthController.authForgetPassword(..))" +
"&& !execution(* com.jsl.oa.controllers.AuthController.authLogin(..))" +
"&& !execution(* com.jsl.oa.controllers.AuthController.authRegister(..)) " +
"&& !execution(* com.jsl.oa.controllers.IndexController.*(..)) " +
"&& !execution(* com.jsl.oa.controllers.CustomController.*(..)) " +
"&& !execution(* com.jsl.oa.controllers.InfoController.infoGetHeaderImage(..)) " +
"&& !execution(* com.jsl.oa.controllers.InfoController.infoGetHeaderUser(..))" +
"&& !execution(* com.jsl.oa.controllers.ProjectController.*(..))" +
"&& !execution(* com.jsl.oa.controllers.TagController.*(..))")
@Around("execution(* com.jsl.oa.controllers.*.*(..)) "
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authSendEmailCode(..))"
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authLoginByEmail(..))"
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authForgetPassword(..))"
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authLogin(..))"
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authRegister(..)) "
+ "&& !execution(* com.jsl.oa.controllers.IndexController.*(..)) "
+ "&& !execution(* com.jsl.oa.controllers.CustomController.*(..)) "
+ "&& !execution(* com.jsl.oa.controllers.InfoController.infoGetHeaderImage(..)) "
+ "&& !execution(* com.jsl.oa.controllers.InfoController.infoGetHeaderUser(..))"
+ "&& !execution(* com.jsl.oa.controllers.ProjectController.*(..))"
+ "&& !execution(* com.jsl.oa.controllers.TagController.*(..))")
public Object tokenControllerAround(ProceedingJoinPoint pjp) throws Throwable {
// 获取 HttpServletRequest 对象
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
HttpServletRequest request =
((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
.getRequest();
// 检查 Token 是否有效
String token = request.getHeader("Authorization");
@ -121,6 +125,7 @@ public class AuthControllerAspect {
long nowTimestamp = System.currentTimeMillis();
// 时间误差允许前后五秒钟
return nowTimestamp - Long.parseLong(getTimestamp) <= 10000 && nowTimestamp - Long.parseLong(getTimestamp) >= -10000;
return nowTimestamp - Long.parseLong(getTimestamp) <= 10000
&& nowTimestamp - Long.parseLong(getTimestamp) >= -10000;
}
}

View File

@ -7,9 +7,9 @@ import lombok.Getter;
* <hr/>
* 业务常量
*
* @since v1.1.0
* @version v1.1.0
* @author xiao_lfeng
* @version v1.1.0
* @since v1.1.0
*/
@Getter
public enum BusinessConstants {
@ -21,6 +21,12 @@ public enum BusinessConstants {
private final String value;
private final String description;
/**
* 创建一个具有指定值和描述的实例 {@code BusinessConstants}
*
* @param value 常量的value
* @param description 常量的描述
*/
BusinessConstants(String value, String description) {
this.value = value;
this.description = description;

View File

@ -27,12 +27,21 @@ public class MailConfiguration {
@Value("${spring.mail.password}")
private String emailPassword;
/**
* 配置并返回一个用于发送邮件的JavaMailSender实例
* <p>
* 此方法使用SMTP协议设置邮件发送器启用SMTP认证和STARTTLS同时为了便于故障排除
* 开启了邮件调试功能以记录邮件发送过程配置细节如主机端口用户名和密码根据应用程序的属性进行设置
* </p>
*
* @return 配置好的JavaMailSender实例可用于发送邮件
*/
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setDefaultEncoding("UTF-8");
mailSender.setHost(emailHost);
mailSender.setPort(25); // 你的邮件服务器端口
mailSender.setPort(25);
mailSender.setUsername(emailUsername);
mailSender.setPassword(emailPassword);

View File

@ -8,19 +8,44 @@ import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* <h1>CORS过滤器</h1>
* <hr/>
* 用于处理跨域请求
*
* @version v1.1.0
* @since v1.1.0
* @see Filter
* @author xiao_lfeng
* @version v1.1.0
* @see Filter
* @since v1.1.0
*/
@Slf4j
@Component
public class CorsFilter implements Filter {
/**
* 设置请求头
*
* @param response 响应
*/
protected static void setHeader(@NotNull HttpServletResponse response) {
// 允许跨域请求
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
//允许请求方式
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
//需要放行header头部字段 如需鉴权字段自行添加如Authorization
response.setHeader("Access-Control-Allow-Headers", "*");
}
/**
* 用于处理跨域请求
*
* @param req servlet请求
* @param res servlet响应
* @param chain 过滤器链
*/
@Override
public void doFilter(@NotNull ServletRequest req, ServletResponse res, FilterChain chain) {
// 请求头处理
@ -36,24 +61,21 @@ public class CorsFilter implements Filter {
}
}
/**
* 初始化
*
* @param filterConfig 过滤器配置
*/
@Override
public void init(FilterConfig filterConfig) {
}
/**
* 销毁
*/
@Override
public void destroy() {
Filter.super.destroy();
}
protected static void setHeader(@NotNull HttpServletResponse response) {
// 允许跨域请求
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
//允许请求方式
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
//需要放行header头部字段 如需鉴权字段自行添加如Authorization
response.setHeader("Access-Control-Allow-Headers", "*");
}
}

View File

@ -63,7 +63,10 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
* @throws Exception 异常
*/
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception {
protected boolean onAccessDenied(
ServletRequest request,
ServletResponse response,
Object mappedValue) throws Exception {
// 添加跨域禁止
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
CorsFilter.setHeader(httpServletResponse);
@ -80,7 +83,6 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
} else {
// 解析Bearer后面的令牌
token = token.replace("Bearer ", "");
System.out.println(token);
if (JwtUtil.verify(token)) {
// Token验证通过
return true;

View File

@ -29,6 +29,11 @@ public class RedisConfiguration {
@Value("${spring.redis.password}")
private String password;
/**
* <h2>JedisConnectionFactory</h2>
* <hr/>
* 用于连接Redis
*/
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port);
@ -36,6 +41,11 @@ public class RedisConfiguration {
return new JedisConnectionFactory(config);
}
/**
* <h2>RedisTemplate</h2>
* <hr/>
* 用于配置RedisTemplate
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

View File

@ -89,4 +89,4 @@ public abstract class RedisOperating<R> {
return null;
}
}
}
}

View File

@ -1,35 +1,53 @@
package com.jsl.oa.config.shiro;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.jetbrains.annotations.NotNull;
/**
* 这是一个Shiro的Realm它负责身份验证和授权
* 它扩展了AuthorizingRealm类该类提供了默认的授权和身份验证实现
* <p>
* doGetAuthenticationInfo()方法负责验证用户
* doGetAuthorizationInfo()方法负责检索用户的授权信息
*
* @author jsl
*/
public class MyRealm extends AuthorizingRealm {
/**
* 授权
* 这将负责验证用户
* 它接受一个AuthenticationToken作为参数该参数表示用户的<EFBFBD><EFBFBD>
* 并返回一个AuthenticationInfo对象该对象包含用户的身份验证详细信息
* <p>
* 在这种实现中该方法总是返回null表示身份验证不受支持
* 这可以在子类中被重写以支持身份验证
*
* @return 授权信息
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(@NotNull PrincipalCollection principals) {
return null;
}
/**
* 认证
*
* @param authenticationToken 令牌
* @return 认证信息
* @throws AuthenticationException 认证异常
* @param authenticationToken 用户的<EFBFBD><EFBFBD>
* @return null表示身份验证不受支持
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) {
return null;
}
/**
* 这将负责检索用户的授权信息
* 它接受一个PrincipalCollection作为参数该参数表示用户的主体
* 并返回一个AuthorizationInfo对象该对象包含用户的授权详细信息
* <p>
* 在这种实现中该方法总是返回null表示授权不受支持
* 这可以在子类中被重写以支持授权
*
* @param principals 用户的主体
* @return null表示授权不受支持
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
return null;
}
}

View File

@ -2,7 +2,6 @@ package com.jsl.oa.config.shiro;
import com.jsl.oa.config.filter.CorsFilter;
import com.jsl.oa.config.filter.JwtFilter;
import com.jsl.oa.services.UserService;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
@ -14,12 +13,25 @@ import javax.servlet.Filter;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 这是一个Shiro的Realm它负责身份验证和授权
* 它扩展了AuthorizingRealm类该类提供了默认的授权和身份验证实现
*
* @since v1.0.0-SNAPSHOT
* @version v1.0.0-SNAPSHOT
* @author xiao_lfeng
*/
@Configuration
@RequiredArgsConstructor
public class ShiroConfiguration {
private final UserService userService;
/**
* 配置Shiro过滤器工厂Bean设置安全管理器过滤器规则以及自定义过滤器
* 此方法用于配置Shiro的安全管理器定义URL模式的过滤器链并添加自定义的JWT和CORS过滤器来处理认证和跨域请求
*
* @param securityManager 安全管理器由Shiro过滤器工厂Bean使用
* @return 配置好的ShiroFilterFactoryBean实例
*/
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
@ -27,10 +39,9 @@ public class ShiroConfiguration {
// 配置过滤器规则
Map<String, String> filterChainDefinitionMap = setFilterChain();
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
// 设置未登响应接口
// 设置未登响应接口
shiroFilterFactoryBean.setUnauthorizedUrl("/unauthorized");
// 添加JWT过滤器
@ -41,6 +52,13 @@ public class ShiroConfiguration {
return shiroFilterFactoryBean;
}
/**
* 创建并配置安全管理器使用自定义领域
* 此方法设置安全管理器使用自定义领域进行认证和授权
*
* @param realm 自定义领域由安全管理器使用
* @return 配置好的DefaultWebSecurityManager实例
*/
@Bean
public DefaultWebSecurityManager securityManager(MyRealm realm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
@ -48,28 +66,39 @@ public class ShiroConfiguration {
return securityManager;
}
/**
* 创建用于认证和授权的自定义领域实例
* 此方法为应用提供一个包含用户认证和授权逻辑的自定义领域
*
* @return MyRealm的一个实例
*/
@Bean
public MyRealm myRealm() {
return new MyRealm();
}
/**
* 定义URL模式和相应过滤器的过滤器链
* 此静态方法将URL模式映射到过滤器名称指定哪些URL可以匿名访问哪些需要认证它允许对应用程序不同部分的访问进行细粒度控制
*
* @return URL模式到过滤器名称的映射
*/
@NotNull
private static Map<String, String> setFilterChain() {
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/auth/**/**", "anon"); // 登录接口允许匿名访问
filterChainDefinitionMap.put("/unauthorized", "anon"); // 未授权接口允许匿名访问
filterChainDefinitionMap.put("/", "anon"); // 首页允许匿名访问
filterChainDefinitionMap.put("/info/header-image/get", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/info/header-user/get", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/project/header/get", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/project/get", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/project/get/custom", "anon"); // 游客获取项目允许匿名访问
filterChainDefinitionMap.put("/project/add", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/project/work/add", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/tags/project/list", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/module/add", "anon"); // 信息接口允许匿名访问
filterChainDefinitionMap.put("/**/**", "authc"); // 其他接口一律拦截(需要Token)
filterChainDefinitionMap.put("/auth/**/**", "anon");
filterChainDefinitionMap.put("/unauthorized", "anon");
filterChainDefinitionMap.put("/", "anon");
filterChainDefinitionMap.put("/info/header-image/get", "anon");
filterChainDefinitionMap.put("/info/header-user/get", "anon");
filterChainDefinitionMap.put("/project/header/get", "anon");
filterChainDefinitionMap.put("/project/get", "anon");
filterChainDefinitionMap.put("/project/get/custom", "anon");
filterChainDefinitionMap.put("/project/add", "anon");
filterChainDefinitionMap.put("/project/work/add", "anon");
filterChainDefinitionMap.put("/tags/project/list", "anon");
filterChainDefinitionMap.put("/module/add", "anon");
filterChainDefinitionMap.put("/**/**", "authc");
return filterChainDefinitionMap;
}

View File

@ -1,9 +1,9 @@
package com.jsl.oa.controllers;
import com.jsl.oa.model.voData.UserChangePasswordVO;
import com.jsl.oa.model.voData.UserForgetPasswordVO;
import com.jsl.oa.model.voData.UserLoginVO;
import com.jsl.oa.model.voData.UserRegisterVO;
import com.jsl.oa.model.vodata.UserChangePasswordVO;
import com.jsl.oa.model.vodata.UserForgetPasswordVO;
import com.jsl.oa.model.vodata.UserLoginVO;
import com.jsl.oa.model.vodata.UserRegisterVO;
import com.jsl.oa.services.AuthService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -24,6 +24,7 @@ import java.util.regex.Pattern;
* <hr/>
* 用户认证控制器包含用户注册用户登录用户登出接口
*
* @author 筱锋xiao_lfeng|176yunxuan
* @version v1.1.0
* @see AuthService
* @see UserRegisterVO
@ -33,7 +34,6 @@ import java.util.regex.Pattern;
* @see Processing
* @see ResultUtil
* @since v1.0.0
* @author 筱锋xiao_lfeng|176yunxuan
*/
@Slf4j
@RestController
@ -51,7 +51,10 @@ public class AuthController {
* @since v1.0.0
*/
@PostMapping("/auth/register")
public BaseResponse authRegister(@RequestBody @Validated UserRegisterVO userRegisterVO, @NotNull BindingResult bindingResult) {
public BaseResponse authRegister(
@RequestBody @Validated UserRegisterVO userRegisterVO,
@NotNull BindingResult bindingResult
) {
log.info("请求接口[POST]: /auth/register");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -72,7 +75,10 @@ public class AuthController {
* @since v1.0.0
*/
@PostMapping("/auth/login")
public BaseResponse authLogin(@RequestBody @Validated UserLoginVO userLoginVO, @NotNull BindingResult bindingResult) {
public BaseResponse authLogin(
@RequestBody @Validated UserLoginVO userLoginVO,
@NotNull BindingResult bindingResult
) {
log.info("请求接口[POST]: /auth/login");
// 判断是否有参数错误
@ -106,11 +112,21 @@ public class AuthController {
}
}
/**
* <h1>通过电子邮件和验证码处理用户登录</h1>
* <hr/>
* 此方法首先验证电子邮件格式并检查提供的验证码是否为有效整数
* 如果验证通过它尝试使用提供的电子邮件和验证码登录用户
*
* @param email 用户尝试登录的电子邮件地址
* @param code 发送到用户电子邮件的验证码用于身份验证
* @return {@link BaseResponse} 包含登录尝试的结果这可以是带有登录详细信息的成功消息
* 或者指示出了什么问题例如参数无效验证码错误的错误消息
*/
@GetMapping("/auth/login/email")
public BaseResponse authLoginByEmail(@RequestParam String email, @RequestParam String code) {
log.info("请求接口[GET]: /auth/login/email");
if (email != null && code != null && !email.isEmpty() && !code.isEmpty()) {
System.out.println("测试");
if (Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) {
try {
Integer integer = Integer.valueOf(code);
@ -140,8 +156,23 @@ public class AuthController {
return authService.authLogout(request);
}
/**
* <h2>修改密码</h2>
* <hr/>
* 修改密码
*
* @param userChangePasswordVO 用户修改密码信息
* @param request HTTP请求
* @param bindingResult 参数校验结果
* @return {@link BaseResponse}
* @since v1.1.0
*/
@PutMapping("/auth/password")
public BaseResponse authChangePassword(@RequestBody @Validated UserChangePasswordVO userChangePasswordVO, HttpServletRequest request, @NotNull BindingResult bindingResult) {
public BaseResponse authChangePassword(
@RequestBody @Validated UserChangePasswordVO userChangePasswordVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request
) {
log.info("请求接口[PUT]: /auth/password");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -150,8 +181,16 @@ public class AuthController {
return authService.authChangePassword(request, userChangePasswordVO);
}
/**
* <h2>忘记密码</h2>
* <hr/>
* 忘记密码
*/
@PutMapping("auth/password/forget")
public BaseResponse authForgetPassword(@RequestBody @Validated UserForgetPasswordVO userForgetPasswordVO, @NotNull BindingResult bindingResult) {
public BaseResponse authForgetPassword(
@RequestBody @Validated UserForgetPasswordVO userForgetPasswordVO,
@NotNull BindingResult bindingResult
) {
log.info("请求接口[PUT]: /auth/password/forget");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {

View File

@ -8,15 +8,30 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author xiaofeng
* CustomController类实现ErrorController接口处理错误和未授权请求
*
* @author xiao_lfeng
* @since v1.0.0-SNAPSHOT
* @version 1.0.0-SNAPSHOT
*/
@RestController
public class CustomController implements ErrorController {
/**
* 处理错误请求返回一个包含错误信息的ResponseEntity
*
* @return 一个包含错误信息的ResponseEntity
*/
@RequestMapping("/error")
public ResponseEntity<BaseResponse> handleError() {
return ResultUtil.error("PageNotFound", 404, "请求资源不存在");
}
/**
* 处理未授权请求返回一个包含错误信息的ResponseEntity
*
* @return 一个包含错误信息的ResponseEntity
*/
@RequestMapping("/unauthorized")
public ResponseEntity<BaseResponse> handleUnauthorized() {
return ResultUtil.error("Unauthorized", 401, "未授权");

View File

@ -9,15 +9,30 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
/**
* @author xiaofeng
* IndexController类提供了JSL-OA系统的主入口处理根路径"/"的GET请求
*
* @author xiao_lfeng
* @version v1.0.0-SNAPSHOT
* @since v1.0.0-SNAPSHOT
*/
@Slf4j
@RestController
public class IndexController {
/**
* 使用@Value注解Spring会自动注入Maven构建时间
*/
@Value("${maven.timestamp}")
private String timestamp;
/**
* 处理根路径"/"的GET请求返回一个包含欢迎信息和服务器状态的成功响应
* 在处理请求时会记录一个info级别的日志信息
*
* @return 一个包含欢迎信息和服务器状态的成功响应
*/
@RequestMapping("/")
public BaseResponse index() {
log.info("请求接口[GET]: /");
@ -25,6 +40,4 @@ public class IndexController {
newMap.put("timestamp", "构建时间:" + timestamp);
return ResultUtil.success("欢迎使用JSL-OA系统服务器处于正常状态", newMap);
}
}

View File

@ -1,6 +1,6 @@
package com.jsl.oa.controllers;
import com.jsl.oa.model.voData.business.info.CarouselVO;
import com.jsl.oa.model.vodata.business.info.CarouselVO;
import com.jsl.oa.services.InfoService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest;
* <hr/>
* 信息控制器包含信息获取接口
*
* @author 筱锋xiao_lfeng
* @author xiao_lfeng
* @version v1.1.0
* @since v1.1.0
*/
@ -28,16 +28,38 @@ import javax.servlet.http.HttpServletRequest;
@RestController
@RequiredArgsConstructor
public class InfoController {
/**
* 信息服务
*/
private final InfoService infoService;
/**
* 获取头部图片信息
*
* @param id 图片id
* @return 图片信息
*/
@GetMapping("/info/header-image/get")
public BaseResponse infoGetHeaderImage(@RequestParam(required = false) Integer id) {
log.info("请求接口[GET]: /info/header-image/get");
return infoService.getHeaderImage(id);
}
/**
* 编辑头部图片信息
*
* @param carouselVO 图片信息
* @param request 请求对象
* @param bindingResult 数据校验结果
* @return 编辑结果
*/
@PutMapping("/info/header-image/edit")
public BaseResponse infoEditHeaderImage(@RequestBody @Validated CarouselVO carouselVO, HttpServletRequest request, @NotNull BindingResult bindingResult) {
public BaseResponse infoEditHeaderImage(
@RequestBody @Validated CarouselVO carouselVO,
HttpServletRequest request,
@NotNull BindingResult bindingResult
) {
log.info("请求接口[PUT]: /info/header-image/edit");
// 参数校验
if (bindingResult.hasErrors()) {
@ -51,14 +73,33 @@ public class InfoController {
return infoService.editHeaderImage(request, carouselVO);
}
/**
* 删除头部图片信息
*
* @param id 图片id
* @param request 请求对象
* @return 删除结果
*/
@DeleteMapping("/info/header-image/del")
public BaseResponse infoDelHeaderImage(@RequestParam Integer id, HttpServletRequest request) {
log.info("请求接口[DELETE]: /info/header-image/del");
return infoService.delHeaderImage(request, id);
}
/**
* 添加头部图片信息
*
* @param carouselVO 图片信息
* @param request 请求对象
* @param bindingResult 数据校验结果
* @return 添加结果
*/
@PostMapping("/info/header-image/add")
public BaseResponse infoAddHeaderImage(@RequestBody @Validated CarouselVO carouselVO, HttpServletRequest request, @NotNull BindingResult bindingResult) {
public BaseResponse infoAddHeaderImage(
@RequestBody @Validated CarouselVO carouselVO,
HttpServletRequest request,
@NotNull BindingResult bindingResult
) {
log.info("请求接口[POST]: /info/header-image/add");
// 参数校验
if (bindingResult.hasErrors()) {
@ -68,15 +109,34 @@ public class InfoController {
return infoService.addHeaderImage(request, carouselVO);
}
/**
* 编辑头部图片设置
*
* @param showType 是否显示
* @param request 请求对象
* @return 编辑结果
*/
@PutMapping("/info/header-image/edit-setting")
public BaseResponse infoEditSettingHeaderImage(@RequestParam Boolean showType, HttpServletRequest request) {
log.info("请求接口[PUT]: /info/header-image/edit-setting");
return infoService.editSettingHeaderImage(request, showType);
}
/**
* 获取头部用户信息
*
* @param order 排序方式
* @param orderBy 排序字段
* @param request 请求对象
* @return 用户信息
*/
@GetMapping("info/header-user/get")
public BaseResponse infoGetHeaderUser(@RequestParam String order,@RequestParam String orderBy,HttpServletRequest request){
public BaseResponse infoGetHeaderUser(
@RequestParam String order,
@RequestParam String orderBy,
HttpServletRequest request
) {
log.info("请求接口[GET]: /info/header-user/get");
return infoService.getHeaderUser(request,order,orderBy);
return infoService.getHeaderUser(request, order, orderBy);
}
}

View File

@ -21,7 +21,7 @@ import java.time.LocalDate;
* <hr/>
* 消息控制器包含信息获取接口
*
* @author 张睿相
* @author xiangZr-hhh
* @version v1.1.0
* @since v1.1.0
*/
@ -32,13 +32,32 @@ public class MessageController {
private final MessageService messageService;
/**
* 删除消息
*
* @param id 消息id
* @param request 请求对象
* @return 删除结果
*/
@DeleteMapping("/message/delete")
public BaseResponse messageDelete(@RequestParam Long id, HttpServletRequest request) {
if (id == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else return messageService.messageDelete(id, request);
} else {
return messageService.messageDelete(id, request);
}
}
/**
* 获取消息列表
*
* @param page 页码
* @param pageSize 每页条数
* @param request 请求对象
* @param begin 开始日期
* @param end 结束日期
* @return 消息列表
*/
@GetMapping("/message/get")
public BaseResponse messageGet(@RequestParam(defaultValue = "1") Long page,
@RequestParam(defaultValue = "10") Long pageSize,
@ -50,9 +69,22 @@ public class MessageController {
Long uid = JwtUtil.getUserId(token);
if (uid == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
} else return messageService.messageGet(begin, end, page, pageSize, uid);
} else {
return messageService.messageGet(begin, end, page, pageSize, uid);
}
}
/**
* 获取所有消息列表
*
* @param page 页码
* @param pageSize 每页条数
* @param request 请求对象
* @param begin 开始日期
* @param end 结束日期
* @param uid 用户id
* @return 消息列表
*/
@GetMapping("/message/get/all")
public BaseResponse messageGetAll(@RequestParam(defaultValue = "1") Long page,
@RequestParam(defaultValue = "10") Long pageSize,
@ -62,12 +94,13 @@ public class MessageController {
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
log.info("请求接口[GET]:/message/get/all");
String token = request.getHeader("Authorization").replace("Bearer ", "");
Long LoginId = JwtUtil.getUserId(token);
if (LoginId == null) {
Long loginId = JwtUtil.getUserId(token);
if (loginId == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
} else return messageService.messageGetAll(request, begin, end, page, pageSize, LoginId, uid);
} else {
return messageService.messageGetAll(request, begin, end, page, pageSize, loginId, uid);
}
}
}

View File

@ -1,53 +0,0 @@
package com.jsl.oa.controllers;
import com.jsl.oa.services.ModuleService;
import com.jsl.oa.utils.BaseResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@RestController
@RequiredArgsConstructor
public class ModuleContorller {
private final ModuleService moduleService;
/**
* 获取子系统
* @param projectId
* @param request
* @return
*/
@GetMapping("/module/get")
public BaseResponse moudleGetByProjectId(@RequestParam Integer projectId, HttpServletRequest request){
log.info("ProjectIdcontroller");
return moduleService.getByProjectId(projectId,request);
}
/**
* 获取子模块
* @param sysId
* @param request
* @return
*/
@GetMapping("/module/get/min")
public BaseResponse moudleGetBySysId(@RequestParam Integer sysId, HttpServletRequest request){
log.info("SysIdcontorller");
return moduleService.getBySysId(sysId,request);
}
@DeleteMapping("/module/delete/{id}")
public BaseResponse moudleDeleteById( @PathVariable("id") Long id, HttpServletRequest request){
log.info("请求接口[DELETE]: /module/delete/{id}");
return moduleService.deleteById(request,id);
}
}

View File

@ -0,0 +1,68 @@
package com.jsl.oa.controllers;
import com.jsl.oa.services.ModuleService;
import com.jsl.oa.utils.BaseResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* <h1>模块控制器</h1>
* <hr/>
* 模块控制器包含模块获取接口
*
* @since v1.1.0
* @version v1.1.0
* @author xiangZr-hhh | xiao_lfeng | 176yunxuan
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class ModuleController {
private final ModuleService moduleService;
/**
* 获取子系统
*
* @param projectId 项目ID
* @param request 请求对象
* @return 子系统列表
*/
@GetMapping("/module/get")
public BaseResponse moduleGetByProjectId(@RequestParam Integer projectId, HttpServletRequest request) {
log.info("[Controller] 执行 moduleGetByProjectId 接口");
return moduleService.getByProjectId(projectId, request);
}
/**
* 获取子模块
*
* @param sysId 系统ID
* @param request 请求对象
* @return 子模块列表
*/
@GetMapping("/module/get/min")
public BaseResponse moduleGetBySysId(@RequestParam Integer sysId, HttpServletRequest request) {
log.info("[Controller] 执行 moduleGetBySysId 接口");
return moduleService.getBySysId(sysId, request);
}
/**
* 删除模块
*
* @param id 模块ID
* @param request 请求对象
* @return 删除结果
*/
@DeleteMapping("/module/delete/{id}")
public BaseResponse moduleDeleteById(@PathVariable("id") Long id, HttpServletRequest request) {
log.info("[Controller] 执行 moduleDeleteById 接口");
return moduleService.deleteById(request, id);
}
}

View File

@ -1,7 +1,7 @@
package com.jsl.oa.controllers;
import com.jsl.oa.model.voData.NewsAddVO;
import com.jsl.oa.model.vodata.NewsAddVO;
import com.jsl.oa.services.NewsService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -20,13 +20,13 @@ import javax.servlet.http.HttpServletRequest;
/**
* <h1>新闻控制器</h1>
* <hr/>
* 角色控制器包含角色获取接口
* 新闻控制器包含新闻添加接口
*
* @author xiangZr-hhh | xiao_lfeng | 176yunxuan
* @version v1.1.0
* @see NewsService
* @since v1.1.0
*/
@Slf4j
@RestController
@RequiredArgsConstructor
@ -34,20 +34,31 @@ public class NewsController {
private final NewsService newsService;
/**
* <h2>新闻添加接口</h2>
* <hr/>
* 新闻添加接口接收新闻添加VO对象并调用NewsService的newsAdd方法进行新闻添加操作
*
* @param newsAddVO 新闻添加VO对象包含新闻信息
* @param bindingResult 数据校验结果用于检查请求参数是否有错误
* @param request 请求对象包含请求信息
* @return BaseResponse 返回结果包含操作结果和错误信息
* @see NewsService#newsAdd(NewsAddVO, HttpServletRequest)
* @since v1.1.0
*/
@PostMapping("/news/add")
public BaseResponse newsAdd(@RequestBody @Validated NewsAddVO newsAddVO, BindingResult bindingResult, HttpServletRequest request) {
public BaseResponse newsAdd(
@RequestBody @Validated NewsAddVO newsAddVO,
BindingResult bindingResult,
HttpServletRequest request
) {
log.info("请求接口[POST]: /news/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return newsService.newsAdd(newsAddVO, request);
}
}

View File

@ -1,6 +1,6 @@
package com.jsl.oa.controllers;
import com.jsl.oa.model.voData.PermissionEditVO;
import com.jsl.oa.model.vodata.PermissionEditVO;
import com.jsl.oa.services.PermissionService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -14,58 +14,104 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* 权限控制器类处理权限相关的API请求
* 它使用 {@link PermissionService} 来执行权限相关的操作
*
* @author xiao_lfeng | xiangZr-hhh | 176yunxuan
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class PermissionController {
/**
* 权限服务实例用于执行权限相关的操作
*/
private final PermissionService permissionService;
/**
* 添加新的权限
*
* @param request HTTP请求对象
* @param rid 角色ID
* @param pid 权限ID
* @return {@link BaseResponse} 对象包含操作结果
*/
@PostMapping("/permission/add")
public BaseResponse permissionAdd(HttpServletRequest request, @RequestParam Long rid,@RequestParam Long pid) {
public BaseResponse permissionAdd(HttpServletRequest request, @RequestParam Long rid, @RequestParam Long pid) {
log.info("请求接口[POST]: /permission/add");
// 判断是否有参数错误
if (rid == null || pid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else {
return permissionService.permissionAdd(request,rid,pid);
return permissionService.permissionAdd(request, rid, pid);
}
}
/**
* 获取当前用户的权限信息
*
* @param request HTTP请求对象
* @param uid 用户ID
* @return {@link BaseResponse} 对象包含操作结果
*/
@GetMapping("/permission/current")
public BaseResponse permissionUser(HttpServletRequest request, @RequestParam Long uid) {
log.info("请求接口[GET]: /permission/current");
// 判断是否有参数错误
if (uid == null ) {
if (uid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else {
return permissionService.permissionUser(request,uid);
return permissionService.permissionUser(request, uid);
}
}
/**
* 获取所有权限信息
*
* @param request HTTP请求对象
* @return {@link BaseResponse} 对象包含操作结果
*/
@GetMapping("/permission/get")
public BaseResponse permissionGet(HttpServletRequest request){
public BaseResponse permissionGet(HttpServletRequest request) {
log.info("请求接口[GET]: /permission/get");
return permissionService.permissionGet(request);
}
/**
* 编辑权限信息
*
* @param permissionEditVo {@link PermissionEditVO} 对象包含更新后的权限信息
* @param bindingResult Binding结果对象包含任何验证错误
* @param request HTTP请求对象
* @return {@link BaseResponse} 对象包含操作结果
*/
@PutMapping("/permission/edit")
public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo, BindingResult bindingResult, HttpServletRequest request){
public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo, BindingResult bindingResult, HttpServletRequest request) {
log.info("请求接口[PUT]: /permission/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return permissionService.permissionEdit(permissionEditVo,request);
return permissionService.permissionEdit(permissionEditVo, request);
}
/**
* 删除权限
*
* @param pid 权限ID
* @param request HTTP请求对象
* @return {@link BaseResponse} 对象包含操作结果
*/
@DeleteMapping("/permission/delete")
public BaseResponse permissionDelete(@RequestParam Long pid,HttpServletRequest request){
public BaseResponse permissionDelete(@RequestParam Long pid, HttpServletRequest request) {
log.info("请求接口[Delete]: /permission/delete");
// 判断是否有参数错误
if (pid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else return permissionService.permissionDelete(request,pid);
} else {
return permissionService.permissionDelete(request, pid);
}
}
}

View File

@ -1,7 +1,10 @@
package com.jsl.oa.controllers;
import com.jsl.oa.model.voData.*;
import com.jsl.oa.model.voData.business.info.ProjectShowVO;
import com.jsl.oa.model.vodata.ProjectCuttingAddVO;
import com.jsl.oa.model.vodata.ProjectCuttingEditVO;
import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectWorkVO;
import com.jsl.oa.model.vodata.business.info.ProjectShowVO;
import com.jsl.oa.services.ProjectService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -17,101 +20,109 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 项目控制器
*
* @author xiao_lfeng | xiangZr-hhh | 176yunxuan
* @version 1.1.0
* @since 1.1.0
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class ProjectController {
/**
* 项目服务
*/
private final ProjectService projectService;
/**
* 项目展示获取
* 项目轮播图
*
* @param id
* @return
* @param id 获取项目 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/header/get")
public BaseResponse projectGetHeader(@RequestParam(required = false) Integer id) {
public BaseResponse projectGetHeader(@RequestParam(required = false) final Integer id) {
log.info("请求接口[GET]: /project/header/get");
return projectService.getHeader(id);
}
/**
*
* @param id
* @return
* @param id 获取项目 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/get/id")
public BaseResponse projectGetById(@RequestParam Integer id){
public BaseResponse projectGetById(@RequestParam Integer id) {
return projectService.getById(id);
}
/**
*
* @param id
* @return
* @param id 获取项目 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/getwork/id")
public BaseResponse projectWorkGetById(@RequestParam Integer id){
public BaseResponse projectWorkGetById(@RequestParam Integer id) {
return projectService.getWorkById(id);
}
/**
* 游客获取项目
*
* @return
* @return {@link BaseResponse}
*/
@GetMapping("/project/get/custom")
public BaseResponse projectGetCustom(@RequestParam(required = false) Integer id,
@RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish,
@RequestParam(required = false,defaultValue = "1") Integer page,
@RequestParam(required = false,defaultValue = "10") Integer pageSize) {
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
log.info("请求接口[GET]: /project/all/get");
return projectService.tget(id, tags, isFinish,page,pageSize);
return projectService.tget(id, tags, isFinish, page, pageSize);
}
/**
* 我负责的界面的获取项目
*
* @return
* @return {@link BaseResponse}
*/
@GetMapping("/project/get")
public BaseResponse projectGet(@RequestParam(required = false) Integer listAll,
@RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish,
@RequestParam(required = false,defaultValue = "1") Integer page,
@RequestParam(required = false,defaultValue = "10") Integer pageSize,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize,
HttpServletRequest request) {
log.info("请求接口[GET]: /project/get");
return projectService.get(listAll, request, tags, isFinish,page,pageSize);
return projectService.get(listAll, request, tags, isFinish, page, pageSize);
}
/**
* 我管理的查询
*
* @return
* @return {@link BaseResponse}
*/
@GetMapping("/project/work/get")
public BaseResponse projectWorkGet(@RequestParam(required = false) Integer listAll,
@RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish,
@RequestParam(required = false) Integer is,
@RequestParam(required = false,defaultValue = "1") Integer page,
@RequestParam(required = false,defaultValue = "10") Integer pageSize,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize,
HttpServletRequest request) {
log.info("请求接口[GET]: /project/work/get");
return projectService.workget(listAll, request, tags, isFinish, is,page,pageSize);
return projectService.workget(listAll, request, tags, isFinish, is, page, pageSize);
}
/**
* 单个项目的详细
* 项目轮播图
*
* @param name
* @return
* @param name 获取项目名称
* @return {@link BaseResponse}
*/
@GetMapping("/project/header")
public BaseResponse projectGetByName(@RequestParam String name) {
@ -123,17 +134,16 @@ public class ProjectController {
* 增加项目展示
* 项目轮播图
*
* @param projectShowVO
* @param request
* @param bindingResult
* @return
* @param projectShowVO 项目展示信息
* @param request 请求
* @param bindingResult 参数校验
* @return {@link BaseResponse}
*/
@PostMapping("/project/header/add")
public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, HttpServletRequest request, @NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/header/add");
// 参数校验
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
log.warn("参数校验失败: {}", Processing.getValidatedErrorList(bindingResult));
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.addHeader(request, projectShowVO);
@ -143,109 +153,54 @@ public class ProjectController {
* 编辑展示的项目
* 项目轮播图
*
* @param projectShowVO
* @param id
* @param request
* @param bindingResult
* @return
* @param projectId 项目 id
* @param request 请求
* @param projectEdit 项目信息
* @param bindingResult 参数校验
* @return {@link BaseResponse}
*/
@PutMapping("/project/header/edit")
public BaseResponse projectEditHeader(@RequestBody @Validated ProjectShowVO projectShowVO, @RequestParam Integer id, HttpServletRequest request, @NotNull BindingResult bindingResult) {
log.info("请求接口[PUT]: /project/header/edit");
// 参数校验
@PutMapping("/project/header/edit/{projectId}")
public BaseResponse projectEditById(@RequestParam Long projectId, HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, @NotNull BindingResult bindingResult) {
log.info("请求接口[PUT]: /project/header/edit/{projectId}");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
log.warn("参数校验失败: {}", Processing.getValidatedErrorList(bindingResult));
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
if (id == null) {
log.warn("参数校验失败: {}", "id不能为空");
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "id不能为空");
}
return projectService.editHeader(request, projectShowVO, id);
}
/**
* 删除项目展示
* 项目轮播图
*
* @param id
* @param request
* @return
*/
@DeleteMapping("/project/header/del")
public BaseResponse projectDelHeader(@RequestParam Integer id, HttpServletRequest request) {
log.info("请求接口[Delete]: /project/header/del");
return projectService.delHeader(id, request);
}
/**
* 项目表进行项目增加
*
* @return
*/
@PostMapping("/project/add")
public BaseResponse projectAdd(HttpServletRequest request, @RequestBody @Validated ProjectInfoVO projectAdd, @NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.projectAdd(request, projectAdd);
}
/**
* @Description: 项目的修改
* @Date: 2024/3/10
* @Param request:
* @Param projectEdit:
* @Param bindingResult:
* @Param projectId:
**/
@PutMapping("/project/edit/{projectId}")
public BaseResponse projectEditById(HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit,
@NotNull BindingResult bindingResult, @PathVariable("projectId") Long projectId) {
log.info("请求接口[PUT]: /project/edit/{projectId}");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.projectEdit(request, projectEdit, projectId);
}
/**
* 子系统子模块的增加
*
* @param request
* @param bindingResult
* @return
* @param request 请求
* @param bindingResult 参数校验
* @return {@link BaseResponse}
*/
@PostMapping("/project/work/add")
public BaseResponse projectWorkAdd(HttpServletRequest request, @RequestBody @Validated ProjectWorkVO projectWorkVO, @NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/work/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.projecWorktAdd(request, projectWorkVO);
}
/**
* 获取负责人id
* @return
*
* @return {@link BaseResponse}
*/
@GetMapping("/project/pri")
public BaseResponse projectPrincipalGet(){
public BaseResponse projectPrincipalGet() {
return projectService.projectPrincipalGet();
}
/**
* 用户获取所分到的项目模块
*
* @param uid
* @return
* @param uid 用户 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/cut/user")
public BaseResponse projectGetUserInCutting(@RequestParam Long uid) {
@ -260,13 +215,13 @@ public class ProjectController {
/**
* 给某用户分配项目模块
*
* @param uid
* @param pid
* @return
* @param uid 用户 id
* @param pid 项目 id
* @return {@link BaseResponse}
*/
@PostMapping("/project/cut/user/add")
public BaseResponse projectAddUserForCutting(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long pid) {
log.info("请求接口[POST]: /project/cut/user/add");
log.info("请求接口[Post]: /project/cut/user/add");
// 判断是否有参数错误
if (uid == null || pid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
@ -277,8 +232,8 @@ public class ProjectController {
/**
* 删除某项目记录
*
* @param id
* @return
* @param id 用户 id
* @return {@link BaseResponse}
*/
@DeleteMapping("/project/delete")
public BaseResponse projectDelete(HttpServletRequest request, @RequestParam List<Long> id) {
@ -290,12 +245,13 @@ public class ProjectController {
}
/**
* @Description: 添加项目模块
* @Date: 2024/1/21
* @Param request
* @Param projectCuttingAddVO
* @Param bindingResult
**/
* 项目轮播图
*
* @param request 请求
* @param projectCuttingAddVO 项目轮播图信息
* @param bindingResult 参数校验
* @return {@link BaseResponse}
*/
@PostMapping("/project/cut/add")
public BaseResponse projectCuttingAdd(HttpServletRequest request, @RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO, @NotNull BindingResult bindingResult) {
log.info("请求接口[Post]: /project/cut/add");

View File

@ -1,8 +1,8 @@
package com.jsl.oa.controllers;
import com.jsl.oa.exception.ClassCopyException;
import com.jsl.oa.model.voData.RoleAddVo;
import com.jsl.oa.model.voData.RoleEditVO;
import com.jsl.oa.model.vodata.RoleAddVo;
import com.jsl.oa.model.vodata.RoleEditVO;
import com.jsl.oa.services.RoleService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -22,10 +22,10 @@ import javax.servlet.http.HttpServletRequest;
* <hr/>
* 角色控制器包含角色获取接口
*
* @author xiao_lfeng | 176yunxuan | xiangZr-hhh
* @version v1.1.0
* @see RoleService
* @since v1.1.0
* @author xiao_lfeng | 176yunxuan | xiangZr-hhh
*/
@Slf4j
@RestController
@ -52,8 +52,8 @@ public class RoleController {
* <hr/>
* 角色编辑接口
*
* @param request 请求
* @param roleEditVO 角色编辑VO
* @param request 请求
* @param roleEditVO 角色编辑VO
* @param bindingResult 参数校验结果
* @return {@link BaseResponse}
*/
@ -73,7 +73,7 @@ public class RoleController {
* 角色删除接口
*
* @param request 请求
* @param id 角色id
* @param id 角色id
* @return {@link BaseResponse}
*/
@DeleteMapping("/role/delete")
@ -124,7 +124,7 @@ public class RoleController {
* @Param uid:
**/
@PostMapping("role/add")
public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult ) throws ClassCopyException {
public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult) throws ClassCopyException {
log.info("请求接口[POST]: /role/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -135,7 +135,7 @@ public class RoleController {
/**
* @Description: 改变用户角色权限信息
* @Description: 改变用户角色权限信息
* @Date: 2024/1/20
* @Param request:
* @Param uid: 用户id
@ -152,8 +152,4 @@ public class RoleController {
}
}

View File

@ -1,9 +1,9 @@
package com.jsl.oa.controllers;
import com.jsl.oa.model.voData.UserAddVO;
import com.jsl.oa.model.voData.UserAllCurrentVO;
import com.jsl.oa.model.voData.UserEditProfileVO;
import com.jsl.oa.model.voData.UserEditVO;
import com.jsl.oa.model.vodata.UserAddVO;
import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserEditProfileVO;
import com.jsl.oa.model.vodata.UserEditVO;
import com.jsl.oa.services.UserService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;

View File

@ -2,7 +2,7 @@ package com.jsl.oa.dao;
import com.google.gson.Gson;
import com.jsl.oa.mapper.InfoMapper;
import com.jsl.oa.model.doData.info.CarouselDO;
import com.jsl.oa.model.dodata.info.CarouselDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
@ -64,12 +64,13 @@ public class InfoDAO {
private void sortCarousel(CarouselDO getCarousel) {
for (int i = 0; i < getCarousel.getData().size(); i++) {
for (int j = 0; j < getCarousel.getData().size(); j++) {
CarouselDO.DataDO dataDO = getCarousel.getData().get(i);
if ("desc".equals(getCarousel.getOrder())) {
if (getCarousel.getData().get(i).getDisplayOrder() > getCarousel.getData().get(j).getDisplayOrder()) {
if (dataDO.getDisplayOrder() > dataDO.getDisplayOrder()) {
Collections.swap(getCarousel.getData(), i, j);
}
} else {
if (getCarousel.getData().get(i).getDisplayOrder() < getCarousel.getData().get(j).getDisplayOrder()) {
if (dataDO.getDisplayOrder() < dataDO.getDisplayOrder()) {
Collections.swap(getCarousel.getData(), i, j);
}
}

View File

@ -1,7 +1,7 @@
package com.jsl.oa.dao;
import com.jsl.oa.mapper.NewsMapper;
import com.jsl.oa.model.doData.NewsDO;
import com.jsl.oa.model.dodata.NewsDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

View File

@ -4,7 +4,7 @@ import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.model.doData.PermissionDO;
import com.jsl.oa.model.dodata.PermissionDO;
import com.jsl.oa.utils.redis.RoleRedisUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

View File

@ -2,14 +2,14 @@ package com.jsl.oa.dao;
import com.google.gson.Gson;
import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.ProjectUserDO;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectEditVO;
import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.model.voData.ProjectWorkVO;
import com.jsl.oa.model.dodata.ProjectCuttingDO;
import com.jsl.oa.model.dodata.ProjectDO;
import com.jsl.oa.model.dodata.ProjectUserDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import com.jsl.oa.model.dodata.info.ProjectShowDO;
import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectInfoVO;
import com.jsl.oa.model.vodata.ProjectWorkVO;
import com.jsl.oa.utils.Processing;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -48,7 +48,7 @@ public class ProjectDAO {
log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法");
log.info("\t\t> 从 MySQL 更新数据");
ProjectDO projectDO = new ProjectDO();
Processing.copyProperties(projectEdit,projectDO);
Processing.copyProperties(projectEdit, projectDO);
projectDO.setId(projectId);
projectMapper.projectEdit(projectDO);
log.info("\t\t> 从 MySQL 获取数据");
@ -123,28 +123,28 @@ public class ProjectDAO {
}
public ProjectDO getProjectById(Long id){
public ProjectDO getProjectById(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectById 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(id);
}
public List<ProjectDO> get(Long userId,Integer listAll,List<String> tags,List<Integer> isFinish) {
public List<ProjectDO> get(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish) {
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
log.info("\t\t> 从 MySQL 获取数据");
if(tags != null && !tags.isEmpty()){
if (tags != null && !tags.isEmpty()) {
log.info("tags");
return projectMapper.getByTags(userId,tags,isFinish);
return projectMapper.getByTags(userId, tags, isFinish);
}
if(isFinish != null && !isFinish.isEmpty()){
if (isFinish != null && !isFinish.isEmpty()) {
log.info("finish");
return projectMapper.getByIsfinish(userId,isFinish);
return projectMapper.getByIsfinish(userId, isFinish);
}
if(listAll == 0) {
if (listAll == 0) {
return projectMapper.get(userId);
}else {
} else {
return projectMapper.get1(userId);
}
}
@ -152,18 +152,18 @@ public class ProjectDAO {
public List<ProjectDO> workget(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish, Integer is) {
log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法");
log.info("\t\t> 从 MySQL 获取数据");
if(tags != null && !tags.isEmpty()){
return projectMapper.workgetByTags(userId,tags,is,isFinish);
if (tags != null && !tags.isEmpty()) {
return projectMapper.workgetByTags(userId, tags, is, isFinish);
}
if(isFinish != null && !isFinish.isEmpty()){
return projectMapper.workgetByIsfinish(userId,isFinish,is);
if (isFinish != null && !isFinish.isEmpty()) {
return projectMapper.workgetByIsfinish(userId, isFinish, is);
}
if(listAll == 0) {
return projectMapper.workget(userId,is);
}else {
return projectMapper.workget1(userId,is);
if (listAll == 0) {
return projectMapper.workget(userId, is);
} else {
return projectMapper.workget1(userId, is);
}
}
@ -173,54 +173,54 @@ public class ProjectDAO {
return projectMapper.getByName(name);
}
public boolean projectDelete(Long id){
public boolean projectDelete(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectDelete 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.deleteProject(id);
}
public void projectCuttingAdd(ProjectCuttingDO projectCuttingDO){
public void projectCuttingAdd(ProjectCuttingDO projectCuttingDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectCuttingAdd 方法");
log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectCuttingAdd(projectCuttingDO);
}
public boolean isExistProjectById(Long id){
public boolean isExistProjectById(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectById 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(id) != null;
}
public boolean updateProjectCutting(ProjectCuttingDO projectCuttingDO){
public boolean updateProjectCutting(ProjectCuttingDO projectCuttingDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.updateProjectCutting 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.projectCuttingUpdate(projectCuttingDO);
}
public boolean isExistProjectCutting(Long id){
public boolean isExistProjectCutting(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectCutting 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectCuttingById(id) != null;
}
public boolean isExistProjectUser(Long pid,Long uid){
public boolean isExistProjectUser(Long pid, Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectUse 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectUserByPidAndUid(pid, uid) != null;
}
public boolean updateUserForProjectUserByPidAndUid(Long pid,Long oldUid,Long newUid){
public boolean updateUserForProjectUserByPidAndUid(Long pid, Long oldUid, Long newUid) {
log.info("\t> 执行 DAO 层 ProjectDAO.updateUserForProjectUserByPidAndUid 方法");
log.info("\t\t> 从 MySQL 获取数据");
ProjectUserDO projectUserDO = projectMapper.getProjectUserByPidAndUid(pid,oldUid);
if(projectUserDO == null){
ProjectUserDO projectUserDO = projectMapper.getProjectUserByPidAndUid(pid, oldUid);
if (projectUserDO == null) {
return false;
}
log.info("\t\t> 从 MySQL 更新数据");
return projectMapper.updateUserForProjectUser(newUid,projectUserDO.getId());
return projectMapper.updateUserForProjectUser(newUid, projectUserDO.getId());
}
public boolean isPrincipalUser(Long uid, Long projectId){
public boolean isPrincipalUser(Long uid, Long projectId) {
log.info("\t> 执行 DAO 层 ProjectDAO.isPrincipalUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
ProjectDO projectDO = projectMapper.getProjectById(projectId);
@ -228,21 +228,21 @@ public class ProjectDAO {
}
public List<ProjectDO> tget(Integer id,List<Integer> isFinish,List<String> tags) {
public List<ProjectDO> tget(Integer id, List<Integer> isFinish, List<String> tags) {
log.info("DAO层tget");
if(tags != null && !tags.isEmpty()){
return projectMapper.tgetBytags(tags,isFinish);
if (tags != null && !tags.isEmpty()) {
return projectMapper.tgetBytags(tags, isFinish);
}
if(isFinish != null && !isFinish.isEmpty()){
if (isFinish != null && !isFinish.isEmpty()) {
return projectMapper.tgetByIsfinish(isFinish);
}
return projectMapper.tget(id);
}
public ProjectWorkDO getProjectWorkerById(Long id){
public ProjectWorkDO getProjectWorkerById(Long id) {
return projectMapper.getProjectWorkById(id);
}

View File

@ -4,8 +4,8 @@ import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.utils.redis.RoleRedisUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -44,7 +44,8 @@ public class RoleDAO {
return roleMapper.getRoleById(id);
} else {
log.info("\t\t> 从 Redis 获取数据");
List<RoleDO> roleList = gson.fromJson(getRedisData, new TypeToken<List<RoleDO>>() {}.getType());
List<RoleDO> roleList = gson.fromJson(getRedisData, new TypeToken<List<RoleDO>>() {
}.getType());
for (RoleDO roleDO : roleList) {
if (roleDO.getId().equals(id)) {
return roleDO;
@ -64,7 +65,8 @@ public class RoleDAO {
return roleList;
} else {
log.info("\t\t> 从 Redis 获取数据");
return gson.fromJson(getRedisData, new TypeToken<List<RoleDO>>() {}.getType());
return gson.fromJson(getRedisData, new TypeToken<List<RoleDO>>() {
}.getType());
}
}
@ -77,7 +79,7 @@ public class RoleDAO {
}
public RoleDO getRoleNameByUid(Long uid){
public RoleDO getRoleNameByUid(Long uid) {
log.info("\t> 执行 DAO 层 RoleDAO.getRoleNameByUid 方法");
log.info("\t\t> 从 MySQL 获取数据");
RoleDO roleDO = roleMapper.getRoleById(getRoleUserByUid(uid).getRid());

View File

@ -1,7 +1,7 @@
package com.jsl.oa.dao;
import com.jsl.oa.mapper.TagMapper;
import com.jsl.oa.model.doData.TagProjectDO;
import com.jsl.oa.model.dodata.TagProjectDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;

View File

@ -3,12 +3,12 @@ package com.jsl.oa.dao;
import com.google.gson.Gson;
import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.voData.UserAllCurrentVO;
import com.jsl.oa.model.voData.UserCurrentBackVO;
import com.jsl.oa.model.voData.UserEditProfileVO;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserCurrentBackVO;
import com.jsl.oa.model.vodata.UserEditProfileVO;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.redis.UserRedisUtil;
import lombok.RequiredArgsConstructor;

View File

@ -19,8 +19,8 @@ import org.springframework.web.method.annotation.MethodArgumentTypeMismatchExcep
* <hr/>
* 用于处理异常
*
* @author xiao_lfeng
* @version v1.1.0
* @since v1.1.0
* @see HttpRequestMethodNotSupportedException
* @see DuplicateKeyException
* @see HttpMessageNotReadableException
@ -28,7 +28,7 @@ import org.springframework.web.method.annotation.MethodArgumentTypeMismatchExcep
* @see Exception
* @see ClassCopyException
* @see MethodArgumentTypeMismatchException
* @author xiao_lfeng
* @since v1.1.0
*/
@Slf4j
@RestControllerAdvice
@ -51,6 +51,7 @@ public class ProcessException {
log.warn(e.getMessage(), e);
return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误");
}
@ExceptionHandler(value = MissingServletRequestParameterException.class)
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterException(MissingServletRequestParameterException e) {
log.error(e.getMessage(), e);

View File

@ -1,6 +1,6 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.ConfigDO;
import com.jsl.oa.model.dodata.ConfigDO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Update;
*
* @since v1.1.0
* @version v1.1.0
* @see com.jsl.oa.model.doData.ConfigDO
* @see com.jsl.oa.model.dodata.ConfigDO
*/
@Mapper
public interface InfoMapper {

View File

@ -1,6 +1,6 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.MessageDO;
import com.jsl.oa.model.dodata.MessageDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
@ -12,9 +12,9 @@ import java.util.List;
@Mapper
public interface MessageMapper {
@Update("UPDATE organize_oa.oa_message " +
"SET `read` = 1, deleted_at = CURRENT_TIMESTAMP " +
"WHERE id = #{mid}")
@Update("UPDATE organize_oa.oa_message "
+ "SET `read` = 1, deleted_at = CURRENT_TIMESTAMP "
+ "WHERE id = #{mid}")
boolean deleteMessage(Long mid);
@Select("SELECT * FROM organize_oa.oa_message where id = #{mid}")

View File

@ -1,6 +1,6 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@ -12,10 +12,8 @@ public interface ModuleMapper {
//@Select("select * from organize_oa.oa_project_work where project_id=#{projectId} and principal_id=#{userId} and type=0")
List<ProjectWorkDO> getByProjectId(Integer projectId, Long userId,int is);
//@Select("select * from organize_oa.oa_project_work where pid=#{sysId} and type=1")
List<ProjectWorkDO> getBySysId(Integer sysId, Long userId,int is);
@Select("select principal_id from organize_oa.oa_project where id=#{projectId}")
@ -30,7 +28,7 @@ public interface ModuleMapper {
@Select("select * from organize_oa.oa_project_work where pid=#{id} and is_delete=0 and type=1 ")
List<ProjectWorkDO> getAllMoudleByPid(Long id);
@Select("select principal_id from organize_oa.oa_project where id=(select project_id " +
"from organize_oa.oa_project_work where oa_project_work.id = #{sysId})")
@Select("select principal_id from organize_oa.oa_project where id=(select project_id "
+ "from organize_oa.oa_project_work where oa_project_work.id = #{sysId})")
Long getPridBySysyid(Integer sysId);
}

View File

@ -1,7 +1,7 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.NewsDO;
import com.jsl.oa.model.dodata.NewsDO;
import org.apache.ibatis.annotations.*;
import java.util.List;
@ -10,26 +10,26 @@ import java.util.List;
public interface NewsMapper {
@Select("SELECT * FROM organize_oa.oa_news WHERE id = #{id}")
NewsDO selectNewsById( Long id);
NewsDO selectNewsById(Long id);
@Select("SELECT * FROM organize_oa.oa_news WHERE status = #{status}")
List<NewsDO> selectNewsByStatus( Integer status);
List<NewsDO> selectNewsByStatus(Integer status);
@Insert("INSERT INTO organize_oa.oa_news(title, content, tags, status) " +
"VALUES(#{title}, #{content}, #{tags}, #{status})")
@Insert("INSERT INTO organize_oa.oa_news(title, content, tags, status) "
+ "VALUES(#{title}, #{content}, #{tags}, #{status})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void addNews(NewsDO news);
@Update("UPDATE organize_oa.oa_news SET title = #{title}, content = #{content}, tags = #{tags}, " +
"likes = #{likes}, comments = #{comments}, status = #{status}, update_at = CURRENT_TIMESTAMP " +
"WHERE id = #{id}")
@Update("UPDATE organize_oa.oa_news SET title = #{title}, content = #{content}, tags = #{tags}, "
+ "likes = #{likes}, comments = #{comments}, status = #{status}, update_at = CURRENT_TIMESTAMP "
+ "WHERE id = #{id}")
void updateNews(NewsDO news);
@Delete("DELETE FROM organize_oa.oa_news WHERE id = #{id}")
void deleteNewsById( Long id);
void deleteNewsById(Long id);
@Insert("INSERT INTO organize_oa.oa_news_user(uid,nid)"+
"VALUES(#{uid}, #{nid})")
void addNewsUser(Long uid,Long nid);
@Insert("INSERT INTO organize_oa.oa_news_user(uid,nid)"
+ "VALUES(#{uid}, #{nid})")
void addNewsUser(Long uid, Long nid);
}

View File

@ -1,7 +1,7 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.PermissionDO;
import com.jsl.oa.model.doData.RolePermissionDO;
import com.jsl.oa.model.dodata.PermissionDO;
import com.jsl.oa.model.dodata.RolePermissionDO;
import org.apache.ibatis.annotations.*;
import java.util.List;
@ -14,7 +14,7 @@ public interface PermissionMapper {
@Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN " +
"(SELECT pid FROM organize_oa.oa_role_permissions WHERE rid IN " +
"(SELECT rid FROM organize_oa.oa_role_user WHERE uid = #{uid}))")
"(SELECT rid FROM organize_oa.oa_role_user WHERE uid = #{uid}))")
List<PermissionDO> permissionUserPid(Long uid);
@Select("SELECT * FROM organize_oa.oa_permissions where id=#{id}")

View File

@ -1,13 +1,16 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.ProjectUserDO;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.model.voData.ProjectWorkSimpleVO;
import com.jsl.oa.model.voData.ProjectWorkVO;
import org.apache.ibatis.annotations.*;
import com.jsl.oa.model.dodata.ProjectCuttingDO;
import com.jsl.oa.model.dodata.ProjectDO;
import com.jsl.oa.model.dodata.ProjectUserDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import com.jsl.oa.model.vodata.ProjectInfoVO;
import com.jsl.oa.model.vodata.ProjectWorkSimpleVO;
import com.jsl.oa.model.vodata.ProjectWorkVO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@ -36,7 +39,7 @@ public interface ProjectMapper {
ProjectDO tgetProjectById(Integer id);
@Select("select * from organize_oa.oa_project_work where principal_id=#{uid}")
//"(select id from organize_oa.oa_project_work where id in)")
//"(select id from organize_oa.oa_project_work where id in)")
List<ProjectCuttingDO> projectGetUserInCutting(Long uid);
@Insert("update organize_oa.oa_project_work set principal_id =#{uid} where id=#{pid}")
@ -52,12 +55,12 @@ public interface ProjectMapper {
boolean setProjectShow(String setProjectShow);
//@Select("select * from organize_oa.oa_project where json_extract(tags,'$.tags')" +
//"like concat('%',#{tags},'%')")
//"like concat('%',#{tags},'%')")
//@Select("select * from organize_oa.oa_project where is_finish=#{isFinish} and is_delete=false and principal_id=#{userId}")
List<ProjectDO>getByIsfinish(Long userId,List<Integer> isFinish);
List<ProjectDO> getByIsfinish(Long userId, List<Integer> isFinish);
List<ProjectDO>getByTags(Long userId,List<String> tags,List<Integer> isFinish);
List<ProjectDO> getByTags(Long userId, List<String> tags, List<Integer> isFinish);
@Select("select * from organize_oa.oa_project where is_delete=false and status=1 and principal_id=#{userId}")
List<ProjectDO> get(Long userId);
@ -93,10 +96,10 @@ public interface ProjectMapper {
//@Select("select * from organize_oa.oa_project_work where is_finish=#{isFinish} and is_delete=false and principal_id =#{userId}")
List<ProjectDO> workgetByIsfinish(Long userId, List<Integer> isFinish, Integer is);
List<ProjectDO> workgetByTags(Long userId, List<String> tags, Integer is,List<Integer> isFinish);
List<ProjectDO> workgetByTags(Long userId, List<String> tags, Integer is, List<Integer> isFinish);
//@Select("select * from organize_oa.oa_project where id in(select project_id from " +
//"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)")
//"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)")
List<ProjectDO> workget(Long userId, Integer is);
//@Select("select * from organize_oa.oa_project_work where status=1 and principal_id=#{userId}")
@ -107,12 +110,12 @@ public interface ProjectMapper {
List<ProjectDO> tgetByIsfinish(List<Integer> isFinish);
List<ProjectDO> tgetBytags(List<String> tags,List<Integer> isFinish);
List<ProjectDO> tgetBytags(List<String> tags, List<Integer> isFinish);
@Select("select * from organize_oa.oa_project_work where id=#{id}")
ProjectWorkSimpleVO getWorkById(Integer id);
@Select("select * from organize_oa.oa_project_work where id=#{id}")
ProjectWorkSimpleVO getWorkById(Integer id);
@Select("select principal_id from organize_oa.oa_project_work where id=#{pid}")
@Select("select principal_id from organize_oa.oa_project_work where id=#{pid}")
Long getPirIdbyWorkid(Long pid);
@Select("select principal_id from organize_oa.oa_project_work where id=#{id}")

View File

@ -1,7 +1,7 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
import org.apache.ibatis.annotations.*;
import java.util.List;

View File

@ -1,6 +1,6 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.TagProjectDO;
import com.jsl.oa.model.dodata.TagProjectDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

View File

@ -1,11 +1,11 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.voData.PrincipalSelectVO;
import com.jsl.oa.model.voData.UserAllCurrentVO;
import com.jsl.oa.model.voData.UserEditProfileVO;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.PrincipalSelectVO;
import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserEditProfileVO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
@ -12,8 +12,8 @@ import java.sql.Timestamp;
* 映射 oa_project_cutting 数据表内容进入自定义实体类
*
* @author 筱锋xiao_lfeng
* @since v1.1.0
* @version v1.1.0
* @since v1.1.0
*/
@Data
@Accessors(chain = true)

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,5 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
@ -25,4 +24,4 @@ public class ProjectWorkDO {
private boolean status;
private Timestamp beginTime;
private Timestamp completeTime;
}
}

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData;
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData.info;
package com.jsl.oa.model.dodata.info;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.doData.info;
package com.jsl.oa.model.dodata.info;
import lombok.Data;
import lombok.experimental.Accessors;
@ -8,7 +8,7 @@ import java.util.List;
@Data
public class ProjectShowDO {
private String order;
private List<com.jsl.oa.model.doData.info.ProjectShowDO.DataDO> data;
private List<com.jsl.oa.model.dodata.info.ProjectShowDO.DataDO> data;
@Data
@Accessors(chain = true)
@ -22,4 +22,4 @@ public class ProjectShowDO {
private String updatedAt;
private String author;
}
}
}

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,12 +1,7 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.Getter;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
@Data

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,6 +1,5 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.NotBlank;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;
import lombok.Setter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;
import lombok.Setter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Getter;
import lombok.Setter;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData;
package com.jsl.oa.model.vodata;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData.business;
package com.jsl.oa.model.vodata.business;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData.business.info;
package com.jsl.oa.model.vodata.business.info;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.jsl.oa.model.voData.business.info;
package com.jsl.oa.model.vodata.business.info;
import lombok.Data;

View File

@ -2,8 +2,8 @@ package com.jsl.oa.schedule;
import com.google.gson.Gson;
import com.jsl.oa.mapper.InfoMapper;
import com.jsl.oa.model.doData.ConfigDO;
import com.jsl.oa.model.voData.business.InfoAboutSecurityKey;
import com.jsl.oa.model.dodata.ConfigDO;
import com.jsl.oa.model.vodata.business.InfoAboutSecurityKey;
import com.jsl.oa.utils.Processing;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Scheduled;

View File

@ -1,9 +1,9 @@
package com.jsl.oa.services;
import com.jsl.oa.model.voData.UserChangePasswordVO;
import com.jsl.oa.model.voData.UserForgetPasswordVO;
import com.jsl.oa.model.voData.UserLoginVO;
import com.jsl.oa.model.voData.UserRegisterVO;
import com.jsl.oa.model.vodata.UserChangePasswordVO;
import com.jsl.oa.model.vodata.UserForgetPasswordVO;
import com.jsl.oa.model.vodata.UserLoginVO;
import com.jsl.oa.model.vodata.UserRegisterVO;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;
@ -68,7 +68,7 @@ public interface AuthService {
* @param userChangePasswordVO 用户修改密码信息
* @return {@link BaseResponse}
*/
BaseResponse authChangePassword(HttpServletRequest request, UserChangePasswordVO userChangePasswordVO);
BaseResponse authChangePassword(UserChangePasswordVO userChangePasswordVO, HttpServletRequest request);
/**
* <h2>用户登出</h2>

View File

@ -1,6 +1,6 @@
package com.jsl.oa.services;
import com.jsl.oa.model.voData.business.info.CarouselVO;
import com.jsl.oa.model.vodata.business.info.CarouselVO;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;

View File

@ -16,9 +16,17 @@ import java.time.LocalDate;
*/
public interface MessageService {
BaseResponse messageDelete(Long mid,HttpServletRequest request);
BaseResponse messageDelete(Long mid, HttpServletRequest request);
BaseResponse messageGet(LocalDate begin,LocalDate end,Long page,Long pageSize,Long uid);
BaseResponse messageGet(LocalDate begin, LocalDate end, Long page, Long pageSize, Long uid);
BaseResponse messageGetAll(HttpServletRequest request,LocalDate begin, LocalDate end, Long page, Long pageSize, Long loginId, Long uid);
BaseResponse messageGetAll(
HttpServletRequest request,
LocalDate begin,
LocalDate end,
Long page,
Long pageSize,
Long loginId,
Long uid
);
}

View File

@ -1,8 +1,6 @@
package com.jsl.oa.services;
import com.jsl.oa.utils.BaseResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;

View File

@ -1,6 +1,6 @@
package com.jsl.oa.services;
import com.jsl.oa.model.voData.NewsAddVO;
import com.jsl.oa.model.vodata.NewsAddVO;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;

View File

@ -1,6 +1,6 @@
package com.jsl.oa.services;
import com.jsl.oa.model.voData.PermissionEditVO;
import com.jsl.oa.model.vodata.PermissionEditVO;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;

Some files were not shown because too many files have changed in this diff Show More