Merge remote-tracking branch 'origin/feature-20240104' into feature-20240104

master
elliott 2 years ago
commit addf10dd44

@ -56,8 +56,8 @@ public class TokenService
loginUser.setUserid(userId);
loginUser.setUsername(userName);
if(loginUser.getWxUserMember() != null) {
loginUser.setWxUserid(loginUser.getWxUserid());
loginUser.setWxUsername(loginUser.getWxUsername());
loginUser.setWxUserid(loginUser.getWxUserMember().getId());
loginUser.setWxUsername(loginUser.getWxUserMember().getNickname());
}
loginUser.setIpaddr(IpUtils.getIpAddr());
refreshToken(loginUser);

@ -1,13 +1,19 @@
package com.flossom.miniProgram.controller;
import com.flossom.common.core.constant.Constants;
import com.flossom.common.core.domain.R;
import com.flossom.common.core.domain.SysFile;
import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.utils.StringUtils;
import com.flossom.common.core.web.controller.BaseController;
import com.flossom.common.core.web.domain.AjaxResult;
import com.flossom.miniProgram.domain.vo.UserMemberUpdateVo;
import com.flossom.miniProgram.service.IWxUserMemberService;
import com.flossom.system.api.RemoteFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@ -19,6 +25,9 @@ public class UserMemberController extends BaseController {
@Autowired
private IWxUserMemberService wxUserMemberService;
@Autowired
private RemoteFileService remoteFileService;
/**
*
*
@ -58,9 +67,27 @@ public class UserMemberController extends BaseController {
* @return
*/
@PostMapping("/updateUser")
public AjaxResult updateUser(@RequestBody @Validated UserMemberUpdateVo userMemberUpdateVo) {
wxUserMemberService.updateUser(userMemberUpdateVo);
return AjaxResult.success();
public R updateUser(@RequestParam(value = "file", required = false) MultipartFile file, @Validated UserMemberUpdateVo userMemberUpdateVo) {
if (file != null) {
R<SysFile> result = remoteFileService.upload(file);
if (result.getCode() != Constants.SUCCESS) {
logger.error("上传头像失败");
throw new ServiceException("上传头像失败");
}
userMemberUpdateVo.setHeadimg(result.getData().getUrl());
} else {
userMemberUpdateVo.setHeadimg(null);
}
return R.ok(wxUserMemberService.updateUser(userMemberUpdateVo));
}
/**
*
* 1
* 2
*/
@GetMapping("/refreshWxUserInfo")
public R refreshWxUserInfo() {
return R.ok(wxUserMemberService.refreshWxUserInfo());
}
}

@ -1,6 +1,5 @@
package com.flossom.miniProgram.service;
import com.flossom.common.core.web.domain.AjaxResult;
import com.flossom.miniProgram.domain.vo.LoginUserVo;
import com.flossom.miniProgram.domain.vo.UserMemberUpdateVo;
@ -10,5 +9,8 @@ public interface IWxUserMemberService {
String upgradeMember(String code) throws Exception;
void updateUser(UserMemberUpdateVo userMemberUpdateVo);
LoginUserVo updateUser(UserMemberUpdateVo userMemberUpdateVo);
LoginUserVo refreshWxUserInfo();
}

@ -9,19 +9,18 @@ import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.mapper.WxUserMemberMapper;
import com.flossom.common.core.utils.DateUtils;
import com.flossom.common.core.utils.StringUtils;
import com.flossom.common.redis.service.RedisService;
import com.flossom.common.security.utils.SecurityUtils;
import com.flossom.miniProgram.domain.vo.*;
import com.flossom.miniProgram.service.IWxUserMemberService;
import com.flossom.miniProgram.utils.MiniProgramUtils;
import com.flossom.system.api.RemoteAuthService;
import com.flossom.system.api.model.LoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@ -114,19 +113,52 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
}
@Override
public void updateUser(UserMemberUpdateVo userMemberUpdateVo) {
public LoginUserVo updateUser(UserMemberUpdateVo userMemberUpdateVo) {
// 完善用户信息, 判断是否标记完善信息
WxUserMember wxUserMember = SecurityUtils.getLoginUser().getWxUserMember();
if (wxUserMember.getIsCompleteInformation() == null ||
wxUserMember.getIsCompleteInformation() == 0) {
// 修改完善
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberByOpenId(SecurityUtils.getLoginUser().getWxUserMember().getOpenid());
if (wxUserMember.getIsCompleteInformation() == null || wxUserMember.getIsCompleteInformation() == 0) {
// 修改完善状态
wxUserMember.setIsCompleteInformation(1);
// TODO 首次完善,增加加分
// TODO 首次完善,增加加分 (未完成)
}
BeanUtils.copyProperties(userMemberUpdateVo, wxUserMember);
wxUserMember.setUpdateTime(DateUtils.getNowDate());
wxUserMemberMapper.updateWxUserMember(wxUserMember);
// 刷新用户信息
return refreshWxUserInfo();
}
/**
*
*
* @return
*/
@Override
public LoginUserVo refreshWxUserInfo() {
// 1、获取用户最新信息
String openid = SecurityUtils.getLoginUser().getWxUserMember().getOpenid();
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberByOpenId(openid);
if (wxUserMember == null) {
logger.error("刷新用户信息失败");
throw new ServiceException("刷新用户信息失败");
}
// 2、刷新redis缓存信息
String userKey = SecurityUtils.getUserKey();
LoginUser loginUser = redisService.getCacheObject(CacheConstants.LOGIN_TOKEN_KEY + userKey);
loginUser.setWxUserMember(wxUserMember);
loginUser.setWxUserid(wxUserMember.getId());
loginUser.setUsername(wxUserMember.getNickname());
loginUser.setExpireTime(loginUser.getLoginTime() + CacheConstants.EXPIRATION * 60 * 1000);
redisService.setCacheObject(userKey, loginUser, CacheConstants.EXPIRATION, TimeUnit.MINUTES);
// 3、构建前端缓存对象
LoginUserVo loginUserVo = new LoginUserVo();
BeanUtils.copyProperties(wxUserMember, loginUserVo);
loginUserVo.setToken(loginUser.getToken());
return loginUserVo;
}

Loading…
Cancel
Save