Merge branch 'uat-userinfo' into 'uat_code'
Uat userinfo See merge request eshop/biz_service_ebtp_extend!96
This commit is contained in:
@ -7,10 +7,7 @@ import org.apache.commons.lang.StringUtils;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestHeader;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@ -36,4 +33,15 @@ public class UserInfoController {
|
|||||||
return ResponseEntity.ok(ebtpUserInfoService.getUserInfo(token));
|
return ResponseEntity.ok(ebtpUserInfoService.getUserInfo(token));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新redis缓存的信息
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("refresh")
|
||||||
|
public ResponseEntity<Boolean> refreshToken() {
|
||||||
|
return ResponseEntity.ok(ebtpUserInfoService.refresh());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,19 @@ import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
|||||||
public interface EbtpUserInfoService {
|
public interface EbtpUserInfoService {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户信息
|
||||||
|
*
|
||||||
|
* @param token
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public BaseCacheUser getUserInfo(String token);
|
public BaseCacheUser getUserInfo(String token);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新redis缓存的信息
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean refresh();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,12 @@ import com.chinaunicom.mall.ebtp.extend.userinfo.entity.BaseRole;
|
|||||||
import com.chinaunicom.mall.ebtp.extend.userinfo.entity.BaseUser;
|
import com.chinaunicom.mall.ebtp.extend.userinfo.entity.BaseUser;
|
||||||
import com.chinaunicom.mall.ebtp.extend.userinfo.service.EbtpUserInfoService;
|
import com.chinaunicom.mall.ebtp.extend.userinfo.service.EbtpUserInfoService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.*;
|
||||||
import java.util.Objects;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -27,6 +28,14 @@ public class EbtpUserInfoServiceImpl implements EbtpUserInfoService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private BaseRoleMapper baseRoleMapper;
|
private BaseRoleMapper baseRoleMapper;
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
@Qualifier("cacheRedisTemplate")
|
||||||
|
private RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
|
private static final String EXTEND_USER_KEY = "ebtpUserTableCache";
|
||||||
|
private static final String USERS = "users";
|
||||||
|
private static final String ROLES = "roles";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseCacheUser getUserInfo(String token) {
|
public BaseCacheUser getUserInfo(String token) {
|
||||||
//查询山分库
|
//查询山分库
|
||||||
@ -36,18 +45,24 @@ public class EbtpUserInfoServiceImpl implements EbtpUserInfoService {
|
|||||||
return new BaseCacheUser();
|
return new BaseCacheUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询拓展库的user表进行角色拓展
|
//获取redis缓存
|
||||||
BaseUser baseUser = baseUserMapper.selectOne(Wrappers.lambdaQuery(BaseUser.class).eq(BaseUser::getAccount, user.getUserId()).eq(BaseUser::getTenant, "ebtp_mall"));
|
Map<String, Object> userTable = getUserTable();
|
||||||
|
|
||||||
|
//获取用户信息
|
||||||
|
List<BaseUser> users = (List<BaseUser>) userTable.get(USERS);
|
||||||
|
BaseUser baseUser = users.stream().filter(u -> u.getAccount().equals(user.getLoginName())).findFirst().orElse(null);
|
||||||
if (Objects.isNull(baseUser)) {
|
if (Objects.isNull(baseUser)) {
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<BaseRole> roles = (List<BaseRole>) userTable.get(ROLES);
|
||||||
user.setProvince(baseUser.getProvince())
|
user.setProvince(baseUser.getProvince())
|
||||||
//追加角色
|
//覆盖角色
|
||||||
.getAuthorityList().addAll(
|
.setAuthorityList(
|
||||||
Optional.of(baseRoleMapper.selectList(Wrappers.lambdaQuery(BaseRole.class).in(BaseRole::getRole, baseUser.getRole()))
|
Optional.of(roles
|
||||||
.stream().map(br ->
|
.stream()
|
||||||
|
.filter(r -> baseUser.getRole().contains(r.getRole()))
|
||||||
|
.map(br ->
|
||||||
new AuthorityEntity()
|
new AuthorityEntity()
|
||||||
.setRoleId(br.getRoleId())
|
.setRoleId(br.getRoleId())
|
||||||
.setRoleCode(br.getRole())
|
.setRoleCode(br.getRole())
|
||||||
@ -59,6 +74,36 @@ public class EbtpUserInfoServiceImpl implements EbtpUserInfoService {
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Map<String, Object> getUserTable() {
|
||||||
|
Object o = redisTemplate.opsForValue().get(EXTEND_USER_KEY);
|
||||||
|
|
||||||
|
if (Objects.isNull(o)) {
|
||||||
|
o = cacheUserTable();
|
||||||
|
}
|
||||||
|
return (Map<String, Object>) o ;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> cacheUserTable() {
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put(USERS, baseUserMapper.selectList(Wrappers.lambdaQuery(BaseUser.class).eq(BaseUser::getTenant, "ebtp_mall")));
|
||||||
|
map.put(ROLES, baseRoleMapper.selectList(Wrappers.emptyWrapper()));
|
||||||
|
redisTemplate.opsForValue().set(EXTEND_USER_KEY, map, 8, TimeUnit.HOURS);
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除token缓存
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean refresh() {
|
||||||
|
cacheUserTable();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public EbtpUserInfoServiceImpl() {
|
public EbtpUserInfoServiceImpl() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,12 @@ spring:
|
|||||||
master: eshop-redis
|
master: eshop-redis
|
||||||
nodes: 10.125.164.124:32718, 10.125.164.118:32716, 10.125.164.121:32716
|
nodes: 10.125.164.124:32718, 10.125.164.118:32716, 10.125.164.121:32716
|
||||||
password: Unicom#135
|
password: Unicom#135
|
||||||
|
database:
|
||||||
|
idempotent: 0
|
||||||
|
sharding: 1
|
||||||
|
cache: 2
|
||||||
|
backup: 3
|
||||||
|
|
||||||
|
|
||||||
# 天宫Eureka配置
|
# 天宫Eureka配置
|
||||||
eureka:
|
eureka:
|
||||||
|
Reference in New Issue
Block a user