mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-01 02:38:43 +08:00 
			
		
		
		
	code review 用户前台的社交登陆
This commit is contained in:
		| @@ -75,6 +75,7 @@ public class SysAuthServiceImpl implements SysAuthService { | |||||||
|     @Resource |     @Resource | ||||||
|     private SysSocialService socialService; |     private SysSocialService socialService; | ||||||
|  |  | ||||||
|  |     // TODO @timfruit:静态枚举类,需要都大写,例如说 USER_TYPE_ENUM;静态变量,放在普通变量前面;这个实践不错哈。 | ||||||
|     private static final UserTypeEnum userTypeEnum = UserTypeEnum.ADMIN; |     private static final UserTypeEnum userTypeEnum = UserTypeEnum.ADMIN; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -214,7 +215,6 @@ public class SysAuthServiceImpl implements SysAuthService { | |||||||
|  |  | ||||||
|         // 创建 LoginUser 对象 |         // 创建 LoginUser 对象 | ||||||
|         LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); |         LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); | ||||||
|         // TODO 芋艿:需要改造下,增加各种登录方式 |  | ||||||
|         loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 |         loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 | ||||||
|  |  | ||||||
|         // 绑定社交用户(更新) |         // 绑定社交用户(更新) | ||||||
|   | |||||||
| @@ -86,11 +86,12 @@ | |||||||
|             <artifactId>guava</artifactId> |             <artifactId>guava</artifactId> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |  | ||||||
|  |         <!-- 三方云服务相关 --> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>com.xkcoding.justauth</groupId> |             <groupId>com.xkcoding.justauth</groupId> | ||||||
|             <artifactId>justauth-spring-boot-starter</artifactId> |             <artifactId>justauth-spring-boot-starter</artifactId> | ||||||
|             <version>1.4.0</version> |  | ||||||
|         </dependency> |         </dependency> | ||||||
|  |  | ||||||
|     </dependencies> |     </dependencies> | ||||||
|  |  | ||||||
| </project> | </project> | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper; | |||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|  | // TODO @timfruit:SysSocialUserCoreMapper 改名,方便区分 | ||||||
| @Mapper | @Mapper | ||||||
| public interface SysSocialUserMapper extends BaseMapperX<SysSocialUserDO> { | public interface SysSocialUserMapper extends BaseMapperX<SysSocialUserDO> { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,11 +19,11 @@ public interface SysRedisKeyCoreConstants { | |||||||
|             "login_user:%s", // 参数为 sessionId |             "login_user:%s", // 参数为 sessionId | ||||||
|             STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); |             STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); | ||||||
|  |  | ||||||
|     RedisKeyDefine SOCIAL_AUTH_USER = new RedisKeyDefine("社交的授权用户", |     RedisKeyDefine SOCIAL_AUTH_USER = new RedisKeyDefine("社交登陆的授权用户", | ||||||
|             "social_auth_user:%d:%s", // 参数为 type,code |             "social_auth_user:%d:%s", // 参数为 type,code | ||||||
|             STRING, AuthUser.class, Duration.ofDays(1)); |             STRING, AuthUser.class, Duration.ofDays(1)); | ||||||
|  |  | ||||||
|     RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交的 state", |     RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交登陆的 state", | ||||||
|             "social_auth_state:%s", // 参数为 state |             "social_auth_state:%s", // 参数为 state | ||||||
|             STRING, String.class, Duration.ofHours(24)); // 值为 state |             STRING, String.class, Duration.ofHours(24)); // 值为 state | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ import javax.annotation.Resource; | |||||||
|  |  | ||||||
| import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.SOCIAL_AUTH_USER; | import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.SOCIAL_AUTH_USER; | ||||||
|  |  | ||||||
|  | // TODO @timfruit,这里的 AuthUser 还是保留全路径,主要想体现出来,不是自己定义的 | ||||||
| /** | /** | ||||||
|  * 社交 {@link AuthUser} 的 RedisDAO |  * 社交 {@link AuthUser} 的 RedisDAO | ||||||
|  * |  * | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { | |||||||
|     GITEE(10, "GITEE"), // https://gitee.com/api/v5/oauth_doc#/ |     GITEE(10, "GITEE"), // https://gitee.com/api/v5/oauth_doc#/ | ||||||
|     DINGTALK(20, "DINGTALK"), // https://developers.dingtalk.com/document/app/obtain-identity-credentials |     DINGTALK(20, "DINGTALK"), // https://developers.dingtalk.com/document/app/obtain-identity-credentials | ||||||
|     WECHAT_ENTERPRISE(30, "WECHAT_ENTERPRISE"), // https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html |     WECHAT_ENTERPRISE(30, "WECHAT_ENTERPRISE"), // https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html | ||||||
|  |     // TODO @timfruit:微信平台,从 30 开始递增哈。另外,尽量不要出现,先 12,然后 11,有序,嘿嘿。 | ||||||
|     /** |     /** | ||||||
|      * 微信公众平台 - H5 |      * 微信公众平台 - H5 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ import java.util.List; | |||||||
|  * |  * | ||||||
|  * @author 芋道源码 |  * @author 芋道源码 | ||||||
|  */ |  */ | ||||||
|  | // TODO @timfruit:SysSocialCoreService 改名,方便区分 | ||||||
| public interface SysSocialService { | public interface SysSocialService { | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -77,5 +78,6 @@ public interface SysSocialService { | |||||||
|      * @param unionId 社交平台的 unionId |      * @param unionId 社交平台的 unionId | ||||||
|      */ |      */ | ||||||
|     void unbindSocialUser(Long userId, Integer type, String unionId,UserTypeEnum userTypeEnum); |     void unbindSocialUser(Long userId, Integer type, String unionId,UserTypeEnum userTypeEnum); | ||||||
|  |     // TODO @timfruit:逗号后面要有空格;缺少了 @userTypeEnum 的注释,都补充下哈。 | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -52,6 +52,7 @@ | |||||||
|         <aliyun-java-sdk-core.version>4.5.25</aliyun-java-sdk-core.version> |         <aliyun-java-sdk-core.version>4.5.25</aliyun-java-sdk-core.version> | ||||||
|         <aliyun-java-sdk-dysmsapi.version>2.1.0</aliyun-java-sdk-dysmsapi.version> |         <aliyun-java-sdk-dysmsapi.version>2.1.0</aliyun-java-sdk-dysmsapi.version> | ||||||
|         <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version> |         <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version> | ||||||
|  |         <justauth.version>1.4.0</justauth.version> | ||||||
|     </properties> |     </properties> | ||||||
|  |  | ||||||
|     <dependencyManagement> |     <dependencyManagement> | ||||||
| @@ -399,7 +400,6 @@ | |||||||
|                 <artifactId>yunpian-java-sdk</artifactId> |                 <artifactId>yunpian-java-sdk</artifactId> | ||||||
|                 <version>${yunpian-java-sdk.version}</version> |                 <version>${yunpian-java-sdk.version}</version> | ||||||
|             </dependency> |             </dependency> | ||||||
|  |  | ||||||
|             <dependency> |             <dependency> | ||||||
|                 <groupId>com.aliyun</groupId> |                 <groupId>com.aliyun</groupId> | ||||||
|                 <artifactId>aliyun-java-sdk-core</artifactId> |                 <artifactId>aliyun-java-sdk-core</artifactId> | ||||||
| @@ -421,6 +421,13 @@ | |||||||
|                 <version>${aliyun-java-sdk-dysmsapi.version}</version> |                 <version>${aliyun-java-sdk-dysmsapi.version}</version> | ||||||
|             </dependency> |             </dependency> | ||||||
|             <!-- SMS SDK end --> |             <!-- SMS SDK end --> | ||||||
|  |  | ||||||
|  |             <dependency> | ||||||
|  |                 <groupId>com.xkcoding.justauth</groupId> | ||||||
|  |                 <artifactId>justauth-spring-boot-starter</artifactId> <!-- 社交登陆(例如说,个人微信、企业微信等等) --> | ||||||
|  |                 <version>${justauth.version}</version> | ||||||
|  |             </dependency> | ||||||
|  |  | ||||||
|         </dependencies> |         </dependencies> | ||||||
|     </dependencyManagement> |     </dependencyManagement> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,7 +3,6 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth; | |||||||
| import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; | import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; | ||||||
| import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||||
| import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; |  | ||||||
| import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; | ||||||
| import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; | import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; | ||||||
| import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; | ||||||
| @@ -82,6 +81,7 @@ public class SysAuthController { | |||||||
|         return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri)); |         return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     // TODO @timfruit:这个接口,是要删除的么? | ||||||
|     @GetMapping("/social-login-get") |     @GetMapping("/social-login-get") | ||||||
|     @ApiOperation("微信公众号授权回调地址,输出social-login2的必要参数用于测试,使用 code 授权码") |     @ApiOperation("微信公众号授权回调地址,输出social-login2的必要参数用于测试,使用 code 授权码") | ||||||
|     @ResponseBody |     @ResponseBody | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; | |||||||
| import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||||
| import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | ||||||
| import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||||||
| import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; |  | ||||||
| import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | ||||||
| import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | ||||||
| import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | ||||||
| @@ -37,7 +36,6 @@ import org.springframework.stereotype.Service; | |||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
| import javax.validation.Valid; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
|  |  | ||||||
| @@ -130,8 +128,6 @@ public class SysAuthServiceImpl implements SysAuthService { | |||||||
|  |  | ||||||
|         // 创建 LoginUser 对象 |         // 创建 LoginUser 对象 | ||||||
|         LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); |         LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); | ||||||
|         // TODO 芋艿:需要改造下,增加各种登录方式 |  | ||||||
| //        loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 |  | ||||||
|  |  | ||||||
|         // 绑定社交用户(更新) |         // 绑定社交用户(更新) | ||||||
|         socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); |         socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); | ||||||
|   | |||||||
| @@ -142,7 +142,7 @@ yudao: | |||||||
|  |  | ||||||
| justauth: | justauth: | ||||||
|   enabled: true |   enabled: true | ||||||
|   type: |   type: # TODO @timfruit:GITEE、DINGTALK、WECHAT_ENTERPRISE 这个几个,对于用户端是不需要的哈,可以删除噢 | ||||||
|     GITEE: # Gitee |     GITEE: # Gitee | ||||||
|       client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1 |       client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1 | ||||||
|       client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9 |       client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV