|
|
@ -4,6 +4,7 @@ import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper;
|
|
|
|
import au.com.royalpay.payment.manage.signin.beans.LoginInfo;
|
|
|
|
import au.com.royalpay.payment.manage.signin.beans.LoginInfo;
|
|
|
|
import au.com.royalpay.payment.manage.signin.core.SignInAccountService;
|
|
|
|
import au.com.royalpay.payment.manage.signin.core.SignInAccountService;
|
|
|
|
import au.com.royalpay.payment.manage.signin.core.SignInStatusManager;
|
|
|
|
import au.com.royalpay.payment.manage.signin.core.SignInStatusManager;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpClient;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpClientAppWechatApiProvider;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpClientAppWechatApiProvider;
|
|
|
|
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
|
|
|
|
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
|
|
@ -37,7 +38,6 @@ public class SignInStatusManagerImpl implements SignInStatusManager {
|
|
|
|
private MpClientAppWechatApiProvider mpClientAppWechatApiProvider;
|
|
|
|
private MpClientAppWechatApiProvider mpClientAppWechatApiProvider;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private ClientAccountMapper clientAccountMapper;
|
|
|
|
private ClientAccountMapper clientAccountMapper;
|
|
|
|
|
|
|
|
|
|
|
|
private final String CLIENT_LOGIN_WECHAT_BIND_PREFIX = "CLIENT_LOGIN_WECHAT_BIND_PREFIX";
|
|
|
|
private final String CLIENT_LOGIN_WECHAT_BIND_PREFIX = "CLIENT_LOGIN_WECHAT_BIND_PREFIX";
|
|
|
|
private final String CLIENT_LOGIN_PHONE_BIND_PREFIX = "CLIENT_LOGIN_PHONE_BIND_PREFIX";
|
|
|
|
private final String CLIENT_LOGIN_PHONE_BIND_PREFIX = "CLIENT_LOGIN_PHONE_BIND_PREFIX";
|
|
|
|
|
|
|
|
|
|
|
@ -388,12 +388,14 @@ public class SignInStatusManagerImpl implements SignInStatusManager {
|
|
|
|
String openId = user.getString("openid");
|
|
|
|
String openId = user.getString("openid");
|
|
|
|
JSONObject account = signInAccountService.clientWechatOneSignIn(openId);
|
|
|
|
JSONObject account = signInAccountService.clientWechatOneSignIn(openId);
|
|
|
|
if (account == null) {
|
|
|
|
if (account == null) {
|
|
|
|
|
|
|
|
JSONObject wechatUserInfo = mpClientAppWechatApiProvider.getApi("merchant-app").appUserInfo(openId,user.getString("access_token"));
|
|
|
|
JSONObject res = new JSONObject();
|
|
|
|
JSONObject res = new JSONObject();
|
|
|
|
|
|
|
|
String nickName = wechatUserInfo.getString("nickname");
|
|
|
|
res.put("bind_status", false);
|
|
|
|
res.put("bind_status", false);
|
|
|
|
res.put("app_openid", openId);
|
|
|
|
res.put("app_openid", openId);
|
|
|
|
res.put("status", "success");
|
|
|
|
res.put("status", "success");
|
|
|
|
String expireMin = "5";
|
|
|
|
String expireMin = "5";
|
|
|
|
stringRedisTemplate.boundValueOps(getClientLoginWechatBindRedisKey(openId,ip)).set(openId, Long.parseLong(expireMin), TimeUnit.MINUTES);
|
|
|
|
stringRedisTemplate.boundValueOps(getClientLoginWechatBindRedisKey(openId,ip)).set(openId+"&"+nickName, Long.parseLong(expireMin), TimeUnit.MINUTES);
|
|
|
|
return res;
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String statusKey = newStatusKey();
|
|
|
|
String statusKey = newStatusKey();
|
|
|
@ -413,14 +415,16 @@ public class SignInStatusManagerImpl implements SignInStatusManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void verifyClientLoginWechatBindCode(String openId,String ip){
|
|
|
|
public String verifyClientLoginWechatBindCode(String openId,String ip){
|
|
|
|
String rediskey = getClientLoginWechatBindRedisKey(openId,ip);
|
|
|
|
String rediskey = getClientLoginWechatBindRedisKey(openId,ip);
|
|
|
|
String codeValue = stringRedisTemplate.boundValueOps(rediskey).get();
|
|
|
|
String codeValue = stringRedisTemplate.boundValueOps(rediskey).get();
|
|
|
|
if (codeValue == null || !codeValue.equals(openId)) {
|
|
|
|
if (codeValue == null || !codeValue.split("&")[0].equals(openId)) {
|
|
|
|
throw new BadRequestException("The WeChat ID does not apply for binding");
|
|
|
|
throw new BadRequestException("The WeChat ID does not apply for binding");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String nickName = codeValue.split("&")[1];
|
|
|
|
stringRedisTemplate.delete(rediskey);
|
|
|
|
stringRedisTemplate.delete(rediskey);
|
|
|
|
|
|
|
|
return nickName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private String getClientLoginPhoneBindRedisKey(String phone,String nationCode,String ip){
|
|
|
|
private String getClientLoginPhoneBindRedisKey(String phone,String nationCode,String ip){
|
|
|
|