Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fzm-joying
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lei
fzm-joying
Commits
ae45b327
Commit
ae45b327
authored
Feb 11, 2022
by
tangtuo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增删除超时草稿的定时任务
parent
d1881a4b
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
116 additions
and
12 deletions
+116
-12
DraftService.java
...on/src/main/java/com/fzm/common/service/DraftService.java
+8
-0
DraftServiceImpl.java
...in/java/com/fzm/common/service/impl/DraftServiceImpl.java
+10
-0
NftServiceImpl.java
...main/java/com/fzm/common/service/impl/NftServiceImpl.java
+1
-0
NftListener.java
...al/src/main/java/com/fzm/portal/listener/NftListener.java
+0
-1
DraftTask.java
...rtal/src/main/java/com/fzm/portal/schedule/DraftTask.java
+52
-0
PayTask.java
...portal/src/main/java/com/fzm/portal/schedule/PayTask.java
+2
-2
logback.2022-02-09.0.log
logs/logback.2022-02-09.0.log
+0
-0
logback.2022-02-10.0.log
logs/logback.2022-02-10.0.log
+0
-0
joying.sql
sql/joying.sql
+43
-9
No files found.
joying-common/src/main/java/com/fzm/common/service/DraftService.java
View file @
ae45b327
...
@@ -35,4 +35,12 @@ public interface DraftService extends IService<Draft> {
...
@@ -35,4 +35,12 @@ public interface DraftService extends IService<Draft> {
* @return
* @return
*/
*/
Integer
saveDraft
(
DraftDTO
draft
);
Integer
saveDraft
(
DraftDTO
draft
);
/**
* 查询超时的草稿
*
* @param minutes
* @return
*/
List
<
Draft
>
getTimeoutDrafts
(
int
minutes
);
}
}
joying-common/src/main/java/com/fzm/common/service/impl/DraftServiceImpl.java
View file @
ae45b327
...
@@ -19,6 +19,8 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -19,6 +19,8 @@ import org.apache.commons.lang3.StringUtils;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.time.Duration
;
import
java.time.Instant
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -108,4 +110,12 @@ public class DraftServiceImpl extends ServiceImpl<DraftMapper, Draft> implements
...
@@ -108,4 +110,12 @@ public class DraftServiceImpl extends ServiceImpl<DraftMapper, Draft> implements
this
.
saveOrUpdate
(
d
);
this
.
saveOrUpdate
(
d
);
return
d
.
getId
();
return
d
.
getId
();
}
}
@Override
public
List
<
Draft
>
getTimeoutDrafts
(
int
minutes
)
{
Instant
instant
=
Instant
.
now
().
minus
(
Duration
.
ofMinutes
(
minutes
));
QueryWrapper
<
Draft
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
le
(
"create_date"
,
instant
);
return
this
.
list
();
}
}
}
joying-common/src/main/java/com/fzm/common/service/impl/NftServiceImpl.java
View file @
ae45b327
...
@@ -145,6 +145,7 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
...
@@ -145,6 +145,7 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
}
}
// 修改nft的发行状态为发行中
// 修改nft的发行状态为发行中
nft
.
setPublishStatus
(
PublishStatus
.
PUBLISHING
.
getCode
());
nft
.
setPublishStatus
(
PublishStatus
.
PUBLISHING
.
getCode
());
nft
.
setPublishTime
(
new
Date
());
this
.
updateById
(
nft
);
this
.
updateById
(
nft
);
// 给mq发送一条消息,异步确认发行结果
// 给mq发送一条消息,异步确认发行结果
NftPublishMsg
nftPublishMsg
=
new
NftPublishMsg
(
hash
,
id
,
tokenId
);
NftPublishMsg
nftPublishMsg
=
new
NftPublishMsg
(
hash
,
id
,
tokenId
);
...
...
joying-portal/src/main/java/com/fzm/portal/listener/NftListener.java
View file @
ae45b327
...
@@ -73,7 +73,6 @@ public class NftListener {
...
@@ -73,7 +73,6 @@ public class NftListener {
}
}
nft
.
setNftHash
(
realHash
);
nft
.
setNftHash
(
realHash
);
nft
.
setTokenId
(
msg
.
getTokenId
());
nft
.
setTokenId
(
msg
.
getTokenId
());
nft
.
setPublishTime
(
new
Date
());
nft
.
setPublishStatus
(
PublishStatus
.
SUSSED
.
getCode
());
nft
.
setPublishStatus
(
PublishStatus
.
SUSSED
.
getCode
());
nftService
.
updateById
(
nft
);
nftService
.
updateById
(
nft
);
// 如果用户是第一次发行作品,把用户的isPublish修改成1,并清空用户统计的缓存信息
// 如果用户是第一次发行作品,把用户的isPublish修改成1,并清空用户统计的缓存信息
...
...
joying-portal/src/main/java/com/fzm/portal/schedule/DraftTask.java
0 → 100644
View file @
ae45b327
package
com
.
fzm
.
portal
.
schedule
;
import
com.fzm.common.entity.Draft
;
import
com.fzm.common.service.DraftService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.Redisson
;
import
org.redisson.api.RLock
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
/**
* @author tangtuo
* @date 2022/2/10 19:39
*/
@Slf4j
@Component
public
class
DraftTask
{
@Resource
private
DraftService
draftService
;
@Resource
private
Redisson
redisson
;
/**
* 删除创建时间大于7天的草稿
*/
@Scheduled
(
cron
=
"0 */15 * * * ?"
)
public
void
deleteTimeoutDraft
()
throws
InterruptedException
{
RLock
lock
=
redisson
.
getLock
(
"delete-draft"
);
// 加锁,避免集群环境下多个节点同事运行此定时任务
if
(!
lock
.
tryLock
(
30
,
TimeUnit
.
SECONDS
))
{
log
.
warn
(
"删除超时草稿的任务正在运行中"
);
return
;
}
try
{
// 查询创建时间大于一周的草稿
List
<
Draft
>
list
=
draftService
.
getTimeoutDrafts
(
60
*
24
*
7
);
for
(
Draft
draft
:
list
)
{
Integer
id
=
draft
.
getId
();
log
.
info
(
"即将删掉草稿,草稿id为 : {}"
,
id
);
draftService
.
delete
(
id
);
}
}
finally
{
lock
.
unlock
();
}
}
}
joying-portal/src/main/java/com/fzm/portal/schedule/PayTask.java
View file @
ae45b327
...
@@ -41,12 +41,12 @@ public class PayTask {
...
@@ -41,12 +41,12 @@ public class PayTask {
/**
/**
* 定时关单的任务
* 定时关单的任务
*/
*/
@Scheduled
(
cron
=
"0 */
1
* * * ?"
)
@Scheduled
(
cron
=
"0 */
5
* * * ?"
)
public
void
closeOrder
()
throws
InterruptedException
{
public
void
closeOrder
()
throws
InterruptedException
{
RLock
lock
=
redisson
.
getLock
(
"close-order"
);
RLock
lock
=
redisson
.
getLock
(
"close-order"
);
// 加锁,避免集群环境下多个节点同事运行此定时任务
// 加锁,避免集群环境下多个节点同事运行此定时任务
if
(!
lock
.
tryLock
(
30
,
TimeUnit
.
SECONDS
))
{
if
(!
lock
.
tryLock
(
30
,
TimeUnit
.
SECONDS
))
{
log
.
warn
(
"
此
任务正在运行中"
);
log
.
warn
(
"
关单
任务正在运行中"
);
return
;
return
;
}
}
try
{
try
{
...
...
logs/logback.2022-02-09.0.log
View file @
ae45b327
This diff is collapsed.
Click to expand it.
logs/logback.2022-02-10.0.log
View file @
ae45b327
This diff is collapsed.
Click to expand it.
sql/joying.sql
View file @
ae45b327
...
@@ -599,20 +599,54 @@ CREATE TABLE `tb_banner` (
...
@@ -599,20 +599,54 @@ CREATE TABLE `tb_banner` (
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8mb4
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8mb4
;
-- v2.3.0
alter
table
tb_nft
add
column
publish_status
TINYINT
(
1
)
not
null
default
0
comment
'发行状态 0-待支付 1-发行中 2-发行成功 3-发行失败'
after
publish_time
;
update
tb_nft
set
publish_status
=
2
where
nft_hash
!=
''
;
DROP
TABLE
IF
EXISTS
`tb_order`
;
CREATE
TABLE
`tb_order`
(
CREATE
TABLE
`tb_order`
(
`id`
bigint
(
20
)
NOT
NULL
,
`id`
bigint
(
20
)
NOT
NULL
,
`order_name`
varchar
(
100
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_general_ci
NOT
NULL
DEFAULT
''
COMMENT
'订单名称'
,
`pay_scene`
tinyint
(
1
)
NOT
NULL
COMMENT
'支付场景 1-nft发行 2-版权申请'
,
`pay_scene`
tinyint
(
1
)
NOT
NULL
COMMENT
'支付场景 1-nft发行 2-版权申请'
,
`product_id`
int
(
11
)
NOT
NULL
COMMENT
'产品id nft主键或者版权主键'
,
`product_id`
int
(
11
)
NOT
NULL
COMMENT
'产品id nft主键或者版权主键'
,
`user_id`
int
(
11
)
NOT
NULL
COMMENT
'用户id'
,
`user_id`
int
(
11
)
NOT
NULL
COMMENT
'用户id'
,
`fee`
bigint
(
20
)
NOT
NULL
COMMENT
'订单价格-单位(分)'
,
`fee`
bigint
(
20
)
NOT
NULL
COMMENT
'订单价格-单位(分)'
,
`order_status`
tinyint
(
1
)
NOT
NULL
DEFAULT
'0'
COMMENT
'0-支付中 1-支付成功 2-订单已关闭 3-已退款'
,
`order_status`
tinyint
(
1
)
NOT
NULL
DEFAULT
0
COMMENT
'0-支付中 1-支付成功 2-订单已关闭 3-已退款'
,
`prepay_id`
varchar
(
128
)
NOT
NULL
COMMENT
'微信预支付交易会话标识'
,
`pay_type`
tinyint
(
1
)
NULL
DEFAULT
NULL
COMMENT
'支付方式 1-微信支付 2-支付宝支付'
,
`create_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`update_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
(
0
),
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
CHARACTER
SET
=
utf8mb4
COLLATE
=
utf8mb4_general_ci
ROW_FORMAT
=
Dynamic
;
SET
FOREIGN_KEY_CHECKS
=
1
;
CREATE
TABLE
`tb_payment`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`order_id`
bigint
(
20
)
NOT
NULL
COMMENT
'订单id'
,
`transaction_id`
varchar
(
64
)
NOT
NULL
COMMENT
'微信支付订单号'
,
`trade_type`
varchar
(
16
)
NOT
NULL
COMMENT
'JSAPI: 公众号支付; NATIVE:扫码支付 ; APP:APP支付 ; MICROPAY:付款码支付 ; MWEB:H5支付 ; FACEPAY:刷脸支付'
,
`total_fee`
int
(
11
)
NOT
NULL
COMMENT
'金额'
,
`is_refund`
tinyint
(
1
)
NOT
NULL
DEFAULT
'0'
COMMENT
'是否有退款,0-否 1-是'
,
`success_time`
varchar
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'支付成功时间'
,
`content`
text
COMMENT
'支付通知数据'
,
`create_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`create_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`update_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
,
`update_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
)
ENGINE
=
InnoDB
CHARACTER
SET
=
utf8mb4
COLLATE
=
utf8mb4_general_ci
ROW_FORMAT
=
Dynamic
;
CREATE
TABLE
`tb_refund`
(
-- v2.3.0
`id`
bigint
(
20
)
NOT
NULL
COMMENT
'商户退款单号'
,
alter
table
tb_nft
add
column
publish_status
TINYINT
(
1
)
not
null
default
1
comment
'发行状态 0-待支付 1-发行中 2-发行成功 3-发行失败'
after
publish_time
;
`order_id`
bigint
(
20
)
NOT
NULL
COMMENT
'订单id'
,
update
tb_nft
set
publish_status
=
2
where
nft_hash
!=
''
;
`transaction_id`
varchar
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'微信支付订单号'
,
\ No newline at end of file
`fee`
int
(
11
)
NOT
NULL
COMMENT
'退款金额'
,
`refund_id`
varchar
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'微信支付退款单号'
,
`refund_status`
tinyint
(
1
)
NOT
NULL
DEFAULT
'1'
COMMENT
'1- 退款中 2-退款成功 3-退款失败'
,
`user_received_account`
varchar
(
64
)
NOT
NULL
DEFAULT
''
COMMENT
'取当前退款单的退款入账方'
,
`success_time`
varchar
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'支付成功时间'
,
`content`
text
COMMENT
'支付通知数据'
,
`channel`
tinyint
(
1
)
NOT
NULL
DEFAULT
'1'
COMMENT
'退款发起渠道 1-用户发起 2-后台运营发起'
,
`create_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`update_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
CHARACTER
SET
=
utf8mb4
COLLATE
=
utf8mb4_general_ci
ROW_FORMAT
=
Dynamic
;
\ No newline at end of file
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