123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 |
- package com.qxgmat.controller.api;
- import com.github.pagehelper.Page;
- import com.nuliji.tools.*;
- import com.nuliji.tools.exception.AuthException;
- import com.nuliji.tools.exception.ParameterException;
- import com.qxgmat.data.constants.enums.ExperienceDayRange;
- import com.qxgmat.data.constants.enums.ExperienceScoreRange;
- import com.qxgmat.data.constants.enums.module.CourseModule;
- import com.qxgmat.data.constants.enums.module.ProductType;
- import com.qxgmat.data.constants.enums.module.VsCourseType;
- import com.qxgmat.data.constants.enums.status.AnswerStatus;
- import com.qxgmat.data.constants.enums.status.DirectionStatus;
- import com.qxgmat.data.constants.enums.user.DataType;
- import com.qxgmat.data.dao.entity.*;
- import com.qxgmat.data.relation.entity.UserAskCourseStatRelation;
- import com.qxgmat.data.relation.entity.UserPreviewPaperRelation;
- import com.qxgmat.dto.extend.*;
- import com.qxgmat.dto.request.*;
- import com.qxgmat.dto.response.*;
- import com.qxgmat.help.ShiroHelp;
- import com.qxgmat.service.UserCollectExperienceService;
- import com.qxgmat.service.UserNoteCourseService;
- import com.qxgmat.service.UsersService;
- import com.qxgmat.service.extend.CourseExtendService;
- import com.qxgmat.service.extend.PreviewService;
- import com.qxgmat.service.inline.*;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpSession;
- import java.util.*;
- import java.util.stream.Collectors;
- @RestController
- @RequestMapping("/api/course")
- @Api(tags = "课程", description = "课程接口")
- public class CourseController {
- @Autowired
- private ShiroHelp shiroHelp;
- @Autowired
- private CommentService commentService;
- @Autowired
- private FaqService faqService;
- @Autowired
- private CourseService courseService;
- @Autowired
- private CourseNoService courseNoService;
- @Autowired
- private CourseDataService courseDataService;
- @Autowired
- private CourseDataHistoryService courseDataHistoryService;
- @Autowired
- private CoursePackageService coursePackageService;
- @Autowired
- private CourseTeacherService courseTeacherService;
- @Autowired
- private CourseExperienceService courseExperienceService;
- @Autowired
- private PreviewService previewService;
- @Autowired
- private CourseExtendService courseExtendService;
- @Autowired
- private PreviewPaperService previewPaperService;
- @Autowired
- private QuestionNoService questionNoService;
- @Autowired
- private QuestionService questionService;
- @Autowired
- private UserCourseService userCourseService;
- @Autowired
- private UserCourseProgressService userCourseProgressService;
- @Autowired
- private UserCourseRecordService userCourseRecordService;
- @Autowired
- private UserAskCourseService userAskCourseService;
- @Autowired
- private UserNoteCourseService userNoteCourseService;
- @Autowired
- private UserOrderRecordService userOrderRecordService;
- @Autowired
- private UserOrderCheckoutService userOrderCheckoutService;
- @Autowired
- private UserCourseDataSubscribeService userCourseDataSubscribeService;
- @Autowired
- private UserCollectExperienceService userCollectExperienceService;
- @Autowired
- private UsersService usersService;
- @RequestMapping(value = "/vs", method = RequestMethod.GET)
- @ApiOperation(value = "获取1v1课程信息", notes = "获取1v1课程信息", httpMethod = "GET")
- public Response<List<CourseListDto>> vs() {
- User user = (User) shiroHelp.getLoginUser();
- List<Course> p = courseService.all(CourseModule.VS);
- List<CourseListDto> pr = Transform.convert(p, CourseListDto.class);
- Collection ids = Transform.getIds(pr, CourseListDto.class, "id");
- if(user != null){
-
- List<UserCourse> userCourseList = userCourseService.listByCourse(user.getId(), ids);
- Map userCourseMap = Transform.getMap(userCourseList, UserCourse.class, "courseId");
-
- List<UserOrderCheckout> userOrderCheckoutList = userOrderCheckoutService.listWithProduct(user.getId(), ProductType.COURSE, ids);
- Map userOrderCheckoutMap = Transform.getMap(userOrderCheckoutList, UserOrderCheckout.class, "productId");
- for(CourseListDto dto : pr){
- dto.setHave(userCourseMap.containsKey(dto.getId()));
- dto.setAdd(userOrderCheckoutMap.containsKey(dto.getId()));
- }
- }
- return ResponseHelp.success(pr);
- }
- @RequestMapping(value = "/video/list", method = RequestMethod.GET)
- @ApiOperation(value = "在线课程列表", httpMethod = "GET")
- public Response<PageMessage<CourseListDto>> listVideo(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = false) Integer structId,
- @RequestParam(required = false, defaultValue = "id") String order,
- @RequestParam(required = false, defaultValue = "desc") String direction,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- Page<Course> p = courseService.list(page, size, CourseModule.VIDEO, structId, order, DirectionStatus.ValueOf(direction));
- List<CourseListDto> pr = Transform.convert(p, CourseListDto.class);
- Collection ids = Transform.getIds(pr, CourseListDto.class, "id");
-
- Map<Object, Collection<Comment>> commentMap = commentService.groupByPosition("course-video", ids, 1);
- Transform.combine(pr, commentMap, CourseListDto.class, "id", "comments", CommentExtendDto.class);
-
- List<UserAskCourseStatRelation> relationList = userAskCourseService.statGroupCourse(ids, 1);
- Map relationMap = Transform.getMap(relationList, UserAskCourseStatRelation.class, "courseId");
- for(CourseListDto dto : pr){
- UserAskCourseStatRelation relation = (UserAskCourseStatRelation) relationMap.getOrDefault(dto.getId(), null);
- if (relation != null){
- dto.setAskNumber(relation.getNumber());
- }
- }
- if(user != null){
-
- List<UserCourse> userCourseList = userCourseService.listByCourse(user.getId(), ids);
- Map userCourseMap = Transform.getMap(userCourseList, UserCourse.class, "courseId");
-
- List<UserOrderCheckout> userOrderCheckoutList = userOrderCheckoutService.listWithProduct(user.getId(), ProductType.COURSE, ids);
- Map userOrderCheckoutMap = Transform.getMap(userOrderCheckoutList, UserOrderCheckout.class, "productId");
- for(CourseListDto dto : pr){
- dto.setHave(userCourseMap.containsKey(dto.getId()));
- dto.setAdd(userOrderCheckoutMap.containsKey(dto.getId()));
- }
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/detail", method = RequestMethod.GET)
- @ApiOperation(value = "课程详情", httpMethod = "GET")
- public Response<CourseDetailDto> detail(
- @RequestParam(required = true) Integer courseId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- Course course = courseService.get(courseId);
- CourseDetailDto dto = Transform.convert(course, CourseDetailDto.class);
-
- List<CourseNo> courseNoList = courseNoService.allCourse(course.getId());
- courseExtendService.refreshNoResource(user, course.getId(), courseNoList);
- dto.setCourseNos(Transform.convert(courseNoList, CourseNoExtendDto.class));
-
- List<Comment> commentList = commentService.list(1, 10, "course-"+course.getCourseModule(), course.getId().toString());
- Collection userIds = Transform.getIds(commentList, Comment.class, "userId");
- List<User> userList = usersService.select(userIds);
- commentService.replaceUser(commentList, userList);
- dto.setComments(Transform.convert(commentList, CommentExtendDto.class));
-
- List<Faq> faqList = faqService.list(1, 10, "course-"+course.getCourseModule(), course.getId().toString());
- dto.setFaqs(Transform.convert(faqList, FaqExtendDto.class));
-
- UserAskCourseStatRelation askCourseStatRelation = userAskCourseService.statCourse(courseId, 1);
- if (askCourseStatRelation != null){
- dto.setAskSpecialNumber(askCourseStatRelation.getNumber());
- }
- if(user != null){
-
- UserCourse userCourse = userCourseService.getCourse(user.getId(), courseId);
-
- UserOrderCheckout userOrderCheckout = userOrderCheckoutService.getWithProduct(user.getId(), ProductType.COURSE, courseId);
- dto.setHave(userCourse != null);
- dto.setAdd(userOrderCheckout != null);
- if (userCourse != null){
-
- Collection<UserCourseProgress> progressList = userCourseProgressService.getByRecordId(userCourse.getRecordId());
- dto.setCurrentNo(courseExtendService.computeCourseNoCurrent(courseNoList, progressList));
- dto.setProgress(Transform.convert(progressList, UserCourseProgressExtendDto.class));
-
- Collection<UserPreviewPaperRelation> previewList = previewService.getByRecordId(user.getId(), userCourse.getRecordId(), 1000);
- dto.setPapers(Transform.convert(previewList, BasePaperExtendDto.class));
- int finish = 0;
- for(UserPreviewPaperRelation relation : previewList){
- if (relation.getPaper() == null) continue;
- UserPaper paper = relation.getPaper();
- if (paper.getTimes() > 0){
- finish += 1;
- }
- }
- dto.setPreviewProgress(previewList.size()> 0 ? finish * 100 / previewList.size(): 0);
-
- Collection<UserAskCourse> askList = userAskCourseService.getByRecordId(userCourse.getRecordId());
- Collection<UserNoteCourse> noteList = userNoteCourseService.getByCourse(user.getId(), courseId);
- Map<Object, List<UserAskCourse>> askListMap = Transform.getMapList(askList, UserAskCourse.class, "courseNoId");
- Map notes = Transform.getMap(noteList, UserNoteCourse.class, "courseNoId");
- Collection<CourseNoExtendDto> courseNos = dto.getCourseNos();
- int noteNumber = 0;
- int askNumber = askList == null ? 0: askList.size();
- int answerNumber = askList == null ? 0 : (int)askList.stream().filter(r->r.getAnswerStatus()== AnswerStatus.ANSWER.index).count();
- for(CourseNoExtendDto courseNo : courseNos){
- if (notes.get(courseNo.getId()) != null){
- courseNo.setNote(true);
- noteNumber += 1;
- }
- List<UserAskCourse> askListNo = askListMap.get(courseNo.getId());
- if (askListNo != null){
- courseNo.setAskNumber(askListNo.size());
- courseNo.setAnswerNumber((int)askListNo.stream().filter(r->r.getAnswerStatus()== AnswerStatus.ANSWER.index).count());
- }
- }
- dto.setNoteNumber(noteNumber);
- dto.setAskNumber(askNumber);
- dto.setAnswerNumber(answerNumber);
- }
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/simple", method = RequestMethod.GET)
- @ApiOperation(value = "课程基本信息", httpMethod = "GET")
- public Response<CourseDetailDto> simple(
- @RequestParam(required = true) Integer courseId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- Course course = courseService.get(courseId);
- CourseDetailDto dto = Transform.convert(course, CourseDetailDto.class);
-
- List<CourseNo> courseNoList = courseNoService.allCourse(course.getId());
- courseExtendService.refreshNoResource(user, course.getId(), courseNoList);
- dto.setCourseNos(Transform.convert(courseNoList, CourseNoExtendDto.class));
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/ask/list", method = RequestMethod.GET)
- @ApiOperation(value = "精选问答", httpMethod = "GET")
- public Response<PageMessage<UserAskCourse>> listAsk(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = false) String keyword,
- @RequestParam(required = false) Integer courseId,
- @RequestParam(required = false) Integer courseNoId,
- @RequestParam(required = false) Integer position,
- @RequestParam(required = false) String order,
- @RequestParam(required = false, defaultValue = "desc") String direction
- ) {
- User user = (User) shiroHelp.getLoginUser();
- Page<UserAskCourse> pr = userAskCourseService.listByCourse(page, size, keyword, courseId, courseNoId, position, true, order, DirectionStatus.ValueOf(direction));
- return ResponseHelp.success(pr, page, size, pr.getTotal());
- }
- @RequestMapping(value = "/ask/view", method = RequestMethod.POST)
- @ApiOperation(value = "精选问答查看", httpMethod = "POST")
- public Response<Boolean> viewAsk(@RequestBody @Validated AskCourseViewDto dto, HttpSession session) {
- userAskCourseService.accumulation(dto.getId(), 1);
- return ResponseHelp.success(true);
- }
- @RequestMapping(value = "/no/progress", method = RequestMethod.PUT)
- @ApiOperation(value = "更新课时进度", httpMethod = "PUT")
- public Response<Boolean> noProgress(@RequestBody @Validated UserCourseNoProgressDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) throw new AuthException("需要登录");
- UserCourse userCourse = userCourseService.getCourse(user.getId(), dto.getCourseId());
- if (userCourse == null) throw new AuthException("无访问权限");
-
- if (dto.getCurrentCourseNoId() != null && dto.getTime() != null && dto.getTime() > 0){
- userCourseRecordService.add(UserCourseRecord.builder()
- .userId(user.getId())
- .courseId(dto.getCourseId())
- .courseNoId(dto.getCurrentCourseNoId())
- .recordId(userCourse.getRecordId())
- .userTime(dto.getTime())
- .build());
- }
-
- userCourseProgressService.updateProgress(user.getId(), dto.getCourseId(), dto.getCourseNoId(), dto.getProgress(), userCourse.getRecordId());
- return ResponseHelp.success(true);
- }
- @RequestMapping(value = "/trail/view", method = RequestMethod.POST)
- @ApiOperation(value = "课程试用", httpMethod = "POST")
- public Response<Boolean> viewTrail(@RequestBody @Validated CourseTrailViewDto dto, HttpSession session) {
- courseService.accumulation(dto.getId(), 1, 0, 0);
- return ResponseHelp.success(true);
- }
- @RequestMapping(value = "/package/list", method = RequestMethod.GET)
- @ApiOperation(value = "套餐列表", httpMethod = "GET")
- public Response<PageMessage<CoursePackageListDto>> listPackage(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = false) Integer structId,
- @RequestParam(required = false) Boolean isSpecial,
- @RequestParam(required = false, defaultValue = "id") String order,
- @RequestParam(required = false, defaultValue = "desc") String direction,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- Page<CoursePackage> p = coursePackageService.list(page, size, structId, isSpecial, order, DirectionStatus.ValueOf(direction));
- List<CoursePackageListDto> pr = Transform.convert(p, CoursePackageListDto.class);
- Collection ids = Transform.getIds(pr, CoursePackageListDto.class, "id");
- Map<Integer, Integer[]> courseIdsMap = new HashMap<>();
- for(CoursePackage cp : p){
- courseIdsMap.put(cp.getId(), cp.getCourseIds());
- }
- Map courseMap = courseService.groupByMap(courseIdsMap);
- Transform.combine(pr, courseMap, CoursePackageListDto.class, "id", "courses", CourseExtendDto.class);
-
- Map<Object, Collection<Comment>> commentMap = commentService.groupByPosition("course-package", ids, 1);
- Transform.combine(pr, commentMap, CourseListDto.class, "id", "comments", CommentExtendDto.class);
- if(user != null){
-
- List<UserOrderCheckout> userOrderCheckoutList = userOrderCheckoutService.listWithProduct(user.getId(), ProductType.COURSE_PACKAGE, ids);
- Map userOrderCheckoutMap = Transform.getMap(userOrderCheckoutList, UserOrderCheckout.class, "productId");
- for(CoursePackageListDto dto : pr){
- dto.setAdd(userOrderCheckoutMap.containsKey(dto.getId()));
- }
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/package/detail", method = RequestMethod.GET)
- @ApiOperation(value = "套餐详情", httpMethod = "GET")
- public Response<CoursePackageDetailDto> detailPackage(
- @RequestParam(required = true) Integer packageId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- CoursePackage coursePackage = coursePackageService.get(packageId);
- CoursePackageDetailDto dto = Transform.convert(coursePackage, CoursePackageDetailDto.class);
- List<Course> courseList = courseService.select(coursePackage.getCourseIds());
- dto.setCourses(Transform.convert(courseList, CourseExtendDto.class));
-
- List<Comment> commentList = commentService.list(1, 10, "course-package", coursePackage.getId().toString());
- dto.setComments(Transform.convert(commentList, CommentExtendDto.class));
-
- List<Faq> faqList = faqService.list(1, 10, "course-package", coursePackage.getId().toString());
- dto.setFaqs(Transform.convert(faqList, FaqExtendDto.class));
- if(user != null){
-
- UserOrderCheckout userOrderCheckout = userOrderCheckoutService.getWithProduct(user.getId(), ProductType.COURSE_PACKAGE, packageId);
- dto.setAdd(userOrderCheckout != null);
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/data/list", method = RequestMethod.GET)
- @ApiOperation(value = "资料列表", httpMethod = "GET")
- public Response<PageMessage<CourseDataListDto>> listData(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = false) Integer structId,
- @RequestParam(required = false) String dataType,
- @RequestParam(required = false) Boolean isNovice,
- @RequestParam(required = false) Boolean isOriginal,
- @RequestParam(required = false, defaultValue = "id") String order,
- @RequestParam(required = false, defaultValue = "desc") String direction,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- Page<CourseData> p = courseDataService.list(page, size, structId, DataType.ValueOf(dataType), isNovice, isOriginal, order, DirectionStatus.ValueOf(direction));
- courseExtendService.refreshDataResource(user, p);
- List<CourseDataListDto> pr = Transform.convert(p, CourseDataListDto.class);
- Collection ids = Transform.getIds(pr, CourseDataListDto.class, "id");
-
- Map<Object, Collection<Comment>> commentMap = commentService.groupByPosition("course_data", ids, 1);
- Transform.combine(pr, commentMap, CourseListDto.class, "id", "comments", CommentExtendDto.class);
-
- if (user != null){
- List<UserCourseDataSubscribe> subscribeList = userCourseDataSubscribeService.listWithData(user.getId(), ids);
- Map subscribeMap = Transform.getMap(subscribeList, UserCourseDataSubscribe.class, "dataId");
- for(CourseDataListDto dto : pr){
- dto.setSubscribe(subscribeMap.containsKey(dto.getId()));
- }
- }
- if(user != null){
-
- List<UserOrderRecord> userOrderRecordList = userOrderRecordService.listWithUserData(user.getId(), ids);
- Map userOrderRecordMap = Transform.getMap(userOrderRecordList, UserOrderRecord.class, "productId");
-
- List<UserOrderCheckout> userOrderCheckoutList = userOrderCheckoutService.listWithProduct(user.getId(), ProductType.DATA, ids);
- Map userOrderCheckoutMap = Transform.getMap(userOrderCheckoutList, UserOrderCheckout.class, "productId");
- for(CourseDataListDto dto : pr){
- dto.setHave(userOrderRecordMap.containsKey(dto.getId()));
- dto.setAdd(userOrderCheckoutMap.containsKey(dto.getId()));
- }
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/data/detail", method = RequestMethod.GET)
- @ApiOperation(value = "资料详情", httpMethod = "GET")
- public Response<CourseDataDetailDto> detailData(
- @RequestParam(required = true) Integer dataId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- CourseData courseData = courseDataService.get(dataId);
- courseExtendService.refreshDataResource(user, courseData);
- CourseDataDetailDto dto = Transform.convert(courseData, CourseDataDetailDto.class);
-
- List<Comment> commentList = commentService.list(1, 10, "course_data", courseData.getId().toString());
- Collection userIds = Transform.getIds(commentList, Comment.class, "userId");
- List<User> userList = usersService.select(userIds);
- commentService.replaceUser(commentList, userList);
- dto.setComments(Transform.convert(commentList, CommentExtendDto.class));
-
- List<Faq> faqList = faqService.list(1, 10, "course_data", courseData.getId().toString());
- dto.setFaqs(Transform.convert(faqList, FaqExtendDto.class));
-
- if (user != null){
- UserCourseDataSubscribe subscribe = userCourseDataSubscribeService.getByData(user.getId(), dataId);
- dto.setSubscribe(subscribe != null);
- }
- if(user != null){
-
- UserOrderRecord userOrderRecord = userOrderRecordService.getWithUserData(user.getId(), dataId);
-
- UserOrderCheckout userOrderCheckout = userOrderCheckoutService.getWithProduct(user.getId(), ProductType.COURSE_PACKAGE, dataId);
- dto.setHave(userOrderRecord != null);
- dto.setAdd(userOrderCheckout != null);
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/data/view", method = RequestMethod.POST)
- @ApiOperation(value = "资料查看", httpMethod = "POST")
- public Response<Boolean> viewData(@RequestBody @Validated CourseDataViewDto dto, HttpSession session) {
- courseDataService.accumulation(dto.getId(), 0, 1);
- return ResponseHelp.success(true);
- }
- @RequestMapping(value = "/data/history", method = RequestMethod.GET)
- @ApiOperation(value = "资料详情", httpMethod = "GET")
- public Response<PageMessage<CourseDataHistory>> historyData(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = true) Integer dataId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- Page<CourseDataHistory> p = courseDataHistoryService.listByData(page, size, dataId);
- return ResponseHelp.success(p, page, size, p.getTotal());
- }
- @RequestMapping(value = "/teacher/all", method = RequestMethod.GET)
- @ApiOperation(value = "资料列表", httpMethod = "GET")
- public Response<List<CourseTeacher>> allTeacher(
- @RequestParam(required = false) Integer courseId,
- HttpSession session) {
- List<CourseTeacher> p = courseTeacherService.allByCourse(courseId);
- return ResponseHelp.success(p);
- }
- @RequestMapping(value = "/experience/list", method = RequestMethod.GET)
- @ApiOperation(value = "心经列表", httpMethod = "GET")
- public Response<PageMessage<CourseExperienceListDto>> listExperience(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = false) String prepareStatus,
- @RequestParam(required = false) String experienceDay,
- @RequestParam(required = false) String experienceScore,
- @RequestParam(required = false) String experiencePercent,
- @RequestParam(required = false, defaultValue = "id") String order,
- @RequestParam(required = false, defaultValue = "desc") String direction,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- Page<CourseExperience> p = courseExperienceService.list(page, size, prepareStatus, ExperienceScoreRange.ValueOf(experienceScore), ExperienceDayRange.ValueOf(experienceDay), experiencePercent, order, DirectionStatus.ValueOf(direction));
- Collection ids = Transform.getIds(p, CourseExperience.class, "id");
-
- Collection userIds = Transform.getIds(p, CourseExperience.class, "userId");
- List<User> userList = usersService.select(userIds);
- courseExperienceService.replaceUser(p, userList);
- List<CourseExperienceListDto> pr = Transform.convert(p, CourseExperienceListDto.class);
- if(user != null){
- List<UserCollectExperience> userCollectExperienceList = userCollectExperienceService.listByUserAndExperiences(user.getId(), ids);
- Map userCollectExperienceMap = Transform.getMap(userCollectExperienceList, UserCollectExperience.class, "experienceId");
- for(CourseExperienceListDto dto : pr){
- dto.setCollect(userCollectExperienceMap.containsKey(dto.getId()));
- }
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/experience/detail", method = RequestMethod.GET)
- @ApiOperation(value = "心经查看", httpMethod = "GET")
- public Response<CourseExperienceDetailDto> detailExperience(int experienceId, HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- CourseExperience entity = courseExperienceService.get(experienceId);
- if(entity.getUserId() > 0){
- User target = usersService.get(entity.getUserId());
- entity.setNickname(target.getNickname());
- }
- CourseExperienceDetailDto dto = Transform.convert(entity, CourseExperienceDetailDto.class);
- if (user != null){
- UserCollectExperience userCollectExperience = userCollectExperienceService.getByUserAndExperience(user.getId(), experienceId);
- dto.setCollect(userCollectExperience != null);
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/experience/view", method = RequestMethod.POST)
- @ApiOperation(value = "心经阅读", httpMethod = "POST")
- public Response<Boolean> viewExperience(@RequestBody @Validated ExperienceViewDto dto, HttpSession session) {
- courseExperienceService.accumulation(dto.getId(), 1, 0);
- return ResponseHelp.success(true);
- }
- @RequestMapping(value = "/record", method = RequestMethod.GET)
- @ApiOperation(value = "获取课程记录信息", notes = "获取课程记录信息", httpMethod = "GET")
- public Response<UserCourseDetailDto> record(
- @RequestParam(required = true) Integer recordId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- UserOrderRecord userOrderRecord = userOrderRecordService.get(recordId);
- if (userOrderRecord == null){
- throw new ParameterException("记录不存在");
- }
- if (!userOrderRecord.getUserId().equals(user.getId())){
- throw new ParameterException("记录不存在");
- }
- UserCourseDetailDto dto = Transform.convert(userOrderRecord, UserCourseDetailDto.class);
- Course course = courseService.get(userOrderRecord.getProductId());
- dto.setCourse(Transform.convert(course, CourseExtendDto.class));
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/progress", method = RequestMethod.GET)
- @ApiOperation(value = "获取课程进度", notes = "获取所有课程及状态进度", httpMethod = "GET")
- public Response<List<UserCourseProgressDto>> progress(
- @RequestParam(required = false) String courseModule,
- @RequestParam(required = false) Integer structId,
- @RequestParam(required = false) Integer courseId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null){
- throw new ParameterException("登录后查看作业");
- }
- List<UserOrderRecord> userOrderRecordList;
- CourseModule module = CourseModule.ValueOf(courseModule);
- if (module == CourseModule.ONLINE){
-
- userOrderRecordList = userOrderRecordService.listWithStudyAdmin(1, 1000, new String[]{CourseModule.VIDEO.key, CourseModule.ONLINE.key}, structId, courseId, user.getId(), null,null, null);
- } else if (module == CourseModule.VS){
-
- userOrderRecordList = userOrderRecordService.listWithVs(1, 1000, VsCourseType.SYSTEM, courseId, user.getId(), null, null);
- }else{
- throw new ParameterException("课程类型错误");
- }
- List<UserCourseProgressDto> dtos = Transform.convert(userOrderRecordList, UserCourseProgressDto.class);
-
- Collection courseIds = Transform.getIds(userOrderRecordList, UserOrderRecord.class, "productId");
- List<Course> courseList = courseService.select(courseIds);
- Transform.combine(dtos, courseList, UserCourseProgressDto.class, "productId", "course", Course.class, "id", CourseExtendDto.class);
-
- Date now = new Date();
- List<UserOrderRecord> processList = userOrderRecordList.stream().filter(row-> row.getIsUsed() > 0 && row.getUseEndTime().after(now)).collect(Collectors.toList());
- Collection processIds = Transform.getIds(processList, UserOrderRecord.class, "id");
- Map<Object, Collection<UserPreviewPaperRelation>> previewMap = previewService.groupByRecordId(user.getId(), processIds, 2);
- Transform.combine(dtos, previewMap, UserCourseProgressDto.class, "productId", "papers", UserPaperBaseExtendDto.class);
-
- Collection teacherIds = Transform.getIds(userOrderRecordList, UserOrderRecord.class, "teacherId");
- List<CourseTeacher> teacherList = courseTeacherService.select(teacherIds);
- Transform.combine(dtos, teacherList, UserCourseProgressDto.class, "teacherId", "teacher", CourseTeacher.class, "id", CourseTeacherExtendDto.class);
- return ResponseHelp.success(dtos);
- }
- @RequestMapping(value = "/preview/list", method = RequestMethod.GET)
- @ApiOperation(value = "获取预习作业列表", notes = "获取预习作业列表", httpMethod = "GET")
- public Response<List<UserExercisePaperDto>> listPreview(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = false) Integer recordId,
- @RequestParam(required = false) String endTime,
- @RequestParam(required = false) Integer times
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null){
- throw new ParameterException("登录后查看作业");
- }
- List<UserPreviewPaperRelation> p = previewService.list(page, size, recordId, user.getId(), endTime, times);
- List<UserExercisePaperDto> pr = Transform.convert(p, UserExercisePaperDto.class);
-
- Map map = Transform.getMap(p, UserPreviewPaperRelation.class, "id", "paper");
- Map<Integer, Integer[]> questionNoIdsMap = new HashMap<>();
- for(Object value : map.keySet()){
- Integer key = (Integer) value;
- PreviewPaper preview = (PreviewPaper) map.get(key);
- questionNoIdsMap.put(key, preview.getQuestionNoIds());
- }
- Map statMap = questionNoService.statPaperMap(questionNoIdsMap);
- Transform.combine(pr, statMap, UserExercisePaperDto.class, "id", "stat");
- return ResponseHelp.success(pr);
- }
- }
|