You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
4.7 KiB

3 years ago
package com.fr.plugin.web.hander;
import com.fr.base.ServerConfig;
import com.fr.decision.authority.data.User;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.decision.webservice.v10.login.LoginService;
import com.fr.json.JSONObject;
import com.fr.plugin.beans.MyUserBean;
import com.fr.plugin.config.YituanPri;
import com.fr.plugin.yt.MyUserSyncManager;
import com.fr.plugin.utils.MyUtils;
import com.fr.plugin.utils.WebUtils;
import com.fr.stable.StringUtils;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ScanLoginHandler extends BaseHttpHandler {
@Override
public RequestMethod getMethod() {
return null;
}
@Override
public String getPath() {
return "/yt/scan_login";
}
@Override
public boolean isPublic() {
return true;
}
@Override
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
String ticket = httpServletRequest.getParameter("ticket");
YituanPri instance = YituanPri.getInstance();
String secret = instance.getScanSecret();
String appId = instance.getScanId();
JSONObject jsonObject = new JSONObject();
String appAccessToken = WebUtils.getAppAccessToken(appId, secret);
if (!MyUtils.isLicenseAvailable()) {
jsonObject.put("status", -1);
jsonObject.put("message", "请购买授权后使用");
com.fr.web.utils.WebUtils.flushSuccessMessageAutoClose(httpServletRequest, httpServletResponse, jsonObject);
return;
}
if (StringUtils.isNotBlank(appAccessToken)) {
try {
LoginUserModel userInfo = WebUtils.getUserInfo(appId, appAccessToken, ticket);
if (userInfo != null) {
String openid = userInfo.getOpenid();
MyUserSyncManager userSyncManager = MyUserSyncManager.getInstance();
MyUserBean userBean = userSyncManager.getUserByOpenId(openid);
if (userBean == null) {
jsonObject.put("status", -1);
jsonObject.put("message", userInfo.getUsername() + "登陆成功,但是未绑定帆软系统用户");
com.fr.web.utils.WebUtils.flushSuccessMessageAutoClose(httpServletRequest, httpServletResponse, jsonObject);
return;
}
String fsUserName="";
String match = instance.getMatch();
if("1".equals(match)){//手机号
User byMobile = MyUserSyncManager.getFSUserByPhone(userBean.getPhone());
if (byMobile != null) {
fsUserName=byMobile.getUserName();
}
}else{
fsUserName=userBean.getFsUserName();
}
if (StringUtils.isBlank(fsUserName)) {
jsonObject.put("status", -1);
jsonObject.put("message", userInfo.getUsername() + "登陆成功,但是未绑定帆软系统用户");
com.fr.web.utils.WebUtils.flushSuccessMessageAutoClose(httpServletRequest, httpServletResponse, jsonObject);
return;
}
String callBack = httpServletRequest.getParameter("callBack");
LoginService.getInstance().login(httpServletRequest, httpServletResponse, fsUserName, "", "");
if (StringUtils.isNotBlank(callBack)) {
httpServletResponse.sendRedirect(callBack);
} else {
// jsonObject.put("status", 0);
// jsonObject.put("message", userInfo.getUsername() + "登陆成功, 绑定帆软系统用户" + userBean.getFsUserName());
String servletName = ServerConfig.getInstance().getServletName();
String url = instance.getUrl()+servletName;
httpServletResponse.sendRedirect(url);
// com.fr.web.utils.WebUtils.flushSuccessMessageAutoClose(httpServletRequest, httpServletResponse, jsonObject);
}
return;
}
} catch (Exception e) {
e.printStackTrace();
}
}
jsonObject.put("status", -1);
jsonObject.put("message", "登陆失败");
com.fr.web.utils.WebUtils.flushSuccessMessageAutoClose(httpServletRequest, httpServletResponse, jsonObject);
}
}