统一登录

This commit is contained in:
huxin 2025-04-03 20:17:20 +08:00
parent 1ce183b8b0
commit f5d127fe66
1 changed files with 130 additions and 0 deletions

View File

@ -0,0 +1,130 @@
package com.dkl.web.controller.system;
import com.alibaba.fastjson2.JSON;
import com.dkl.common.constant.Constants;
import com.dkl.common.core.domain.AjaxResult;
import com.dkl.common.core.domain.entity.SysDept;
import com.dkl.common.core.domain.entity.SysUser;
import com.dkl.common.core.domain.model.LoginUser;
import com.dkl.common.core.redis.RedisCache;
import com.dkl.common.utils.SecurityUtils;
import com.dkl.common.utils.StringUtils;
import com.dkl.framework.web.service.SysLoginService;
import com.dkl.framework.web.service.SysPermissionService;
import com.dkl.system.service.ISysDeptService;
import com.dkl.system.service.ISysRoleService;
import com.dkl.system.service.ISysUserService;
import com.smartlx.sso.client.model.AccessToken;
import com.smartlx.sso.client.model.RemoteUserInfo;
import com.smartlx.sso.client.result.Result;
import com.smartlx.sso.client.service.SsoClientService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import static com.dkl.common.core.domain.AjaxResult.error;
import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user;
/**
* 单点登录Controller
* @author sgc
*/
@Slf4j
@RestController
public class LoginSsoController {
@Value("${outData.clientId}")
String clientIds;
@Value("${outData.clientSecret}")
String clientSecret;
@Value("${outData.url}")
String outUrl;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysDeptService deptService;
@Autowired
private ISysUserService userService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private SsoClientService ssoClientService;
@Autowired
private SysLoginService loginService;
@Autowired
private RedisCache redisCache;
@PostMapping("/loginSso")
public AjaxResult loginSso(String code) {
AjaxResult ajax = AjaxResult.success();
RemoteUserInfo remoteUserInfo = null;
try{
Result result =ssoClientService.getAccessToken(code);
if (result.isSuccess()) {
AccessToken accessToken = (AccessToken) result.getData();
remoteUserInfo =ssoClientService.getRemoteUserInfo(accessToken);
//获取手机号
String phone = remoteUserInfo.getYddh();
//通过手机号查询用户
SysUser sysUser = userService.selectUserByphone(phone);
if(sysUser!=null){
sysUser.setUserName(remoteUserInfo.getXm());
sysUser.setNickName(remoteUserInfo.getYhm());
SysUser user = new SysUser();
user.setUserId(sysUser.getUserId());
user.setUserName(remoteUserInfo.getXm());
user.setNickName(remoteUserInfo.getYhm());
userService.updateUserProfile(user);
redisCache.deleteObject(sysUser.getPhonenumber());
redisCache.setCacheObject(sysUser.getPhonenumber(), accessToken.getAccess_token());
System.out.println(remoteUserInfo.getYddh());
String token = loginService.logingcy(sysUser); // 调用服务层生成Token
return AjaxResult.success().put(Constants.TOKEN, token);
}else{
log.info("进入没查询到用户");
SysUser user = new SysUser();
log.info(remoteUserInfo.getYhm());
user.setUserName(remoteUserInfo.getXm());
user.setNickName(remoteUserInfo.getYhm());
log.info(remoteUserInfo.getYddh());
user.setPhonenumber(remoteUserInfo.getYddh());
user.setStatus("0");
SysDept sysDept = deptService.selectDeptBysjgajgjgdm(remoteUserInfo.getGajgjgdm());
// if (sysDept!=null){
// user.setDeptId(sysDept.getDeptId());
// }else {
// user.setDeptId(10106L);
// }
user.setDeptId(10106L);
user.setRoleIds(new Long[]{2L});
user.setCreateBy("三方");
user.setCreateTime(new Date());
user.setPassword(SecurityUtils.encryptPassword("Syj!123456"));
log.info(user.toString());
userService.insertUser(user);
redisCache.deleteObject(sysUser.getPhonenumber());
redisCache.setCacheObject(user.getPhonenumber(), accessToken.getAccess_token());
System.out.println(remoteUserInfo.getYddh());
String token = loginService.logingcy(user); // 调用服务层生成Token
return AjaxResult.success().put(Constants.TOKEN, token);
}
}
} catch (Exception e) {
return error();
}
return ajax;
}
}