From 7d488d9d122c728c21d2719dea363bc9a39cc617 Mon Sep 17 00:00:00 2001 From: sh Date: Mon, 17 Nov 2025 16:21:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=92=E8=81=94=E7=BD=91?= =?UTF-8?q?=E7=AB=AF=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=92=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/OauthLoginHlwService.java | 61 +++++++++++++++++-- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/OauthLoginHlwService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/OauthLoginHlwService.java index 4bdd148..b646575 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/OauthLoginHlwService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/OauthLoginHlwService.java @@ -24,6 +24,7 @@ import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.security.context.AuthenticationContextHolder; import com.ruoyi.system.service.ISysUserService; +import io.jsonwebtoken.lang.Collections; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -32,6 +33,7 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; import java.util.concurrent.TimeUnit; @Service @@ -109,13 +111,14 @@ public class OauthLoginHlwService { String cacheKey = REDIS_KEY_PORTAL_USER_MAPPING + idCard; String localUsername = redisCache.getCacheObject(cacheKey); if (StringUtils.isNotBlank(localUsername)) { + updateUserInfo(localUsername,wwTyInfo); return localUsername; } SysUser localUser=sysUserService.selectUserByIdCard(wwTyInfo.getIdno()); if (localUser == null) { // 本地无用户,自动创建 - localUser = createLocalUser(wwTyInfo); + localUser = createLocalUser(cacheKey,wwTyInfo); // 缓存门户UserID与本地用户名的映射(有效期1天,可调整) redisCache.setCacheObject(cacheKey, localUser.getUserName(), 1, TimeUnit.DAYS); return localUser.getUserName(); @@ -140,20 +143,20 @@ public class OauthLoginHlwService { /** * 自动创建本地用户 */ - private SysUser createLocalUser(WwTyInfo wwTyInfo) { + private SysUser createLocalUser(String localUsername,WwTyInfo wwTyInfo) { SysUser newUser = new SysUser(); switch (wwTyInfo.getUsertype()) { case "1"://个人 newUser.setNickName(wwTyInfo.getName()); newUser.setIdCard(wwTyInfo.getIdno()); newUser.setRoleIds(new Long[]{parseStringToLoing(StringUtil.SYS_QZZ)}); - newUser.setUserName(wwTyInfo.getName()); + newUser.setUserName(localUsername); break; default://单位 newUser.setNickName(wwTyInfo.getEnterprisename()); newUser.setIdCard(wwTyInfo.getEnterprisecode()); newUser.setRoleIds(new Long[]{parseStringToLoing(StringUtil.SYS_QY)}); - newUser.setUserName(wwTyInfo.getEnterprisename()); + newUser.setUserName(localUsername); //企业联系人->现根据社会信用代码查询企业信息 Company company=companyService.queryCodeCompany(wwTyInfo.getEnterprisecode()); if(company!=null){ @@ -241,4 +244,54 @@ public class OauthLoginHlwService { throw new ServiceException("OAuth 登录失败:" + e.getMessage()); } } + + /** + * 修改个人信息 + * @param localUsername + * @param wwTyInfo + */ + private void updateUserInfo(String localUsername,WwTyInfo wwTyInfo){ + SysUser sysUser=new SysUser(); + switch (wwTyInfo.getUsertype()){ + case "1": + sysUser.setNickName(wwTyInfo.getName()); + sysUser.setIdCard(wwTyInfo.getIdno()); + sysUser.setRoleIds(new Long[]{parseStringToLoing(StringUtil.SYS_QZZ)}); + break; + default: + sysUser.setNickName(wwTyInfo.getEnterprisename()); + sysUser.setIdCard(wwTyInfo.getEnterprisecode()); + sysUser.setRoleIds(new Long[]{parseStringToLoing(StringUtil.SYS_QY)}); + //企业联系人->现根据社会信用代码查询企业信息 + updateCompanyContact(wwTyInfo); + } + //查询用户角色 + sysUser.setUserName(localUsername); + //查询用户id + SysUser parmUser=sysUserService.selectUserByUserName(localUsername); + sysUser.setUserId(parmUser.getUserId()); + sysUserService.updateUser(sysUser); + } + + /** + * 修改联系人信息 + * @param wwTyInfo + */ + public void updateCompanyContact(WwTyInfo wwTyInfo){ + Company company=companyService.queryCodeCompany(wwTyInfo.getEnterprisecode()); + if(company!=null){ + CompanyContact parm=new CompanyContact(); + parm.setContactPerson(wwTyInfo.getContactperson()); + parm.setContactPersonPhone(wwTyInfo.getContactphone()); + parm.setCompanyId(company.getCompanyId()); + List companyContacts=companyContactService.getSelectList(parm); + if(Collections.isEmpty(companyContacts)){ + CompanyContact companyContact=new CompanyContact(); + companyContact.setContactPerson(wwTyInfo.getContactperson()); + companyContact.setContactPersonPhone(wwTyInfo.getContactphone()); + companyContact.setCompanyId(company.getCompanyId()); + companyContactService.insertContact(companyContact); + } + } + } } \ No newline at end of file