i皖送统一认证登录接口编写
This commit is contained in:
parent
387898a830
commit
8e91de1d1b
|
|
@ -78,11 +78,17 @@ public class TokenController {
|
|||
@Resource
|
||||
private RemoteConfigService configService;
|
||||
|
||||
@Value("${third-party-login.iws.appId}")
|
||||
private String iwsAppId;
|
||||
@Value("${third-party-login.iws.webAppId}")
|
||||
private String iwsWebAppId;
|
||||
|
||||
@Value("${third-party-login.iws.url}")
|
||||
private String iwsUrl;
|
||||
@Value("${third-party-login.iws.webUrl}")
|
||||
private String iwsWebUrl;
|
||||
|
||||
@Value("${third-party-login.iws.h5AppId}")
|
||||
private String iwsH5AppId;
|
||||
|
||||
@Value("${third-party-login.iws.h5Url}")
|
||||
private String iwsH5Url;
|
||||
|
||||
@PostMapping("isAdmin")
|
||||
public R<?> isAdmin(@RequestBody LoginBody form) {
|
||||
|
|
@ -154,68 +160,27 @@ public class TokenController {
|
|||
|
||||
/**
|
||||
* i皖送登录
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("iwsLogin")
|
||||
public R<?> iwsLogin(@RequestBody HttpServletRequest req) {
|
||||
public R<?> iwsLogin(@RequestBody LoginBody form) {
|
||||
//获取i皖送传过来的票据
|
||||
String ticket = req.getParameter("ticket");
|
||||
String ticket = form.getTicket();
|
||||
log.info("ticket=" + ticket);
|
||||
if (StringUtils.isNotEmpty(ticket)) {
|
||||
//获取系统标识,这里可以放到配置文件中
|
||||
//String appId = "ec3fce308fcc407a79e1f09938ba16ab";
|
||||
//调用i皖送平台进行认证获取用户信息
|
||||
//String url = "http://sgwpdm.ah.sgcc.com.cn/iws/workplat/auth/auth-by-ticket?ticket={ticket}&appId={appId}";
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("ticket", ticket);
|
||||
paramMap.put("appId", iwsAppId);
|
||||
ResponseEntity<String> authResponse = restTemplate.getForEntity(iwsUrl, String.class, paramMap);
|
||||
log.info("authResponse:" + authResponse.toString());
|
||||
if ("200".equals(authResponse.getStatusCode())){
|
||||
// 根据ResponseEntity<String> responseEntity对象,获取body部分,body为json格式字符串
|
||||
String content = authResponse.getBody();
|
||||
// 将json字符串转化为json对象
|
||||
JSONObject json = JSONObject.parseObject(content);
|
||||
// 取出data部分对象
|
||||
JSONObject data = json.getJSONObject("data");
|
||||
LoginUser loginUser = new LoginUser();
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserName(data.get("userName").toString());
|
||||
loginUser.setSysUser(sysUser);
|
||||
//通过用户名获取人员信息
|
||||
R<LoginUser> userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
|
||||
if (userResult.getData() == null || R.FAIL == userResult.getCode()) {
|
||||
log.info("登录用户不存在,进行创建----");
|
||||
RegisterBody registerBody = new RegisterBody();
|
||||
registerBody.setUsername(sysUser.getUserName());
|
||||
registerBody.setNickName(data.get("name").toString());
|
||||
registerBody.setMobile(data.get("mobile").toString());
|
||||
sysUser.setPassword(SecurityConstants.PASSWORD);
|
||||
//新用户注册
|
||||
try {
|
||||
sysLoginService.register(registerBody);
|
||||
//查询用户信息
|
||||
userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
|
||||
loginUser = userResult.getData();
|
||||
sysUser = loginUser.getSysUser();
|
||||
//初始化一个角色
|
||||
Long[] roleIds = new Long[5];
|
||||
// 将数组的第一个元素赋值为 2
|
||||
roleIds[0] = 2L;
|
||||
remoteUserService.insertAuthRole(sysUser.getUserId(),roleIds,SecurityConstants.INNER);
|
||||
}catch (Exception e){
|
||||
throw new ServiceException("登录失败,请稍后重试");
|
||||
}
|
||||
}else {
|
||||
loginUser = userResult.getData();
|
||||
sysUser = loginUser.getSysUser();
|
||||
}
|
||||
logService.saveLogin(sysUser.getUserName(), "登录", "登录成功", null, "成功");
|
||||
//生成系统token
|
||||
return R.ok(tokenService.createToken(loginUser));
|
||||
LoginUser loginUser = new LoginUser();
|
||||
SysUser sysUser = new SysUser();
|
||||
if (form.getSysType()!=null && "1".equals(form.getSysType())){
|
||||
sysLoginService.iwsH5Login(ticket,iwsH5AppId,iwsH5Url,loginUser,sysUser);
|
||||
} else if (form.getSysType()!=null && "0".equals(form.getSysType())) {
|
||||
sysLoginService.iwsWebLogin(ticket,iwsWebAppId,iwsWebUrl,loginUser,sysUser);
|
||||
}else {
|
||||
throw new ServiceException("登录失败,请稍后重试");
|
||||
}
|
||||
logService.saveLogin(sysUser.getUserName(), "登录", "登录成功", null, "成功");
|
||||
//生成系统token
|
||||
return R.ok(tokenService.createToken(loginUser));
|
||||
|
||||
}
|
||||
return R.fail("登录失败!");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,4 +38,13 @@ public class LoginBody {
|
|||
|
||||
private String mobileCodeType;
|
||||
|
||||
/**
|
||||
* i皖送使用的ticket
|
||||
*/
|
||||
private String ticket;
|
||||
|
||||
/**
|
||||
* i皖送登录方式 0:web端登录 1:H5登录
|
||||
*/
|
||||
private String sysType;
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.bonus.auth.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.bonus.auth.config.VerificationCodeType;
|
||||
import com.bonus.auth.factory.VerificationCodeStrategyFactory;
|
||||
import com.bonus.auth.form.RegisterBody;
|
||||
|
|
@ -17,16 +18,22 @@ import com.bonus.system.api.RemoteUserService;
|
|||
import com.bonus.system.api.domain.SysUser;
|
||||
import com.bonus.system.api.model.LoginUser;
|
||||
import com.hankcs.hanlp.HanLP;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 登录校验方法
|
||||
* 提供登录、注册、验证码获取等服务
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class SysLoginService {
|
||||
@Autowired
|
||||
private RemoteUserService remoteUserService;
|
||||
|
|
@ -184,4 +191,99 @@ public class SysLoginService {
|
|||
return pinyin;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* i皖送Web端登录
|
||||
* @param ticket
|
||||
* @param iwsWebAppId
|
||||
* @param iwsWebUrl
|
||||
* @return
|
||||
*/
|
||||
public void iwsWebLogin(String ticket, String iwsWebAppId, String iwsWebUrl,LoginUser loginUser,SysUser sysUser) {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("ticket", ticket);
|
||||
paramMap.put("appId", iwsWebAppId);
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> authResponse = restTemplate.getForEntity(iwsWebUrl, String.class, paramMap);
|
||||
log.info("authResponse:" + authResponse.toString());
|
||||
if ("200".equals(authResponse.getStatusCode())){
|
||||
// 根据ResponseEntity<String> responseEntity对象,获取body部分,body为json格式字符串
|
||||
String content = authResponse.getBody();
|
||||
// 将json字符串转化为json对象
|
||||
JSONObject json = JSONObject.parseObject(content);
|
||||
// 取出data部分对象
|
||||
JSONObject data = json.getJSONObject("data");
|
||||
sysUser.setUserName(data.get("userName").toString());
|
||||
sysUser.setNickName(data.get("name").toString());
|
||||
sysUser.setPhonenumber(data.get("mobile").toString());
|
||||
loginUser.setSysUser(sysUser);
|
||||
createUser(sysUser,loginUser);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 先查,如果没有进行创建
|
||||
* @param sysUser
|
||||
* @param loginUser
|
||||
*/
|
||||
private void createUser(SysUser sysUser, LoginUser loginUser) {
|
||||
//通过用户名获取人员信息
|
||||
R<LoginUser> userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
|
||||
if (userResult.getData() == null || R.FAIL == userResult.getCode()) {
|
||||
log.info("登录用户不存在,进行创建----");
|
||||
RegisterBody registerBody = new RegisterBody();
|
||||
registerBody.setUsername(sysUser.getUserName());
|
||||
registerBody.setNickName(sysUser.getNickName());
|
||||
registerBody.setMobile(sysUser.getPhonenumber());
|
||||
sysUser.setPassword(SecurityConstants.PASSWORD);
|
||||
//新用户注册
|
||||
try {
|
||||
register(registerBody);
|
||||
//查询用户信息
|
||||
userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
|
||||
loginUser = userResult.getData();
|
||||
sysUser = loginUser.getSysUser();
|
||||
//初始化一个角色
|
||||
Long[] roleIds = new Long[5];
|
||||
// 将数组的第一个元素赋值为 2
|
||||
roleIds[0] = 2L;
|
||||
remoteUserService.insertAuthRole(sysUser.getUserId(),roleIds,SecurityConstants.INNER);
|
||||
}catch (Exception e){
|
||||
throw new ServiceException("登录失败,请稍后重试");
|
||||
}
|
||||
}else {
|
||||
loginUser = userResult.getData();
|
||||
sysUser = loginUser.getSysUser();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* i皖送H5端登录
|
||||
* @param ticket
|
||||
* @param iwsH5AppId
|
||||
* @param iwsH5Url
|
||||
* @return
|
||||
*/
|
||||
public void iwsH5Login(String ticket, String iwsH5AppId, String iwsH5Url,LoginUser loginUser,SysUser sysUser) {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("ticket", ticket);
|
||||
paramMap.put("appId", iwsH5AppId);
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> authResponse = restTemplate.getForEntity(iwsH5Url, String.class, paramMap);
|
||||
log.info("authResponse:" + authResponse.toString());
|
||||
if ("200".equals(authResponse.getStatusCode())){
|
||||
// 根据ResponseEntity<String> responseEntity对象,获取body部分,body为json格式字符串
|
||||
String content = authResponse.getBody();
|
||||
// 将json字符串转化为json对象
|
||||
JSONObject json = JSONObject.parseObject(content);
|
||||
// 取出data部分对象
|
||||
JSONObject data = json.getJSONObject("data");
|
||||
JSONObject userInfo = data.getJSONObject("userInfo");
|
||||
sysUser.setUserName(userInfo.get("userName").toString());
|
||||
sysUser.setNickName(userInfo.get("name").toString());
|
||||
sysUser.setPhonenumber(userInfo.get("mobile").toString());
|
||||
loginUser.setSysUser(sysUser);
|
||||
createUser(sysUser,loginUser);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue