Commit 14a8f728 authored by 王亮's avatar 王亮

batch query user.

parent 1d5026c7
...@@ -60,7 +60,7 @@ public class UserApiV2Controller { ...@@ -60,7 +60,7 @@ public class UserApiV2Controller {
user = userRepository.findByUuidAndTenantId(userInfoReq.getUuid(), sessionStruct.getTenantId()); user = userRepository.findByUuidAndTenantId(userInfoReq.getUuid(), sessionStruct.getTenantId());
} }
if(StringUtils.isEmpty(userInfoReq.getPhoneNo())){ if(StringUtils.isNotEmpty(userInfoReq.getPhoneNo())){
user = userRepository.findByPhoneNoAndTenantId(userInfoReq.getPhoneNo(), sessionStruct.getTenantId()); user = userRepository.findByPhoneNoAndTenantId(userInfoReq.getPhoneNo(), sessionStruct.getTenantId());
} }
...@@ -72,7 +72,7 @@ public class UserApiV2Controller { ...@@ -72,7 +72,7 @@ public class UserApiV2Controller {
user = userRepository.findByIdAndTenantId(wechatUserInfo.getUserId(), sessionStruct.getTenantId()); user = userRepository.findByIdAndTenantId(wechatUserInfo.getUserId(), sessionStruct.getTenantId());
} }
if(StringUtils.isNotEmpty(userInfoReq.getAppId()) && StringUtils.isNotEmpty(userInfoReq.getUuid())){ if(StringUtils.isNotEmpty(userInfoReq.getAppId()) && StringUtils.isNotEmpty(userInfoReq.getUnionId())){
WechatUserInfo wechatUserInfo = wechatService.findByUnionIdAndAppIdAndTenantId(userInfoReq.getUnionId(), userInfoReq.getAppId(), sessionStruct.getTenantId()); WechatUserInfo wechatUserInfo = wechatService.findByUnionIdAndAppIdAndTenantId(userInfoReq.getUnionId(), userInfoReq.getAppId(), sessionStruct.getTenantId());
if (wechatUserInfo == null || wechatUserInfo.getUserId() == null) { if (wechatUserInfo == null || wechatUserInfo.getUserId() == null) {
throw new BizException(BizExceptionEnum.UN_EXIT_USER); throw new BizException(BizExceptionEnum.UN_EXIT_USER);
...@@ -95,12 +95,12 @@ public class UserApiV2Controller { ...@@ -95,12 +95,12 @@ public class UserApiV2Controller {
* @return JsonResult<List < User>> * @return JsonResult<List < User>>
* @see <a href="http://yapi.quantgroups.com/project/17/interface/api/65734">批量查询用户信息</a> * @see <a href="http://yapi.quantgroups.com/project/17/interface/api/65734">批量查询用户信息</a>
*/ */
@PostMapping("batchInfo") @PostMapping("/batchInfo")
public JsonResult<List<User>> batchInfo(@RequestBody BatchInfoReq batchInfoReq) { public JsonResult<List<User>> batchInfo(@RequestBody BatchInfoReq batchInfoReq) {
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession(); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession();
List<User> userList = null; List<User> userList = null;
//1、校验 //1、校验
if (CollectionUtils.isEmpty(batchInfoReq.getUserids()) if (CollectionUtils.isEmpty(batchInfoReq.getUserIds())
&& CollectionUtils.isEmpty(batchInfoReq.getUuids()) && CollectionUtils.isEmpty(batchInfoReq.getUuids())
&& CollectionUtils.isEmpty(batchInfoReq.getPhoneNos()) && CollectionUtils.isEmpty(batchInfoReq.getPhoneNos())
&& (StringUtils.isEmpty(batchInfoReq.getAppId()) && CollectionUtils.isEmpty(batchInfoReq.getOpenIds())) && (StringUtils.isEmpty(batchInfoReq.getAppId()) && CollectionUtils.isEmpty(batchInfoReq.getOpenIds()))
...@@ -109,8 +109,8 @@ public class UserApiV2Controller { ...@@ -109,8 +109,8 @@ public class UserApiV2Controller {
} }
//2、查询 //2、查询
if (CollectionUtils.isNotEmpty(batchInfoReq.getUserids())) { if (CollectionUtils.isNotEmpty(batchInfoReq.getUserIds())) {
userList = userRepository.findByIdInAndTenantId(batchInfoReq.getUserids(), sessionStruct.getTenantId()); userList = userRepository.findByIdInAndTenantId(batchInfoReq.getUserIds(), sessionStruct.getTenantId());
} }
if( CollectionUtils.isNotEmpty(batchInfoReq.getUuids())){ if( CollectionUtils.isNotEmpty(batchInfoReq.getUuids())){
...@@ -131,8 +131,8 @@ public class UserApiV2Controller { ...@@ -131,8 +131,8 @@ public class UserApiV2Controller {
userList = userRepository.findByIdInAndTenantId(userIds, sessionStruct.getTenantId()); userList = userRepository.findByIdInAndTenantId(userIds, sessionStruct.getTenantId());
} }
if(StringUtils.isNotEmpty(batchInfoReq.getAppId()) && CollectionUtils.isNotEmpty(batchInfoReq.getUuids())){ if(StringUtils.isNotEmpty(batchInfoReq.getAppId()) && CollectionUtils.isNotEmpty(batchInfoReq.getUnionIds())){
List<WechatUserInfo> wechatUserInfo = wechatService.findUuidsAndOpenIdAndTenantId(batchInfoReq.getOpenIds(), batchInfoReq.getAppId(), sessionStruct.getTenantId()); List<WechatUserInfo> wechatUserInfo = wechatService.findUnionIdsAndOpenIdAndTenantId(batchInfoReq.getUnionIds(), batchInfoReq.getAppId(), sessionStruct.getTenantId());
List<Long> userIds = wechatUserInfo.stream().map(WechatUserInfo::getUserId).collect(Collectors.toList());; List<Long> userIds = wechatUserInfo.stream().map(WechatUserInfo::getUserId).collect(Collectors.toList());;
if (CollectionUtils.isEmpty(wechatUserInfo) || CollectionUtils.isEmpty(userIds)) { if (CollectionUtils.isEmpty(wechatUserInfo) || CollectionUtils.isEmpty(userIds)) {
throw new BizException(BizExceptionEnum.UN_EXIT_USER); throw new BizException(BizExceptionEnum.UN_EXIT_USER);
......
...@@ -13,7 +13,7 @@ public class BatchInfoReq { ...@@ -13,7 +13,7 @@ public class BatchInfoReq {
/** /**
* 用户id * 用户id
*/ */
private List<Long> userids; private List<Long> userIds;
/** /**
* 手机号码 * 手机号码
*/ */
......
...@@ -9,12 +9,16 @@ import cn.quantgroup.xyqb.remote.StmsRemoteService; ...@@ -9,12 +9,16 @@ import cn.quantgroup.xyqb.remote.StmsRemoteService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder; import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import cn.quantgroup.xyqb.util.StringUtils; import cn.quantgroup.xyqb.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
public class InnerInterceptor implements HandlerInterceptor { public class InnerInterceptor implements HandlerInterceptor {
private final ISessionService sessionService; private final ISessionService sessionService;
...@@ -46,20 +50,13 @@ public class InnerInterceptor implements HandlerInterceptor { ...@@ -46,20 +50,13 @@ public class InnerInterceptor implements HandlerInterceptor {
if (sessionStruct == null) { if (sessionStruct == null) {
OauthResult oauthResult = stmsRemoteService.checkToken(stmsToken); OauthResult oauthResult = stmsRemoteService.checkToken(stmsToken);
if (oauthResult != null && 2000 == oauthResult.getCode()) { if (oauthResult != null && 2000 == oauthResult.getCode()) {
OauthResult permissionResult = stmsRemoteService.checkPermission(stmsToken, LinkedHashMap<String,Object> linkedHashMap = (LinkedHashMap<String, Object>) oauthResult.getData();
request.getRequestURI(), tenantId); String userId = String.valueOf(linkedHashMap.get("id"));
if (permissionResult != null && 2000 == permissionResult.getCode()) { String userName = String.valueOf(linkedHashMap.get("name"));
JSONObject jsonObject = JSONObject.parseObject((String)permissionResult.getData()); sessionStruct = XyqbSessionContextHolder.initSTMSSession(stmsToken, userId, userName);
String userId = jsonObject.getString("id"); sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), sessionStruct.getTenantId());
String userName = jsonObject.getString("name");
sessionStruct = XyqbSessionContextHolder.initSTMSSession(stmsToken,userId,userName);
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), sessionStruct.getTenantId());
} else {
throw new BizException(BizExceptionEnum.UN_PERMISSION_STMS);
}
} else { } else {
throw new BizException(BizExceptionEnum.UN_VALID_STMS_TOKEN); throw new BizException(BizExceptionEnum.UN_PERMISSION_STMS);
} }
...@@ -68,7 +65,15 @@ public class InnerInterceptor implements HandlerInterceptor { ...@@ -68,7 +65,15 @@ public class InnerInterceptor implements HandlerInterceptor {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), sessionStruct.getTenantId()); sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), sessionStruct.getTenantId());
} }
return true; //校验接口权限
OauthResult permissionResult = stmsRemoteService.checkPermission(stmsToken,
request.getRequestURI(), tenantId);
if (permissionResult != null && 2000 == permissionResult.getCode()) {
return true;
} else {
throw new BizException(BizExceptionEnum.UN_VALID_STMS_TOKEN);
}
} }
@Override @Override
......
...@@ -38,10 +38,24 @@ public class LoginProperties { ...@@ -38,10 +38,24 @@ public class LoginProperties {
//租户ID //租户ID
private Integer tenantId; private Integer tenantId;
private String stmsUserId;
private String stmsUserName;
public LoginProperties(int action, Long createdFrom, Integer tenantId) { public LoginProperties(int action, Long createdFrom, Integer tenantId) {
this.action = action; this.action = action;
this.createdFrom = createdFrom; this.createdFrom = createdFrom;
this.tenantId = tenantId; this.tenantId = tenantId;
} }
public LoginProperties(String dimension, int action, Long channelId, Long createdFrom, String appChannel, Long merchantId, String merchantName, Integer tenantId) {
this.dimension = dimension;
this.action = action;
this.channelId = channelId;
this.createdFrom = createdFrom;
this.appChannel = appChannel;
this.merchantId = merchantId;
this.merchantName = merchantName;
this.tenantId = tenantId;
}
} }
...@@ -182,6 +182,16 @@ public class SessionServiceImpl implements ISessionService { ...@@ -182,6 +182,16 @@ public class SessionServiceImpl implements ISessionService {
if (sessionValue == null) { if (sessionValue == null) {
sessionValue = new SessionValue(); sessionValue = new SessionValue();
} }
if(sessionValue.getLoginProperties()==null){
sessionValue.setLoginProperties(new LoginProperties());
}
LoginProperties loginProperties= sessionValue.getLoginProperties();
loginProperties.setTenantId(tenantId);
sessionValue.setLoginProperties(loginProperties);
sessionValue.setLastAccessTime(current); sessionValue.setLastAccessTime(current);
String json = JSON.toJSONString(sessionValue); String json = JSON.toJSONString(sessionValue);
stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json, stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json,
......
...@@ -15,7 +15,7 @@ public interface IWechatService { ...@@ -15,7 +15,7 @@ public interface IWechatService {
WechatUserInfo findWechatUserInfoFromDb(String openId,String appId,Integer tenantId); WechatUserInfo findWechatUserInfoFromDb(String openId,String appId,Integer tenantId);
List<WechatUserInfo> findWechatUserInfoFromDb(List<String> openId,String appId,Integer tenantId); List<WechatUserInfo> findWechatUserInfoFromDb(List<String> openId,String appId,Integer tenantId);
List<WechatUserInfo> findUuidsAndOpenIdAndTenantId(List<String> uuids,String appId,Integer tenantId); List<WechatUserInfo> findUnionIdsAndOpenIdAndTenantId(List<String> uuids,String appId,Integer tenantId);
WechatUserInfo findByUnionIdAndAppIdAndTenantId(String unionId,String appId,Integer tenantId); WechatUserInfo findByUnionIdAndAppIdAndTenantId(String unionId,String appId,Integer tenantId);
......
...@@ -121,8 +121,8 @@ public class WechatServiceImpl implements IWechatService { ...@@ -121,8 +121,8 @@ public class WechatServiceImpl implements IWechatService {
return weChatUserRepository.findByOpenIdInAndAppIdAndTenantId(openId,appId,tenantId); return weChatUserRepository.findByOpenIdInAndAppIdAndTenantId(openId,appId,tenantId);
} }
public List<WechatUserInfo> findUuidsAndOpenIdAndTenantId(List<String> uuids, String appId, Integer tenantId){ public List<WechatUserInfo> findUnionIdsAndOpenIdAndTenantId(List<String> unionIds, String appId, Integer tenantId){
return weChatUserRepository.findByUnionIdInAndAppIdAndTenantId(uuids,appId,tenantId); return weChatUserRepository.findByUnionIdInAndAppIdAndTenantId(unionIds,appId,tenantId);
} }
......
package cn.quantgroup.xyqb.session; package cn.quantgroup.xyqb.session;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue; import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.util.IpUtil; import cn.quantgroup.xyqb.util.IpUtil;
...@@ -34,11 +35,16 @@ public class XyqbSessionContextHolder { ...@@ -34,11 +35,16 @@ public class XyqbSessionContextHolder {
sessionStruct = getXSessionFromRedis(); sessionStruct = getXSessionFromRedis();
threadSession.set(sessionStruct); threadSession.set(sessionStruct);
} }
if(sessionStruct!=null && sessionStruct.getValues()!=null && sessionStruct.getValues().getLoginProperties()!=null){
sessionStruct.setStmsUserId(sessionStruct.getValues().getLoginProperties().getStmsUserId());
sessionStruct.setStmsUserName(sessionStruct.getValues().getLoginProperties().getStmsUserName());
}
return sessionStruct; return sessionStruct;
} }
public static SessionStruct initXSession() { public static SessionStruct initXSession() {
SessionStruct sessionStruct =threadSession.get(); SessionStruct sessionStruct = threadSession.get();
if (sessionStruct == null) { if (sessionStruct == null) {
sessionStruct = new SessionStruct(); sessionStruct = new SessionStruct();
...@@ -58,7 +64,7 @@ public class XyqbSessionContextHolder { ...@@ -58,7 +64,7 @@ public class XyqbSessionContextHolder {
sessionStruct.setScDeviceId(request.getHeader("scDeviceId")); sessionStruct.setScDeviceId(request.getHeader("scDeviceId"));
sessionStruct.setTerminal(request.getHeader("terminal")); sessionStruct.setTerminal(request.getHeader("terminal"));
threadSession.set(sessionStruct); threadSession.set(sessionStruct);
}else{ } else {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//如果是极验,那赋值 //如果是极验,那赋值
...@@ -70,7 +76,7 @@ public class XyqbSessionContextHolder { ...@@ -70,7 +76,7 @@ public class XyqbSessionContextHolder {
return sessionStruct; return sessionStruct;
} }
public static SessionStruct initSTMSSession(String token,String userId, String userName) { public static SessionStruct initSTMSSession(String token, String userId, String userName) {
SessionStruct sessionStruct = threadSession.get(); SessionStruct sessionStruct = threadSession.get();
if (sessionStruct == null) { if (sessionStruct == null) {
...@@ -92,6 +98,16 @@ public class XyqbSessionContextHolder { ...@@ -92,6 +98,16 @@ public class XyqbSessionContextHolder {
sessionStruct.setStmsUserId(userId); sessionStruct.setStmsUserId(userId);
sessionStruct.setStmsUserName(userName); sessionStruct.setStmsUserName(userName);
} }
SessionValue sessionValue = sessionStruct.getValues();
if (sessionValue == null) {
sessionValue = new SessionValue();
LoginProperties loginProperties = new LoginProperties();
loginProperties.setStmsUserId(userId);
loginProperties.setStmsUserName(userName);
sessionValue.setLoginProperties(loginProperties);
}
sessionStruct.setValues(sessionValue);
return sessionStruct; return sessionStruct;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment