|
|
@@ -1,22 +1,27 @@
|
|
|
package com.punchsettle.server.service.manager.impl;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
import java.util.Objects;
|
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.cache.CacheManager;
|
|
|
+import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import com.punchsettle.server.atomic.entity.User;
|
|
|
import com.punchsettle.server.atomic.service.IUserService;
|
|
|
-import com.punchsettle.server.common.utils.Assert;
|
|
|
+import com.punchsettle.server.constant.CacheNameConstant;
|
|
|
+import com.punchsettle.server.pojo.login.LoginRequest;
|
|
|
import com.punchsettle.server.pojo.user.NicknameRequest;
|
|
|
import com.punchsettle.server.pojo.user.UserInfoVO;
|
|
|
+import com.punchsettle.server.service.manager.ITokenManager;
|
|
|
import com.punchsettle.server.service.manager.IUserManager;
|
|
|
import com.punchsettle.server.utiis.UserUtils;
|
|
|
|
|
|
+import cn.binarywang.wx.miniapp.api.WxMaService;
|
|
|
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
|
|
|
/**
|
|
|
* @author tyuio
|
|
|
@@ -31,38 +36,50 @@ public class UserManagerImpl implements IUserManager {
|
|
|
@Autowired
|
|
|
private IUserService userService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CacheManager cacheManager;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WxMaService wxMaService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITokenManager tokenManager;
|
|
|
+
|
|
|
@Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public User getAndAddUser(User loginUserInfo) {
|
|
|
- Assert.isNullInBusiness(loginUserInfo, "传入了空的登录对象");
|
|
|
- Assert.isNullInBusiness(loginUserInfo.getOpenId(), "传入了空的openId");
|
|
|
+ public String login(LoginRequest request) throws WxErrorException {
|
|
|
+ // 微信登录
|
|
|
+ WxMaJscode2SessionResult wxMaJscode2SessionResult = wxMaService.jsCode2SessionInfo(request.getCode());
|
|
|
|
|
|
// 获取用户记录
|
|
|
- User user = userService.getByOpenId(loginUserInfo.getOpenId());
|
|
|
- if (!Objects.isNull(user)) {
|
|
|
+ User user = userService.getByOpenId(wxMaJscode2SessionResult.getOpenid());
|
|
|
+
|
|
|
+ // 存在责更新用户信息,没有则创建新用户
|
|
|
+ if (Objects.isNull(user)) {
|
|
|
+ user = new User();
|
|
|
+ user.setOpenId(wxMaJscode2SessionResult.getOpenid());
|
|
|
+ user.setNickname(request.getNickname());
|
|
|
+ userService.insert(user);
|
|
|
+
|
|
|
+ // 构建缓存
|
|
|
+ cacheManager.getCache(CacheNameConstant.USER).put(user.getId(), user);
|
|
|
+ } else {
|
|
|
User updateUser = new User();
|
|
|
updateUser.setId(user.getId());
|
|
|
- updateUser.setAvatar(loginUserInfo.getAvatar());
|
|
|
- updateUser.setNickname(loginUserInfo.getNickname());
|
|
|
+ updateUser.setNickname(request.getNickname());
|
|
|
userService.updateById(updateUser);
|
|
|
- return user;
|
|
|
- }
|
|
|
|
|
|
- // 没有则创建新用户
|
|
|
- loginUserInfo.setUnclaimedRewardNum(0);
|
|
|
- loginUserInfo.setClaimedRewardNum(0);
|
|
|
- loginUserInfo.setTotalRewardNum(0);
|
|
|
- loginUserInfo.setLotteryInvestAmount(BigDecimal.ZERO);
|
|
|
- loginUserInfo.setLotteryWinAmount(BigDecimal.ZERO);
|
|
|
- userService.insert(loginUserInfo);
|
|
|
+ // 清除缓存
|
|
|
+ cacheManager.getCache(CacheNameConstant.USER).evict(user.getId());
|
|
|
+ cacheManager.getCache(CacheNameConstant.USER_VO).evict(user.getId());
|
|
|
+ }
|
|
|
|
|
|
- return loginUserInfo;
|
|
|
+ // 创建token
|
|
|
+ return tokenManager.createToken(user.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public UserInfoVO queryUserInfo() {
|
|
|
- Long currentUserId = UserUtils.getCurrentUserId();
|
|
|
- User user = userService.getById(currentUserId);
|
|
|
+ public UserInfoVO queryUserInfo(Long userId) {
|
|
|
+ User user = userService.getById(userId);
|
|
|
UserInfoVO userInfoVO = new UserInfoVO();
|
|
|
BeanUtils.copyProperties(user, userInfoVO);
|
|
|
return userInfoVO;
|
|
|
@@ -70,9 +87,21 @@ public class UserManagerImpl implements IUserManager {
|
|
|
|
|
|
@Override
|
|
|
public void modifyNickname(NicknameRequest request) {
|
|
|
+ // 获取当前用户id
|
|
|
+ Long currentUserId = UserUtils.getCurrentUserId();
|
|
|
+ // 更新数据库
|
|
|
User user = new User();
|
|
|
- user.setId(UserUtils.getCurrentUserId());
|
|
|
+ user.setId(currentUserId);
|
|
|
user.setNickname(request.getNickname());
|
|
|
userService.updateById(user);
|
|
|
+ // 清除缓存
|
|
|
+ cacheManager.getCache(CacheNameConstant.USER).evict(currentUserId);
|
|
|
+ cacheManager.getCache(CacheNameConstant.USER_VO).evict(currentUserId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Cacheable(cacheNames = CacheNameConstant.USER, key = "#id", condition = "#id != null")
|
|
|
+ public User getByIdWithCache(Long id) {
|
|
|
+ return userService.getById(id);
|
|
|
}
|
|
|
}
|