ids);
}
diff --git a/service/src/main/java/cn/bunny/services/mapper/EmailUsersMapper.java b/service/src/main/java/cn/bunny/services/mapper/EmailUsersMapper.java
index 849c062..3a182eb 100644
--- a/service/src/main/java/cn/bunny/services/mapper/EmailUsersMapper.java
+++ b/service/src/main/java/cn/bunny/services/mapper/EmailUsersMapper.java
@@ -1,18 +1,39 @@
package cn.bunny.services.mapper;
+import cn.bunny.dao.dto.system.email.EmailUsersDto;
import cn.bunny.dao.entity.system.EmailUsers;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
- * 邮箱发送表 Mapper 接口
+ * 邮箱用户发送配置 Mapper 接口
*
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-10 15:19:22
*/
@Mapper
public interface EmailUsersMapper extends BaseMapper {
+ /**
+ * * 分页查询邮箱用户发送配置内容
+ *
+ * @param pageParams 邮箱用户发送配置分页参数
+ * @param dto 邮箱用户发送配置查询表单
+ * @return 邮箱用户发送配置分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") EmailUsersDto dto);
+
+ /**
+ * 物理删除邮箱用户发送配置
+ *
+ * @param ids 删除 id 列表
+ */
+ void deleteBatchIdsWithPhysics(List ids);
}
diff --git a/service/src/main/java/cn/bunny/services/security/config/WebSecurityConfig.java b/service/src/main/java/cn/bunny/services/security/config/WebSecurityConfig.java
index 5cb7cf4..65f573f 100644
--- a/service/src/main/java/cn/bunny/services/security/config/WebSecurityConfig.java
+++ b/service/src/main/java/cn/bunny/services/security/config/WebSecurityConfig.java
@@ -30,15 +30,16 @@ import org.springframework.security.web.util.matcher.RegexRequestMatcher;
public class WebSecurityConfig {
@Autowired
private RedisTemplate redisTemplate;
- // 自定义用户接口
+
@Autowired
private CustomUserDetailsService customUserDetailsService;
- // 自定义密码加密器
+
@Autowired
private CustomPasswordEncoder customPasswordEncoder;
- // 自定义验证码
+
@Autowired
private CustomAuthorizationManagerServiceImpl customAuthorizationManagerService;
+
@Autowired
private AuthenticationConfiguration authenticationConfiguration;
@@ -48,7 +49,7 @@ public class WebSecurityConfig {
// 前端段分离不需要---禁用明文验证
.httpBasic(AbstractHttpConfigurer::disable)
// 前端段分离不需要---禁用默认登录页
- .formLogin(AbstractHttpConfigurer::disable)
+ // .formLogin(AbstractHttpConfigurer::disable)
// 前端段分离不需要---禁用退出页
.logout(AbstractHttpConfigurer::disable)
// 前端段分离不需要---csrf攻击
@@ -60,9 +61,6 @@ public class WebSecurityConfig {
// 前后端分离不需要---记住我,e -> e.rememberMeParameter("rememberBunny").rememberMeCookieName("rememberBunny").key("BunnyKey")
.rememberMe(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(authorize -> {
- // 有样式文件,不需要访问权限
- // authorize.requestMatchers(RegexRequestMatcher.regexMatcher("^\\S*[css|js]$")).permitAll();
- authorize.requestMatchers(RegexRequestMatcher.regexMatcher("^.*\\.(css|js)$")).permitAll();
// 上面都不是需要鉴权访问
authorize.anyRequest().access(customAuthorizationManagerService);
})
@@ -94,10 +92,10 @@ public class WebSecurityConfig {
String[] annotations = {
"/", "/ws/**",
"/*/*/noAuth/**", "/*/noAuth/**", "/noAuth/**",
- "/media.ico", "/favicon.ico", "*.html", "/webjars/**",
- "/swagger-resources/**", "/v3/**", "/swagger-ui/**",
- "/*/i18n/getI18n"
+ "/media.ico", "/favicon.ico", "*.html", "/webjars/**", "/error", "/*/api-docs/*",
+ "/*/i18n/getI18n",
};
- return web -> web.ignoring().requestMatchers(annotations);
+ return web -> web.ignoring().requestMatchers(annotations)
+ .requestMatchers(RegexRequestMatcher.regexMatcher(".*\\.(css|js)$"));
}
}
diff --git a/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java b/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java
index c290663..8a6543e 100644
--- a/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java
+++ b/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java
@@ -27,7 +27,7 @@ public class NoTokenAuthenticationFilter extends OncePerRequestFilter {
}
@Override
- protected void doFilterInternal(HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull FilterChain filterChain) throws ServletException, IOException {
+ protected void doFilterInternal(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull FilterChain filterChain) throws ServletException, IOException {
// 判断是否有 token
String token = request.getHeader("token");
if (token == null) {
diff --git a/service/src/main/java/cn/bunny/services/security/service/iml/CustomAuthorizationManagerServiceImpl.java b/service/src/main/java/cn/bunny/services/security/service/iml/CustomAuthorizationManagerServiceImpl.java
index 741c94a..d690b9f 100644
--- a/service/src/main/java/cn/bunny/services/security/service/iml/CustomAuthorizationManagerServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/security/service/iml/CustomAuthorizationManagerServiceImpl.java
@@ -4,6 +4,7 @@ import cn.bunny.common.service.context.BaseContext;
import cn.bunny.dao.entity.system.Power;
import cn.bunny.services.mapper.PowerMapper;
import jakarta.servlet.http.HttpServletRequest;
+import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -12,6 +13,7 @@ import org.springframework.security.authorization.AuthorizationManager;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.web.access.intercept.RequestAuthorizationContext;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -31,30 +33,25 @@ public class CustomAuthorizationManagerServiceImpl implements AuthorizationManag
private PowerMapper powerMapper;
+ @SneakyThrows
@Override
public AuthorizationDecision check(Supplier authentication, RequestAuthorizationContext context) {
// 用户的token和用户id、请求Url
HttpServletRequest request = context.getRequest();
- // 请求地址
- String requestURI = request.getRequestURI();
-
- // 请求方式
- String method = request.getMethod();
-
// 角色代码列表
List roleCodeList = authentication.get().getAuthorities().stream().map(GrantedAuthority::getAuthority).toList();
// 校验权限
- return new AuthorizationDecision(hasAuth(requestURI));
+ return new AuthorizationDecision(hasAuth(request));
}
/**
* 查询用户所属的角色信息
*
- * @param requestURI 请求url地址
+ * @param request 请求url地址
*/
- private Boolean hasAuth(String requestURI) {
+ private Boolean hasAuth(HttpServletRequest request) {
// 角色代码列表
List roleCodeList = BaseContext.getLoginVo().getRoles();
@@ -69,6 +66,7 @@ public class CustomAuthorizationManagerServiceImpl implements AuthorizationManag
List powerList = powerMapper.selectListByPowerCodes(powerCodes);
// 判断是否与请求路径匹配
- return powerList.stream().anyMatch(power -> requestURI.matches(power.getRequestUrl()));
+ return powerList.stream().anyMatch(power -> AntPathRequestMatcher.antMatcher(power.getRequestUrl()).matches(request) ||
+ request.getRequestURI().matches(power.getRequestUrl()));
}
}
diff --git a/service/src/main/java/cn/bunny/services/service/EmailTemplateService.java b/service/src/main/java/cn/bunny/services/service/EmailTemplateService.java
index c22adfc..1f200f0 100644
--- a/service/src/main/java/cn/bunny/services/service/EmailTemplateService.java
+++ b/service/src/main/java/cn/bunny/services/service/EmailTemplateService.java
@@ -1,16 +1,52 @@
package cn.bunny.services.service;
+import cn.bunny.dao.dto.system.email.EmailTemplateAddDto;
+import cn.bunny.dao.dto.system.email.EmailTemplateDto;
+import cn.bunny.dao.dto.system.email.EmailTemplateUpdateDto;
import cn.bunny.dao.entity.system.EmailTemplate;
+import cn.bunny.dao.pojo.result.PageResult;
+import cn.bunny.dao.vo.system.email.EmailTemplateVo;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
/**
*
- * 服务类
+ * 邮件模板表 服务类
*
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-10 16:28:29
*/
public interface EmailTemplateService extends IService {
+ /**
+ * * 获取邮件模板表列表
+ *
+ * @return 邮件模板表返回列表
+ */
+ PageResult getEmailTemplateList(Page pageParams, EmailTemplateDto dto);
+
+ /**
+ * * 添加邮件模板表
+ *
+ * @param dto 添加表单
+ */
+ void addEmailTemplate(@Valid EmailTemplateAddDto dto);
+
+ /**
+ * * 更新邮件模板表
+ *
+ * @param dto 更新表单
+ */
+ void updateEmailTemplate(@Valid EmailTemplateUpdateDto dto);
+
+ /**
+ * * 删除|批量删除邮件模板表类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteEmailTemplate(List ids);
}
diff --git a/service/src/main/java/cn/bunny/services/service/EmailUsersService.java b/service/src/main/java/cn/bunny/services/service/EmailUsersService.java
index c3577d3..c5c8e78 100644
--- a/service/src/main/java/cn/bunny/services/service/EmailUsersService.java
+++ b/service/src/main/java/cn/bunny/services/service/EmailUsersService.java
@@ -1,16 +1,52 @@
package cn.bunny.services.service;
+import cn.bunny.dao.dto.system.email.EmailUsersAddDto;
+import cn.bunny.dao.dto.system.email.EmailUsersDto;
+import cn.bunny.dao.dto.system.email.EmailUsersUpdateDto;
import cn.bunny.dao.entity.system.EmailUsers;
+import cn.bunny.dao.pojo.result.PageResult;
+import cn.bunny.dao.vo.system.email.EmailUsersVo;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
/**
*
- * 邮箱发送表 服务类
+ * 邮箱用户发送配置 服务类
*
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-10 15:19:22
*/
public interface EmailUsersService extends IService {
+ /**
+ * * 获取邮箱用户发送配置列表
+ *
+ * @return 邮箱用户发送配置返回列表
+ */
+ PageResult getEmailUsersList(Page pageParams, EmailUsersDto dto);
+
+ /**
+ * * 添加邮箱用户发送配置
+ *
+ * @param dto 添加表单
+ */
+ void addEmailUsers(@Valid EmailUsersAddDto dto);
+
+ /**
+ * * 更新邮箱用户发送配置
+ *
+ * @param dto 更新表单
+ */
+ void updateEmailUsers(@Valid EmailUsersUpdateDto dto);
+
+ /**
+ * * 删除|批量删除邮箱用户发送配置类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteEmailUsers(List ids);
}
diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java
index c8d7948..f09115b 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java
@@ -1,20 +1,92 @@
package cn.bunny.services.service.impl;
+import cn.bunny.dao.dto.system.email.EmailTemplateAddDto;
+import cn.bunny.dao.dto.system.email.EmailTemplateDto;
+import cn.bunny.dao.dto.system.email.EmailTemplateUpdateDto;
import cn.bunny.dao.entity.system.EmailTemplate;
+import cn.bunny.dao.pojo.result.PageResult;
+import cn.bunny.dao.vo.system.email.EmailTemplateVo;
import cn.bunny.services.mapper.EmailTemplateMapper;
import cn.bunny.services.service.EmailTemplateService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.validation.Valid;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
*
- * 服务实现类
+ * 邮件模板表 服务实现类
*
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-10 16:28:29
*/
@Service
public class EmailTemplateServiceImpl extends ServiceImpl implements EmailTemplateService {
+ /**
+ * * 邮件模板表 服务实现类
+ *
+ * @param pageParams 邮件模板表分页查询page对象
+ * @param dto 邮件模板表分页查询对象
+ * @return 查询分页邮件模板表返回对象
+ */
+ @Override
+ public PageResult getEmailTemplateList(Page pageParams, EmailTemplateDto dto) {
+ // 分页查询菜单图标
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ List voList = page.getRecords().stream().map(emailTemplate -> {
+ EmailTemplateVo emailTemplateVo = new EmailTemplateVo();
+ BeanUtils.copyProperties(emailTemplate, emailTemplateVo);
+ return emailTemplateVo;
+ }).toList();
+
+ return PageResult.builder()
+ .list(voList)
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加邮件模板表
+ *
+ * @param dto 邮件模板表添加
+ */
+ @Override
+ public void addEmailTemplate(@Valid EmailTemplateAddDto dto) {
+ // 保存数据
+ EmailTemplate emailTemplate = new EmailTemplate();
+ BeanUtils.copyProperties(dto, emailTemplate);
+ save(emailTemplate);
+ }
+
+ /**
+ * 更新邮件模板表
+ *
+ * @param dto 邮件模板表更新
+ */
+ @Override
+ public void updateEmailTemplate(@Valid EmailTemplateUpdateDto dto) {
+ // 更新内容
+ EmailTemplate emailTemplate = new EmailTemplate();
+ BeanUtils.copyProperties(dto, emailTemplate);
+ updateById(emailTemplate);
+ }
+
+ /**
+ * 删除|批量删除邮件模板表
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteEmailTemplate(List ids) {
+ baseMapper.deleteBatchIdsWithPhysics(ids);
+ }
}
diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java
index f57654e..bf0c85b 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java
@@ -1,19 +1,92 @@
package cn.bunny.services.service.impl;
-
+import cn.bunny.dao.dto.system.email.EmailUsersAddDto;
+import cn.bunny.dao.dto.system.email.EmailUsersDto;
+import cn.bunny.dao.dto.system.email.EmailUsersUpdateDto;
import cn.bunny.dao.entity.system.EmailUsers;
+import cn.bunny.dao.pojo.result.PageResult;
+import cn.bunny.dao.vo.system.email.EmailUsersVo;
import cn.bunny.services.mapper.EmailUsersMapper;
import cn.bunny.services.service.EmailUsersService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.validation.Valid;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
- * 邮箱发送表 服务实现类
+ *
+ * 邮箱用户发送配置 服务实现类
+ *
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-10 15:19:22
*/
@Service
public class EmailUsersServiceImpl extends ServiceImpl implements EmailUsersService {
-}
\ No newline at end of file
+ /**
+ * * 邮箱用户发送配置 服务实现类
+ *
+ * @param pageParams 邮箱用户发送配置分页查询page对象
+ * @param dto 邮箱用户发送配置分页查询对象
+ * @return 查询分页邮箱用户发送配置返回对象
+ */
+ @Override
+ public PageResult getEmailUsersList(Page pageParams, EmailUsersDto dto) {
+ // 分页查询菜单图标
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ List voList = page.getRecords().stream().map(emailUsers -> {
+ EmailUsersVo emailUsersVo = new EmailUsersVo();
+ BeanUtils.copyProperties(emailUsers, emailUsersVo);
+ return emailUsersVo;
+ }).toList();
+
+ return PageResult.builder()
+ .list(voList)
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加邮箱用户发送配置
+ *
+ * @param dto 邮箱用户发送配置添加
+ */
+ @Override
+ public void addEmailUsers(@Valid EmailUsersAddDto dto) {
+ // 保存数据
+ EmailUsers emailUsers = new EmailUsers();
+ BeanUtils.copyProperties(dto, emailUsers);
+ save(emailUsers);
+ }
+
+ /**
+ * 更新邮箱用户发送配置
+ *
+ * @param dto 邮箱用户发送配置更新
+ */
+ @Override
+ public void updateEmailUsers(@Valid EmailUsersUpdateDto dto) {
+ // 更新内容
+ EmailUsers emailUsers = new EmailUsers();
+ BeanUtils.copyProperties(dto, emailUsers);
+ updateById(emailUsers);
+ }
+
+ /**
+ * 删除|批量删除邮箱用户发送配置
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteEmailUsers(List ids) {
+ baseMapper.deleteBatchIdsWithPhysics(ids);
+ }
+}
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 1fa718c..33a3b3e 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -1,6 +1,22 @@
server:
port: 7070
+management:
+ endpoints:
+ web:
+ exposure:
+ include: "*"
+ base-path: /bunny
+ info:
+ env:
+ enabled: true
+ java:
+ enabled: true
+ os:
+ enabled: true
+ endpoint:
+ health:
+ show-details: always
spring:
profiles:
active: @profiles.active@
diff --git a/service/src/main/resources/mapper/EmailTemplateMapper.xml b/service/src/main/resources/mapper/EmailTemplateMapper.xml
index b8f8d50..ebdb6c5 100644
--- a/service/src/main/resources/mapper/EmailTemplateMapper.xml
+++ b/service/src/main/resources/mapper/EmailTemplateMapper.xml
@@ -2,24 +2,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- id, template_name, subject, body, type, is_default, create_time, update_time, create_user, update_user, is_deleted
-
+
+
+
+
+
+ delete
+ from $tableName
+ where id in
+
+ #{id}
+
+
diff --git a/service/src/main/resources/mapper/EmailUsersMapper.xml b/service/src/main/resources/mapper/EmailUsersMapper.xml
index 4a960f3..f84430c 100644
--- a/service/src/main/resources/mapper/EmailUsersMapper.xml
+++ b/service/src/main/resources/mapper/EmailUsersMapper.xml
@@ -5,23 +5,58 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
- id, email, email_template, password, host, port, smtp_agreement, is_default, create_time, update_time, create_user, update_user, is_deleted
+ id, create_time, update_time, create_user, update_user, is_deleted, email, email_template, password, host, port, smtp_agreement, is_default
+
+
+
+
+
+ delete
+ from sys_email_users
+ where id in
+
+ #{id}
+
+
+
diff --git a/service/src/main/resources/mapper/PowerMapper.xml b/service/src/main/resources/mapper/PowerMapper.xml
index 7e53d5b..c992c51 100644
--- a/service/src/main/resources/mapper/PowerMapper.xml
+++ b/service/src/main/resources/mapper/PowerMapper.xml
@@ -37,7 +37,7 @@
request_url like CONCAT('%',#{dto.requestUrl},'%')
- order by update_time
+ order by update_time desc
diff --git a/service/src/main/resources/static/error/500.html b/service/src/main/resources/static/error/500.html
new file mode 100644
index 0000000..6071bf4
--- /dev/null
+++ b/service/src/main/resources/static/error/500.html
@@ -0,0 +1,64 @@
+
+
+
+
+ 500 - 服务器错误
+
+
+
+
+
+ :'(
+ 服务器开小差啦!管理员正在修理中...
+ 还请阁下静候站点恢复~
+
+
+
\ No newline at end of file