Sfoglia il codice sorgente

下载信息增加字段,课程返回下载状态

guozhaoshun 6 anni fa
parent
commit
9e95928d59

+ 36 - 4
rankin-api-web/src/main/java/cn/rankin/apiweb/controller/CallbackController.java

@@ -4,9 +4,12 @@ import cn.rankin.apiweb.assist.resolver.NeedUser;
 import cn.rankin.apiweb.code.ApiWebCode;
 import cn.rankin.apiweb.service.download.DownloadInfoService;
 import cn.rankin.apiweb.service.event.EventService;
+import cn.rankin.apiweb.service.product.ProductService;
 import cn.rankin.common.utils.api.model.APICode;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.data.api.app.vo.DeviceUserVo;
+import cn.rankin.data.api.product.entity.Course;
+import cn.rankin.data.api.product.entity.Lesson;
 import cn.rankin.data.api.user.dto.DownloadInfoDTO;
 import cn.rankin.data.api.user.dto.EventLogDTO;
 import cn.rankin.data.api.user.entity.DownloadInfo;
@@ -34,6 +37,9 @@ public class CallbackController {
     @Autowired
     private DownloadInfoService downloadInfoService;
 
+    @Autowired
+    private ProductService productService;
+
     @RequestMapping(value = "/event", method = RequestMethod.POST)
     public APIResult<Boolean> addEvent(@NeedUser DeviceUserVo user, @RequestBody EventLogDTO eventLog) {
         if (eventLog.getEventType() == null ) {
@@ -48,7 +54,10 @@ public class CallbackController {
     }
 
     @RequestMapping(value = "/download/add", method = RequestMethod.POST)
-    public APIResult<Boolean> addDownloadInfo(HttpServletRequest request, @NeedUser DeviceUserVo user,@RequestParam("lessonId") String lessonId , @RequestParam("data") String data) {
+    public APIResult<Boolean> addDownloadInfo(HttpServletRequest request, @NeedUser DeviceUserVo user ,
+                                              @RequestParam("courseId") String courseId,
+                                              @RequestParam("lessonId") String lessonId,
+                                              @RequestParam("data") String data) {
 
 
 
@@ -68,23 +77,46 @@ public class CallbackController {
         String localName = request.getLocalName();//获取WEB服务器的主机名
         String device = request.getHeader("User-Agent");
 
-
+        log.info("device={}",device);
 
         DownloadInfoDTO dto = new DownloadInfoDTO();
 
         if(StringUtils.isBlank(lessonId)){
             return APIResult.error(ApiWebCode.PARAMETER_ERROR);
+        }else{
+            Lesson lesson = productService.getLesson(lessonId, courseId).getData();
+            if(null == lesson){
+                log.info("not found lesson by id ,lessonId={}",lessonId);
+                return APIResult.error(ApiWebCode.PARAMETER_ERROR);
+            }
+
+            dto.setLessonId(lessonId);
+            dto.setLessonName(lesson.getTitle());
+        }
+
+
+
+
+        if(StringUtils.isBlank(courseId)){
+            return APIResult.error(ApiWebCode.PARAMETER_ERROR);
+        }else{
+            Course course = productService.getCourse(courseId);
+            if(null == course){
+                log.info("not found course by id ,courseId={}",courseId);
+                return APIResult.error(ApiWebCode.PARAMETER_ERROR);
+            }
+
+            dto.setCourseId(courseId);
+            dto.setCourseName(course.getTitle());
         }
         if(StringUtils.isNotBlank(data)){
             dto.setData(data);
         }
 
-        dto.setLessonId(lessonId);
         dto.setMerchantId(user.getMerchantId());
         dto.setUserId(user.getUid());
         dto.setDeviceType(device);
 
-
         DownloadInfo downloadInfo = downloadInfoService.add(dto);
         if(downloadInfo != null){
             return APIResult.ok();

+ 19 - 0
rankin-api-web/src/main/java/cn/rankin/apiweb/controller/CourseController.java

@@ -3,14 +3,17 @@ package cn.rankin.apiweb.controller;
 import cn.rankin.apiweb.assist.resolver.NeedUser;
 import cn.rankin.apiweb.service.auth.AuthService;
 import cn.rankin.apiweb.service.collection.CollectionService;
+import cn.rankin.apiweb.service.download.DownloadInfoService;
 import cn.rankin.apiweb.service.product.ProductService;
 import cn.rankin.apiweb.service.shopcart.ShopCartService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.data.api.app.vo.*;
 import cn.rankin.data.api.auth.vo.AuthResult;
+import cn.rankin.data.api.user.entity.DownloadInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -29,6 +32,9 @@ public class CourseController {
     @Autowired
     private ShopCartService shopCartService;
 
+    @Autowired
+    private DownloadInfoService downloadInfoService;
+
     @RequestMapping(value = "/{courseId}/lessons", method = RequestMethod.GET)
     public APIResult<CourseVo> getCourseLessons(@NeedUser DeviceUserVo user, @PathVariable("courseId") String courseId) {
         String userId = user.getUid();
@@ -37,10 +43,23 @@ public class CourseController {
         if (!apiResult.getSuccess()) {
             return apiResult;
         }
+
         CourseVo courseVo = apiResult.getData();
         Boolean auth = authService.isValid(userId, merchantId, courseId);
         courseVo.setAuth(auth);
 
+
+        List<LessonVo> data = new ArrayList<>();
+        List<LessonVo> lessonVos = courseVo.getList();
+        lessonVos.forEach( vo -> {
+            DownloadInfo downloadInfo = downloadInfoService.findByLessonUserId(userId, vo.getId());
+            if(null != downloadInfo){
+                vo.setDownloadStatus(1);
+            }
+            data.add(vo);
+        });
+        courseVo.setList(data);
+
         Boolean isCollected = collectionService.isCollected(userId, courseId);
         courseVo.setCollected(isCollected);
         return apiResult;

+ 8 - 0
rankin-api-web/src/main/java/cn/rankin/apiweb/service/product/ProductService.java

@@ -102,6 +102,14 @@ public class ProductService {
         return APIResult.error(ApiWebCode.ACCESS_DENIED);
     }
 
+    public APIResult<Lesson> getLesson(String lessonId, String courseId) {
+        APIResult<Lesson> apiResult = productClient.getLesson(lessonId, courseId);
+        if (!apiResult.getSuccess()) {
+            return APIResult.error(new BaseCode(apiResult.getCode(), apiResult.getMessage()));
+        }
+        return apiResult;
+    }
+
     public List<Poster> getPosters(String merchantId){
         return productClient.getPosters(merchantId, 0L, 10, "sort", Sort.Direction.ASC);
     }

+ 2 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/app/vo/LessonVo.java

@@ -16,5 +16,7 @@ public class LessonVo implements Serializable {
 
     private String title;
 
+    private int downloadStatus;
+
     private List<CourseWareVo> list;
 }

+ 6 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/user/dto/DownloadInfoDTO.java

@@ -22,6 +22,12 @@ public class DownloadInfoDTO implements Serializable {
 
     private String lessonId;
 
+    private String lessonName;
+
+    private String courseId;
+
+    private String courseName;
+
     private EventTypeEnum eventType;
 
     private String deviceType;

+ 9 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/user/entity/DownloadInfo.java

@@ -33,6 +33,15 @@ public class DownloadInfo implements Serializable {
     @Column(name="lesson_id")
     private String lessonId;
 
+    @Column(name="lesson_name")
+    private String lessonName;
+
+    @Column(name="course_id")
+    private String courseId;
+
+    @Column(name="course_name")
+    private String courseName;
+
     @Enumerated(EnumType.ORDINAL)
     @Column(name="event_type", nullable = false)
     private EventTypeEnum eventType;