Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lingxi-lxy-yanshou
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
后端-黄柯铭
lingxi-lxy-yanshou
Commits
83ac257a
Commit
83ac257a
authored
Aug 06, 2021
by
fhj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
模板服务 -> 活动页需求
parent
606bca5a
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
169 additions
and
6 deletions
+169
-6
build.gradle
platform-template-service/build.gradle
+1
-0
settings.gradle
platform-template-service/settings.gradle
+3
-0
PlatformTemplateServiceApplication.java
.../template/service/PlatformTemplateServiceApplication.java
+0
-2
ActivityPageWebController.java
...ate/service/controller/web/ActivityPageWebController.java
+13
-0
ActivityPage.java
.../platform/template/service/entity/adorn/ActivityPage.java
+8
-0
ActivityPageWebService.java
.../template/service/service/web/ActivityPageWebService.java
+5
-0
ActivityPageWebServiceImpl.java
...e/service/serviceimpl/web/ActivityPageWebServiceImpl.java
+139
-4
No files found.
platform-template-service/build.gradle
View file @
83ac257a
...
...
@@ -39,6 +39,7 @@ dependencies {
implementation
project
(
':product-service:product-service-api'
)
implementation
project
(
':report-service:report-service-api'
)
implementation
project
(
':purchase-service:purchase-service-api'
)
implementation
project
(
':scheduler-service:scheduler-service-api'
)
// spring
implementation
'org.springframework.boot:spring-boot-starter-actuator'
implementation
'org.springframework.boot:spring-boot-starter-data-jpa'
...
...
platform-template-service/settings.gradle
View file @
83ac257a
...
...
@@ -26,3 +26,6 @@ project(':report-service:report-service-api').projectDir = "../report-service/re
include
'purchase-service:purchase-service-api'
project
(
':purchase-service:purchase-service-api'
).
projectDir
=
"../purchase-service/purchase-service-api"
as
File
include
'scheduler-service:scheduler-service-api'
project
(
':scheduler-service:scheduler-service-api'
).
projectDir
=
"../scheduler-service/scheduler-service-api"
as
File
platform-template-service/src/main/java/com/ssy/lingxi/platform/template/service/PlatformTemplateServiceApplication.java
View file @
83ac257a
...
...
@@ -2,7 +2,6 @@ package com.ssy.lingxi.platform.template.service;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.ComponentScan
;
...
...
@@ -14,5 +13,4 @@ public class PlatformTemplateServiceApplication {
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
PlatformTemplateServiceApplication
.
class
,
args
);
}
}
platform-template-service/src/main/java/com/ssy/lingxi/platform/template/service/controller/web/ActivityPageWebController.java
View file @
83ac257a
...
...
@@ -9,6 +9,7 @@ import com.ssy.lingxi.platform.template.service.model.dto.common.IdDTO;
import
com.ssy.lingxi.platform.template.service.model.dto.web.SaveActivityPageDTO
;
import
com.ssy.lingxi.platform.template.service.model.qo.ActivityPageQO
;
import
com.ssy.lingxi.platform.template.service.service.web.ActivityPageWebService
;
import
com.ssy.lingxi.scheduler.api.model.ScheduleTaskCallbackVO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.validation.annotation.Validated
;
...
...
@@ -72,4 +73,16 @@ public class ActivityPageWebController extends BaseController {
public
Wrapper
<
Void
>
adorn
(
@RequestBody
@Validated
({
SaveActivityPageDTO
.
Adorn
.
class
})
SaveActivityPageDTO
dto
)
{
return
activityPageWebService
.
adorn
(
dto
,
getSysUser
());
}
@ApiOperation
(
value
=
"定时服务回调 - 开始活动页"
)
@PostMapping
(
value
=
"/start"
)
public
Wrapper
<
Void
>
start
(
@RequestBody
ScheduleTaskCallbackVO
dto
)
{
return
activityPageWebService
.
start
(
dto
);
}
@ApiOperation
(
value
=
"定时服务回调 - 结束活动页"
)
@PostMapping
(
value
=
"/end"
)
public
Wrapper
<
Void
>
end
(
@RequestBody
ScheduleTaskCallbackVO
dto
)
{
return
activityPageWebService
.
end
(
dto
);
}
}
platform-template-service/src/main/java/com/ssy/lingxi/platform/template/service/entity/adorn/ActivityPage.java
View file @
83ac257a
...
...
@@ -88,4 +88,12 @@ public class ActivityPage {
@Column
(
columnDefinition
=
"int8"
)
@ApiModelProperty
(
value
=
"创建时间"
)
private
Long
createTime
=
System
.
currentTimeMillis
();
@Column
(
columnDefinition
=
"int8"
)
@ApiModelProperty
(
value
=
"开始时间的定时任务ID"
)
private
Long
startTimeTaskId
;
@Column
(
columnDefinition
=
"int8"
)
@ApiModelProperty
(
value
=
"结束时间的定时任务ID"
)
private
Long
endTimeTaskId
;
}
platform-template-service/src/main/java/com/ssy/lingxi/platform/template/service/service/web/ActivityPageWebService.java
View file @
83ac257a
...
...
@@ -8,6 +8,7 @@ import com.ssy.lingxi.platform.template.service.model.dto.common.CommonStatusDTO
import
com.ssy.lingxi.platform.template.service.model.dto.common.IdDTO
;
import
com.ssy.lingxi.platform.template.service.model.dto.web.SaveActivityPageDTO
;
import
com.ssy.lingxi.platform.template.service.model.qo.ActivityPageQO
;
import
com.ssy.lingxi.scheduler.api.model.ScheduleTaskCallbackVO
;
/**
* @menu web - 活动页 - 业务处理层
...
...
@@ -30,4 +31,8 @@ public interface ActivityPageWebService {
Wrapper
<
Void
>
openOffLine
(
CommonStatusDTO
dto
,
UserLoginCacheDTO
user
);
Wrapper
<
Void
>
adorn
(
SaveActivityPageDTO
dto
,
UserLoginCacheDTO
user
);
Wrapper
<
Void
>
start
(
ScheduleTaskCallbackVO
dto
);
Wrapper
<
Void
>
end
(
ScheduleTaskCallbackVO
dto
);
}
platform-template-service/src/main/java/com/ssy/lingxi/platform/template/service/serviceimpl/web/ActivityPageWebServiceImpl.java
View file @
83ac257a
package
com
.
ssy
.
lingxi
.
platform
.
template
.
service
.
serviceimpl
.
web
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.querydsl.core.BooleanBuilder
;
import
com.querydsl.jpa.impl.JPAQuery
;
import
com.querydsl.jpa.impl.JPAQueryFactory
;
...
...
@@ -20,6 +21,10 @@ import com.ssy.lingxi.platform.template.service.model.dto.web.SaveActivityPageDT
import
com.ssy.lingxi.platform.template.service.model.qo.ActivityPageQO
;
import
com.ssy.lingxi.platform.template.service.repository.ActivityPageRepository
;
import
com.ssy.lingxi.platform.template.service.service.web.ActivityPageWebService
;
import
com.ssy.lingxi.scheduler.api.feign.ScheduleTaskFeign
;
import
com.ssy.lingxi.scheduler.api.model.ScheduleTaskCallbackVO
;
import
com.ssy.lingxi.scheduler.api.model.ScheduleTaskIdVO
;
import
com.ssy.lingxi.scheduler.api.model.ScheduleTaskVO
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
...
...
@@ -29,6 +34,8 @@ import org.springframework.transaction.annotation.Transactional;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* @menu web - 活动页 - 业务实现层
...
...
@@ -44,6 +51,8 @@ public class ActivityPageWebServiceImpl implements ActivityPageWebService {
private
JPAQueryFactory
jpaQueryFactory
;
@Resource
private
ActivityPageRepository
activityPageRepository
;
@Resource
private
ScheduleTaskFeign
scheduleTaskFeign
;
@Override
@ApiOperation
(
value
=
"列表"
)
...
...
@@ -114,6 +123,9 @@ public class ActivityPageWebServiceImpl implements ActivityPageWebService {
activityPage
.
setStatusName
(
ActivityPageStatusEnum
.
getMessage
(
activityPage
.
getStatus
()));
activityPageRepository
.
saveAndFlush
(
activityPage
);
//保存活动页(定时服务的任务ID)
activityPageRepository
.
saveAndFlush
(
activityPage
);
return
Wrapper
.
success
();
}
...
...
@@ -159,6 +171,7 @@ public class ActivityPageWebServiceImpl implements ActivityPageWebService {
return
Wrapper
.
fail
(
"只能删除'待上线'的活动页"
);
}
//删除
activityPageRepository
.
deleteById
(
dto
.
getId
());
return
Wrapper
.
success
();
...
...
@@ -175,27 +188,109 @@ public class ActivityPageWebServiceImpl implements ActivityPageWebService {
if
(
activityPage
==
null
)
{
throw
new
BusinessException
(
ResponseCode
.
PT_RECORDS_DON_T_EXIST
);
}
//上线
if
(
dto
.
getStatus
().
equals
(
CommonBooleanEnum
.
YES
.
getCode
()))
{
//校验
if
(!
ActivityPageStatusEnum
.
isOpenLine
(
activityPage
.
getStatus
()))
{
return
Wrapper
.
fail
(
"只能上线'待上线'或'已下线'的活动页"
);
}
if
(
CollectionUtil
.
isEmpty
(
activityPage
.
getAdornContent
()))
{
return
Wrapper
.
fail
(
"请先去装修活动页再去上线"
);
}
if
(
System
.
currentTimeMillis
()
-
10000
>=
activityPage
.
getEndTime
())
{
activityPage
.
setStatus
(
ActivityPageStatusEnum
.
START
.
getCode
());
activityPage
.
setStatusName
(
ActivityPageStatusEnum
.
START
.
getMessage
());
}
else
{
//活动页开始时间还没到 -> 活动页状态修改为已上线。创建定时任务,活动页的自动开启与自动结束。
if
(
System
.
currentTimeMillis
()
<
activityPage
.
getStartTime
())
{
activityPage
.
setStatus
(
ActivityPageStatusEnum
.
ALREADY_OPEN_LINE
.
getCode
());
activityPage
.
setStatusName
(
ActivityPageStatusEnum
.
ALREADY_OPEN_LINE
.
getMessage
());
//调用定时服务 -> 创建定时任务 -> 活动页开启
ScheduleTaskVO
startVO
=
new
ScheduleTaskVO
();
startVO
.
setServiceName
(
"platform-template-service"
);
startVO
.
setCallbackUrl
(
"/template/web/activityPage/start"
);
startVO
.
setMemberId
(
user
.
getMemberId
());
startVO
.
setRoleId
(
user
.
getMemberRoleId
());
startVO
.
setDataIds
(
Stream
.
of
(
activityPage
.
getId
()).
collect
(
Collectors
.
toList
()));
startVO
.
setExecTime
(
activityPage
.
getStartTime
());
Wrapper
<
Long
>
startWrapper
=
scheduleTaskFeign
.
createScheduleTask
(
startVO
);
if
(
startWrapper
.
getCode
()
!=
ResponseCode
.
SUCCESS
.
getCode
())
{
log
.
error
(
"调用定时服务失败:{}"
,
startWrapper
.
getMessage
());
throw
new
BusinessException
(
ResponseCode
.
SERVICE_SCHEDULER_ERROR
);
}
activityPage
.
setStartTimeTaskId
(
startWrapper
.
getData
());
//调用定时服务 -> 创建定时任务 -> 活动页结束
ScheduleTaskVO
endVO
=
new
ScheduleTaskVO
();
endVO
.
setServiceName
(
"platform-template-service"
);
endVO
.
setCallbackUrl
(
"/template/web/activityPage/end"
);
endVO
.
setMemberId
(
user
.
getMemberId
());
endVO
.
setRoleId
(
user
.
getMemberRoleId
());
endVO
.
setDataIds
(
Stream
.
of
(
activityPage
.
getId
()).
collect
(
Collectors
.
toList
()));
endVO
.
setExecTime
(
activityPage
.
getEndTime
());
Wrapper
<
Long
>
endWrapper
=
scheduleTaskFeign
.
createScheduleTask
(
endVO
);
if
(
endWrapper
.
getCode
()
!=
ResponseCode
.
SUCCESS
.
getCode
())
{
log
.
error
(
"调用定时服务失败:{}"
,
endWrapper
.
getMessage
());
throw
new
BusinessException
(
ResponseCode
.
SERVICE_SCHEDULER_ERROR
);
}
activityPage
.
setEndTimeTaskId
(
endWrapper
.
getData
());
}
//活动页开始时间到了 -> 活动页状态改为进行中。创建定时任务,活动页的自动结束。
if
(
System
.
currentTimeMillis
()
>=
activityPage
.
getStartTime
())
{
activityPage
.
setStatus
(
ActivityPageStatusEnum
.
START
.
getCode
());
activityPage
.
setStatusName
(
ActivityPageStatusEnum
.
START
.
getMessage
());
//调用定时服务 -> 创建定时任务 -> 活动页结束
ScheduleTaskVO
endVO
=
new
ScheduleTaskVO
();
endVO
.
setServiceName
(
"platform-template-service"
);
endVO
.
setCallbackUrl
(
"/template/web/activityPage/end"
);
endVO
.
setMemberId
(
user
.
getMemberId
());
endVO
.
setRoleId
(
user
.
getMemberRoleId
());
endVO
.
setDataIds
(
Stream
.
of
(
activityPage
.
getId
()).
collect
(
Collectors
.
toList
()));
endVO
.
setExecTime
(
activityPage
.
getEndTime
());
Wrapper
<
Long
>
endWrapper
=
scheduleTaskFeign
.
createScheduleTask
(
endVO
);
if
(
endWrapper
.
getCode
()
!=
ResponseCode
.
SUCCESS
.
getCode
())
{
log
.
error
(
"调用定时服务失败:{}"
,
endWrapper
.
getMessage
());
throw
new
BusinessException
(
ResponseCode
.
SERVICE_SCHEDULER_ERROR
);
}
activityPage
.
setEndTimeTaskId
(
endWrapper
.
getData
());
}
//活动页结束时间到了 -> 活动页改为已结束
if
(
System
.
currentTimeMillis
()
>
activityPage
.
getEndTime
())
{
activityPage
.
setStatus
(
ActivityPageStatusEnum
.
END
.
getCode
());
activityPage
.
setStatusName
(
ActivityPageStatusEnum
.
END
.
getMessage
());
}
}
//下线
if
(
dto
.
getStatus
().
equals
(
CommonBooleanEnum
.
NO
.
getCode
()))
{
//校验
if
(!
ActivityPageStatusEnum
.
isOffLine
(
activityPage
.
getStatus
()))
{
return
Wrapper
.
fail
(
"只能下线'已上线'或'进行中'的活动页"
);
}
//活动页改为已下线
activityPage
.
setStatus
(
ActivityPageStatusEnum
.
OFF_LINE
.
getCode
());
activityPage
.
setStatusName
(
ActivityPageStatusEnum
.
OFF_LINE
.
getMessage
());
//调用定时服务 -> 删除任务 -> 活动页开启
ScheduleTaskIdVO
startVO
=
new
ScheduleTaskIdVO
();
startVO
.
setTaskId
(
activityPage
.
getStartTimeTaskId
());
Wrapper
<
Void
>
startWrapper
=
scheduleTaskFeign
.
deleteScheduleTask
(
startVO
);
if
(
startWrapper
.
getCode
()
!=
ResponseCode
.
SUCCESS
.
getCode
())
{
log
.
error
(
"调用定时服务失败:{}"
,
startWrapper
.
getMessage
());
throw
new
BusinessException
(
ResponseCode
.
SERVICE_SCHEDULER_ERROR
);
}
//调用定时服务 -> 删除任务 -> 活动页结束
ScheduleTaskIdVO
endVO
=
new
ScheduleTaskIdVO
();
endVO
.
setTaskId
(
activityPage
.
getEndTimeTaskId
());
Wrapper
<
Void
>
endWrapper
=
scheduleTaskFeign
.
deleteScheduleTask
(
endVO
);
if
(
endWrapper
.
getCode
()
!=
ResponseCode
.
SUCCESS
.
getCode
())
{
log
.
error
(
"调用定时服务失败:{}"
,
endWrapper
.
getMessage
());
throw
new
BusinessException
(
ResponseCode
.
SERVICE_SCHEDULER_ERROR
);
}
}
//更新活动页状态
...
...
@@ -222,4 +317,44 @@ public class ActivityPageWebServiceImpl implements ActivityPageWebService {
return
Wrapper
.
success
();
}
@Override
@ApiOperation
(
value
=
"定时服务回调 - 开始活动页"
)
public
Wrapper
<
Void
>
start
(
ScheduleTaskCallbackVO
dto
)
{
log
.
info
(
"定时服务回调 - 开始活动页 - 参数:{}"
,
JSONUtil
.
toJsonStr
(
dto
));
List
<
ActivityPage
>
list
=
activityPageRepository
.
findAllById
(
dto
.
getDataIds
());
if
(
CollectionUtil
.
isEmpty
(
list
))
{
return
Wrapper
.
fail
(
"获取不到活动页数据"
);
}
//批量更新活动页状态为进行中, 只更新已上线的活动页
list
.
forEach
(
a
->
{
if
(
a
.
getStatus
().
equals
(
ActivityPageStatusEnum
.
ALREADY_OPEN_LINE
.
getCode
()))
{
a
.
setStatus
(
ActivityPageStatusEnum
.
START
.
getCode
());
a
.
setStatusName
(
ActivityPageStatusEnum
.
START
.
getMessage
());
}
});
return
Wrapper
.
success
();
}
@Override
@ApiOperation
(
value
=
"定时服务回调 - 结束活动页"
)
public
Wrapper
<
Void
>
end
(
ScheduleTaskCallbackVO
dto
)
{
log
.
info
(
"定时服务回调 - 结束活动页 - 参数:{}"
,
JSONUtil
.
toJsonStr
(
dto
));
List
<
ActivityPage
>
list
=
activityPageRepository
.
findAllById
(
dto
.
getDataIds
());
if
(
CollectionUtil
.
isEmpty
(
list
))
{
return
Wrapper
.
fail
(
"获取不到活动页数据"
);
}
//批量更新活动页状态为已结束, 只更新进行中的活动页
list
.
forEach
(
a
->
{
if
(
a
.
getStatus
().
equals
(
ActivityPageStatusEnum
.
START
.
getCode
()))
{
a
.
setStatus
(
ActivityPageStatusEnum
.
END
.
getCode
());
a
.
setStatusName
(
ActivityPageStatusEnum
.
END
.
getMessage
());
}
});
return
Wrapper
.
success
();
}
}
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