|
|
@@ -1,11 +1,8 @@
|
|
|
package com.izouma.walkchina.service;
|
|
|
|
|
|
-import com.izouma.walkchina.constant.Strings;
|
|
|
-import com.izouma.walkchina.domain.Message;
|
|
|
-import com.izouma.walkchina.domain.TeamMember;
|
|
|
-import com.izouma.walkchina.domain.UserCoinRecord;
|
|
|
-import com.izouma.walkchina.domain.UserInfo;
|
|
|
import com.izouma.walkchina.constant.AppConstants;
|
|
|
+import com.izouma.walkchina.constant.Strings;
|
|
|
+import com.izouma.walkchina.domain.*;
|
|
|
import com.izouma.walkchina.dto.UserTeamMember;
|
|
|
import com.izouma.walkchina.exception.ServiceException;
|
|
|
import com.izouma.walkchina.repo.*;
|
|
|
@@ -15,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
@@ -43,7 +41,12 @@ public class TeamService {
|
|
|
throw new ServiceException("Ta已经是你的队员");
|
|
|
}
|
|
|
|
|
|
+ if (teamMember.getStartDate().after(now)) {
|
|
|
+ throw new ServiceException(Strings.GRAB_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
teamMember.setEndDate(now);
|
|
|
+ teamMember.setGrabbed(true);
|
|
|
teamMemberRepository.save(teamMember);
|
|
|
Message grabMsg = Message.builder()
|
|
|
.userId(teamMember.getLeader())
|
|
|
@@ -55,7 +58,9 @@ public class TeamService {
|
|
|
messageRepository.save(grabMsg);
|
|
|
}
|
|
|
|
|
|
- BigDecimal price = BigDecimal.valueOf(Optional.ofNullable(targetUserInfo.getTotalSteps()).orElse(0L)).multiply(BigDecimal.valueOf(AppConstants.HIRE_PRICE_RATE));
|
|
|
+ BigDecimal price = BigDecimal.valueOf(Optional.ofNullable(targetUserInfo.getTotalSteps()).orElse(0L))
|
|
|
+ .multiply(BigDecimal.valueOf(AppConstants.HIRE_PRICE_RATE))
|
|
|
+ .setScale(1, RoundingMode.FLOOR);
|
|
|
BigDecimal balance = Optional.ofNullable(userInfo.getCoin()).orElse(BigDecimal.ZERO);
|
|
|
if (balance.compareTo(price) < 0) {
|
|
|
throw new ServiceException("雇佣失败,商城币不足");
|
|
|
@@ -112,6 +117,9 @@ public class TeamService {
|
|
|
}
|
|
|
|
|
|
public boolean canHire(Long userId, Long target) {
|
|
|
+ if (userId.equals(target)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
Date now = new Date();
|
|
|
TeamMember teamMember = teamMemberRepository.findActive(target, now);
|
|
|
if (teamMember != null) {
|
|
|
@@ -124,7 +132,13 @@ public class TeamService {
|
|
|
List<UserTeamMember> list = teamMemberRepository.findUserTeam(userId);
|
|
|
Date now = new Date();
|
|
|
for (UserTeamMember userTeamMember : list) {
|
|
|
- userTeamMember.setTodaySteps(walkDataRepository.sumUserWalkSteps(userTeamMember.getUserId(), now, now).orElse(0L));
|
|
|
+ WalkData walkData = walkDataRepository.findByUserIdAndDate(userTeamMember.getUserId(), now);
|
|
|
+ if (walkData != null) {
|
|
|
+ userTeamMember.setTodaySteps(walkData.getSteps());
|
|
|
+ } else {
|
|
|
+ userTeamMember.setTodaySteps(0L);
|
|
|
+ userTeamMember.setShouldWake(true);
|
|
|
+ }
|
|
|
}
|
|
|
return list;
|
|
|
}
|