|
|
@@ -9,6 +9,9 @@ import com.izouma.walkchina.domain.MonthWalkData;
|
|
|
import com.izouma.walkchina.domain.UserInfo;
|
|
|
import com.izouma.walkchina.dto.RankInfo;
|
|
|
import com.izouma.walkchina.dto.UserWalkStats;
|
|
|
+import com.izouma.walkchina.event.SendJoinAwardEvent;
|
|
|
+import com.izouma.walkchina.event.UpdateLevelEvent;
|
|
|
+import com.izouma.walkchina.event.UpdatePriceEvent;
|
|
|
import com.izouma.walkchina.exception.ServiceException;
|
|
|
import com.izouma.walkchina.repo.*;
|
|
|
import com.izouma.walkchina.security.AuthorityName;
|
|
|
@@ -18,6 +21,9 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
import org.apache.commons.lang3.RandomStringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.ApplicationContext;
|
|
|
+import org.springframework.context.event.EventListener;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -53,9 +59,7 @@ public class UserInfoService {
|
|
|
@Autowired
|
|
|
private AuthorityRepository authorityRepository;
|
|
|
@Autowired
|
|
|
- private CoinService coinService;
|
|
|
- @Autowired
|
|
|
- private JourneyService journeyService;
|
|
|
+ private ApplicationContext applicationContext;
|
|
|
|
|
|
public UserInfo registerByUserPwd(String username, String password) {
|
|
|
UserInfo userInfo = userInfoRepository.findByUsername(username);
|
|
|
@@ -242,7 +246,10 @@ public class UserInfoService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void updateUserPrice(UserInfo userInfo) {
|
|
|
+ @Async
|
|
|
+ @EventListener
|
|
|
+ public void updateUserPrice(UpdatePriceEvent event) {
|
|
|
+ UserInfo userInfo = (UserInfo) event.getSource();
|
|
|
MonthWalkData monthWalkData = monthWalkDataRepository.findByUserId(userInfo.getId()).orElse(null);
|
|
|
BigDecimal price = BigDecimal.ZERO;
|
|
|
if (monthWalkData != null) {
|
|
|
@@ -266,11 +273,13 @@ public class UserInfoService {
|
|
|
userInfo.setPrice(price);
|
|
|
userInfoRepository.save(userInfo);
|
|
|
if (userInfo.getIsNew() != null && userInfo.getIsNew()) {
|
|
|
- journeyService.sendJoinAward(userInfo.getId(), price);
|
|
|
+ applicationContext.publishEvent(new SendJoinAwardEvent(null, userInfo.getId(), price));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void updateUserLevel(UserInfo userInfo) {
|
|
|
+ @EventListener
|
|
|
+ public void updateUserLevel(UpdateLevelEvent event) {
|
|
|
+ UserInfo userInfo = (UserInfo) event.getSource();
|
|
|
int walkCities = Optional.ofNullable(userInfo.getWalkCities()).orElse(0);
|
|
|
int level;
|
|
|
if (walkCities < 4) {
|