From 2ca169c85f61256fb5185c078dba1bfef2be5066 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 11 六月 2025 22:34:11 +0800
Subject: [PATCH] 小程序鉴权处理
---
framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java | 7 +++
framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java | 5 ++
framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java | 15 ++++---
seller-api/src/main/java/cn/lili/controller/goods/CategoryStoreController.java | 12 ++++++
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java | 23 ++++++++---
seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java | 18 +++++----
buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java | 3 +
framework/src/main/java/cn/lili/modules/member/service/MemberService.java | 2 +
framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java | 10 ++++
9 files changed, 70 insertions(+), 25 deletions(-)
diff --git a/buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java b/buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
index 7d81a2f..d1e2df7 100644
--- a/buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
+++ b/buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
@@ -99,7 +99,8 @@
AuthUser authUser = new Gson().fromJson(json, AuthUser.class);
//鏍¢獙redis涓槸鍚︽湁鏉冮檺
- if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER,authUser.getId()) + jwt)) {
+ if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER, authUser.getId()) + jwt) ||
+ cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.STORE, authUser.getId()) + jwt)) {
//鏋勯�犺繑鍥炰俊鎭�
List<GrantedAuthority> auths = new ArrayList<>();
auths.add(new SimpleGrantedAuthority("ROLE_" + authUser.getRole().name()));
diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
index eac79b1..6758887 100644
--- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
@@ -265,6 +265,11 @@
if (StrUtil.isNotBlank(authUser.getPhone())) {
member = memberService.findByMobile(authUser.getPhone());
}
+
+ if (StrUtil.isNotBlank(authUser.getUuid())) {
+ member = memberService.findByUUID(authUser.getUuid());
+ }
+
//濡傛灉鏈煡鍒版墜鏈哄彿鐨勪細鍛樺垯浣跨敤绗笁鏂圭櫥褰�
if (member == null) {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<Connect>();
diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java
index 8027050..83bb664 100644
--- a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java
+++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java
@@ -5,6 +5,7 @@
import cn.lili.common.security.sensitive.enums.SensitiveStrategy;
import cn.lili.common.utils.CommonUtil;
import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
@@ -80,6 +81,10 @@
@ApiModelProperty(value = "搴楅摵ID")
private String storeId;
+ @ApiModelProperty(value = "uuId")
+ @TableField(value = "uu_id")
+ private String uuId;
+
/**
* @see ClientTypeEnum
*/
@@ -111,7 +116,7 @@
this.lastLoginDate = new Date();
}
- public Member(String username, String password, String face, String nickName, Integer sex,String mobile) {
+ public Member(String username, String password, String face, String nickName, Integer sex, String mobile) {
this.username = username;
this.password = password;
this.mobile = mobile;
diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
index f818a52..20983da 100644
--- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
+++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
@@ -336,4 +336,6 @@
boolean appSConfirm(String token, Integer code);
QRLoginResultVo loginWithSession(String token);
+
+ Member findByUUID(String uuid);
}
\ No newline at end of file
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
index bc00f42..5cf289a 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -257,6 +257,7 @@
Member member = new Member(authUser.getUsername(), UuidUtils.getUUID(), authUser.getAvatar(), authUser.getNickname(),
authUser.getGender() != null ? Convert.toInt(authUser.getGender().getCode()) : 0, authUser.getPhone());
member.setPassword(DEFAULT_PASSWORD);
+ member.setUuId(authUser.getUuid());
// 鍙戦�佷細鍛樻敞鍐屼俊鎭�
registerHandler(member);
@@ -501,18 +502,19 @@
this.updateById(member);
return member;
}
+
@Override
- public Result resetPassword(String id){
- String password = "123456";
- Member member = this.getById(id);
- member.setPassword(new BCryptPasswordEncoder().encode(password));
- this.updateById(member);
- return Result.ok("閲嶇疆鎴愬姛");
+ public Result resetPassword(String id) {
+ String password = "123456";
+ Member member = this.getById(id);
+ member.setPassword(new BCryptPasswordEncoder().encode(password));
+ this.updateById(member);
+ return Result.ok("閲嶇疆鎴愬姛");
}
@Override
- public Member updateMemberPartProperties(String id,String password,String mobile) {
+ public Member updateMemberPartProperties(String id, String password, String mobile) {
//鏌ヨ浼氬憳淇℃伅
Member member = this.getById(id);
member.setMobile(mobile);
@@ -861,6 +863,13 @@
return result;
}
+ @Override
+ public Member findByUUID(String uuid) {
+ QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("uu_id", uuid);
+ return this.baseMapper.selectOne(queryWrapper);
+ }
+
/**
* 妫�娴嬩細鍛�
*
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java
index ed26a22..f84a49b 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java
@@ -48,13 +48,14 @@
@Override
public List<StoreUserMenuVO> findAllMenu(String clerkId, String memberId) {
- String cacheKey = CachePrefix.STORE_USER_MENU.getPrefix() + memberId;
- List<StoreUserMenuVO> menuList = (List<StoreUserMenuVO>) cache.get(cacheKey);
- if (menuList == null || menuList.isEmpty()) {
- menuList = storeMenuService.getUserRoleMenu(clerkId);
- cache.put(cacheKey, menuList);
- }
- return menuList;
+// String cacheKey = CachePrefix.STORE_USER_MENU.getPrefix() + memberId;
+// List<StoreUserMenuVO> menuList = (List<StoreUserMenuVO>) cache.get(cacheKey);
+// if (menuList == null || menuList.isEmpty()) {
+// menuList = storeMenuService.getUserRoleMenu(clerkId);
+// cache.put(cacheKey, menuList);
+// }
+// return menuList;
+ return storeMenuService.getUserRoleMenu(clerkId);
}
diff --git a/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java b/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java
index ad5e008..4df5d43 100644
--- a/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java
+++ b/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java
@@ -8,7 +8,9 @@
import cn.lili.common.security.token.Token;
import cn.lili.common.security.token.TokenUtil;
import cn.lili.common.security.token.base.AbstractTokenGenerate;
+import cn.lili.modules.member.entity.dos.Clerk;
import cn.lili.modules.member.entity.dos.Member;
+import cn.lili.modules.member.service.ClerkService;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
@@ -34,6 +36,9 @@
@Autowired
private RocketMQTemplate rocketMQTemplate;
+ @Autowired
+ private ClerkService clerkService;
+
@Override
public Token createToken(Member member, Boolean longTerm) {
@@ -57,11 +62,14 @@
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_LOGIN.name();
rocketMQTemplate.asyncSend(destination, member, RocketmqSendCallbackBuilder.commonCallback());
+ Clerk clerk = clerkService.getClerkByMemberId(member.getId());
+
AuthUser authUser = AuthUser.builder()
.username(member.getUsername())
.face(member.getFace())
.id(member.getId())
- .role(UserEnums.MEMBER)
+ .role(clerk == null ? UserEnums.MEMBER : UserEnums.STORE)
+ .storeId(clerk == null ? null : clerk.getStoreId())
.nickName(member.getNickName())
.longTerm(longTerm)
.build();
diff --git a/seller-api/src/main/java/cn/lili/controller/goods/CategoryStoreController.java b/seller-api/src/main/java/cn/lili/controller/goods/CategoryStoreController.java
index 362d46b..04efa8a 100644
--- a/seller-api/src/main/java/cn/lili/controller/goods/CategoryStoreController.java
+++ b/seller-api/src/main/java/cn/lili/controller/goods/CategoryStoreController.java
@@ -1,12 +1,16 @@
package cn.lili.controller.goods;
import cn.lili.common.enums.ResultUtil;
+import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
+import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.goods.entity.vos.CategoryBrandVO;
import cn.lili.modules.goods.entity.vos.CategoryVO;
import cn.lili.modules.goods.service.CategoryBrandService;
import cn.lili.modules.goods.service.CategoryService;
+import cn.lili.modules.member.entity.dos.Clerk;
+import cn.lili.modules.member.service.ClerkService;
import cn.lili.modules.store.service.StoreDetailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -49,11 +53,19 @@
*/
@Autowired
private StoreDetailService storeDetailService;
+ @Autowired
+ private ClerkService clerkService;
@ApiOperation(value = "鑾峰彇搴楅摵缁忚惀鐨勫垎绫�")
@GetMapping(value = "/all")
public ResultMessage<List<CategoryVO>> getListAll() {
+
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
+ if (StringUtils.isEmpty(storeId)) {
+ Clerk clerk = clerkService.getClerkByMemberId(UserContext.getCurrentUserId());
+ storeId = clerk.getStoreId();
+ }
+
//鑾峰彇搴楅摵缁忚惀鑼冨洿
String goodsManagementCategory = storeDetailService.getStoreDetail(storeId).getGoodsManagementCategory();
return ResultUtil.data(this.categoryService.getStoreCategory(goodsManagementCategory.split(",")));
diff --git a/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java b/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java
index 816d74b..8302055 100644
--- a/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java
+++ b/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java
@@ -106,7 +106,9 @@
AuthUser authUser = new Gson().fromJson(json, AuthUser.class);
//鏍¢獙redis涓槸鍚︽湁鏉冮檺
- if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.STORE, authUser.getId()) + jwt)) {
+ if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER, authUser.getId()) + jwt) ||
+ cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.STORE, authUser.getId()) + jwt)
+ ) {
//鐢ㄦ埛瑙掕壊
List<GrantedAuthority> auths = new ArrayList<>();
auths.add(new SimpleGrantedAuthority("ROLE_" + authUser.getRole().name()));
@@ -145,14 +147,14 @@
//鑾峰彇缂撳瓨涓殑鏉冮檺
Map<String, List<String>> permission =
(Map<String, List<String>>) cache.get(permissionCacheKey);
- if (permission == null || permission.isEmpty()) {
- //鏍规嵁浼氬憳id鏌ヨ搴楀憳淇℃伅
- Clerk clerk = clerkService.getClerkByMemberId(authUser.getId());
- if (clerk != null) {
- permission = storeTokenGenerate.permissionList(storeMenuRoleService.findAllMenu(clerk.getId(), authUser.getId()));
- cache.put(permissionCacheKey, permission);
- }
+ // if (permission == null || permission.isEmpty()) {
+ //鏍规嵁浼氬憳id鏌ヨ搴楀憳淇℃伅
+ Clerk clerk = clerkService.getClerkByMemberId(authUser.getId());
+ if (clerk != null) {
+ permission = storeTokenGenerate.permissionList(storeMenuRoleService.findAllMenu(clerk.getId(), authUser.getId()));
+ cache.put(permissionCacheKey, permission);
}
+ //}
//鑾峰彇鏁版嵁(GET 璇锋眰)鏉冮檺
if (request.getMethod().equals(RequestMethod.GET.name())) {
//濡傛灉鐢ㄦ埛鐨勮秴绾ф潈闄愬拰鏌ラ槄鏉冮檺閮戒笉鍖呭惈褰撳墠璇锋眰鐨刟pi
--
Gitblit v1.8.0