已重命名1个文件
已删除1个文件
已修改13个文件
| | |
| | | |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-social</artifactId> |
| | | </dependency> |
| | | |
| | | |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-system</artifactId> |
| | | </dependency> |
| | | |
| | |
| | | <artifactId>spring-boot-starter-test</artifactId> |
| | | <scope>test</scope> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>me.zhyd.oauth</groupId> |
| | | <artifactId>JustAuth</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-social</artifactId> |
| | | <version>5.1.0-SNAPSHOT</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | |
| | | |
| | | <!-- skywalking æ´å logback --> |
| | | <!-- <dependency>--> |
| | |
| | | import cn.dev33.satoken.annotation.SaIgnore; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.json.JSON; |
| | | import cn.hutool.json.JSONUtil; |
| | | import jakarta.servlet.http.HttpServletRequest; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.RequiredArgsConstructor; |
| | | import me.zhyd.oauth.cache.AuthStateCache; |
| | | import me.zhyd.oauth.model.AuthCallback; |
| | | import me.zhyd.oauth.model.AuthResponse; |
| | | import me.zhyd.oauth.model.AuthUser; |
| | |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.social.config.SocialConfig; |
| | | import org.dromara.common.social.config.properties.ConfigProperties; |
| | | import org.dromara.common.social.config.properties.SocialLoginConfigProperties; |
| | | import org.dromara.common.social.config.properties.SocialProperties; |
| | | import org.dromara.common.social.utils.AuthRedisStateCache; |
| | | import org.dromara.common.social.utils.SocialUtils; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.system.domain.bo.SysTenantBo; |
| | |
| | | import java.io.IOException; |
| | | import java.net.URL; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * è®¤è¯ |
| | |
| | | { |
| | | return R.fail(source + "å¹³å°è´¦å·å·²ç»è¢«è´¦å·ç»å®"); |
| | | } |
| | | ConfigProperties obj = socialProperties.getType().get(source); |
| | | SocialLoginConfigProperties obj = socialProperties.getType().get(source); |
| | | if (ObjectUtil.isNull(obj)){ |
| | | return R.fail(source + "å¹³å°è´¦å·æä¸æ¯æ"); |
| | | } |
| | |
| | | @SuppressWarnings("unchecked") |
| | | @GetMapping("/social-login/{source}") |
| | | public R<String> socialLogin(@PathVariable("source") String source, AuthCallback callback, HttpServletRequest request) throws IOException { |
| | | ConfigProperties obj = socialProperties.getType().get(source); |
| | | SocialLoginConfigProperties obj = socialProperties.getType().get(source); |
| | | if (ObjectUtil.isNull(obj)){ |
| | | return R.fail(source + "å¹³å°è´¦å·æä¸æ¯æ"); |
| | | } |
| | |
| | | import org.dromara.system.service.ISysPermissionService; |
| | | import org.dromara.system.service.ISysTenantService; |
| | | import org.dromara.system.service.ISysUserService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | return R.fail("对ä¸èµ·ï¼ææä¿¡æ¯éªè¯ä¸éè¿ï¼è¯·éåºéè¯ï¼"); |
| | | } |
| | | AuthUser authUserData = authUser.getData(); |
| | | // æ¥è¯¢ç¤¾äº¤ç¨æ·ä¿¡æ¯ï¼å¤ææ¯å¦å·²ç»ç»å®ï¼å¦æå·²ç»ç»å®åç´æ¥ç»å½ï¼å¦åéªè¯æ¯å¦ç»å½ï¼æªç»å½åå
ç»å½åç»å® |
| | | SocialUserVo user = socialUserService.selectSocialUserByAuthId(source + authUserData.getUuid()); |
| | | String authId = source + authUserData.getUuid(); |
| | | |
| | | SocialUserVo user = socialUserService.selectSocialUserByAuthId(authId); |
| | | if (ObjectUtil.isNotNull(user)) { |
| | | checkTenant(user.getTenantId()); |
| | | SysUserVo dbUser = loadUserByUsername(user.getTenantId(), user.getUserName()); |
| | | LoginHelper.loginByDevice(buildLoginUser(dbUser), DeviceType.SOCIAL); |
| | | recordLogininfor(dbUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(user.getUserId()); |
| | | //æ§è¡ç»å½åè®°å½ç»å½ä¿¡æ¯æä½ |
| | | return loginAndRecord(user.getTenantId(), user.getUserName(), authUserData); |
| | | } else { |
| | | // 夿æ¯å¦å·²ç»å½ |
| | | if (LoginHelper.getUserId() == null) { |
| | | return R.fail("ææå¤±è´¥ï¼è¯·å
ç»å½åç»å®"); |
| | | } |
| | | SocialUserBo socialUserBo = new SocialUserBo(); |
| | | socialUserService.insertByBo(setAuthUserData(authUserData, socialUserBo)); |
| | | socialUserBo.setUserId(LoginHelper.getUserId()); |
| | | socialUserBo.setAuthId(authUserData.getSource() + authUserData.getUuid()); |
| | | socialUserBo.setSource(authUserData.getSource()); |
| | | socialUserBo.setUserName(authUserData.getUsername()); |
| | | socialUserBo.setNickName(authUserData.getNickname()); |
| | | socialUserBo.setAvatar(authUserData.getAvatar()); |
| | | socialUserBo.setOpenId(authUserData.getUuid()); |
| | | BeanUtils.copyProperties(authUserData, socialUserBo); |
| | | BeanUtils.copyProperties(authUserData.getToken(), socialUserBo); |
| | | |
| | | socialUserService.insertByBo(socialUserBo); |
| | | SysUserVo lodingData = loadUserByUsername(LoginHelper.getTenantId(), LoginHelper.getUsername()); |
| | | checkTenant(lodingData.getTenantId()); |
| | | LoginHelper.loginByDevice(buildLoginUser(lodingData), DeviceType.SOCIAL); |
| | | recordLogininfor(lodingData.getTenantId(), socialUserBo.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(socialUserBo.getUserId()); |
| | | //æ§è¡ç»å½åè®°å½ç»å½ä¿¡æ¯æä½ |
| | | return loginAndRecord(lodingData.getTenantId(), socialUserBo.getUserName(), authUserData); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ§è¡ç»å½åè®°å½ç»å½ä¿¡æ¯æä½ |
| | | * |
| | | * @param tenantId ç§æ·ID |
| | | * @param userName ç¨æ·å |
| | | * @param authUser ææç¨æ·ä¿¡æ¯ |
| | | * @return ç»ä¸ååºå®ä½ |
| | | */ |
| | | private R<String> loginAndRecord(String tenantId, String userName, AuthUser authUser) { |
| | | checkTenant(tenantId); |
| | | SysUserVo dbUser = loadUserByUsername(tenantId, userName); |
| | | LoginHelper.loginByDevice(buildLoginUser(dbUser), DeviceType.SOCIAL); |
| | | recordLogininfor(dbUser.getTenantId(), userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(dbUser.getUserId()); |
| | | return R.ok(StpUtil.getTokenValue()); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | public SocialUserBo setAuthUserData(AuthUser authUserData, SocialUserBo socialUser) { |
| | | socialUser.setUserId(LoginHelper.getUserId()); |
| | | socialUser.setAuthId(authUserData.getSource() + authUserData.getUuid()); |
| | | socialUser.setSource(authUserData.getSource()); |
| | | socialUser.setUserName(authUserData.getUsername()); |
| | | socialUser.setNickName(authUserData.getNickname()); |
| | | socialUser.setAvatar(authUserData.getAvatar()); |
| | | socialUser.setEmail(authUserData.getEmail()); |
| | | socialUser.setOpenId(authUserData.getUuid()); |
| | | socialUser.setAccessToken(authUserData.getToken().getAccessToken()); |
| | | socialUser.setExpireIn(authUserData.getToken().getExpireIn()); |
| | | socialUser.setRefreshToken(authUserData.getToken().getRefreshToken()); |
| | | socialUser.setAccessCode(authUserData.getToken().getAccessCode()); |
| | | socialUser.setUnionId(authUserData.getToken().getUnionId()); |
| | | socialUser.setScope(authUserData.getToken().getScope()); |
| | | socialUser.setTokenType(authUserData.getToken().getTokenType()); |
| | | socialUser.setIdToken(authUserData.getToken().getIdToken()); |
| | | socialUser.setMacAlgorithm(authUserData.getToken().getMacAlgorithm()); |
| | | socialUser.setMacKey(authUserData.getToken().getMacKey()); |
| | | socialUser.setCode(authUserData.getToken().getCode()); |
| | | socialUser.setOauthToken(authUserData.getToken().getOauthToken()); |
| | | socialUser.setOauthTokenSecret(authUserData.getToken().getOauthTokenSecret()); |
| | | return socialUser; |
| | | } |
| | | } |
| | |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-social</artifactId> |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- webæå¡ --> |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common</artifactId> |
| | | <version>${revision}</version> |
| | | <relativePath>../pom.xml</relativePath> |
| | | </parent> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <artifactId>ruoyi-common-social</artifactId> |
| | | |
| | | <description> |
| | | ruoyi-common-auth è®¤è¯æ¨¡å |
| | | ruoyi-common-social ææè®¤è¯ |
| | | </description> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>me.zhyd.oauth</groupId> |
| | | <artifactId>JustAuth</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-autoconfigure</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-redis</artifactId> |
| | |
| | | public class SocialConfig { |
| | | |
| | | @Bean |
| | | public AuthStateCache redis() { |
| | | public AuthStateCache authStateCache() { |
| | | return new AuthRedisStateCache(); |
| | | } |
| | | |
ÎļþÃû´Ó ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/properties/ConfigProperties.java ÐÞ¸Ä |
| | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ConfigProperties { |
| | | public class SocialLoginConfigProperties { |
| | | |
| | | /** |
| | | * åºç¨ ID |
| | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | private Map<String, ConfigProperties> type; |
| | | private Map<String, SocialLoginConfigProperties> type; |
| | | |
| | | /** |
| | | * ææè¿ææ¶é´ |
| | |
| | | |
| | | public class AuthRedisStateCache implements AuthStateCache { |
| | | |
| | | private final SocialProperties socialProperties; |
| | | private final RedisTemplate<String, String> redisTemplate; |
| | | |
| | | private ValueOperations<String, String> valueOperations; |
| | | |
| | | @PostConstruct |
| | | public void init() { |
| | | valueOperations = redisTemplate.opsForValue(); |
| | | } |
| | | |
| | | |
| | | public AuthRedisStateCache() { |
| | | this.socialProperties = new SocialProperties(); |
| | | redisTemplate = new RedisTemplate<>(); |
| | | } |
| | | private SocialProperties socialProperties; |
| | | |
| | | /** |
| | | * åå
¥ç¼å |
| | |
| | | AuthRequest authRequest = null; |
| | | switch (source.toLowerCase()) { |
| | | case "dingtalk" -> |
| | | authRequest = new AuthDingTalkRequest(AuthConfig.builder(). |
| | | clientId(clientId). |
| | | clientSecret(clientSecret) |
| | | .redirectUri(redirectUri). |
| | | build()); |
| | | authRequest = new AuthDingTalkRequest(AuthConfig.builder() |
| | | .clientId(clientId) |
| | | .clientSecret(clientSecret) |
| | | .redirectUri(redirectUri) |
| | | .build()); |
| | | case "baidu" -> |
| | | authRequest = new AuthBaiduRequest(AuthConfig.builder(). |
| | | clientId(clientId). |
| | | clientSecret(clientSecret) |
| | | .redirectUri(redirectUri). |
| | | build()); |
| | | authRequest = new AuthBaiduRequest(AuthConfig.builder() |
| | | .clientId(clientId) |
| | | .clientSecret(clientSecret) |
| | | .redirectUri(redirectUri) |
| | | .build()); |
| | | case "github" -> |
| | | authRequest = new AuthGithubRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret) |
| | | .redirectUri(redirectUri).build()); |
| | |
| | | public interface ISocialUserService { |
| | | |
| | | /** |
| | | * æ¥è¯¢ææå
³ç³» |
| | | */ |
| | | SocialUserVo queryById(Long id); |
| | | |
| | | /** |
| | | * æ¥è¯¢ææå表 |
| | | */ |
| | | TableDataInfo<SocialUserVo> queryPageList(SocialUserBo bo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢ææå表 |
| | | */ |
| | | List<SocialUserVo> queryList(SocialUserBo bo); |
| | | |
| | | /** |
| | | * æ°å¢ææå
³ç³» |
| | | */ |
| | | Boolean insertByBo(SocialUserBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹ææå
³ç³» |
| | | */ |
| | | Boolean updateByBo(SocialUserBo bo); |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤ç¤¾ä¼åå
³ç³»ä¿¡æ¯ |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
| | | |
| | | /** |
| | | * å é¤ç¤¾ä¼åå
³ç³»ä¿¡æ¯ |
| | |
| | | private final SocialUserMapper baseMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¤¾ä¼åå
³ç³» |
| | | */ |
| | | @Override |
| | | public SocialUserVo queryById(Long id) { |
| | | return baseMapper.selectVoById(id); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¤¾ä¼åå
³ç³»å表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<SocialUserVo> queryPageList(SocialUserBo bo, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<SocialUser> lqw = buildQueryWrapper(bo); |
| | | Page<SocialUserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
| | | return TableDataInfo.build(result); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¤¾ä¼åå
³ç³»å表 |
| | | */ |
| | | @Override |
| | | public List<SocialUserVo> queryList(SocialUserBo bo) { |
| | | LambdaQueryWrapper<SocialUser> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<SocialUser> buildQueryWrapper(SocialUserBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | LambdaQueryWrapper<SocialUser> lqw = Wrappers.lambdaQuery(); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getAuthId()), SocialUser::getAuthId, bo.getAuthId()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getSource()), SocialUser::getSource, bo.getSource()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getAccessToken()), SocialUser::getAccessToken, bo.getAccessToken()); |
| | | lqw.eq(bo.getExpireIn() != 0, SocialUser::getExpireIn, bo.getExpireIn()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getRefreshToken()), SocialUser::getRefreshToken, bo.getRefreshToken()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getOpenId()), SocialUser::getOpenId, bo.getOpenId()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getScope()), SocialUser::getScope, bo.getScope()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getAccessCode()), SocialUser::getAccessCode, bo.getAccessCode()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getUnionId()), SocialUser::getUnionId, bo.getUnionId()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getScope()), SocialUser::getScope, bo.getScope()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getTokenType()), SocialUser::getTokenType, bo.getTokenType()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getIdToken()), SocialUser::getIdToken, bo.getIdToken()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getMacAlgorithm()), SocialUser::getMacAlgorithm, bo.getMacAlgorithm()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getMacKey()), SocialUser::getMacKey, bo.getMacKey()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getCode()), SocialUser::getCode, bo.getCode()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getOauthToken()), SocialUser::getOauthToken, bo.getOauthToken()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getOauthTokenSecret()), SocialUser::getOauthTokenSecret, bo.getOauthTokenSecret()); |
| | | return lqw; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ç¤¾ä¼åå
³ç³» |
| | | */ |
| | | @Override |
| | |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ç¤¾ä¼åå
³ç³» |
| | | */ |
| | | @Override |
| | | public Boolean updateByBo(SocialUserBo bo) { |
| | | SocialUser update = MapstructUtils.convert(bo, SocialUser.class); |
| | | validEntityBeforeSave(update); |
| | | return baseMapper.updateById(update) > 0; |
| | | } |
| | | |
| | | /** |
| | | * ä¿ååçæ°æ®æ ¡éª |
| | |
| | | //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå é¤ç¤¾ä¼åå
³ç³» |
| | | */ |
| | | @Override |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
| | | if (isValid) { |
| | | //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª |
| | | } |
| | | return baseMapper.deleteBatchIds(ids) > 0; |
| | | } |
| | | |
| | | /** |
| | | * å é¤ç¤¾ä¼åå
³ç³» |
| | |
| | | <id property="id" column="id"/> |
| | | </resultMap> |
| | | |
| | | <sql id="selectSocialUser"> |
| | | select id, |
| | | user_id, |
| | | tenant_id, |
| | | auth_id, |
| | | source, |
| | | open_id, |
| | | access_token, |
| | | expire_in, |
| | | refresh_token, |
| | | access_code, |
| | | union_id, |
| | | scope, |
| | | token_type, |
| | | id_token, |
| | | mac_algorithm, |
| | | mac_key, |
| | | code, |
| | | oauth_token, |
| | | oauth_token_secret, |
| | | create_dept, |
| | | create_by, |
| | | create_time, |
| | | update_by, |
| | | update_time |
| | | from social_user |
| | | </sql> |
| | | |
| | | <!-- æ ¹æ®userIdæ¥è¯¢SocialUser表对åºuserIdçSysUserï¼è¿åSysUserBoç对象 --> |
| | | <select id="selectSocialUserByUserId" parameterType="String" resultMap="SocialUserAuthResult"> |
| | | select b.* |
| | | from social_user a |
| | | left join sys_user b on a.user_id = b.user_id |
| | | where a.user_id = #{userId} |
| | | </select> |
| | | |
| | | |
| | | <!-- æ ¹æ®authIdæ¥è¯¢SocialUser表åSysUser表ï¼è¿åSocialUserAuthResultæ å°ç对象 --> |
| | | <select id="selectSocialUserByAuthId" parameterType="String" resultMap="SocialUserAuthResult"> |
| | | select b.user_id as userId, |
| | | b.tenant_id as tenantId, |
| | | b.user_name as userName, |
| | | b.password as password, |
| | | a.auth_id as authId, |
| | | a.source as source |
| | | select b.user_id, |
| | | b.tenant_id, |
| | | b.user_name, |
| | | b.password, |
| | | a.auth_id, |
| | | a.source |
| | | from social_user a |
| | | left join sys_user b on a.user_id = b.user_id |
| | | left join sys_user b on a.user_id = b.user_id |
| | | where a.auth_id = #{authId} |
| | | </select> |
| | | |
| | | <!-- æ ¹æ®userIdåsourceæ¥è¯¢SocialUser表ï¼è¿åintç±»åçç»æ --> |
| | | <select id="checkSocialUser" parameterType="org.dromara.system.domain.vo.SocialUserVo" resultType="int"> |
| | | select count(*) |
| | | from social_user |
| | | where user_id = #{userId} and source = #{source} limit 1 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- ç¬¬ä¸æ¹å¹³å°ææè¡¨ |
| | | -- ---------------------------- |
| | | CREATE TABLE `social_user` |
| | | DROP TABLE IF EXISTS social_user; |
| | | CREATE TABLE social_user |
| | | ( |
| | | `id` bigint unsigned NOT NULL COMMENT '主é®', |
| | | `user_id` bigint NOT NULL COMMENT 'ç¨æ·ID', |
| | | `tenant_id` varchar(20) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | `auth_id` varchar(255) NOT NULL COMMENT 'ææ+ææopenid', |
| | | `source` varchar(255) NOT NULL COMMENT 'ç¨æ·æ¥æº', |
| | | `open_id` varchar(255) DEFAULT NULL COMMENT 'åçopen id', |
| | | `user_name` varchar(30) NOT NULL COMMENT 'ç»å½è´¦å·', |
| | | `nick_name` varchar(30) DEFAULT '' COMMENT 'ç¨æ·æµç§°', |
| | | `email` varchar(255) DEFAULT '' COMMENT 'ç¨æ·é®ç®±', |
| | | `avatar` varchar(500) DEFAULT '' COMMENT '头åå°å', |
| | | `access_token` varchar(255) NOT NULL COMMENT 'ç¨æ·çææä»¤ç', |
| | | `expire_in` int DEFAULT NULL COMMENT 'ç¨æ·çææä»¤ççæææï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `refresh_token` varchar(255) DEFAULT NULL COMMENT 'å·æ°ä»¤çï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `access_code` varchar(255) DEFAULT NULL COMMENT 'å¹³å°çææä¿¡æ¯ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `union_id` varchar(255) DEFAULT NULL COMMENT 'ç¨æ·ç unionid', |
| | | `scope` varchar(255) DEFAULT NULL COMMENT 'æäºçæéï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `token_type` varchar(255) DEFAULT NULL COMMENT '个å«å¹³å°çææä¿¡æ¯ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `id_token` varchar(255) DEFAULT NULL COMMENT 'id tokenï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `mac_algorithm` varchar(255) DEFAULT NULL COMMENT 'å°ç±³å¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `mac_key` varchar(255) DEFAULT NULL COMMENT 'å°ç±³å¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `code` varchar(255) DEFAULT NULL COMMENT 'ç¨æ·çææcodeï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `oauth_token` varchar(255) DEFAULT NULL COMMENT 'Twitterå¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `oauth_token_secret` varchar(255) DEFAULT NULL COMMENT 'Twitterå¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | `create_dept` bigint DEFAULT NULL COMMENT 'å建é¨é¨', |
| | | `create_by` bigint NOT NULL COMMENT 'å建人', |
| | | `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `update_by` bigint NOT NULL COMMENT 'æ´æ°äºº', |
| | | `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB |
| | | DEFAULT CHARSET = utf8mb4 |
| | | COLLATE = utf8mb4_general_ci |
| | | ROW_FORMAT = DYNAMIC COMMENT ='社ä¼åå
³ç³»è¡¨'; |
| | | id BIGINT UNSIGNED NOT NULL COMMENT '主é®', |
| | | user_id BIGINT NOT NULL COMMENT 'ç¨æ·ID', |
| | | tenant_id VARCHAR(20) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | auth_id VARCHAR(255) NOT NULL COMMENT 'ææ+ææopenid', |
| | | source VARCHAR(255) NOT NULL COMMENT 'ç¨æ·æ¥æº', |
| | | open_id VARCHAR(255) DEFAULT NULL COMMENT 'åçopen id', |
| | | user_name VARCHAR(30) NOT NULL COMMENT 'ç»å½è´¦å·', |
| | | nick_name VARCHAR(30) DEFAULT '' COMMENT 'ç¨æ·æµç§°', |
| | | email VARCHAR(255) DEFAULT '' COMMENT 'ç¨æ·é®ç®±', |
| | | avatar VARCHAR(500) DEFAULT '' COMMENT '头åå°å', |
| | | access_token VARCHAR(255) NOT NULL COMMENT 'ç¨æ·çææä»¤ç', |
| | | expire_in INT DEFAULT NULL COMMENT 'ç¨æ·çææä»¤ççæææï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | refresh_token VARCHAR(255) DEFAULT NULL COMMENT 'å·æ°ä»¤çï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | access_code VARCHAR(255) DEFAULT NULL COMMENT 'å¹³å°çææä¿¡æ¯ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | union_id VARCHAR(255) DEFAULT NULL COMMENT 'ç¨æ·ç unionid', |
| | | scope VARCHAR(255) DEFAULT NULL COMMENT 'æäºçæéï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | token_type VARCHAR(255) DEFAULT NULL COMMENT '个å«å¹³å°çææä¿¡æ¯ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | id_token VARCHAR(255) DEFAULT NULL COMMENT 'id tokenï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | mac_algorithm VARCHAR(255) DEFAULT NULL COMMENT 'å°ç±³å¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | mac_key VARCHAR(255) DEFAULT NULL COMMENT 'å°ç±³å¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | code VARCHAR(255) DEFAULT NULL COMMENT 'ç¨æ·çææcodeï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | oauth_token VARCHAR(255) DEFAULT NULL COMMENT 'Twitterå¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | oauth_token_secret VARCHAR(255) DEFAULT NULL COMMENT 'Twitterå¹³å°ç¨æ·çé另屿§ï¼é¨åå¹³å°å¯è½æ²¡æ', |
| | | create_dept bigint(20) comment 'å建é¨é¨', |
| | | create_by bigint(20) comment 'å建è
', |
| | | create_time datetime comment 'å建æ¶é´', |
| | | update_by bigint(20) comment 'æ´æ°è
', |
| | | update_time datetime comment 'æ´æ°æ¶é´', |
| | | del_flag char(1) default '0' comment 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | PRIMARY KEY (id) |
| | | ) ENGINE = InnoDB COMMENT ='社ä¼åå
³ç³»è¡¨'; |
| | | |
| | | -- ---------------------------- |
| | | -- ç§æ·è¡¨ |