From f4d06bc703a27865faaefed3c51d2ca21974edc5 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Tue, 19 Dec 2023 11:28:11 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/service/TokenService.java | 4 +-- .../controller/UserMemberController.java | 10 ++++++ .../service/IWxUserMemberService.java | 3 ++ .../service/impl/WxUserMemberServiceImpl.java | 35 +++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/flossom-common/flossom-common-security/src/main/java/com/flossom/common/security/service/TokenService.java b/flossom-common/flossom-common-security/src/main/java/com/flossom/common/security/service/TokenService.java index c0879b0..6be698b 100644 --- a/flossom-common/flossom-common-security/src/main/java/com/flossom/common/security/service/TokenService.java +++ b/flossom-common/flossom-common-security/src/main/java/com/flossom/common/security/service/TokenService.java @@ -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); diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java index 45713fc..a44c540 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java @@ -1,5 +1,6 @@ package com.flossom.miniProgram.controller; +import com.flossom.common.core.domain.R; import com.flossom.common.core.utils.StringUtils; import com.flossom.common.core.web.controller.BaseController; import com.flossom.common.core.web.domain.AjaxResult; @@ -63,4 +64,13 @@ public class UserMemberController extends BaseController { return AjaxResult.success(); } + /** + * 刷新用户信息 + * 1、重构用户缓存信息 + * 2、返回用户信息给前端缓存 + */ + @GetMapping("/refreshWxUserInfo") + public R refreshWxUserInfo() { + return R.ok(wxUserMemberService.refreshWxUserInfo()); + } } diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java index b54128e..55c981a 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java @@ -11,4 +11,7 @@ public interface IWxUserMemberService { String upgradeMember(String code) throws Exception; void updateUser(UserMemberUpdateVo userMemberUpdateVo); + + LoginUserVo refreshWxUserInfo(); + } diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java index ebfc039..0bc8c0c 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java @@ -16,6 +16,7 @@ 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; @@ -127,6 +128,40 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { BeanUtils.copyProperties(userMemberUpdateVo, wxUserMember); wxUserMember.setUpdateTime(DateUtils.getNowDate()); wxUserMemberMapper.updateWxUserMember(wxUserMember); + + // 重新构建用户信息缓存 + + } + + /** + * 重构用户缓存信息 + * + * @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; } From 0eb071f2cac023b6cf29e15d0e9be953fdf9c093 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Tue, 19 Dec 2023 11:33:22 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=AE=8C=E6=88=90=E5=90=8E=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miniProgram/controller/UserMemberController.java | 5 ++--- .../miniProgram/service/IWxUserMemberService.java | 2 +- .../service/impl/WxUserMemberServiceImpl.java | 10 ++++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java index a44c540..4d8c28f 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java @@ -59,9 +59,8 @@ public class UserMemberController extends BaseController { * @return */ @PostMapping("/updateUser") - public AjaxResult updateUser(@RequestBody @Validated UserMemberUpdateVo userMemberUpdateVo) { - wxUserMemberService.updateUser(userMemberUpdateVo); - return AjaxResult.success(); + public R updateUser(@RequestBody @Validated UserMemberUpdateVo userMemberUpdateVo) { + return R.ok(wxUserMemberService.updateUser(userMemberUpdateVo)); } /** diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java index 55c981a..f6535be 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java @@ -10,7 +10,7 @@ public interface IWxUserMemberService { String upgradeMember(String code) throws Exception; - void updateUser(UserMemberUpdateVo userMemberUpdateVo); + LoginUserVo updateUser(UserMemberUpdateVo userMemberUpdateVo); LoginUserVo refreshWxUserInfo(); diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java index 0bc8c0c..f00ccb9 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java @@ -9,7 +9,6 @@ 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.*; @@ -22,7 +21,6 @@ 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; @@ -115,22 +113,22 @@ 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.setIsCompleteInformation(1); - // TODO: 首次完善,增加加分 + // TODO: 首次完善,增加加分 (未完成) } BeanUtils.copyProperties(userMemberUpdateVo, wxUserMember); wxUserMember.setUpdateTime(DateUtils.getNowDate()); wxUserMemberMapper.updateWxUserMember(wxUserMember); - // 重新构建用户信息缓存 - + // 刷新用户信息 + return refreshWxUserInfo(); } /** From 1953bad578860fa72169e8b76afd0de0792df511 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Tue, 19 Dec 2023 14:15:57 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=BC=A0=E5=A4=B4?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/UserMemberController.java | 20 ++++++++++++++++++- .../service/IWxUserMemberService.java | 1 - .../service/impl/WxUserMemberServiceImpl.java | 7 +++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java index 4d8c28f..69ffcfe 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java @@ -1,14 +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; @@ -20,6 +25,9 @@ public class UserMemberController extends BaseController { @Autowired private IWxUserMemberService wxUserMemberService; + @Autowired + private RemoteFileService remoteFileService; + /** * 登录接口 * @@ -59,7 +67,17 @@ public class UserMemberController extends BaseController { * @return */ @PostMapping("/updateUser") - public R updateUser(@RequestBody @Validated UserMemberUpdateVo userMemberUpdateVo) { + public R updateUser(@RequestParam(value = "file", required = false) MultipartFile file, @Validated UserMemberUpdateVo userMemberUpdateVo) { + if (file != null) { + R 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)); } diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java index f6535be..aecfad0 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java @@ -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; diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java index f00ccb9..491475e 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java @@ -115,10 +115,9 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService { @Override 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: 首次完善,增加加分 (未完成)