diff --git a/Dkl-Vue-master/dkl-admin/src/main/java/com/dkl/web/controller/system/LoginSsoController.java b/Dkl-Vue-master/dkl-admin/src/main/java/com/dkl/web/controller/system/LoginSsoController.java new file mode 100644 index 0000000..70be1a5 --- /dev/null +++ b/Dkl-Vue-master/dkl-admin/src/main/java/com/dkl/web/controller/system/LoginSsoController.java @@ -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; + } + + +}