Browse Source

2019/07/12

x1ongzhu 6 years ago
parent
commit
30d1d140f6

+ 3 - 0
src/main/java/com/izouma/walkchina/domain/WalkData.java

@@ -31,6 +31,9 @@ public class WalkData extends BaseEntity {
 
 
     private Long steps;
     private Long steps;
 
 
+    @Temporal(TemporalType.DATE)
+    private Date date;
+
     @Column(columnDefinition = "bit default 1", nullable = false)
     @Column(columnDefinition = "bit default 1", nullable = false)
     @Builder.Default
     @Builder.Default
     public Boolean active = true;
     public Boolean active = true;

+ 10 - 0
src/main/java/com/izouma/walkchina/repo/WalkDataRepository.java

@@ -0,0 +1,10 @@
+package com.izouma.walkchina.repo;
+
+import com.izouma.walkchina.domain.WalkData;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.Date;
+
+public interface WalkDataRepository extends JpaRepository<WalkData, Long> {
+    WalkData findByUserIdAndDate(Long userId, Date date);
+}

+ 1 - 1
src/main/java/com/izouma/walkchina/service/UserInfoService.java

@@ -60,7 +60,7 @@ public class UserInfoService implements UserDetailsService {
             UserInfo userInfo = userInfoRepository.findByOpenId(openId).orElse(null);
             UserInfo userInfo = userInfoRepository.findByOpenId(openId).orElse(null);
             if (userInfo != null) {
             if (userInfo != null) {
                 userInfo.setSessionKey(sessionKey);
                 userInfo.setSessionKey(sessionKey);
-                return userInfo;
+                return userInfoRepository.save(userInfo);
             }
             }
             userInfo = UserInfo.builder()
             userInfo = UserInfo.builder()
                     .username(UUID.randomUUID().toString())
                     .username(UUID.randomUUID().toString())

+ 26 - 4
src/main/java/com/izouma/walkchina/service/WalkDataService.java

@@ -2,19 +2,41 @@ package com.izouma.walkchina.service;
 
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaRunStepInfo;
 import cn.binarywang.wx.miniapp.bean.WxMaRunStepInfo;
+import com.izouma.walkchina.domain.UserInfo;
+import com.izouma.walkchina.domain.WalkData;
+import com.izouma.walkchina.exception.ServiceException;
+import com.izouma.walkchina.repo.UserInfoRepository;
+import com.izouma.walkchina.repo.WalkDataRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 @Service
 @Service
 public class WalkDataService {
 public class WalkDataService {
     @Autowired
     @Autowired
-    private WxMaService wxMaService;
+    private WxMaService        wxMaService;
+    @Autowired
+    private WalkDataRepository walkDataRepository;
+    @Autowired
+    private UserInfoRepository userInfoRepository;
 
 
-    void saveWalkData(String sessionKey, String encryptedData, String iv) {
+    public void saveWalkData(Long userId, String encryptedData, String iv) {
+        UserInfo userInfo = userInfoRepository.findById(userId).orElse(null);
+        if (userInfo == null) {
+            throw new ServiceException("用户不存在");
+        }
+        String sessionKey = userInfo.getSessionKey();
         List<WxMaRunStepInfo> wxMaRunStepInfoList = wxMaService.getRunService().getRunStepInfo(sessionKey, encryptedData, iv);
         List<WxMaRunStepInfo> wxMaRunStepInfoList = wxMaService.getRunService().getRunStepInfo(sessionKey, encryptedData, iv);
-
+        for (WxMaRunStepInfo stepInfo : wxMaRunStepInfoList) {
+            WalkData walkData = walkDataRepository.findByUserIdAndDate(userId, new Date(stepInfo.getTimestamp()));
+            if (walkData == null) {
+                walkData = new WalkData();
+            }
+            walkData.setDate(new Date(stepInfo.getTimestamp() * 1000));
+            walkData.setSteps(Long.valueOf(stepInfo.getStep()));
+            walkDataRepository.save(walkData);
+        }
     }
     }
-
 }
 }

+ 12 - 3
src/main/java/com/izouma/walkchina/web/WalkDataController.java

@@ -1,6 +1,11 @@
 package com.izouma.walkchina.web;
 package com.izouma.walkchina.web;
 
 
 import com.izouma.walkchina.bean.Result;
 import com.izouma.walkchina.bean.Result;
+import com.izouma.walkchina.domain.UserInfo;
+import com.izouma.walkchina.service.WalkDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
@@ -8,11 +13,15 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RestController
 @RequestMapping("/walkData")
 @RequestMapping("/walkData")
 public class WalkDataController {
 public class WalkDataController {
-
+    @Autowired
+    private WalkDataService walkDataService;
 
 
     @PostMapping
     @PostMapping
     @RequestMapping("/saveWalkData")
     @RequestMapping("/saveWalkData")
-    public Result saveWalkData() {
-        return Result.error("");
+    public Result saveWalkData(String encryptedData, String iv) {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        UserInfo userInfo = (UserInfo) authentication.getPrincipal();
+        walkDataService.saveWalkData(userInfo.getId(), encryptedData, iv);
+        return Result.ok("保存成功");
     }
     }
 }
 }