Skip to content

Commit 759f53f

Browse files
authored
Merge pull request #15 from yyyCode/dev
feat(audit): integrate audit logging, fix bean naming and charset encoding
2 parents 1533ddc + 342ec50 commit 759f53f

7 files changed

Lines changed: 90 additions & 308 deletions

File tree

OpenBlog-business/src/main/java/com/yqz/openblog/article/service/ArticleService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.yqz.openblog.article.service;
22

3+
import com.yqz.openblog.audit.annotation.AuditLog;
34
import com.yqz.openblog.article.dto.ArticleCreateRequest;
45
import com.yqz.openblog.article.dto.ArticleDetailResponse;
56
import com.yqz.openblog.article.dto.ArticleListItemResponse;
@@ -447,6 +448,7 @@ public void hide(Long authorId, Long articleId) {
447448
removeFromEs(articleId);
448449
}
449450

451+
@AuditLog(action = "ARTICLE_DELETE", entityType = "Article", entityId = "#articleId")
450452
@Transactional
451453
public void deletePermanently(Long authorId, Long articleId) {
452454
Article a = articleMapper.selectById(articleId);

OpenBlog-business/src/main/resources/application.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ dubbo:
5858
consumer:
5959
check: false
6060

61+
audit:
62+
enabled: true
63+
async: true
64+
channel: local
65+
6166
openblog:
6267
seo:
6368
site-url: "https://www.wecode.xin"

OpenBlog-email/src/main/java/com/yqz/openblog/email/controller/EmailAdminController.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.yqz.openblog.email.controller;
22

33
import com.baomidou.mybatisplus.core.metadata.IPage;
4+
import com.yqz.openblog.email.api.EmailSendRequest;
5+
import com.yqz.openblog.email.api.EmailSendResult;
46
import com.yqz.openblog.email.dto.EmailRecordResponse;
57
import com.yqz.openblog.email.service.EmailService;
68
import org.springframework.web.bind.annotation.*;
@@ -18,6 +20,18 @@ public EmailAdminController(EmailService emailService) {
1820
this.emailService = emailService;
1921
}
2022

23+
/**
24+
* 快速测试发送邮件:POST /api/v1/email/test?recipient=xxx&subject=xxx&body=xxx
25+
*/
26+
@PostMapping("/test")
27+
public EmailSendResult testSend(
28+
@RequestParam String recipient,
29+
@RequestParam String subject,
30+
@RequestParam String body) {
31+
EmailSendRequest req = new EmailSendRequest(recipient, subject, body);
32+
return emailService.send(req);
33+
}
34+
2135
@GetMapping("/records")
2236
public Map<String, Object> listRecords(
2337
@RequestParam(defaultValue = "0") int page,

OpenBlog-email/src/main/resources/application.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ spring:
55
application:
66
name: openblog-email
77
datasource:
8-
url: jdbc:mysql://10.21.76.221:3306/openblog?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai
9-
username: ${DB_USERNAME:root}
10-
password: ${DB_PASSWORD:}
8+
url: jdbc:mysql://10.21.76.221:3306/openblog?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
9+
username: root
10+
password: 12345678aa
1111
driver-class-name: com.mysql.cj.jdbc.Driver
1212

1313
mybatis-plus:
@@ -38,9 +38,9 @@ dubbo:
3838
openblog:
3939
email:
4040
aliyun:
41-
enabled: ${EMAIL_ENABLED:false}
41+
enabled: true
4242
access-key-id: ${ALIYUN_AK:}
4343
access-key-secret: ${ALIYUN_SK:}
4444
region-id: cn-hangzhou
45-
from-address: ${EMAIL_FROM:}
45+
from-address: ${ALIYUN_FROM:}
4646
from-alias: OpenBlog

OpenBlog-framework-audit/src/main/java/com/yqz/openblog/audit/config/AuditAutoConfiguration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1717
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1818
import org.springframework.boot.context.properties.EnableConfigurationProperties;
19+
import org.springframework.beans.factory.annotation.Qualifier;
1920
import org.springframework.context.annotation.Bean;
2021
import org.springframework.core.task.SimpleAsyncTaskExecutor;
2122
import org.springframework.core.task.TaskExecutor;
@@ -27,8 +28,8 @@
2728
@ConditionalOnProperty(prefix = "audit", name = "enabled", havingValue = "true", matchIfMissing = true)
2829
public class AuditAutoConfiguration {
2930

30-
@Bean
31-
@ConditionalOnMissingBean
31+
@Bean("auditTaskExecutor")
32+
@ConditionalOnMissingBean(name = "auditTaskExecutor")
3233
public TaskExecutor auditTaskExecutor() {
3334
return new SimpleAsyncTaskExecutor("audit-");
3435
}
@@ -56,7 +57,7 @@ public AuditSnapshotProvider auditSnapshotProvider() {
5657
@ConditionalOnMissingBean
5758
public AuditChannel auditChannel(
5859
AuditProperties props,
59-
TaskExecutor auditTaskExecutor,
60+
@Qualifier("auditTaskExecutor") TaskExecutor auditTaskExecutor,
6061
List<AuditRecordHandler> handlers
6162
) {
6263
// 先落一个通用默认:local。Kafka 通道会在后续配置类里按条件覆盖。

0 commit comments

Comments
 (0)