Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
涂亚平
/
subsidy
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 056b9d23
authored
Dec 30, 2021
by
涂亚平
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
程序处理改成了sql处理
1 parent
168678a9
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
108 deletions
src/main/java/com/subsidy/controller/MemberController.java
src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
src/main/java/com/subsidy/service/impl/MemberServiceImpl.java
src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
src/main/resources/application.properties
src/main/resources/mapper/CourseContentMapper.xml
src/main/resources/mapper/VodPlayHistoryMapper.xml
src/main/java/com/subsidy/controller/MemberController.java
View file @
056b9d2
...
...
@@ -103,7 +103,7 @@ public class MemberController {
}
@PostMapping
(
"studyHistory"
)
@ApiOperation
(
"** 学习记录
i
d 成员id pageSize pageNum"
)
@ApiOperation
(
"** 学习记录
memberI
d 成员id pageSize pageNum"
)
public
ResponseVO
studyHistory
(
@RequestBody
StudyHistoryDTO
studyHistoryDTO
){
return
ResponseData
.
generateCreatedResponse
(
0
,
memberService
.
studyHistory
(
studyHistoryDTO
));
}
...
...
src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
View file @
056b9d2
...
...
@@ -41,4 +41,9 @@ public interface VodPlayHistoryMapper extends BaseMapper<VodPlayHistoryDO> {
* 查看某人当天看了多少时间
*/
int
memberDailyStudyLength
(
Long
memberId
);
/**
* 查看学生是否完成了某个视频
*/
int
completeVodOrNot
(
Long
memberId
,
Long
vodId
);
}
src/main/java/com/subsidy/service/impl/MemberServiceImpl.java
View file @
056b9d2
...
...
@@ -319,7 +319,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
}
}
if
(
memberDO
.
getPassword
().
equals
(
passwordLoginDTO
.
getPassword
())
&&
1
==
memberDO
.
getFirstLogin
()&&
"冻结"
.
equals
(
memberDO
.
getStatus
()))
{
if
(
memberDO
.
getPassword
().
equals
(
passwordLoginDTO
.
getPassword
())
&&
1
==
memberDO
.
getFirstLogin
()
&&
"冻结"
.
equals
(
memberDO
.
getStatus
()))
{
MemberVO
memberVO
=
new
MemberVO
();
BeanUtils
.
copyProperties
(
memberDO
,
memberVO
);
OprMemDictDO
oprMemDictDO
=
new
OprMemDictDO
();
...
...
@@ -327,15 +327,15 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
oprMemDictDO
.
setOprType
(
"登录"
);
oprMemDictDO
.
setResult
(
1
);
oprMemDictDO
.
setCreateDate
(
LocalDateTime
.
now
());
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_MEMBER_LOGIN_PREFIX
+
memberDO
.
getId
()
+
"_"
+
System
.
currentTimeMillis
(),
1
);
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_MEMBER_LOGIN_PREFIX
+
memberDO
.
getId
()
+
"_"
+
System
.
currentTimeMillis
(),
1
);
return
memberVO
;
}
else
{
}
else
{
if
(!
memberDO
.
getPassword
().
equals
(
passwordLoginDTO
.
getPassword
()))
{
OprMemDictDO
oprMemDictDO
=
new
OprMemDictDO
();
oprMemDictDO
.
setUserId
(
memberDO
.
getId
());
oprMemDictDO
.
setOprType
(
"登录"
);
oprMemDictDO
.
setResult
(
0
);
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_MEMBER_LOGIN_PREFIX
+
memberDO
.
getId
()
+
LocalDateTime
.
now
(),
oprMemDictDO
);
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_MEMBER_LOGIN_PREFIX
+
memberDO
.
getId
()
+
LocalDateTime
.
now
(),
oprMemDictDO
);
throw
new
HttpException
(
10016
);
}
if
(
0
==
memberDO
.
getFirstLogin
())
{
...
...
@@ -344,7 +344,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
oprMemDictDO
.
setOprType
(
"登录"
);
oprMemDictDO
.
setResult
(
0
);
oprMemDictDO
.
setCreateDate
(
LocalDateTime
.
now
());
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_MEMBER_LOGIN_PREFIX
+
memberDO
.
getId
()
+
"_"
+
System
.
currentTimeMillis
(),
0
);
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_MEMBER_LOGIN_PREFIX
+
memberDO
.
getId
()
+
"_"
+
System
.
currentTimeMillis
(),
0
);
throw
new
HttpException
(
10015
);
}
if
(
"冻结"
.
equals
(
memberDO
.
getStatus
()))
{
...
...
@@ -358,7 +358,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
public
String
updatePassword
(
MemberDO
memberDO
)
{
this
.
baseMapper
.
updateById
(
memberDO
);
MemberDO
memberDO1
=
this
.
baseMapper
.
selectById
(
memberDO
.
getId
());
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_COMPANY_MEMBER_PREFIX
+
memberDO1
.
getCompanyId
()
+
":"
+
memberDO
.
getAccountName
(),
memberDO
);
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_COMPANY_MEMBER_PREFIX
+
memberDO1
.
getCompanyId
()
+
":"
+
memberDO
.
getAccountName
(),
memberDO
);
return
ConstantUtils
.
SET_SUCCESS
;
}
...
...
@@ -368,70 +368,27 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
List
<
StudyPageVO
>
studyPageVOS
=
this
.
baseMapper
.
studyPage
(
memberDO
);
f
or
(
StudyPageVO
studyPageVO
:
studyPageVOS
)
{
f
inal
ExecutorService
newCachedThreadPool
=
Executors
.
newCachedThreadPool
();
for
(
StudyPageVO
studyPageVO
:
studyPageVOS
)
{
//查看课程下有几节课
List
<
VodDictDO
>
vodDictDOS
=
courseContentMapper
.
getCourseVods
(
studyPageVO
.
getId
());
studyPageVO
.
setTotalVods
(
vodDictDOS
.
size
());
final
ExecutorService
newCachedThreadPool
=
Executors
.
newCachedThreadPool
();
int
i
=
0
;
//该成员完成了几个视频
for
(
VodDictDO
vodDictDO
:
vodDictDOS
)
{
List
<
VodPlayHistoryDO
>
vodPlayHistoryDOS
=
vodPlayHistoryMapper
.
selectList
(
new
QueryWrapper
<
VodPlayHistoryDO
>()
.
lambda
()
.
eq
(
VodPlayHistoryDO:
:
getMemberId
,
memberDO
.
getId
())
.
eq
(
VodPlayHistoryDO:
:
getVodId
,
vodDictDO
.
getId
())
.
orderByDesc
(
VodPlayHistoryDO:
:
getPlayRecord
));
if
(
vodPlayHistoryDOS
.
size
()
>
0
)
{
if
(
vodPlayHistoryDOS
.
get
(
0
).
getPlayRecord
()
>
vodDictDO
.
getVodLength
()
*
0.8
)
{
i
++;
}
}
}
studyPageVO
.
setDoneVods
(
i
);
//该班级课程下有多少人
List
<
ClassMemberMappingDO
>
classMemberMappingDOS
=
classMemberMappingMapper
.
selectList
(
new
QueryWrapper
<
ClassMemberMappingDO
>()
.
lambda
()
.
eq
(
ClassMemberMappingDO:
:
getClassId
,
studyPageVO
.
getClassId
()));
studyPageVO
.
setTotalMember
(
classMemberMappingDOS
.
size
());
////多个任务
//newCachedThreadPool.execute(() ->
// studyPageTask1(studyPageVO, vodDictDOS, memberDO.getId()));
//newCachedThreadPool.execute(() ->
// studyPageTask2(studyPageVO));
//执行后不再接收新任务,如果里面有任务,就执行完
newCachedThreadPool
.
shutdown
();
try
{
while
(
true
)
{
//等待所有任务都结束了继续执行
if
(
newCachedThreadPool
.
isTerminated
())
{
break
;
}
}
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
newCachedThreadPool
.
submit
(()
->
studyPageTask1
(
studyPageVO
,
vodDictDOS
,
memberDO
.
getId
()));
}
memberStudyPageVO
.
setStudyPageVOS
(
studyPageVOS
);
newCachedThreadPool
.
shutdown
(
);
List
<
DepartmentDictDO
>
departmentDictDOS
=
this
.
baseMapper
.
getDepartments
(
memberDO
.
getId
()
);
memberStudyPageVO
.
setStudyPageVOS
(
studyPageVOS
);
if
(
departmentDictDOS
.
size
()
>
0
)
{
CompanyDictDO
companyDictDO
=
companyDictMapper
.
selectById
(
departmentDictDOS
.
get
(
0
).
getId
());
if
(
null
!=
companyDictDO
)
{
BeanUtils
.
copyProperties
(
companyDictDO
,
memberStudyPageVO
);
}
}
//List<DepartmentDictDO> departmentDictDOS = this.baseMapper.getDepartments(memberDO.getId());
//
//if (departmentDictDOS.size() > 0) {
// CompanyDictDO companyDictDO = companyDictMapper.selectById(departmentDictDOS.get(0).getId());
// if (null != companyDictDO) {
// BeanUtils.copyProperties(companyDictDO, memberStudyPageVO);
// }
//}
return
memberStudyPageVO
;
}
...
...
@@ -441,30 +398,21 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
//该成员完成了几个视频
for
(
VodDictDO
vodDictDO
:
vodDictDOS
)
{
List
<
VodPlayHistoryDO
>
vodPlayHistoryDOS
=
vodPlayHistoryMapper
.
selectList
(
new
QueryWrapper
<
VodPlayHistoryDO
>()
.
lambda
()
.
eq
(
VodPlayHistoryDO:
:
getMemberId
,
memberId
)
.
eq
(
VodPlayHistoryDO:
:
getVodId
,
vodDictDO
.
getId
())
.
orderByDesc
(
VodPlayHistoryDO:
:
getPlayRecord
));
if
(
vodPlayHistoryDOS
.
size
()
>
0
)
{
if
(
vodPlayHistoryDOS
.
get
(
0
).
getPlayRecord
()
>
vodDictDO
.
getVodLength
()
*
0.8
)
{
i
++;
}
}
int
completeVodOrNot
=
vodPlayHistoryMapper
.
completeVodOrNot
(
memberId
,
vodDictDO
.
getId
());
i
+=
completeVodOrNot
;
}
studyPageVO
.
setDoneVods
(
i
);
//该班级课程下有多少人
Integer
count
=
classMemberMappingMapper
.
selectCount
(
new
QueryWrapper
<
ClassMemberMappingDO
>()
.
lambda
()
.
eq
(
ClassMemberMappingDO:
:
getClassId
,
studyPageVO
.
getClassId
()));
studyPageVO
.
setTotalMember
(
count
);
return
new
AsyncResult
<>(
studyPageVO
);
}
public
Future
<
StudyPageVO
>
studyPageTask2
(
StudyPageVO
studyPageVO
)
{
//该班级课程下有多少人
List
<
ClassMemberMappingDO
>
classMemberMappingDOS
=
classMemberMappingMapper
.
selectList
(
new
QueryWrapper
<
ClassMemberMappingDO
>()
.
lambda
()
.
eq
(
ClassMemberMappingDO:
:
getClassId
,
studyPageVO
.
getClassId
()));
studyPageVO
.
setTotalMember
(
classMemberMappingDOS
.
size
());
return
new
AsyncResult
<>(
studyPageVO
);
}
...
...
@@ -608,21 +556,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
public
IPage
studyHistory
(
StudyHistoryDTO
studyHistoryDTO
)
{
Page
pager
=
new
Page
(
studyHistoryDTO
.
getPageNum
(),
studyHistoryDTO
.
getPageSize
());
IPage
iPage
=
vodPlayHistoryMapper
.
studyHistory
(
pager
,
studyHistoryDTO
.
getMemberId
());
List
<
StudyHistoryVO
>
studyHistoryVOS
=
iPage
.
getRecords
();
for
(
StudyHistoryVO
studyHistoryVO
:
studyHistoryVOS
)
{
if
(
studyHistoryVO
.
getPercent
()
>=
80
)
{
studyHistoryVO
.
setStatus
(
true
);
}
else
{
studyHistoryVO
.
setStatus
(
false
);
}
}
iPage
.
setRecords
(
studyHistoryVOS
);
return
iPage
;
return
vodPlayHistoryMapper
.
studyHistory
(
pager
,
studyHistoryDTO
.
getMemberId
());
}
public
List
<
QueryPapersVO
>
getCourseTest
(
ContentMemberDTO
contentMemberDTO
)
{
...
...
@@ -632,12 +566,12 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
List
<
QueryPapersVO
>
queryPapersVOS
=
paperDictMapper
.
queryPapers
(
contentMemberDTO
.
getCourseId
(),
null
,
1
);
ExecutorService
executorService
=
Executors
.
newCachedThreadPool
();
for
(
QueryPapersVO
queryPapersVO
:
queryPapersVOS
)
{
executorService
.
execute
(()
->
getCourseTestTask
(
queryPapersVO
,
contentMemberDTO
.
getMemberId
(),
classDictDO
));
executorService
.
execute
(()
->
getCourseTestTask
(
queryPapersVO
,
contentMemberDTO
.
getMemberId
(),
classDictDO
));
}
return
queryPapersVOS
;
}
public
void
getCourseTestTask
(
QueryPapersVO
queryPapersVO
,
Long
memberId
,
ClassDictDO
classDictDO
)
{
public
void
getCourseTestTask
(
QueryPapersVO
queryPapersVO
,
Long
memberId
,
ClassDictDO
classDictDO
)
{
//多少人已完成
Integer
cnt
=
paperDictMapper
.
completeCount
(
queryPapersVO
.
getId
());
queryPapersVO
.
setCompleteCnt
(
cnt
);
...
...
@@ -751,7 +685,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
public
String
checkTimes
(
ExerciseDoneResultDO
exerciseDoneResultDO
)
{
MemberDO
memberDO
=
this
.
baseMapper
.
selectById
(
exerciseDoneResultDO
.
getMemberId
());
ClassHourDictDO
classHourDictDO
=
(
ClassHourDictDO
)
redisUtil
.
get
(
RedisPrefixConstant
.
SUBSIDY_SETTINGS_PREFIX
+
memberDO
.
getCompanyId
());
ClassHourDictDO
classHourDictDO
=
(
ClassHourDictDO
)
redisUtil
.
get
(
RedisPrefixConstant
.
SUBSIDY_SETTINGS_PREFIX
+
memberDO
.
getCompanyId
());
if
(
null
!=
classHourDictDO
)
{
Integer
status
=
classHourDictDO
.
getRepeatStatus
();
...
...
@@ -775,7 +709,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> imple
public
void
importRedis
()
{
List
<
MemberDO
>
memberDOS
=
this
.
baseMapper
.
selectList
(
null
);
for
(
MemberDO
memberDO
:
memberDOS
)
{
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_COMPANY_MEMBER_PREFIX
+
memberDO
.
getCompanyId
()
+
":"
+
memberDO
.
getAccountName
(),
memberDO
);
redisUtil
.
set
(
RedisPrefixConstant
.
SUBSIDY_COMPANY_MEMBER_PREFIX
+
memberDO
.
getCompanyId
()
+
":"
+
memberDO
.
getAccountName
(),
memberDO
);
}
}
...
...
src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
View file @
056b9d2
...
...
@@ -222,10 +222,9 @@ public class SignInRecordServiceImpl extends ServiceImpl<SignInRecordMapper, Sig
//获取有效课程
long
count
=
classMemberMappingMapper
.
getMemberClassCount
(
signInRecordDO
.
getMemberId
());
long
size
=
redisUtil
.
keys
(
RedisPrefixConstant
.
SUBSIDY_SIGN_INFO_PREFIX
+
"memberId_"
+
signInRecordDO
.
getMemberId
()
+
"*_"
+
DateFormatUtil
.
format
(
new
Date
(),
"yyyyMMdd"
)).
stream
().
count
();
if
(
size
!=
count
)
{
if
(
size
!=
count
)
{
signInStatusVO
.
setStatus
(
flag
);
}
...
...
@@ -247,8 +246,8 @@ public class SignInRecordServiceImpl extends ServiceImpl<SignInRecordMapper, Sig
//}
List
<
ClassHourDictDO
>
classHourDictDOS
=
classHourDictMapper
.
selectList
(
null
);
for
(
ClassHourDictDO
classHourDictDO
:
classHourDictDOS
){
redisUtil
.
set
(
"subsidySettings_"
+
classHourDictDO
.
getCompanyId
(),
classHourDictDO
);
for
(
ClassHourDictDO
classHourDictDO
:
classHourDictDOS
)
{
redisUtil
.
set
(
"subsidySettings_"
+
classHourDictDO
.
getCompanyId
(),
classHourDictDO
);
}
}
...
...
src/main/resources/application.properties
View file @
056b9d2
...
...
@@ -4,14 +4,14 @@ spring.profiles.active=dev
spring.server.port
=
23457
#嵌入tomcat配置
#和CPU数
spring.server.acceptorThreadCount
=
2
00
spring.server.acceptorThreadCount
=
6
00
spring.server.minSpareThreads
=
100
spring.server.maxSpareThreads
=
500
spring.server.maxThreads
=
8
00
spring.server.maxConnections
=
50
000
spring.server.maxThreads
=
5
00
spring.server.maxConnections
=
1
000
#10秒超时
spring.server.connectionTimeout
=
20000
spring.server.protocol
=
org.apache.coyote.http11.Http11
Nio2
Protocol
spring.server.protocol
=
org.apache.coyote.http11.Http11
Apr
Protocol
spring.server.redirectPort
=
8443
spring.server.compression
=
on
#文件请求大小
...
...
src/main/resources/mapper/CourseContentMapper.xml
View file @
056b9d2
...
...
@@ -23,7 +23,16 @@
<select
id=
"getCourseVods"
parameterType=
"integer"
resultType=
"com.subsidy.model.VodDictDO"
>
SELECT
t2.*
t2.id,
t2.content_id,
t2.vod_name,
t2.vod_length,
t2.vod_type,
t2.vod_size,
t2.vod_url,
t2.vod_code,
t2.teacher_name,
t2.cover_page
FROM
course_content t
LEFT JOIN vod_dict t2 ON t.id = t2.content_id
...
...
src/main/resources/mapper/VodPlayHistoryMapper.xml
View file @
056b9d2
...
...
@@ -35,7 +35,7 @@
t2.vod_url,
t2.vod_name,
t3.play_record,
round( t3.play_record * 100 / t2.vod_length, 0 ) AS percent
,
if(round( t3.play_record * 100 / t2.vod_length, 0 )>=80,'true','false') as status
,
t.playDate
FROM
(
...
...
@@ -113,4 +113,17 @@
AND t.member_id = #{memberId}
</select>
<select
id=
"completeVodOrNot"
resultType=
"integer"
>
SELECT
IF
( max( t.play_record ) > t2.vod_length, 1, 0 ) AS count
FROM
vod_play_history t
LEFT JOIN vod_dict t2 ON t.vod_id = t2.id
WHERE
t.delete_date is null
and t2.delete_date is null
t.member_id = #{memberId}
AND t.vod_id = #{vodId}
</select>
</mapper>
Write
Preview
Markdown
is supported
Attach a file
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 post a comment