Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-csf
Commits
9c0b5ddd
Commit
9c0b5ddd
authored
Sep 15, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
保费到期提醒18
parent
0a199995
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
7 additions
and
18 deletions
+7
-18
yd-csf-api/src/main/java/com/yd/csf/api/service/RenewalMailService.java
+1
-2
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/RenewalDispatchServiceImpl.java
+6
-13
yd-csf-service/src/main/java/com/yd/csf/service/utils/RenewalDueDateCalculator.java
+0
-3
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/service/RenewalMailService.java
View file @
9c0b5ddd
...
@@ -3,8 +3,7 @@ package com.yd.csf.api.service;
...
@@ -3,8 +3,7 @@ package com.yd.csf.api.service;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 续期提醒邮件发送。
* 续期提醒邮件发送(JavaMail 直连 SMTP,见 RenewalMailServiceImpl)。
* 一期为占位实现,后续替换为公司统一邮件服务(yd-email-api)。
*/
*/
public
interface
RenewalMailService
{
public
interface
RenewalMailService
{
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/RenewalDispatchServiceImpl.java
View file @
9c0b5ddd
...
@@ -10,7 +10,6 @@ import com.yd.csf.service.enums.RenewalRemindStatusEnum;
...
@@ -10,7 +10,6 @@ import com.yd.csf.service.enums.RenewalRemindStatusEnum;
import
com.yd.csf.service.model.RenewalRemindBatch
;
import
com.yd.csf.service.model.RenewalRemindBatch
;
import
com.yd.csf.service.service.IRenewalRemindBatchService
;
import
com.yd.csf.service.service.IRenewalRemindBatchService
;
import
com.yd.csf.service.service.RenewalReminderQueryService
;
import
com.yd.csf.service.service.RenewalReminderQueryService
;
import
com.yd.framework.config.LockExecutor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -33,7 +32,6 @@ import java.util.stream.Collectors;
...
@@ -33,7 +32,6 @@ import java.util.stream.Collectors;
@Slf4j
@Slf4j
public
class
RenewalDispatchServiceImpl
implements
RenewalDispatchService
{
public
class
RenewalDispatchServiceImpl
implements
RenewalDispatchService
{
private
static
final
String
LOCK_KEY_PREFIX
=
"renewal:remind:"
;
private
static
final
String
BATCH_BIZ_ID_PREFIX
=
"RR"
;
private
static
final
String
BATCH_BIZ_ID_PREFIX
=
"RR"
;
private
static
final
int
ERROR_MSG_MAX_LEN
=
1900
;
private
static
final
int
ERROR_MSG_MAX_LEN
=
1900
;
...
@@ -41,8 +39,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
...
@@ -41,8 +39,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
private
String
recipientsConfig
;
private
String
recipientsConfig
;
@Resource
@Resource
private
LockExecutor
lockExecutor
;
@Resource
private
RenewalReminderQueryService
renewalReminderQueryService
;
private
RenewalReminderQueryService
renewalReminderQueryService
;
@Resource
@Resource
private
RenewalPolicyReportService
renewalPolicyReportService
;
private
RenewalPolicyReportService
renewalPolicyReportService
;
...
@@ -55,11 +51,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
...
@@ -55,11 +51,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
public
void
dispatch
(
String
bizMonthParam
)
{
public
void
dispatch
(
String
bizMonthParam
)
{
YearMonth
execMonth
=
parseExecMonth
(
bizMonthParam
);
YearMonth
execMonth
=
parseExecMonth
(
bizMonthParam
);
String
bizMonth
=
execMonth
.
toString
();
String
bizMonth
=
execMonth
.
toString
();
lockExecutor
.
executeWithLock
(
LOCK_KEY_PREFIX
+
bizMonth
,
()
->
doDispatch
(
execMonth
));
}
private
void
doDispatch
(
YearMonth
execMonth
)
{
String
bizMonth
=
execMonth
.
toString
();
RenewalRemindBatch
existBatch
=
renewalRemindBatchService
.
queryByBizMonth
(
bizMonth
);
RenewalRemindBatch
existBatch
=
renewalRemindBatchService
.
queryByBizMonth
(
bizMonth
);
if
(
existBatch
!=
null
if
(
existBatch
!=
null
&&
RenewalRemindStatusEnum
.
SUCCESS
.
getItemValue
().
equals
(
existBatch
.
getStatus
()))
{
&&
RenewalRemindStatusEnum
.
SUCCESS
.
getItemValue
().
equals
(
existBatch
.
getStatus
()))
{
...
@@ -71,8 +62,9 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
...
@@ -71,8 +62,9 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
String
fileName
=
null
;
String
fileName
=
null
;
String
recipientsSnapshot
=
null
;
String
recipientsSnapshot
=
null
;
try
{
try
{
LocalDate
today
=
LocalDate
.
now
();
// 计算基准日固定为执行月 1 号:定时跑与手动补发同一 bizMonth 结果可复现
data
=
renewalReminderQueryService
.
build
(
execMonth
,
today
);
LocalDate
baseDate
=
execMonth
.
atDay
(
1
);
data
=
renewalReminderQueryService
.
build
(
execMonth
,
baseDate
);
// 窗口内无到期保单:不发邮件,记 EMPTY
// 窗口内无到期保单:不发邮件,记 EMPTY
if
(
CollectionUtils
.
isEmpty
(
data
.
getDuePolicies
()))
{
if
(
CollectionUtils
.
isEmpty
(
data
.
getDuePolicies
()))
{
...
@@ -84,7 +76,7 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
...
@@ -84,7 +76,7 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
List
<
String
>
recipients
=
parseRecipients
();
List
<
String
>
recipients
=
parseRecipients
();
recipientsSnapshot
=
String
.
join
(
","
,
recipients
);
recipientsSnapshot
=
String
.
join
(
","
,
recipients
);
fileName
=
renewalPolicyReportService
.
buildFileName
(
data
,
today
);
fileName
=
renewalPolicyReportService
.
buildFileName
(
data
,
LocalDate
.
now
()
);
byte
[]
attachment
=
renewalPolicyReportService
.
generate
(
data
);
byte
[]
attachment
=
renewalPolicyReportService
.
generate
(
data
);
String
subject
=
buildSubject
(
data
);
String
subject
=
buildSubject
(
data
);
String
content
=
buildContent
(
data
);
String
content
=
buildContent
(
data
);
...
@@ -121,7 +113,8 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
...
@@ -121,7 +113,8 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
batch
.
setFileName
(
fileName
);
batch
.
setFileName
(
fileName
);
batch
.
setStatus
(
status
.
getItemValue
());
batch
.
setStatus
(
status
.
getItemValue
());
batch
.
setErrorMsg
(
errorMsg
);
batch
.
setErrorMsg
(
errorMsg
);
batch
.
setSendTime
(
status
==
RenewalRemindStatusEnum
.
FAIL
?
null
:
LocalDateTime
.
now
());
// 仅实际发信成功才记录发送时间;EMPTY 未发信、FAIL 发送失败,均置空
batch
.
setSendTime
(
status
==
RenewalRemindStatusEnum
.
SUCCESS
?
LocalDateTime
.
now
()
:
null
);
batch
.
setUpdateTime
(
LocalDateTime
.
now
());
batch
.
setUpdateTime
(
LocalDateTime
.
now
());
renewalRemindBatchService
.
saveOrUpdate
(
batch
);
renewalRemindBatchService
.
saveOrUpdate
(
batch
);
}
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/utils/RenewalDueDateCalculator.java
View file @
9c0b5ddd
...
@@ -59,9 +59,6 @@ public final class RenewalDueDateCalculator {
...
@@ -59,9 +59,6 @@ public final class RenewalDueDateCalculator {
if
(
years
==
null
)
{
if
(
years
==
null
)
{
return
Result
.
skip
(
"缴费年期为空或无法解析: "
+
issueNumber
,
true
);
return
Result
.
skip
(
"缴费年期为空或无法解析: "
+
issueNumber
,
true
);
}
}
if
(
years
<=
0
)
{
return
Result
.
skip
(
"缴费年期非法: "
+
years
,
true
);
}
LocalDate
endDate
=
effectiveDate
.
plusYears
(
years
).
minusDays
(
1
);
LocalDate
endDate
=
effectiveDate
.
plusYears
(
years
).
minusDays
(
1
);
LocalDate
candidate
=
effectiveDate
;
LocalDate
candidate
=
effectiveDate
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment