i皖送接入公司框架优化

This commit is contained in:
15856 2025-01-22 17:55:43 +08:00
parent 5dcf3cfc95
commit 56f48cef17
4 changed files with 53 additions and 29 deletions

View File

@ -169,15 +169,14 @@ public class TokenController {
log.info("ticket=" + ticket);
if (StringUtils.isNotEmpty(ticket)) {
LoginUser loginUser = new LoginUser();
SysUser sysUser = new SysUser();
if (form.getSysType()!=null && "1".equals(form.getSysType())){
sysLoginService.iwsH5Login(ticket,iwsH5AppId,iwsH5Url,loginUser,sysUser);
loginUser = sysLoginService.iwsH5Login(ticket,iwsH5AppId,iwsH5Url);
} else if (form.getSysType()!=null && "0".equals(form.getSysType())) {
sysLoginService.iwsWebLogin(ticket,iwsWebAppId,iwsWebUrl,loginUser,sysUser);
loginUser = sysLoginService.iwsWebLogin(ticket,iwsWebAppId,iwsWebUrl);
}else {
throw new ServiceException("登录失败,请稍后重试");
}
logService.saveLogin(sysUser.getUserName(), "登录", "登录成功", null, "成功");
logService.saveLogin(loginUser.getSysUser().getUserName(), "登录", "登录成功", null, "成功");
//生成系统token
return R.ok(tokenService.createToken(loginUser));

View File

@ -47,4 +47,8 @@ public class LoginBody {
* i皖送登录方式 0web端登录 1H5登录
*/
private String sysType;
/**
* i皖送登录数据库中没有用心信息的时候给个默认公司
*/
private Long deptId;
}

View File

@ -93,6 +93,7 @@ public class SysLoginService {
* @param registerBody 注册信息
*/
public void register(RegisterBody registerBody) {
log.info("开始进行注册===============");
long startTime = System.currentTimeMillis(); // 记录开始时间
String result = convertAndAppend(registerBody.getNickName(), registerBody.getMobile());
int contactType = getContactType(registerBody.getMobile());
@ -128,7 +129,7 @@ public class SysLoginService {
SysUser sysUser = new SysUser();
sysUser.setUserName(registerBody.getUsername());
sysUser.setNickName(registerBody.getNickName());
sysUser.setDeptId(registerBody.getDeptId());
if (systemConfig.getRegistersConfig().isApprovalStatus()){
sysUser.setApprovalStatus("0");
sysUser.setStatus("1");
@ -156,6 +157,7 @@ public class SysLoginService {
recordLogService.saveLogs(registerBody.getUsername(), startTime, "注册异常", e.getMessage(), null, "失败");
throw new ServiceException("注册失败,请稍后重试");
}
log.info("结束进行注册===============");
}
/**
@ -203,26 +205,30 @@ public class SysLoginService {
* @param iwsWebUrl
* @return
*/
public void iwsWebLogin(String ticket, String iwsWebAppId, String iwsWebUrl,LoginUser loginUser,SysUser sysUser) {
public LoginUser iwsWebLogin(String ticket, String iwsWebAppId, String iwsWebUrl) {
Map<String, Object> paramMap = new HashMap<>();
LoginUser loginUser = new LoginUser();
SysUser sysUser = new SysUser();
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");
if ("200".equals(json.getInteger("code").toString())){
sysUser.setUserName(data.get("userName").toString());
sysUser.setNickName(data.get("name").toString());
sysUser.setPhonenumber(data.get("mobile").toString());
loginUser.setSysUser(sysUser);
createUser(sysUser,loginUser);
loginUser = createUser(sysUser,loginUser);
}
return loginUser;
}
/**
@ -230,40 +236,51 @@ public class SysLoginService {
* @param sysUser
* @param loginUser
*/
private void createUser(SysUser sysUser, LoginUser loginUser) {
private LoginUser createUser(SysUser sysUser, LoginUser loginUser) {
//通过用户名获取人员信息
R<LoginUser> userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
LoginUser loginUserNew = new LoginUser();
SysUser sysUserNew = new SysUser();
String resultName = convertAndAppend(sysUser.getNickName(), sysUser.getPhonenumber());
R<LoginUser> userResult = remoteUserService.getUserInfo(resultName, 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());
registerBody.setDeptId(220L);
registerBody.setPassword("Bonus@Max2024");
//获取配置中的初始密码
AjaxResult result = configService.getConfigKey("sys.user.initPassword");
if (result.isSuccess())
if ("200".equals(result.get("code").toString()))
{
sysUser.setPassword(result.get("msg").toString());
registerBody.setPassword(result.get("msg").toString());
}
log.info("开始进行注册{}",registerBody);
//新用户注册
try {
register(registerBody);
log.info("注册成功!");
//查询用户信息
userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
loginUser = userResult.getData();
sysUser = loginUser.getSysUser();
userResult = remoteUserService.getUserInfo(resultName, SecurityConstants.INNER);
loginUserNew = userResult.getData();
sysUserNew = loginUserNew.getSysUser();
log.info("获取用户信息成功!{}",loginUserNew.getSysUser());
//初始化一个角色
Long[] roleIds = new Long[5];
// 将数组的第一个元素赋值为 2
roleIds[0] = 2L;
remoteUserService.insertAuthRole(sysUser.getUserId(),roleIds,SecurityConstants.INNER);
log.info("开始绑定角色信息{}",roleIds);
remoteUserService.insertAuthRole(sysUserNew.getUserId(),roleIds,SecurityConstants.INNER);
log.info("角色信息绑定成功!");
}catch (Exception e){
throw new ServiceException("登录失败,请稍后重试");
}
}else {
loginUser = userResult.getData();
sysUser = loginUser.getSysUser();
loginUserNew = userResult.getData();
}
return loginUserNew;
}
/**
@ -273,8 +290,10 @@ public class SysLoginService {
* @param iwsH5Url
* @return
*/
public void iwsH5Login(String ticket, String iwsH5AppId, String iwsH5Url,LoginUser loginUser,SysUser sysUser) {
public LoginUser iwsH5Login(String ticket, String iwsH5AppId, String iwsH5Url) {
Map<String, Object> paramMap = new HashMap<>();
LoginUser loginUser = new LoginUser();
SysUser sysUser = new SysUser();
paramMap.put("ticket", ticket);
paramMap.put("appId", iwsH5AppId);
RestTemplate restTemplate = new RestTemplate();
@ -292,7 +311,8 @@ public class SysLoginService {
sysUser.setNickName(userInfo.get("name").toString());
sysUser.setPhonenumber(userInfo.get("mobile").toString());
loginUser.setSysUser(sysUser);
createUser(sysUser,loginUser);
}
loginUser = createUser(sysUser,loginUser);
}
return loginUser;
}
}

View File

@ -96,6 +96,7 @@
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
left join sys_dept sd on r.company_id = sd.dept_id
</sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
@ -217,7 +218,7 @@
</select>
<select id="selectUserByPhoneNumber" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.del_flag = '0'AND u.phonenumber = #{phoneNumber}
where u.del_flag = '0'AND u.phonenumber = #{phoneNumber} AND sd.del_flag = '0' AND sd.status = '0'
</select>
<select id="selectUserByEmail" resultMap="SysUserResult">
<include refid="selectUserVo"/>