Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
街头小贩
Jforum2
提交
4b70cc60
J
Jforum2
项目概览
街头小贩
/
Jforum2
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
1
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
Jforum2
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4b70cc60
编写于
9月 27, 2020
作者:
街头小贩
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新VIP交易记录作业
上级
ad900a9b
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
114 addition
and
50 deletion
+114
-50
core.impl/src/main/java/module-info.java
core.impl/src/main/java/module-info.java
+1
-0
letterbox.impl/src/main/java/module-info.java
letterbox.impl/src/main/java/module-info.java
+1
-0
member.impl/src/main/java/com/apobates/forum/member/impl/MemberTaskScheduleConfig.java
.../apobates/forum/member/impl/MemberTaskScheduleConfig.java
+22
-7
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberDaoImpl.java
...ava/com/apobates/forum/member/impl/dao/MemberDaoImpl.java
+14
-7
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberPenalizeRecordsDaoImpl.java
...s/forum/member/impl/dao/MemberPenalizeRecordsDaoImpl.java
+1
-5
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/PenalizeResetMemberStatusQuartzJob.java
...ember/impl/quartz/PenalizeResetMemberStatusQuartzJob.java
+3
-3
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/ResetMemberGroupQuartzJob.java
...s/forum/member/impl/quartz/ResetMemberGroupQuartzJob.java
+0
-20
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/VipExchangeResetMemberGroupQuartzJob.java
...ber/impl/quartz/VipExchangeResetMemberGroupQuartzJob.java
+58
-0
member.impl/src/main/java/module-info.java
member.impl/src/main/java/module-info.java
+1
-0
member/src/main/java/com/apobates/forum/member/dao/MemberDao.java
...rc/main/java/com/apobates/forum/member/dao/MemberDao.java
+10
-5
member/src/main/java/com/apobates/forum/member/dao/MemberPenalizeRecordsDao.java
...m/apobates/forum/member/dao/MemberPenalizeRecordsDao.java
+2
-2
member/src/main/java/com/apobates/forum/member/dao/MemberVipExchangeRecordsDao.java
...pobates/forum/member/dao/MemberVipExchangeRecordsDao.java
+1
-1
未找到文件。
core.impl/src/main/java/module-info.java
浏览文件 @
4b70cc60
...
...
@@ -11,6 +11,7 @@ open module CoreImpl {
requires
Member
;
requires
Event
;
requires
Utils
;
requires
java
.
persistence
;
exports
com
.
apobates
.
forum
.
core
.
impl
;
exports
com
.
apobates
.
forum
.
core
.
impl
.
service
;
}
\ No newline at end of file
letterbox.impl/src/main/java/module-info.java
浏览文件 @
4b70cc60
...
...
@@ -8,6 +8,7 @@ open module LetterboxImpl {
requires
Attention
;
requires
Utils
;
requires
Event
;
requires
java
.
persistence
;
exports
com
.
apobates
.
forum
.
letterbox
.
impl
;
exports
com
.
apobates
.
forum
.
letterbox
.
impl
.
service
;
}
\ No newline at end of file
member.impl/src/main/java/com/apobates/forum/member/impl/MemberTaskScheduleConfig.java
浏览文件 @
4b70cc60
...
...
@@ -2,7 +2,8 @@ package com.apobates.forum.member.impl;
import
com.apobates.forum.member.impl.quartz.AutowiringSpringBeanJobFactory
;
import
com.apobates.forum.member.impl.quartz.DuplicateOLRecordsQuartzJob
;
import
com.apobates.forum.member.impl.quartz.PenalizeQuartzJob
;
import
com.apobates.forum.member.impl.quartz.PenalizeResetMemberStatusQuartzJob
;
import
com.apobates.forum.member.impl.quartz.VipExchangeResetMemberGroupQuartzJob
;
import
java.io.IOException
;
import
java.util.Properties
;
import
javax.sql.DataSource
;
...
...
@@ -32,13 +33,24 @@ import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
@Configuration
public
class
MemberTaskScheduleConfig
{
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
MemberTaskScheduleConfig
.
class
);
//
//loop Job
@Bean
(
"vipExchangeJob"
)
public
JobDetailFactoryBean
vipExchangeScheduleJob
(){
JobDetailFactoryBean
factoryBean
=
new
JobDetailFactoryBean
();
factoryBean
.
setJobClass
(
VipExchangeResetMemberGroupQuartzJob
.
class
);
factoryBean
.
setDurability
(
true
);
return
factoryBean
;
}
@Bean
(
name
=
"vipExchangeJobTrigger"
)
public
SimpleTriggerFactoryBean
vipExchangeScheduleJobTrigger
(
@Qualifier
(
"vipExchangeJob"
)
JobDetail
jobDetail
)
{
return
createTrigger
(
jobDetail
,
60000
);
}
//loop Job
@Bean
(
"penalizeJob"
)
public
JobDetailFactoryBean
penalizeScheduleJob
()
{
JobDetailFactoryBean
factoryBean
=
new
JobDetailFactoryBean
();
factoryBean
.
setJobClass
(
PenalizeQuartzJob
.
class
);
// job has to be durable to be stored in DB:
factoryBean
.
setJobClass
(
PenalizeResetMemberStatusQuartzJob
.
class
);
factoryBean
.
setDurability
(
true
);
return
factoryBean
;
}
...
...
@@ -46,6 +58,8 @@ public class MemberTaskScheduleConfig {
public
SimpleTriggerFactoryBean
penalizeScheduleJobTrigger
(
@Qualifier
(
"penalizeJob"
)
JobDetail
jobDetail
)
{
return
createTrigger
(
jobDetail
,
60000
);
}
//loop Job
@Bean
(
"duplicateOLRecordsJob"
)
public
JobDetailFactoryBean
duplicateOLRecordsScheduleJob
()
{
JobDetailFactoryBean
factoryBean
=
new
JobDetailFactoryBean
();
...
...
@@ -71,14 +85,15 @@ public class MemberTaskScheduleConfig {
DataSource
dataSource
,
JobFactory
jobFactory
,
@Qualifier
(
"penalizeJobTrigger"
)
SimpleTriggerFactoryBean
penalizeJobTrigger
,
@Qualifier
(
"duplicateOLRecordsJobTrigger"
)
SimpleTriggerFactoryBean
duplicateOLRecordsJobTrigger
)
throws
IOException
{
@Qualifier
(
"duplicateOLRecordsJobTrigger"
)
SimpleTriggerFactoryBean
duplicateOLRecordsJobTrigger
,
@Qualifier
(
"vipExchangeJobTrigger"
)
SimpleTriggerFactoryBean
vipExchangeScheduleJobTrigger
)
throws
IOException
{
SchedulerFactoryBean
factory
=
new
SchedulerFactoryBean
();
// this allows to update triggers in DB when updating settings in config file:
factory
.
setOverwriteExistingJobs
(
true
);
factory
.
setDataSource
(
dataSource
);
factory
.
setJobFactory
(
jobFactory
);
factory
.
setQuartzProperties
(
quartzProperties
());
factory
.
setTriggers
(
penalizeJobTrigger
.
getObject
(),
duplicateOLRecordsJobTrigger
.
getObject
());
factory
.
setTriggers
(
penalizeJobTrigger
.
getObject
(),
duplicateOLRecordsJobTrigger
.
getObject
()
,
vipExchangeScheduleJobTrigger
.
getObject
()
);
return
factory
;
}
@Bean
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberDaoImpl.java
浏览文件 @
4b70cc60
...
...
@@ -8,18 +8,13 @@ import com.apobates.forum.member.entity.MemberStatusEnum;
import
com.apobates.forum.utils.Commons
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.EnumMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.Map.Entry
;
import
java.util.Optional
;
import
java.util.TreeMap
;
import
java.util.stream.Stream
;
import
javax.persistence.EntityManager
;
import
javax.persistence.PersistenceContext
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
...
...
@@ -166,7 +161,19 @@ public class MemberDaoImpl implements MemberDao {
}
return
affect
;
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
int
editMemberGroup
(
Set
<
Long
>
updateMemberIds
)
{
int
affect
=
0
;
for
(
Long
memberId
:
updateMemberIds
)
{
if
(
editMemberGroup
(
memberId
,
MemberGroupEnum
.
CARD
))
{
affect
+=
1
;
}
}
return
affect
;
}
@Override
public
Optional
<
String
>
getAvatar
(
long
id
)
{
try
{
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberPenalizeRecordsDaoImpl.java
浏览文件 @
4b70cc60
package
com.apobates.forum.member.impl.dao
;
import
com.apobates.forum.member.dao.MemberDao
;
import
com.apobates.forum.member.dao.MemberPenalizeRecordsDao
;
import
com.apobates.forum.member.entity.MemberPenalizeRecords
;
import
com.apobates.forum.member.entity.MemberStatusEnum
;
import
com.apobates.forum.utils.persistence.Page
;
import
com.apobates.forum.utils.persistence.Pageable
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
import
javax.persistence.EntityManager
;
...
...
@@ -17,7 +14,6 @@ import javax.persistence.Query;
import
javax.persistence.TypedQuery
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -78,7 +74,7 @@ public class MemberPenalizeRecordsDaoImpl implements MemberPenalizeRecordsDao{
}
@Override
public
Stream
<
MemberPenalizeRecords
>
findAll
(
LocalDateTime
start
,
LocalDateTime
finish
)
{
public
Stream
<
MemberPenalizeRecords
>
findAll
ByExpire
(
LocalDateTime
start
,
LocalDateTime
finish
)
{
final
String
SQL
=
"SELECT mpr FROM MemberPenalizeRecords mpr WHERE mpr.status = :sta AND mpr.rebirthDateTime BETWEEN :art AND :ish"
;
return
entityManager
.
createQuery
(
SQL
,
MemberPenalizeRecords
.
class
)
.
setParameter
(
"sta"
,
true
)
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/PenalizeQuartzJob.java
→
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/Penalize
ResetMemberStatus
QuartzJob.java
浏览文件 @
4b70cc60
...
...
@@ -26,14 +26,14 @@ import org.springframework.beans.factory.annotation.Value;
* @author xiaofanku
* @since 20200611
*/
public
class
PenalizeQuartzJob
implements
Job
{
public
class
Penalize
ResetMemberStatus
QuartzJob
implements
Job
{
@Autowired
private
MemberPenalizeRecordsDao
memberPenalizeRecordsDao
;
@Autowired
private
MemberDao
memberDao
;
@Value
(
"${site.appname}"
)
private
String
appName
;
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PenalizeQuartzJob
.
class
);
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
Penalize
ResetMemberStatus
QuartzJob
.
class
);
@Override
public
void
execute
(
JobExecutionContext
jec
)
throws
JobExecutionException
{
...
...
@@ -41,7 +41,7 @@ public class PenalizeQuartzJob implements Job{
LocalDateTime
finish
=
LocalDateTime
.
now
();
LocalDateTime
start
=
DateTimeUtils
.
beforeMinuteForDate
(
finish
,
1
);
//作业的执行周期
//
List
<
MemberPenalizeRecords
>
data
=
memberPenalizeRecordsDao
.
findAll
(
start
,
finish
).
collect
(
Collectors
.
toList
());
List
<
MemberPenalizeRecords
>
data
=
memberPenalizeRecordsDao
.
findAll
ByExpire
(
start
,
finish
).
collect
(
Collectors
.
toList
());
if
(
data
.
isEmpty
())
{
//没有结果
logger
.
info
(
"[QuartzTask][Member][1]没有惩罚记录,作业退出"
);
return
;
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/ResetMemberGroupQuartzJob.java
已删除
100644 → 0
浏览文件 @
ad900a9b
package
com.apobates.forum.member.impl.quartz
;
import
org.quartz.Job
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
/**
* Vip会员到期后复位会员的组
*
* @author xiaofanku
* @since 20200921
*/
public
class
ResetMemberGroupQuartzJob
implements
Job
{
@Override
public
void
execute
(
JobExecutionContext
jec
)
throws
JobExecutionException
{
throw
new
UnsupportedOperationException
(
"Not supported yet."
);
//To change body of generated methods, choose Tools | Templates.
}
}
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/VipExchangeResetMemberGroupQuartzJob.java
0 → 100644
浏览文件 @
4b70cc60
package
com.apobates.forum.member.impl.quartz
;
import
com.apobates.forum.member.dao.MemberDao
;
import
com.apobates.forum.member.dao.MemberVipExchangeRecordsDao
;
import
com.apobates.forum.member.entity.MemberVipExchangeRecords
;
import
com.apobates.forum.utils.DateTimeUtils
;
import
org.quartz.Job
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
java.time.LocalDateTime
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* Vip会员到期后复位会员的组
*
* @author xiaofanku
* @since 20200921
*/
public
class
VipExchangeResetMemberGroupQuartzJob
implements
Job
{
@Autowired
private
MemberVipExchangeRecordsDao
memberVipExchangeRecordsDao
;
@Autowired
private
MemberDao
memberDao
;
@Value
(
"${site.appname}"
)
private
String
appName
;
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
VipExchangeResetMemberGroupQuartzJob
.
class
);
@Override
public
void
execute
(
JobExecutionContext
jec
)
throws
JobExecutionException
{
logger
.
info
(
String
.
format
(
"[%s][QuartzTask][Member][3]VIP交易记录作业开始"
,
appName
));
LocalDateTime
finish
=
LocalDateTime
.
now
();
LocalDateTime
start
=
DateTimeUtils
.
beforeMinuteForDate
(
finish
,
1
);
//作业的执行周期
//
List
<
MemberVipExchangeRecords
>
data
=
memberVipExchangeRecordsDao
.
findAllByExpire
(
start
,
finish
).
collect
(
Collectors
.
toList
());
if
(
data
.
isEmpty
())
{
//没有结果
logger
.
info
(
"[QuartzTask][Member][3]没有VIP交易记录,作业退出"
);
return
;
}
//
Set
<
Long
>
exchangeIds
=
new
HashSet
<>();
Set
<
Long
>
memberIds
=
new
HashSet
<>();
//
for
(
MemberVipExchangeRecords
ver
:
data
)
{
exchangeIds
.
add
(
ver
.
getId
());
memberIds
.
add
(
ver
.
getMemberId
());
}
memberVipExchangeRecordsDao
.
expired
(
exchangeIds
);
memberDao
.
editMemberGroup
(
memberIds
);
logger
.
info
(
"[QuartzTask][Member][3]VIP交易记录作业结束"
);
}
}
member.impl/src/main/java/module-info.java
浏览文件 @
4b70cc60
...
...
@@ -9,6 +9,7 @@ open module MemberImpl {
requires
org
.
aspectj
.
runtime
;
requires
spring
.
context
.
support
;
requires
Event
;
requires
java
.
persistence
;
exports
com
.
apobates
.
forum
.
member
.
impl
;
exports
com
.
apobates
.
forum
.
member
.
impl
.
event
;
exports
com
.
apobates
.
forum
.
member
.
impl
.
event
.
listener
;
...
...
member/src/main/java/com/apobates/forum/member/dao/MemberDao.java
浏览文件 @
4b70cc60
...
...
@@ -5,10 +5,7 @@ import com.apobates.forum.member.entity.MemberGroupEnum;
import
com.apobates.forum.member.entity.MemberRoleEnum
;
import
com.apobates.forum.member.entity.MemberStatusEnum
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.TreeMap
;
import
java.util.*
;
import
java.util.stream.Stream
;
/**
...
...
@@ -91,7 +88,15 @@ public interface MemberDao {
* @return
*/
int
editMemberStatus
(
Map
<
Long
,
MemberStatusEnum
>
status
);
/**
* 将指定的会员的组更新为MemberGroupEnum.CARD
*
* @param updateMemberIds 更新的会员ID集合
* @return
*/
int
editMemberGroup
(
Set
<
Long
>
updateMemberIds
);
/**
* 查看会员的头像
*
...
...
member/src/main/java/com/apobates/forum/member/dao/MemberPenalizeRecordsDao.java
浏览文件 @
4b70cc60
...
...
@@ -36,13 +36,13 @@ public interface MemberPenalizeRecordsDao extends PagingAndSortingRepository<Mem
Stream
<
MemberPenalizeRecords
>
findAllByMember
(
long
memberId
);
/**
* 查看指定日期范围内可用的惩罚记录
* 查看指定日期范围内可用的惩罚记录
,MemberPenalizeRecords.rebirthDateTime为参考
*
* @param start 开始日期
* @param finish 结束日期
* @return
*/
Stream
<
MemberPenalizeRecords
>
findAll
(
LocalDateTime
start
,
LocalDateTime
finish
);
Stream
<
MemberPenalizeRecords
>
findAll
ByExpire
(
LocalDateTime
start
,
LocalDateTime
finish
);
/**
* 将指定惩罚记录的作废
...
...
member/src/main/java/com/apobates/forum/member/dao/MemberVipExchangeRecordsDao.java
浏览文件 @
4b70cc60
...
...
@@ -43,7 +43,7 @@ public interface MemberVipExchangeRecordsDao extends PagingAndSortingRepository<
Stream
<
MemberVipExchangeRecords
>
findAllOfRecent
(
int
size
);
/**
* 查看即将到期的VIP交易记录
* 查看即将到期的VIP交易记录
,以MemberVipExchangeRecords.lapseDateTime为参考
*
* @param lapseDateStart 到期日期的开始(凌晨)
* @param lapseDateFinish 到期日期的结束(午夜)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录