From a28c0dbc2de3dd08041cce9be2b0a1be5e4dc198 Mon Sep 17 00:00:00 2001 From: tuyp Date: Fri, 17 Jun 2022 18:31:05 +0800 Subject: [PATCH] 交叉时间数据脚本 --- src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java | 12 ++++++++++++ src/main/java/com/subsidy/common/interceptor/TimeRequired.java | 10 ++++++++++ src/main/java/com/subsidy/controller/AdministerController.java | 2 +- src/main/java/com/subsidy/controller/CertMemberMappingController.java | 2 ++ src/main/java/com/subsidy/controller/ClassDictController.java | 2 ++ src/main/java/com/subsidy/controller/ClassHourDictController.java | 2 ++ src/main/java/com/subsidy/controller/ExerciseDictController.java | 2 ++ src/main/java/com/subsidy/controller/ExerciseDoneResultController.java | 4 +++- src/main/java/com/subsidy/controller/MemberController.java | 15 ++++++++++++++- src/main/java/com/subsidy/controller/SignInRecordController.java | 3 +++ src/main/java/com/subsidy/controller/SmsVerifyCodeController.java | 2 ++ src/main/java/com/subsidy/controller/VodPlayHistoryController.java | 20 ++++++++++++-------- src/main/java/com/subsidy/dto/vod/RemainSecondsDTO.java | 2 ++ src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java | 8 ++++++-- src/main/java/com/subsidy/service/VodPlayHistoryService.java | 2 +- src/main/java/com/subsidy/service/impl/ExerciseDoneResultServiceImpl.java | 38 +++++++++++++++++++++++--------------- src/main/java/com/subsidy/service/impl/VodPlayHistoryServiceImpl.java | 561 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ src/main/java/com/subsidy/util/BaseModel.java | 2 +- src/main/java/com/subsidy/util/websocket/ChatEndPoint.java | 3 ++- src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java | 5 ++++- src/main/resources/application.properties | 4 ++-- src/main/resources/code.properties | 3 +++ src/main/resources/mapper/VodDictMapper.xml | 3 ++- src/main/resources/mapper/VodPlayHistoryMapper.xml | 14 ++++++++++++++ 24 files changed, 416 insertions(+), 305 deletions(-) create mode 100644 src/main/java/com/subsidy/common/interceptor/TimeRequired.java diff --git a/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java b/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java index 36d4db1..37bf6cf 100644 --- a/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java +++ b/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; +import java.util.Calendar; +import java.util.Date; import java.util.Map; /** @@ -99,6 +101,16 @@ public class AuthenticationInterceptor implements HandlerInterceptor { } throw new HttpException(1010); } + + TimeRequired timeRequired = method.getAnnotation(TimeRequired.class); + if (timeRequired !=null){ + Calendar calendar = Calendar.getInstance(); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + if (hour<6){ + throw new HttpException(17001); + } + } return true; } + } diff --git a/src/main/java/com/subsidy/common/interceptor/TimeRequired.java b/src/main/java/com/subsidy/common/interceptor/TimeRequired.java new file mode 100644 index 0000000..d720289 --- /dev/null +++ b/src/main/java/com/subsidy/common/interceptor/TimeRequired.java @@ -0,0 +1,10 @@ +package com.subsidy.common.interceptor; + +import java.lang.annotation.*; + +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface TimeRequired { +} diff --git a/src/main/java/com/subsidy/controller/AdministerController.java b/src/main/java/com/subsidy/controller/AdministerController.java index 4b43003..f4568e7 100644 --- a/src/main/java/com/subsidy/controller/AdministerController.java +++ b/src/main/java/com/subsidy/controller/AdministerController.java @@ -98,7 +98,7 @@ public class AdministerController { @PostMapping("classDetail") @ApiOperation("班级管理--班级成员 id 班级id userName") - @LoginRequired +// @LoginRequired public ResponseVO classDetail(@RequestBody ClassDetailDTO classDetailDTO){ return ResponseData.generateCreatedResponse(0,administerService.classDetail(classDetailDTO)); } diff --git a/src/main/java/com/subsidy/controller/CertMemberMappingController.java b/src/main/java/com/subsidy/controller/CertMemberMappingController.java index 32e3e3b..0dfaf18 100644 --- a/src/main/java/com/subsidy/controller/CertMemberMappingController.java +++ b/src/main/java/com/subsidy/controller/CertMemberMappingController.java @@ -3,6 +3,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.cert.GetListDTO; import com.subsidy.dto.cert.SignManagementDTO; import com.subsidy.dto.cert.SignUpDTO; @@ -52,6 +53,7 @@ public class CertMemberMappingController { @PostMapping("getList") @ApiOperation("手机端---获取全部订单 memberId status pageSize pageNum") + @TimeRequired public ResponseVO getList(@RequestBody GetListDTO getListDTO){ return ResponseData.generateCreatedResponse(0,certMemberMappingService.getList(getListDTO)); } diff --git a/src/main/java/com/subsidy/controller/ClassDictController.java b/src/main/java/com/subsidy/controller/ClassDictController.java index 835f21b..7cc6d6f 100644 --- a/src/main/java/com/subsidy/controller/ClassDictController.java +++ b/src/main/java/com/subsidy/controller/ClassDictController.java @@ -4,6 +4,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.classDict.AddClassDTO; import com.subsidy.dto.classDict.AddMemberToClassDTO; import com.subsidy.dto.classDict.GetClassBaseInfoDTO; @@ -102,6 +103,7 @@ public class ClassDictController { @PostMapping("getClassBaseInfo") @ApiOperation("班级详情--获取课程基本信息 id") @LoginRequired + @TimeRequired public ResponseVO getClassBaseInfo(@RequestBody GetClassBaseInfoDTO getClassBaseInfoDTO){ return ResponseData.generateCreatedResponse(0,classDictService.getClassBaseInfo(getClassBaseInfoDTO)); } diff --git a/src/main/java/com/subsidy/controller/ClassHourDictController.java b/src/main/java/com/subsidy/controller/ClassHourDictController.java index f12cc73..c228d7f 100644 --- a/src/main/java/com/subsidy/controller/ClassHourDictController.java +++ b/src/main/java/com/subsidy/controller/ClassHourDictController.java @@ -4,6 +4,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.model.ClassHourDictDO; import com.subsidy.model.VodPlayHistoryDO; import com.subsidy.service.ClassHourDictService; @@ -50,6 +51,7 @@ public class ClassHourDictController { @PostMapping("pollingGet") @ApiOperation("轮询查询当前这个人当天有没有超过最长时长 memberId playLength") @LoginRequired + @TimeRequired public ResponseVO pollingGet(@RequestBody VodPlayHistoryDO vodPlayHistoryDO){ return ResponseData.generateCreatedResponse(0,classHourDictService.pollingGet(vodPlayHistoryDO)); } diff --git a/src/main/java/com/subsidy/controller/ExerciseDictController.java b/src/main/java/com/subsidy/controller/ExerciseDictController.java index 94e3cd3..350e37c 100644 --- a/src/main/java/com/subsidy/controller/ExerciseDictController.java +++ b/src/main/java/com/subsidy/controller/ExerciseDictController.java @@ -4,6 +4,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.exercise.GetAllExercisesDTO; import com.subsidy.dto.exercise.GetPaperExerciseDTO; import com.subsidy.dto.exercise.SubmitDTO; @@ -59,6 +60,7 @@ public class ExerciseDictController { @PostMapping("submit") @ApiOperation("提交答案 {paperId 卷子id memberId 成员id classId课程 courseId 课程id memberExerciseVOS [ id selectAnswer ] length:做题时长} ") @LoginRequired + @TimeRequired public ResponseVO submit(@RequestBody SubmitDTO submitDTO){ return ResponseData.generateCreatedResponse(0,exerciseDictService.submit(submitDTO)); } diff --git a/src/main/java/com/subsidy/controller/ExerciseDoneResultController.java b/src/main/java/com/subsidy/controller/ExerciseDoneResultController.java index 1982383..3da169f 100644 --- a/src/main/java/com/subsidy/controller/ExerciseDoneResultController.java +++ b/src/main/java/com/subsidy/controller/ExerciseDoneResultController.java @@ -4,6 +4,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.model.ExerciseDoneResultDO; import com.subsidy.service.ExerciseDoneResultService; import io.swagger.annotations.Api; @@ -31,12 +32,13 @@ public class ExerciseDoneResultController { @PostMapping("getDoneDetail") @ApiOperation("提交后获取做题结果 id 提交后返回的id") @LoginRequired + @TimeRequired public ResponseVO getDoneDetail(@RequestBody ExerciseDoneResultDO exerciseDoneResultDO){ return ResponseData.generateCreatedResponse(0,exerciseDoneResultService.getDoneDetail(exerciseDoneResultDO)); } @PostMapping("importData") - public ResponseVO makedatas(@RequestParam("file") MultipartFile file){ + public ResponseVO makeData(@RequestParam("file") MultipartFile file){ exerciseDoneResultService.importData(file); return null; } diff --git a/src/main/java/com/subsidy/controller/MemberController.java b/src/main/java/com/subsidy/controller/MemberController.java index ba1714e..2282e43 100644 --- a/src/main/java/com/subsidy/controller/MemberController.java +++ b/src/main/java/com/subsidy/controller/MemberController.java @@ -3,6 +3,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.administer.VerifyCodeDTO; import com.subsidy.dto.member.*; import com.subsidy.model.ExerciseDoneResultDO; @@ -62,24 +63,28 @@ public class MemberController { @PostMapping(value = "/login") @ApiOperation("手机端:登录:telephone/手机号, verifyCode/验证码") + @TimeRequired public ResponseVO login(@RequestBody VerifyCodeDTO verifyCodeDTO) { return ResponseData.generateCreatedResponse(0, memberService.login(verifyCodeDTO)); } @PostMapping("passwordLogin") @ApiOperation("手机端:密码登录 { companyId accountName password}") + @TimeRequired public ResponseVO passwordLogin(@RequestBody PasswordLoginDTO passwordLoginDTO){ return ResponseData.generateCreatedResponse(0,memberService.passwordLogin(passwordLoginDTO)); } @PostMapping("qingxuetangLogin") @ApiOperation("轻学堂登录 手机号mobile") + @TimeRequired public ResponseVO qingxuetangLogin(@RequestBody QingxuetangLoginDTO qingxuetangLoginDTO){ return ResponseData.generateCreatedResponse(0,memberService.qingxuetangLogin(qingxuetangLoginDTO)); } @PostMapping("kunchiLogin") @ApiOperation("鲲驰登陆 authCorpName 手机号mobile nickname timestamp sign") + @TimeRequired public ResponseVO kunchiLogin(@RequestBody QingxuetangLoginDTO qingxuetangLoginDTO){ return ResponseData.generateCreatedResponse(0,memberService.kunchiLogin(qingxuetangLoginDTO)); } @@ -88,6 +93,7 @@ public class MemberController { @PostMapping("updatePassword") @ApiOperation("修改密码 {id password}") @LoginRequired + @TimeRequired public ResponseVO updatePassword(@RequestBody MemberDO memberDO){ return ResponseData.generateCreatedResponse(0,memberService.updatePassword(memberDO)); } @@ -100,7 +106,8 @@ public class MemberController { @PostMapping("myCourses") @ApiOperation("手机端:我的学习--课程 memberId 学员id status 状态 0:全部 1:进行中 2:待开始 3:已完成 ") - @LoginRequired +// @LoginRequired + @TimeRequired public ResponseVO myCourses(@RequestBody MyCoursesDTO myCoursesDTO){ return ResponseData.generateCreatedResponse(0,memberService.myCourses(myCoursesDTO)); } @@ -108,6 +115,7 @@ public class MemberController { @PostMapping("contentVod") @ApiOperation("手机端:目录+视频 classId 班级id courseId 课程 memberId 学员id") // @LoginRequired + @TimeRequired public ResponseVO contentVod(@RequestBody ContentMemberDTO contentVodDTO){ return ResponseData.generateCreatedResponse(0,memberService.contentVod(contentVodDTO)); } @@ -115,6 +123,7 @@ public class MemberController { @PostMapping("contentFiles") @ApiOperation("手机端:目录+课件 courseId 课程 memberId 学员id") @LoginRequired + @TimeRequired public ResponseVO contentFiles(@RequestBody ContentMemberDTO contentMemberDTO){ return ResponseData.generateCreatedResponse(0,memberService.contentFiles(contentMemberDTO)); } @@ -122,6 +131,7 @@ public class MemberController { @PostMapping("studyHistory") @ApiOperation("学习记录 memberId 成员id pageSize pageNum") @LoginRequired + @TimeRequired public ResponseVO studyHistory(@RequestBody StudyHistoryDTO studyHistoryDTO){ return ResponseData.generateCreatedResponse(0,memberService.studyHistory(studyHistoryDTO)); } @@ -129,6 +139,7 @@ public class MemberController { @PostMapping("getCourseTest") @ApiOperation("获取课程下的测试情况 {memberId 成员id 班级id classId courseId 课程id }") @LoginRequired + @TimeRequired public ResponseVO getCourseTest(@RequestBody ContentMemberDTO contentMemberDTO){ return ResponseData.generateCreatedResponse(0,memberService.getCourseTest(contentMemberDTO)); } @@ -143,6 +154,7 @@ public class MemberController { @PostMapping("getStudyInfo") @ApiOperation("获取学生完成课程情况 id 学员id") @LoginRequired + @TimeRequired public ResponseVO getStudyInfo(@RequestBody MemberDO memberDO){ return ResponseData.generateCreatedResponse(0,memberService.getStudyInfo(memberDO)); } @@ -170,6 +182,7 @@ public class MemberController { @PostMapping("qxy") @ApiOperation("Q学友授权 telephone 手机号") + @TimeRequired public ResponseVO qxy(@RequestBody MemberDO memberDO){ return ResponseData.generateCreatedResponse(0,memberService.qxy(memberDO)); } diff --git a/src/main/java/com/subsidy/controller/SignInRecordController.java b/src/main/java/com/subsidy/controller/SignInRecordController.java index 4523e3e..935e96d 100644 --- a/src/main/java/com/subsidy/controller/SignInRecordController.java +++ b/src/main/java/com/subsidy/controller/SignInRecordController.java @@ -4,6 +4,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.member.GetMemberSignInfoDTO; import com.subsidy.dto.sign.DataViewDTO; import com.subsidy.model.SignInRecordDO; @@ -43,6 +44,7 @@ public class SignInRecordController { @PostMapping("signIn") @ApiOperation("签到 memberId") @LoginRequired + @TimeRequired public ResponseVO signIn(@RequestBody SignInRecordDO signInRecordDO) { return ResponseData.generateCreatedResponse(0, signInRecordService.signIn(signInRecordDO)); } @@ -57,6 +59,7 @@ public class SignInRecordController { @PostMapping("signInStatus") @ApiOperation("判断学生当天有没有打卡 {memberId 学生id}") @LoginRequired + @TimeRequired public ResponseVO signInStatus(@RequestBody SignInRecordDO signInRecordDO) { return ResponseData.generateCreatedResponse(0, signInRecordService.signInStatus(signInRecordDO)); } diff --git a/src/main/java/com/subsidy/controller/SmsVerifyCodeController.java b/src/main/java/com/subsidy/controller/SmsVerifyCodeController.java index 5e6d472..6c17e9b 100644 --- a/src/main/java/com/subsidy/controller/SmsVerifyCodeController.java +++ b/src/main/java/com/subsidy/controller/SmsVerifyCodeController.java @@ -3,6 +3,7 @@ package com.subsidy.controller; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.sms.SendVerifyCodeDTO; import com.subsidy.service.SmsVerifyCodeService; import io.swagger.annotations.Api; @@ -31,6 +32,7 @@ public class SmsVerifyCodeController { @PostMapping(value = "/send") @ApiOperation("发送短信验证码 {telephone} ") + @TimeRequired public ResponseVO sendVerifyCode(@RequestBody SendVerifyCodeDTO sendVerifyCodeDTO ) { smsVerifyCodeService.sendVerifyCode(sendVerifyCodeDTO); return ResponseData.generateCreatedResponse(0); diff --git a/src/main/java/com/subsidy/controller/VodPlayHistoryController.java b/src/main/java/com/subsidy/controller/VodPlayHistoryController.java index cbbea4e..1f6b79e 100644 --- a/src/main/java/com/subsidy/controller/VodPlayHistoryController.java +++ b/src/main/java/com/subsidy/controller/VodPlayHistoryController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.subsidy.common.ResponseData; import com.subsidy.common.ResponseVO; import com.subsidy.common.interceptor.LoginRequired; +import com.subsidy.common.interceptor.TimeRequired; import com.subsidy.dto.vod.InsertHistoryNewDTO; import com.subsidy.dto.vod.RemainSecondsDTO; import com.subsidy.dto.vod.SignDatePlaysDTO; @@ -37,6 +38,7 @@ public class VodPlayHistoryController { @PostMapping("insertHistory") @ApiOperation("记录学生看视频位置 ajax请求 classId班级id vodId 视频id memberId 成员id playLength 播放时长 playRecord 位点") @LoginRequired + @TimeRequired public ResponseVO insertHistory(@RequestBody VodPlayHistoryDO vodPlayHistoryDO){ return ResponseData.generateCreatedResponse(0,vodPlayHistoryService.insertHistory(vodPlayHistoryDO)); } @@ -44,6 +46,7 @@ public class VodPlayHistoryController { @RequestMapping("insertHistoryNew") @ApiOperation("记录学生看视频位置 classId班级id vodId 视频id memberId 成员id playLength 播放时长 playRecord 位点") // @LoginRequired + @TimeRequired public ResponseVO insertHistoryNew(@RequestBody String param){ InsertHistoryNewDTO insertHistoryNewDTO = JSON.parseObject(param, InsertHistoryNewDTO.class); return ResponseData.generateCreatedResponse(0,vodPlayHistoryService.insertHistoryNew(insertHistoryNewDTO)); @@ -51,36 +54,37 @@ public class VodPlayHistoryController { @PostMapping("dataFix") @ApiOperation("每个视频都看一次") - @LoginRequired +// @LoginRequired public void dadaFix(@RequestBody SignDatePlaysDTO dataFixDTO){ vodPlayHistoryService.dataFix(dataFixDTO); } @PostMapping("signDatePlays") @ApiOperation("每天接着看几个视频 接dataFix的") - @LoginRequired +// @LoginRequired public void signDatePlays(@RequestBody SignDatePlaysDTO signDatePlaysDTO ){ vodPlayHistoryService.signDatePlays(signDatePlaysDTO); } @PostMapping("remainSeconds") - @ApiOperation("每个视频先看一下,然后剩余时长分配到每天里") - @LoginRequired + @ApiOperation("每个视频先看一下,然后剩余时长分配到每天里 classId memberId") +// @LoginRequired public void remainSeconds(@RequestBody RemainSecondsDTO remainSecondsDTO){ vodPlayHistoryService.remainSeconds(remainSecondsDTO); } @PostMapping("playLengthFix") - @ApiOperation("按照时长去跑脚本 {classId}") - @LoginRequired + @ApiOperation("按照时长去跑脚本 {classId memberId}") +// @LoginRequired public void playLengthFix(@RequestBody RemainSecondsDTO remainSecondsDTO){ vodPlayHistoryService.playLengthFix(remainSecondsDTO); } @PostMapping("testPlays") - public ResponseVO testPlays(){ - return ResponseData.generateCreatedResponse(0,vodPlayHistoryService.testPlays()); + @ApiOperation("解决有交叉时间的数据") + public ResponseVO testPlays(@RequestBody VodPlayHistoryDO vodPlayHistoryDO){ + return ResponseData.generateCreatedResponse(0,vodPlayHistoryService.testPlays(vodPlayHistoryDO)); } } diff --git a/src/main/java/com/subsidy/dto/vod/RemainSecondsDTO.java b/src/main/java/com/subsidy/dto/vod/RemainSecondsDTO.java index 2a5c466..e50bded 100644 --- a/src/main/java/com/subsidy/dto/vod/RemainSecondsDTO.java +++ b/src/main/java/com/subsidy/dto/vod/RemainSecondsDTO.java @@ -7,4 +7,6 @@ public class RemainSecondsDTO { private Long classId; + private Long memberId; + } diff --git a/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java b/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java index e81d84a..815deb6 100644 --- a/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java +++ b/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java @@ -12,6 +12,7 @@ import com.subsidy.vo.vod.StudyHistoryVO; import org.springframework.stereotype.Repository; import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -40,8 +41,6 @@ public interface VodPlayHistoryMapper extends BaseMapper { */ List getVodPlayHistory(); - void deleteById(Long id); - /** * 查看某人当天看了多少时间 */ @@ -92,5 +91,10 @@ public interface VodPlayHistoryMapper extends BaseMapper { */ List classMemberPlayLength(Long classId); + /** + * 查找某个人某个课程某天看视频的全部数据---按照createDate排序 + */ + List getVodPlayDay(Long classId, Long memberId, Date endDate); + } diff --git a/src/main/java/com/subsidy/service/VodPlayHistoryService.java b/src/main/java/com/subsidy/service/VodPlayHistoryService.java index 454edfc..230428c 100644 --- a/src/main/java/com/subsidy/service/VodPlayHistoryService.java +++ b/src/main/java/com/subsidy/service/VodPlayHistoryService.java @@ -32,5 +32,5 @@ public interface VodPlayHistoryService extends IService { void playLengthFix(RemainSecondsDTO remainSecondsDTO); - List testPlays(); + List testPlays(VodPlayHistoryDO vodPlayHistoryDO); } diff --git a/src/main/java/com/subsidy/service/impl/ExerciseDoneResultServiceImpl.java b/src/main/java/com/subsidy/service/impl/ExerciseDoneResultServiceImpl.java index f594d86..2fa5167 100644 --- a/src/main/java/com/subsidy/service/impl/ExerciseDoneResultServiceImpl.java +++ b/src/main/java/com/subsidy/service/impl/ExerciseDoneResultServiceImpl.java @@ -43,38 +43,39 @@ public class ExerciseDoneResultServiceImpl extends ServiceImpl { //找到相同卷子相同分数的人 List exerciseDoneResultDOS = exerciseDoneResultMapper.selectList(new QueryWrapper() - .lambda() - .eq(ExerciseDoneResultDO::getPaperId,s.getPaperId()) - .eq(ExerciseDoneResultDO::getScore,s.getScore())); + .lambda() + .eq(ExerciseDoneResultDO::getPaperId, s.getPaperId()) + .eq(ExerciseDoneResultDO::getScore, s.getScore())); //随机获取一个人 Random random = new Random(); ExerciseDoneResultDO exerciseDoneResultDO = exerciseDoneResultDOS.get(random.nextInt(exerciseDoneResultDOS.size())); + //找到这个人的答卷 List exerciseDoneHistoryDOS = exerciseDoneHistoryMapper.selectList(new QueryWrapper() - .lambda() - .eq(ExerciseDoneHistoryDO::getDoneId,exerciseDoneResultDO.getId()) - .eq(ExerciseDoneHistoryDO::getMemberId,exerciseDoneResultDO.getMemberId()) - .eq(ExerciseDoneHistoryDO::getPaperId,exerciseDoneResultDO.getPaperId())); - + .lambda() + .eq(ExerciseDoneHistoryDO::getDoneId, exerciseDoneResultDO.getId()) + .eq(ExerciseDoneHistoryDO::getMemberId, exerciseDoneResultDO.getMemberId()) + .eq(ExerciseDoneHistoryDO::getPaperId, exerciseDoneResultDO.getPaperId())); + DateTimeFormatter formatter = - DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy",Locale.ENGLISH); + DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); //遍历写入 - for (ExerciseDoneHistoryDO exerciseDoneHistoryDO : exerciseDoneHistoryDOS){ + for (ExerciseDoneHistoryDO exerciseDoneHistoryDO : exerciseDoneHistoryDOS) { ExerciseDoneHistoryDO ex = new ExerciseDoneHistoryDO(); - BeanUtils.copyProperties(exerciseDoneHistoryDO,ex); + BeanUtils.copyProperties(exerciseDoneHistoryDO, ex); ex.setId(null); ex.setMemberId(s.getMemberId()); ex.setDoneId(s.getId()); @@ -82,15 +83,22 @@ public class ExerciseDoneResultServiceImpl extends ServiceImpl3){ + if (vodPlayHistoryDO.getPlayLength() > 3) { MemberDO memberDO = memberMapper.selectById(vodPlayHistoryDO.getMemberId()); //查看系统设定的时长 ClassHourDictDO classHourDictDO = classHourDictMapper.selectOne(new QueryWrapper() @@ -95,15 +97,15 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl3){ + if (insertHistoryNewDTO.getPlayLength() > 3) { //对比redis上的token - String token = redisUtil.get("mobile_"+insertHistoryNewDTO.getMemberId()).toString(); - if (!insertHistoryNewDTO.getToken().equals(token)){ + String token = redisUtil.get("mobile_" + insertHistoryNewDTO.getMemberId()).toString(); + if (!insertHistoryNewDTO.getToken().equals(token)) { throw new HttpException(1010); } VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); - BeanUtils.copyProperties(insertHistoryNewDTO,vodPlayHistoryDO); + BeanUtils.copyProperties(insertHistoryNewDTO, vodPlayHistoryDO); MemberDO memberDO = memberMapper.selectById(vodPlayHistoryDO.getMemberId()); //查看系统设定的时长 @@ -173,7 +175,8 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper() - .lambda() - .eq(ClassMemberMappingDO::getClassId, Long.valueOf(classId))); +// //找到班级里的学生 +// List classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ClassMemberMappingDO::getClassId, Long.valueOf(classId))); //查找课程里的所有视频 List vodDictDOS = courseContentMapper.getCourseVods(classDictDO.getCourseId()); //查看每个人看视频的时长 - for (ClassMemberMappingDO classMemberMappingDO : classMemberMappingDOS) { +// for (ClassMemberMappingDO classMemberMappingDO : classMemberMappingDOS) { - //查看每个人的剩余时长 - MemberStudyLengthDO memberStudyLengthDO = memberStudyLengthMapper.selectOne(new QueryWrapper() - .lambda() - .eq(MemberStudyLengthDO::getMemberId, classMemberMappingDO.getMemberId())); + //查看每个人的剩余时长 + MemberStudyLengthDO memberStudyLengthDO = memberStudyLengthMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MemberStudyLengthDO::getMemberId, remainSecondsDTO.getMemberId())); - //查询这个人 这节课 签到记录 排序 - List signInRecordDOS = signInRecordMapper.selectList(new QueryWrapper() - .lambda() - .eq(SignInRecordDO::getMemberId, classMemberMappingDO.getMemberId()) - .eq(SignInRecordDO::getClassId, classId)); - - //确定每日最大学习时长 - int maxLength = memberStudyLengthDO.getTotalLength()/signInRecordDOS.size()+650; + //查询这个人 这节课 签到记录 排序 + List signInRecordDOS = signInRecordMapper.selectList(new QueryWrapper() + .lambda() + .eq(SignInRecordDO::getMemberId, remainSecondsDTO.getMemberId()) + .eq(SignInRecordDO::getClassId, classId)); + //确定每日最大学习时长 + int maxLength = memberStudyLengthDO.getTotalLength() / signInRecordDOS.size() + 650; - for (int k = signInRecordDOS.size() - 1; k >= 0; k--) { - //查看当天这人已经看的视频时长 - List vodPlayHistoryDOS = vodPlayHistoryMapper.exPlayInfo(classMemberMappingDO.getMemberId(), String.valueOf(classId), signInRecordDOS.get(k).getSignInDate()); + for (int k = signInRecordDOS.size() - 1; k >= 0; k--) { - //查看学生已看视频时长 - int totalLength = 0; - System.out.println("111111111111111"); - List vodPlayHistoryDOS1 = vodPlayHistoryMapper.selectList(new QueryWrapper() - .lambda() - .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getMemberId()) - .eq(VodPlayHistoryDO::getClassId, classId)); - for (VodPlayHistoryDO vodPlayHistoryDO : vodPlayHistoryDOS1) { - totalLength += vodPlayHistoryDO.getPlayLength(); - } + //查看当天这人已经看的视频时长 + List vodPlayHistoryDOS = vodPlayHistoryMapper.exPlayInfo(remainSecondsDTO.getMemberId(), String.valueOf(classId), signInRecordDOS.get(k).getSignInDate()); - int leftLength = 0; + //查看学生已看视频时长 + int totalLength = 0; + System.out.println("111111111111111"); + List vodPlayHistoryDOS1 = vodPlayHistoryMapper.selectList(new QueryWrapper() + .lambda() + .eq(VodPlayHistoryDO::getMemberId, remainSecondsDTO.getMemberId()) + .eq(VodPlayHistoryDO::getClassId, classId)); + for (VodPlayHistoryDO vodPlayHistoryDO : vodPlayHistoryDOS1) { + totalLength += vodPlayHistoryDO.getPlayLength(); + } - System.out.println("22222222222222222222222"); - if (memberStudyLengthDO != null) { - //这个人还剩多少时长 - leftLength = memberStudyLengthDO.getTotalLength() - totalLength; - } + int leftLength = 0; - System.out.println("2.5==============================="); - //当天已经看了多少时间视频 - int playLength = 0; + System.out.println("22222222222222222222222"); + if (memberStudyLengthDO != null) { + //这个人还剩多少时长 + leftLength = memberStudyLengthDO.getTotalLength() - totalLength; + } - for (int m = 0; m < vodPlayHistoryDOS.size(); m++) { - playLength += vodPlayHistoryDOS.get(m).getPlayLength(); - } + System.out.println("2.5==============================="); + //当天已经看了多少时间视频 + int playLength = 0; - if (maxLength>playLength){ - if (leftLength > 0) { - //随机看几个视频 - int playCounts = new Random().nextInt(4) + 2; - System.out.println("4444444444444444"); - for (int i = 0; i < playCounts; i++) { + for (int m = 0; m < vodPlayHistoryDOS.size(); m++) { + playLength += vodPlayHistoryDOS.get(m).getPlayLength(); + } - VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); - Random random1 = new Random(); - System.out.println("55555555555555555555"); - int j = random1.nextInt(vodDictDOS.size()); - vodPlayHistoryDO.setPlayCount(1); - vodPlayHistoryDO.setClassId(classId); - vodPlayHistoryDO.setMemberId(classMemberMappingDO.getMemberId()); - int h = new Random().nextInt(vodDictDOS.get(j).getVodLength() - 10) + 1; - System.out.println("666666666666666666"); - vodPlayHistoryDO.setPlayRecord(new Random().nextInt(h)); - if (leftLength - h > 0) { - vodPlayHistoryDO.setPlayLength(h); - playLength += h; - vodPlayHistoryDO.setVodId(vodDictDOS.get(j).getId()); - vodPlayHistoryDO.setPlayDate(signInRecordDOS.get(k).getSignInDate().plusSeconds(playLength)); - leftLength = leftLength - h; - vodPlayHistoryMapper.insert(vodPlayHistoryDO); - } else { - vodPlayHistoryDO.setPlayLength(leftLength); - playLength += leftLength; - vodPlayHistoryDO.setVodId(vodDictDOS.get(j).getId()); - vodPlayHistoryDO.setPlayDate(signInRecordDOS.get(k).getSignInDate().plusSeconds(playLength)); - vodPlayHistoryMapper.insert(vodPlayHistoryDO); - break; - } + if (maxLength > playLength) { + if (leftLength > 0) { + //随机看几个视频 + int playCounts = new Random().nextInt(4) + 2; + System.out.println("4444444444444444"); + for (int i = 0; i < playCounts; i++) { + + VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); + Random random1 = new Random(); + System.out.println("55555555555555555555"); + int j = random1.nextInt(vodDictDOS.size()); + vodPlayHistoryDO.setPlayCount(1); + vodPlayHistoryDO.setClassId(classId); + vodPlayHistoryDO.setMemberId(remainSecondsDTO.getMemberId()); + int h = new Random().nextInt(vodDictDOS.get(j).getVodLength() - 10) + 1; + System.out.println("666666666666666666"); + vodPlayHistoryDO.setPlayRecord(new Random().nextInt(h)); + if (leftLength - h > 0) { + vodPlayHistoryDO.setPlayLength(h); + playLength += h; + vodPlayHistoryDO.setVodId(vodDictDOS.get(j).getId()); + vodPlayHistoryDO.setPlayDate(signInRecordDOS.get(k).getSignInDate().plusSeconds(playLength)); + leftLength = leftLength - h; + vodPlayHistoryMapper.insert(vodPlayHistoryDO); + } else { + vodPlayHistoryDO.setPlayLength(leftLength); + playLength += leftLength; + vodPlayHistoryDO.setVodId(vodDictDOS.get(j).getId()); + vodPlayHistoryDO.setPlayDate(signInRecordDOS.get(k).getSignInDate().plusSeconds(playLength)); + vodPlayHistoryMapper.insert(vodPlayHistoryDO); + break; } } } - System.out.println("33333333333333333333"); } + System.out.println("33333333333333333333"); } +// } } public void playLengthFix(RemainSecondsDTO remainSecondsDTO) { @@ -471,224 +474,238 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper() - .lambda() - .eq(ClassMemberMappingDO::getClassId, classDictDO.getId())); +// //找到班级里的学生 +// List classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ClassMemberMappingDO::getClassId, classDictDO.getId())); //查找课程里的所有视频 List vodDictDOS = courseContentMapper.getCourseVods(classDictDO.getCourseId()); //查看每个人看视频的时长 - for (ClassMemberMappingDO classMemberMappingDO : classMemberMappingDOS) { - - //查看签到次数,得到学习时长 - //查询这个人 这节课 签到记录 排序 - List signInRecordDOS = signInRecordMapper.selectList(new QueryWrapper() - .lambda() - .eq(SignInRecordDO::getMemberId, classMemberMappingDO.getMemberId()) - .eq(SignInRecordDO::getClassId, classDictDO.getId()) - .orderByAsc(SignInRecordDO::getSignInDate)); +// for (ClassMemberMappingDO classMemberMappingDO : classMemberMappingDOS) { - List localDateTimes = new ArrayList<>(); - for (SignInRecordDO signInrecord : signInRecordDOS) { - if (signInrecord.getSignInDate().getHour() >= 6 && signInrecord.getSignInDate().getHour() < 17) { - localDateTimes.add(signInrecord.getSignInDate()); - } + //查看签到次数,得到学习时长 + //查询这个人 这节课 签到记录 排序 + List signInRecordDOS = signInRecordMapper.selectList(new QueryWrapper() + .lambda() + .eq(SignInRecordDO::getMemberId, remainSecondsDTO.getMemberId()) + .eq(SignInRecordDO::getClassId, classDictDO.getId()) + .orderByAsc(SignInRecordDO::getSignInDate)); + + List localDateTimes = new ArrayList<>(); + for (SignInRecordDO signInrecord : signInRecordDOS) { + if (signInrecord.getSignInDate().getHour() >= 6 && signInrecord.getSignInDate().getHour() < 17) { + localDateTimes.add(signInrecord.getSignInDate()); } - int signInrecord = localDateTimes.size(); - int vodSize = vodDictDOS.size(); - - LinkedHashMap hashMap = new LinkedHashMap<>(); - List integers = new ArrayList<>(); - - int m = 0; - - int rdm_total = 0; - for (int k = 0; k < signInrecord; k++) { - int n = getRandom(); - rdm_total += n; - if ((m + n) < vodSize && k != signInrecord - 1) { - m += n; - //if (n > 11 || n < 5) { - // System.out.println("error" + "==================="); - //} - hashMap.put(localDateTimes.get(k), n); - integers.add(localDateTimes.get(k)); - } else { - //if (vodSize - rdm_total + n > 10 || vodSize - rdm_total + n < 5) { - // System.out.println("error+=================="); - //} - hashMap.put(localDateTimes.get(k), vodSize - rdm_total + n); - integers.add(localDateTimes.get(k)); - break; - } + } + int signInrecord = localDateTimes.size(); + int vodSize = vodDictDOS.size(); + + LinkedHashMap hashMap = new LinkedHashMap<>(); + List integers = new ArrayList<>(); + + int m = 0; + + int rdm_total = 0; + for (int k = 0; k < signInrecord; k++) { + int n = getRandom(); + rdm_total += n; + if ((m + n) < vodSize && k != signInrecord - 1) { + m += n; + //if (n > 11 || n < 5) { + // System.out.println("error" + "==================="); + //} + hashMap.put(localDateTimes.get(k), n); + integers.add(localDateTimes.get(k)); + } else { + //if (vodSize - rdm_total + n > 10 || vodSize - rdm_total + n < 5) { + // System.out.println("error+=================="); + //} + hashMap.put(localDateTimes.get(k), vodSize - rdm_total + n); + integers.add(localDateTimes.get(k)); + break; } + } - //是否是最后一天的 - int key_index = 0; + //是否是最后一天的 + int key_index = 0; // for (LocalDateTime localDateTime : hashMap.keySet()){ // if (hashMap.get(localDateTime)>10||hashMap.get(localDateTime)<5){ // System.out.println("================"); // } // } - for (LocalDateTime localDateTime : localDateTimes) { - - //今天应该看多久视频 - int totalPlayLength = 0; - if (localDateTimes.size() == 3) { - totalPlayLength = _3times(); - } else if (localDateTimes.size() == 4) { - totalPlayLength = _4times(); - } else if (localDateTimes.size() == 5) { - totalPlayLength = _5times(); - } else if (localDateTimes.size() == 6) { - totalPlayLength = _6times(); - } else { - totalPlayLength = _7times(); - } + for (LocalDateTime localDateTime : localDateTimes) { + + //今天应该看多久视频 + int totalPlayLength = 0; + if (localDateTimes.size() == 3) { + totalPlayLength = _3times(); + } else if (localDateTimes.size() == 4) { + totalPlayLength = _4times(); + } else if (localDateTimes.size() == 5) { + totalPlayLength = _5times(); + } else if (localDateTimes.size() == 6) { + totalPlayLength = _6times(); + } else { + totalPlayLength = _7times(); + } - //今天已看视频时长 - int totalPlay = 0; + //今天已看视频时长 + int totalPlay = 0; - //先续播前一天未看完的视频 - List vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper() + //先续播前一天未看完的视频 + List vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper() + .lambda() + .eq(VodPlayHistoryDO::getMemberId, remainSecondsDTO.getMemberId()) + .eq(VodPlayHistoryDO::getClassId, classDictDO.getId()) + .orderByDesc(VodPlayHistoryDO::getPlayDate)); + //续播 + if (vodPlayHistoryDOS.size() > 0) { + VodPlayHistoryDO vodPlayHistoryDO1 = vodPlayHistoryDOS.get(0); + int count = this.baseMapper.selectCount(new QueryWrapper() .lambda() - .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getMemberId()) - .eq(VodPlayHistoryDO::getClassId, classDictDO.getId()) - .orderByDesc(VodPlayHistoryDO::getPlayDate)); - //续播 - if (vodPlayHistoryDOS.size() > 0) { - VodPlayHistoryDO vodPlayHistoryDO1 = vodPlayHistoryDOS.get(0); - int count = this.baseMapper.selectCount(new QueryWrapper() - .lambda() - .eq(VodPlayHistoryDO::getVodId, vodPlayHistoryDO1.getVodId()) - .eq(VodPlayHistoryDO::getMemberId,classMemberMappingDO.getMemberId())); + .eq(VodPlayHistoryDO::getVodId, vodPlayHistoryDO1.getVodId()) + .eq(VodPlayHistoryDO::getMemberId, remainSecondsDTO.getMemberId())); - if (count <2) { - VodDictDO vodDictDO = vodDictMapper.selectById(vodPlayHistoryDO1.getVodId()); - //剩下的学习时长 - int leftLength = vodDictDO.getVodLength() - vodPlayHistoryDO1.getPlayLength(); - if (leftLength > 0) { - totalPlay += leftLength; - VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); - vodPlayHistoryDO.setPlayCount(1); - vodPlayHistoryDO.setClassId(classDictDO.getId()); - vodPlayHistoryDO.setMemberId(classMemberMappingDO.getMemberId()); - vodPlayHistoryDO.setPlayRecord(vodDictDO.getVodLength()); - vodPlayHistoryDO.setPlayLength(leftLength); - vodPlayHistoryDO.setVodId(vodDictDO.getId()); - vodPlayHistoryDO.setPlayDate(localDateTime.plusSeconds(leftLength)); - vodPlayHistoryMapper.insert(vodPlayHistoryDO); - } + if (count < 2) { + VodDictDO vodDictDO = vodDictMapper.selectById(vodPlayHistoryDO1.getVodId()); + //剩下的学习时长 + int leftLength = vodDictDO.getVodLength() - vodPlayHistoryDO1.getPlayLength(); + if (leftLength > 0) { + totalPlay += leftLength; + VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); + vodPlayHistoryDO.setPlayCount(1); + vodPlayHistoryDO.setClassId(classDictDO.getId()); + vodPlayHistoryDO.setMemberId(remainSecondsDTO.getMemberId()); + vodPlayHistoryDO.setPlayRecord(vodDictDO.getVodLength()); + vodPlayHistoryDO.setPlayLength(leftLength); + vodPlayHistoryDO.setVodId(vodDictDO.getId()); + vodPlayHistoryDO.setPlayDate(localDateTime.plusSeconds(leftLength)); + vodPlayHistoryMapper.insert(vodPlayHistoryDO); } } + } - //查找这个人应该学的课程 - for (VodDictDO vodDictDO : vodDictDOS) { - //从历史记录里找中这个人有没有学过 - Integer count = vodPlayHistoryMapper.selectCount(new QueryWrapper() - .lambda() - .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getMemberId()) - .eq(VodPlayHistoryDO::getClassId, classDictDO.getId()) - .eq(VodPlayHistoryDO::getVodId, vodDictDO.getId())); - //表示这个视频没有学过 - if (count == 0) { - if (totalPlayLength > totalPlay) { //说明今天还可以学 - VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); - vodPlayHistoryDO.setPlayCount(1); - vodPlayHistoryDO.setClassId(classDictDO.getId()); - vodPlayHistoryDO.setMemberId(classMemberMappingDO.getMemberId()); - vodPlayHistoryDO.setPlayRecord(vodDictDO.getVodLength()); - if (totalPlay + vodDictDO.getVodLength() <= totalPlayLength) { - vodPlayHistoryDO.setPlayLength(vodDictDO.getVodLength()); - totalPlay += vodDictDO.getVodLength(); - } else { - vodPlayHistoryDO.setPlayLength(totalPlayLength - totalPlay); - totalPlay = totalPlayLength; - } - vodPlayHistoryDO.setVodId(vodDictDO.getId()); - vodPlayHistoryDO.setPlayDate(localDateTime.plusSeconds(totalPlay)); - vodPlayHistoryMapper.insert(vodPlayHistoryDO); + //查找这个人应该学的课程 + for (VodDictDO vodDictDO : vodDictDOS) { + //从历史记录里找中这个人有没有学过 + Integer count = vodPlayHistoryMapper.selectCount(new QueryWrapper() + .lambda() + .eq(VodPlayHistoryDO::getMemberId, remainSecondsDTO.getMemberId()) + .eq(VodPlayHistoryDO::getClassId, classDictDO.getId()) + .eq(VodPlayHistoryDO::getVodId, vodDictDO.getId())); + //表示这个视频没有学过 + if (count == 0) { + if (totalPlayLength > totalPlay) { //说明今天还可以学 + VodPlayHistoryDO vodPlayHistoryDO = new VodPlayHistoryDO(); + vodPlayHistoryDO.setPlayCount(1); + vodPlayHistoryDO.setClassId(classDictDO.getId()); + vodPlayHistoryDO.setMemberId(remainSecondsDTO.getMemberId()); + vodPlayHistoryDO.setPlayRecord(vodDictDO.getVodLength()); + if (totalPlay + vodDictDO.getVodLength() <= totalPlayLength) { + vodPlayHistoryDO.setPlayLength(vodDictDO.getVodLength()); + totalPlay += vodDictDO.getVodLength(); + } else { + vodPlayHistoryDO.setPlayLength(totalPlayLength - totalPlay); + totalPlay = totalPlayLength; } + vodPlayHistoryDO.setVodId(vodDictDO.getId()); + vodPlayHistoryDO.setPlayDate(localDateTime.plusSeconds(totalPlay)); + vodPlayHistoryMapper.insert(vodPlayHistoryDO); } } - key_index++; } + key_index++; } +// } } - public List testPlays(){ - - List classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper() - .lambda() - .eq(ClassMemberMappingDO::getClassId,168)); - -// List memberDOS = memberMapper.selectList(null); - List result = new ArrayList<>(); - for (ClassMemberMappingDO classMemberMappingDO : classMemberMappingDOS){ - List vodPlayStateVOS = vodDictMapper.testPlays(classMemberMappingDO.getMemberId()); - for (int i = 0 ; i < vodPlayStateVOS.size() ; i ++){ - for ( int k = i+1 ; k < vodPlayStateVOS.size() ; k ++){ - VodPlayStateVO vodPlayStateVO = vodPlayStateVOS.get(k); - VodPlayStateVO vodPlayStateVO1 = vodPlayStateVOS.get(i); - if (vodPlayStateVO.getStartDate().after(vodPlayStateVO1.getStartDate()) && vodPlayStateVO.getStartDate().before(vodPlayStateVO1.getEndDate())){ - System.out.println("11111111111111111111111"+vodPlayStateVO); - result.add(vodPlayStateVO.getId()); + public List testPlays(VodPlayHistoryDO vodPlayHistoryDO) { + + String classIds = "122,150,151,152,153,165,168,195,199,200,202,203,204,205,206,207,209,210,211,212,213,215,227,228,229,233,234,235,240,241,243,244,248,249,250"; + +// String classIds = "122,150"; + List classIdArr = Arrays.asList(classIds.split(",")); + + List result = new ArrayList<>(); + for (String classId : classIdArr) { + List classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper() + .lambda() + .eq(ClassMemberMappingDO::getClassId, classId)); + for (ClassMemberMappingDO classMemberMappingDO : classMemberMappingDOS) { + List vodPlayStateVOS = vodDictMapper.testPlays(classMemberMappingDO.getMemberId()); + for (int i = 0; i < vodPlayStateVOS.size(); i++) { + for (int k = i + 1; k < vodPlayStateVOS.size(); k++) { + VodPlayStateVO vodPlayStateVO = vodPlayStateVOS.get(k); + VodPlayStateVO vodPlayStateVO1 = vodPlayStateVOS.get(i); + if (vodPlayStateVO.getStartDate().after(vodPlayStateVO1.getStartDate()) && vodPlayStateVO.getStartDate().before(vodPlayStateVO1.getEndDate())) { +// System.out.println(vodPlayStateVO); + //这一条数据有问题 + //查看这个人 这个课程 当天的全部数据 按照createDate升序排序 + List vodPlayHistoryDOS = this.baseMapper.getVodPlayDay(Long.valueOf(classId), vodPlayStateVO.getMemberId(), vodPlayStateVO.getEndDate()); + //从第一条开始看,顺延减去第二条的playlength得到第二条的create_date 以此类推 + for (int l = 0; l < vodPlayHistoryDOS.size() - 1; l++) { + VodPlayHistoryDO vph1 = vodPlayHistoryDOS.get(l); + VodPlayHistoryDO vph2 = vodPlayHistoryDOS.get(l + 1); +// playLength += vph2.getPlayLength(); + LocalDateTime dateTmp = vph1.getCreateDate().minusSeconds(-vph2.getPlayLength() - getRandom1_2()); + vph2.setCreateDate(dateTmp); + this.baseMapper.updateById(vph2); +// result.add(vodPlayStateVO.getId()); + } + } + } } } } + return result; } - return result; - } - - - //19为基数的话,3次签到6.5到8,4次签到4.8-6, - // 5次4-6,6次3.2-6,7次及以上2.5-6吧 - //int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; + //19为基数的话,3次签到6.5到8,4次签到4.8-6, + // 5次4-6,6次3.2-6,7次及以上2.5-6吧 + //int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; - /** - * 3次签到 23400---28800 - */ - public Integer _3times() { - return new Random().nextInt(28800 - 23400 + 1) + 23400; - } - - /** - * 4次签到 23400---28800 - */ - public Integer _4times() { - return new Random().nextInt(6 * 60 * 60 - 48 * 6 * 60 + 1) + 48 * 6 * 60; - } - - /** - * 5次签到 23400---28800 - */ - public Integer _5times() { - return new Random().nextInt(6 * 60 * 60 - 4 * 60 * 60 + 1) + 4 * 60 * 60; - } + /** + * 3次签到 23400---28800 + */ + public Integer _3times () { + return new Random().nextInt(28800 - 23400 + 1) + 23400; + } - /** - * 6次签到 23400---28800 - */ - public Integer _6times() { - return new Random().nextInt(6 * 60 * 60 - 32 * 6 * 60 + 1) + 32 * 60 * 6; - } + /** + * 4次签到 23400---28800 + */ + public Integer _4times () { + return new Random().nextInt(6 * 60 * 60 - 48 * 6 * 60 + 1) + 48 * 6 * 60; + } - /** - * 7次签到 23400---28800 - */ - public Integer _7times() { - return new Random().nextInt(6 * 60 * 60 - 25 * 6 * 60 + 1) + 25 * 6 * 60; - } + /** + * 5次签到 23400---28800 + */ + public Integer _5times () { + return new Random().nextInt(6 * 60 * 60 - 4 * 60 * 60 + 1) + 4 * 60 * 60; + } - public static void main(String[] args) { + /** + * 6次签到 23400---28800 + */ + public Integer _6times () { + return new Random().nextInt(6 * 60 * 60 - 32 * 6 * 60 + 1) + 32 * 60 * 6; + } - while (true) { - System.out.println(getRandom()); + /** + * 7次签到 23400---28800 + */ + public Integer _7times () { + return new Random().nextInt(6 * 60 * 60 - 25 * 6 * 60 + 1) + 25 * 6 * 60; } + + public static void main (String[]args){ + while (true) { + System.out.println(getRandom()); + } // int m = 0; // // int signInrecord = 4; @@ -752,18 +769,22 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl 11 || i < 5) { - // System.out.println("error"); - // } - //} - } + //while (true) { + // int i = getRandom(); + // System.out.println(i + "============"); + // if (i > 11 || i < 5) { + // System.out.println("error"); + // } + //} + } - public static Integer getRandom() { - return (int) (Math.random() * 11 / 2 + 5); - } + public static Integer getRandom () { + return (int) (Math.random() * 3 / 2 + 5); + } + + public static Integer getRandom1_2 () { + return (int) (Math.random() * 3 / 2 + 1); + } -} + } diff --git a/src/main/java/com/subsidy/util/BaseModel.java b/src/main/java/com/subsidy/util/BaseModel.java index 7504dd0..9297672 100644 --- a/src/main/java/com/subsidy/util/BaseModel.java +++ b/src/main/java/com/subsidy/util/BaseModel.java @@ -16,7 +16,7 @@ public abstract class BaseModel { * 创建时间 */ @JsonIgnore - @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER, value = "create_date", fill = FieldFill.INSERT) +// @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER, value = "create_date", fill = FieldFill.INSERT) private LocalDateTime createDate; /** diff --git a/src/main/java/com/subsidy/util/websocket/ChatEndPoint.java b/src/main/java/com/subsidy/util/websocket/ChatEndPoint.java index 20f907f..03933d3 100644 --- a/src/main/java/com/subsidy/util/websocket/ChatEndPoint.java +++ b/src/main/java/com/subsidy/util/websocket/ChatEndPoint.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Component; import javax.servlet.http.HttpSession; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -77,7 +78,7 @@ public class ChatEndPoint { /** * 接收到客户端发送的数据时候被调用 */ - @OnMessage + @OnMessage(maxMessageSize = 102400) public void onMessage(String msg, Session session) { try { diff --git a/src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java b/src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java index 9590eca..a6e4f4e 100644 --- a/src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java +++ b/src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java @@ -2,6 +2,7 @@ package com.subsidy.vo.vod; import lombok.Data; +import java.time.LocalDateTime; import java.util.Date; @Data @@ -15,6 +16,8 @@ public class VodPlayStateVO { private Date endDate; - private Integer playLength; + private Long playLength; + + private LocalDateTime createDate; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a62a220..37ce64a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,7 @@ # 环境配置 -spring.profiles.active=dev +spring.profiles.active=prod # 端口号 -spring.server.port=23457 +spring.server.port=23459 #嵌入tomcat配置 #和CPU数 spring.server.acceptorThreadCount=600 diff --git a/src/main/resources/code.properties b/src/main/resources/code.properties index 6ed905b..7eba195 100644 --- a/src/main/resources/code.properties +++ b/src/main/resources/code.properties @@ -63,4 +63,7 @@ meishu.code-message[15002]=类型已存在证书,删除失败 meishu.code-message[16001]=该条件已存在 +meishu.code-message[17001]=系统不支持00:00:00~06:00:00学习 + + diff --git a/src/main/resources/mapper/VodDictMapper.xml b/src/main/resources/mapper/VodDictMapper.xml index 0f9721e..c947c8f 100644 --- a/src/main/resources/mapper/VodDictMapper.xml +++ b/src/main/resources/mapper/VodDictMapper.xml @@ -97,7 +97,8 @@ member_id, DATE_SUB( create_date, INTERVAL play_length SECOND ) AS start_date, create_date AS end_date, - t.play_length + t.play_length, + create_date FROM vod_play_history t where t.member_id = #{memberId} diff --git a/src/main/resources/mapper/VodPlayHistoryMapper.xml b/src/main/resources/mapper/VodPlayHistoryMapper.xml index 1c318fd..e9c63b4 100644 --- a/src/main/resources/mapper/VodPlayHistoryMapper.xml +++ b/src/main/resources/mapper/VodPlayHistoryMapper.xml @@ -384,4 +384,18 @@ t3.vod_name + + -- libgit2 0.25.0