Browse Source

修改下载相关接口

guozhaoshun 6 years atrás
parent
commit
e97597233d

+ 44 - 2
rankin-api-web/src/main/java/cn/rankin/apiweb/controller/CallbackController.java

@@ -8,6 +8,9 @@ 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.common.utils.constant.DownloadStatus;
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.enums.EventTypeEnum;
+import cn.rankin.common.utils.util.HttpUtil;
 import cn.rankin.data.api.app.vo.DeviceUserVo;
 import cn.rankin.data.api.product.entity.Course;
 import cn.rankin.data.api.product.entity.Lesson;
@@ -58,10 +61,20 @@ public class CallbackController {
     public APIResult<Boolean> addDownloadInfo(HttpServletRequest request, @NeedUser DeviceUserVo user ,
                                               @RequestParam("courseId") String courseId,
                                               @RequestParam("lessonId") String lessonId,
-                                              @RequestParam("downloadStatus") int downloadStatus,
+                                              @RequestParam("resTotal") int resTotal,
+                                              @RequestParam("resSize") int resSize,
                                               @RequestParam("data") String data) {
 
+        String ip = HttpUtil.getClientIp(request);
+        log.info("ip={}",ip);
 
+        String mac = HttpUtil.getMacAddrByIp(request);
+
+        log.info("mac={}",mac);
+
+        String systemInfo = HttpUtil.getSystemInfo(request);
+
+        log.info("systemInfo={}",systemInfo);
 
         /**
          * 1.获得客户机信息
@@ -118,7 +131,14 @@ public class CallbackController {
         dto.setMerchantId(user.getMerchantId());
         dto.setUserId(user.getUid());
         dto.setDeviceType(device);
-        dto.setDownloadStatus(downloadStatus);
+        dto.setDownloadStatus(DownloadStatus.PROCESS_DOWNLOAD);
+        dto.setEventType(EventTypeEnum.DOWNLOAD);
+        dto.setStatus(BaseStatusEnum.NORMAL);
+        dto.setNeedUpdate(0);
+        dto.setResTotal(resTotal);
+        dto.setResSize(resSize);
+
+
 
         DownloadInfo downloadInfo = downloadInfoService.add(dto);
         if(downloadInfo != null){
@@ -163,5 +183,27 @@ public class CallbackController {
         return APIResult.ok();
     }
 
+    @RequestMapping(value = "/download/update/resource/size", method = RequestMethod.PUT)
+    public APIResult<Boolean> updateResourceByLessonUserId(@NeedUser DeviceUserVo user,@RequestParam("lessonId") String lessonId) {
+        DownloadInfo downloadInfo = downloadInfoService.findByLessonUserId(user.getUid(),lessonId);
+        if(downloadInfo == null){
+            APIResult.error(APICode.OPERATE_ERROR);
+        }else{
+            int resSize = downloadInfo.getResSize() + 1 ;
+            int resTotal = downloadInfo.getResTotal();
+            if(resSize == resTotal){
+                downloadInfo.setDownloadStatus(DownloadStatus.FINISH_DOWNLOAD);
+            }
+            downloadInfo.setResSize(resSize);
+        }
+
+        DownloadInfo update = downloadInfoService.update(downloadInfo);
+        if(update == null){
+            APIResult.error(APICode.OPERATE_ERROR);
+        }
+
+        return APIResult.ok();
+    }
+
 }
 

+ 2 - 0
rankin-api-web/src/main/java/cn/rankin/apiweb/service/download/DownloadInfoClient.java

@@ -25,4 +25,6 @@ public interface DownloadInfoClient {
     @RequestMapping(value = "/download/update/{uid}", method = RequestMethod.PUT)
     DownloadInfo updateByLessonUserId(@RequestParam("uid") String uid, @RequestParam("lessonId") String lessonId);
 
+    @RequestMapping(value = "/download/update", method = RequestMethod.PUT)
+    DownloadInfo update(@RequestBody DownloadInfo downloadInfo);
 }

+ 3 - 2
rankin-api-web/src/main/java/cn/rankin/apiweb/service/download/DownloadInfoService.java

@@ -36,6 +36,7 @@ public class DownloadInfoService {
         return downloadInfoClient.updateByLessonUserId(uid,lessonId);
     }
 
-
-
+    public DownloadInfo update(DownloadInfo downloadInfo) {
+        return downloadInfoClient.update(downloadInfo);
+    }
 }

+ 81 - 0
rankin-common-utils/src/main/java/cn/rankin/common/utils/util/HttpUtil.java

@@ -14,10 +14,14 @@ import org.springframework.util.StringUtils;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * Created by tomas on 2017/6/4.
@@ -152,4 +156,81 @@ public class HttpUtil {
         return ip.split(",")[0];
     }
 
+
+    /**
+     * 根据IP获取MAC地址
+     * @param request
+     * @return
+     */
+    public static String getMacAddrByIp(HttpServletRequest request) {
+        String ip = getClientIp(request);
+        String macAddr = null;
+        try {
+            Process process = Runtime.getRuntime().exec("nbtstat -a " + ip);
+            BufferedReader br = new BufferedReader(
+                    new InputStreamReader(process.getInputStream()));
+            Pattern pattern = Pattern.compile("([A-F0-9]{2}-){5}[A-F0-9]{2}");
+            Matcher matcher;
+            for (String strLine = br.readLine(); strLine != null;
+                 strLine = br.readLine()) {
+                matcher = pattern.matcher(strLine);
+                if (matcher.find()) {
+                    macAddr = matcher.group();
+                    break;
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return macAddr;
+    }
+
+    /**
+     * 获取系统版本信息
+     * @param request
+     * @return
+     */
+    public static String getSystemInfo(HttpServletRequest request){
+        String systenInfo = null;
+        String header = request.getHeader("user-agent");
+        if(header == null || header.equals("")){
+            return "";
+        }
+        //得到用户的操作系统
+        if (header.indexOf("NT 6.0") > 0){
+            systenInfo = "Windows Vista/Server 2008";
+        } else if (header.indexOf("NT 5.2") > 0){
+            systenInfo = "Windows Server 2003";
+        } else if (header.indexOf("NT 5.1") > 0){
+            systenInfo = "Windows XP";
+        } else if (header.indexOf("NT 6.0") > 0){
+            systenInfo = "Windows Vista";
+        } else if (header.indexOf("NT 6.1") > 0){
+            systenInfo = "Windows 7";
+        } else if (header.indexOf("NT 6.2") > 0){
+            systenInfo = "Windows Slate";
+        } else if (header.indexOf("NT 6.3") > 0){
+            systenInfo = "Windows 9";
+        } else if (header.indexOf("NT 5") > 0){
+            systenInfo = "Windows 2000";
+        } else if (header.indexOf("NT 4") > 0){
+            systenInfo = "Windows NT4";
+        } else if (header.indexOf("Me") > 0){
+            systenInfo = "Windows Me";
+        } else if (header.indexOf("98") > 0){
+            systenInfo = "Windows 98";
+        } else if (header.indexOf("95") > 0){
+            systenInfo = "Windows 95";
+        } else if (header.indexOf("Mac") > 0){
+            systenInfo = "Mac";
+        } else if (header.indexOf("Unix") > 0){
+            systenInfo = "UNIX";
+        } else if (header.indexOf("Linux") > 0){
+            systenInfo = "Linux";
+        } else if (header.indexOf("SunOS") > 0){
+            systenInfo = "SunOS";
+        }
+        return systenInfo;
+    }
+
 }

+ 10 - 1
rankin-data-api/src/main/java/cn/rankin/data/api/user/dto/DownloadInfoDTO.java

@@ -6,7 +6,6 @@ import cn.rankin.common.utils.enums.PlatformTypeEnum;
 import lombok.Data;
 import lombok.ToString;
 
-import javax.persistence.Column;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -33,8 +32,18 @@ public class DownloadInfoDTO implements Serializable {
 
     private String deviceType;
 
+    private String mac;
+
+    private String ip;
+
     private String deviceVersion;
 
+    //资源总数
+    private int resTotal;
+
+    //已转码资源数
+    private int resSize;
+
     private String data;
 
     private Integer needUpdate;

+ 18 - 1
rankin-data-api/src/main/java/cn/rankin/data/api/user/entity/DownloadInfo.java

@@ -39,7 +39,10 @@ public class DownloadInfo implements Serializable {
     @Column(name="course_id")
     private String courseId;
 
-    @Column(name="download_status")
+    @Column(name="course_name")
+    private String courseName;
+
+    @Column(name="download_status", nullable = false)
     private int downloadStatus;
 
     @Enumerated(EnumType.ORDINAL)
@@ -49,9 +52,23 @@ public class DownloadInfo implements Serializable {
     @Column(name="device_type")
     private String deviceType;
 
+    @Column(name="mac")
+    private String mac;
+
+    @Column(name="ip")
+    private String ip;
+
     @Column(name="device_version")
     private String deviceVersion;
 
+    //资源总数
+    @Column(name="res_total")
+    private int resTotal;
+
+    //已转码资源数
+    @Column(name="res_size")
+    private int resSize;
+
     @Column(name="data")
     private String data;
 

+ 6 - 3
rankin-user-service/src/main/java/cn/rankin/userservice/controller/DownloadInfoController.java

@@ -20,9 +20,7 @@ public class DownloadInfoController {
 
     @RequestMapping(method = RequestMethod.POST)
     public DownloadInfo add(@RequestBody DownloadInfoDTO dto) {
-        dto.setEventType(EventTypeEnum.DOWNLOAD);
-        dto.setStatus(BaseStatusEnum.NORMAL);
-        dto.setNeedUpdate(0);
+
 
         //TODO
         //addEventLog();
@@ -51,6 +49,11 @@ public class DownloadInfoController {
         return downloadInfoService.updateByLessonUserId(uid,lessonId);
     }
 
+    @RequestMapping(value = "/update", method = RequestMethod.PUT)
+    public DownloadInfo update(@RequestBody DownloadInfo downloadInfo){
+        return downloadInfoService.update(downloadInfo);
+    }
+
     @RequestMapping(value = "/set/update/{lessonId}", method = RequestMethod.PUT)
     public int setUpdateByLessonId(@PathVariable("lessonId") String lessonId){
         return downloadInfoService.setUpdateByLessonId(lessonId);

+ 4 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/service/DownloadInfoService.java

@@ -96,4 +96,8 @@ public class DownloadInfoService {
     public int setUpdateByLessonId(String lessonId) {
         return downloadInfoRepository.setUpdateByLessonId(lessonId,BaseStatusEnum.NORMAL);
     }
+
+    public DownloadInfo update(DownloadInfo downloadInfo) {
+        return downloadInfoRepository.update(downloadInfo);
+    }
 }