|
@@ -16,6 +16,7 @@ import info.aspirecn.cloud.yysj.cloudyysjlogin.mapper.YysjUserMapper;
|
|
import info.aspirecn.cloud.yysj.cloudyysjlogin.service.CreatUserService;
|
|
import info.aspirecn.cloud.yysj.cloudyysjlogin.service.CreatUserService;
|
|
import info.aspirecn.cloud.yysj.cloudyysjlogin.service.LoginTokenService;
|
|
import info.aspirecn.cloud.yysj.cloudyysjlogin.service.LoginTokenService;
|
|
import info.aspirecn.cloud.yysj.cloudyysjlogin.utils.JwtUtils;
|
|
import info.aspirecn.cloud.yysj.cloudyysjlogin.utils.JwtUtils;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import net.sf.json.JSONObject;
|
|
import net.sf.json.JSONObject;
|
|
import net.sf.json.xml.XMLSerializer;
|
|
import net.sf.json.xml.XMLSerializer;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
@@ -39,7 +40,7 @@ import java.util.concurrent.TimeUnit;
|
|
* return 加密的token
|
|
* return 加密的token
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
-
|
|
|
|
|
|
+@Slf4j
|
|
public class LoginTokenServiceImpl implements LoginTokenService {
|
|
public class LoginTokenServiceImpl implements LoginTokenService {
|
|
public static final String NO_VALUE = "null";
|
|
public static final String NO_VALUE = "null";
|
|
@Autowired
|
|
@Autowired
|
|
@@ -82,6 +83,9 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
|
|
|
|
@Value(("${yysj.redis.prefix}"))
|
|
@Value(("${yysj.redis.prefix}"))
|
|
private String prefix;
|
|
private String prefix;
|
|
|
|
+
|
|
|
|
+ @Value(("${yysj.rsaKey}"))
|
|
|
|
+ private String rsaKey;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -93,23 +97,28 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public String getLoginToken(GetTokenRequest getTokenRequest) throws Exception {
|
|
public String getLoginToken(GetTokenRequest getTokenRequest) throws Exception {
|
|
|
|
+
|
|
|
|
+ //解密用户名和密码 add by minmin 2020-09-16
|
|
|
|
+ String userId = JwtUtils.rsaDecrypt(getTokenRequest.getUserId(), rsaKey);
|
|
|
|
+ String password = JwtUtils.rsaDecrypt(getTokenRequest.getPassword(), rsaKey);
|
|
|
|
+
|
|
//国家物流平台验证用户是否存在
|
|
//国家物流平台验证用户是否存在
|
|
- String token = getTokenFromPlatform(getTokenRequest.getUserId(), getTokenRequest.getPassword());
|
|
|
|
|
|
+ String token = getTokenFromPlatform(userId, password);
|
|
//判断token是否有值,没值代表用户名密码远端验证不通过
|
|
//判断token是否有值,没值代表用户名密码远端验证不通过
|
|
if (NO_VALUE.equals(token)) {
|
|
if (NO_VALUE.equals(token)) {
|
|
throw new UserNotExistException("用户不存在");
|
|
throw new UserNotExistException("用户不存在");
|
|
}
|
|
}
|
|
//查询本地库是否有用户信息
|
|
//查询本地库是否有用户信息
|
|
- int count = yysjUserMapper.selectCount((new QueryWrapper<YysjUser>().eq("userId", getTokenRequest.getUserId())));
|
|
|
|
|
|
+ int count = yysjUserMapper.selectCount((new QueryWrapper<YysjUser>().eq("userId", userId)));
|
|
//如果本地库不存在
|
|
//如果本地库不存在
|
|
if (count == 0) {
|
|
if (count == 0) {
|
|
//去出数据交互创建用户,并获取appId和secret放在map中
|
|
//去出数据交互创建用户,并获取appId和secret放在map中
|
|
- Map<String, Object> sjjhUserInfoLists = userInfoFromSjjh(getTokenRequest.getUserId());
|
|
|
|
|
|
+ Map<String, Object> sjjhUserInfoLists = userInfoFromSjjh(userId);
|
|
//去国家物流平台获取用户信息得到username
|
|
//去国家物流平台获取用户信息得到username
|
|
- String username = userInfoFromLogisticsPlatform(getTokenRequest.getUserId(), token);
|
|
|
|
|
|
+ String username = userInfoFromLogisticsPlatform(userId, token);
|
|
//将数据加载到本地库实体类中
|
|
//将数据加载到本地库实体类中
|
|
YysjUser user = new YysjUser();
|
|
YysjUser user = new YysjUser();
|
|
- user.setUserId(getTokenRequest.getUserId());
|
|
|
|
|
|
+ user.setUserId(userId);
|
|
user.setAppId(String.valueOf(sjjhUserInfoLists.get("appId")));
|
|
user.setAppId(String.valueOf(sjjhUserInfoLists.get("appId")));
|
|
user.setSecret(String.valueOf(sjjhUserInfoLists.get("secret")));
|
|
user.setSecret(String.valueOf(sjjhUserInfoLists.get("secret")));
|
|
user.setSjjhUserId(Integer.parseInt(String.valueOf(sjjhUserInfoLists.get("sjjhUserId"))));
|
|
user.setSjjhUserId(Integer.parseInt(String.valueOf(sjjhUserInfoLists.get("sjjhUserId"))));
|
|
@@ -117,8 +126,7 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
//将数据存到到本地库
|
|
//将数据存到到本地库
|
|
yysjUserMapper.insert(user);
|
|
yysjUserMapper.insert(user);
|
|
}
|
|
}
|
|
- //将userid通过jwt加密成token
|
|
|
|
- String userId = getTokenRequest.getUserId();
|
|
|
|
|
|
+
|
|
String tokens;
|
|
String tokens;
|
|
tokens = encipherUserId(userId);
|
|
tokens = encipherUserId(userId);
|
|
//将用户名存在redis中
|
|
//将用户名存在redis中
|
|
@@ -140,12 +148,16 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
SslUtils.ignoreSsl();
|
|
SslUtils.ignoreSsl();
|
|
/* 从国家物流平台获取token的请求参数列表 */
|
|
/* 从国家物流平台获取token的请求参数列表 */
|
|
Map<String, String> params = new HashMap<>();
|
|
Map<String, String> params = new HashMap<>();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
//添加参数
|
|
//添加参数
|
|
params.put("userid", userId);
|
|
params.put("userid", userId);
|
|
params.put("password", password);
|
|
params.put("password", password);
|
|
params.put("resource", resource);
|
|
params.put("resource", resource);
|
|
//调接口获取数据
|
|
//调接口获取数据
|
|
String remoteResult = restTemplate.getForEntity(logisticsPlatformTokenUrl, String.class, params).getBody();
|
|
String remoteResult = restTemplate.getForEntity(logisticsPlatformTokenUrl, String.class, params).getBody();
|
|
|
|
+ log.info("remoteResult:{}",remoteResult);
|
|
if (StringUtils.isEmpty(remoteResult)) {
|
|
if (StringUtils.isEmpty(remoteResult)) {
|
|
throw new SystemBusyException("国家物流平台验证token失败");
|
|
throw new SystemBusyException("国家物流平台验证token失败");
|
|
}
|
|
}
|
|
@@ -247,6 +259,7 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
ResponseEntity<String> responseEntity = restTemplate.postForEntity(userInfoUrl, requestEntity, String.class);
|
|
ResponseEntity<String> responseEntity = restTemplate.postForEntity(userInfoUrl, requestEntity, String.class);
|
|
/* 获取返回的xml格式body的字符串 */
|
|
/* 获取返回的xml格式body的字符串 */
|
|
String xmlbody = responseEntity.getBody();
|
|
String xmlbody = responseEntity.getBody();
|
|
|
|
+ log.info("xmlbody:{}",xmlbody);
|
|
return convert(xmlbody);
|
|
return convert(xmlbody);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -257,6 +270,7 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
* @return String
|
|
* @return String
|
|
*/
|
|
*/
|
|
private static String convert(String xmlbody) {
|
|
private static String convert(String xmlbody) {
|
|
|
|
+
|
|
//将xml字符串转换为json格式
|
|
//将xml字符串转换为json格式
|
|
XMLSerializer xmlSerializer = new XMLSerializer();
|
|
XMLSerializer xmlSerializer = new XMLSerializer();
|
|
String resutStr = xmlSerializer.read(xmlbody).toString();
|
|
String resutStr = xmlSerializer.read(xmlbody).toString();
|
|
@@ -277,4 +291,19 @@ public class LoginTokenServiceImpl implements LoginTokenService {
|
|
return searchResultList.get("cn").toString();
|
|
return searchResultList.get("cn").toString();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ StringBuffer xmlString = new StringBuffer();
|
|
|
|
+ xmlString.append("<?xml version=\"1.0\" encoding=\"utf-16\"?>")
|
|
|
|
+ .append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">")
|
|
|
|
+ .append("<soap:Body>")
|
|
|
|
+ .append("<userGeneralQuery xmlns=\"http://client.ws.logink.org/SearchService\">")
|
|
|
|
+ .append("<applicantToken xmlns=\"\">" + "1111" + "</applicantToken>")
|
|
|
|
+ .append(" <username xmlns=\"\"></username>")
|
|
|
|
+ .append(" <userid xmlns=\"\">" + "11" + "</userid>\"")
|
|
|
|
+ .append(" </userGeneralQuery>")
|
|
|
|
+ .append(" </soap:Body>")
|
|
|
|
+ .append("</soap:Envelope>");
|
|
|
|
+ System.out.println(xmlString.toString());
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|