|
|
@@ -2,19 +2,41 @@ package com.izouma.walkchina.service;
|
|
|
|
|
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
|
|
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.stereotype.Service;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Service
|
|
|
public class WalkDataService {
|
|
|
@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);
|
|
|
-
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
}
|