| | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import jakarta.servlet.http.HttpServletRequest; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import me.zhyd.oauth.model.AuthCallback; |
| | | import me.zhyd.oauth.model.AuthResponse; |
| | | import me.zhyd.oauth.model.AuthUser; |
| | | import me.zhyd.oauth.request.AuthRequest; |
| | | import me.zhyd.oauth.utils.AuthStateUtils; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.domain.model.EmailLoginBody; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.RegisterBody; |
| | | import org.dromara.common.core.domain.model.SmsLoginBody; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.social.config.properties.SocialLoginConfigProperties; |
| | | import org.dromara.common.social.config.properties.SocialProperties; |
| | | import org.dromara.common.social.utils.SocialUtils; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.bo.SysTenantBo; |
| | | import org.dromara.system.domain.vo.SysTenantVo; |
| | | import org.dromara.system.service.ISysSocialService; |
| | | import org.dromara.system.service.ISysClientService; |
| | | import org.dromara.system.service.ISysConfigService; |
| | | import org.dromara.system.service.ISysSocialService; |
| | | import org.dromara.system.service.ISysTenantService; |
| | | import org.dromara.web.domain.vo.LoginTenantVo; |
| | | import org.dromara.web.domain.vo.LoginVo; |
| | | import org.dromara.web.domain.vo.TenantListVo; |
| | | import org.dromara.web.service.IAuthStrategy; |
| | | import org.dromara.web.service.SysLoginService; |
| | | import org.dromara.web.service.SysRegisterService; |
| | | import org.springframework.validation.annotation.Validated; |
| | |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | @Slf4j |
| | | @SaIgnore |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | |
| | | private final ISysConfigService configService; |
| | | private final ISysTenantService tenantService; |
| | | private final ISysSocialService socialUserService; |
| | | private final ISysClientService clientService; |
| | | |
| | | |
| | | /** |
| | | * ç»å½æ¹æ³ |
| | | * |
| | | * @param body ç»å½ä¿¡æ¯ |
| | | * @param loginBody ç»å½ä¿¡æ¯ |
| | | * @return ç»æ |
| | | */ |
| | | @PostMapping("/login") |
| | | public R<LoginVo> login(@Validated @RequestBody LoginBody body) { |
| | | LoginVo loginVo = new LoginVo(); |
| | | // çæä»¤ç |
| | | String token = loginService.login( |
| | | body.getTenantId(), |
| | | body.getUsername(), body.getPassword(), |
| | | body.getCode(), body.getUuid()); |
| | | loginVo.setToken(token); |
| | | return R.ok(loginVo); |
| | | public R<LoginVo> login(@Validated @RequestBody LoginBody loginBody) { |
| | | // ææç±»åå客æ·ç«¯id |
| | | String clientId = loginBody.getClientId(); |
| | | String grantType = loginBody.getGrantType(); |
| | | SysClient client = clientService.queryByClientId(clientId); |
| | | // æ¥è¯¢ä¸å° client æ client å
ä¸å
å« grantType |
| | | if (ObjectUtil.isNull(client) || !StringUtils.contains(client.getGrantType(), grantType)) { |
| | | log.info("客æ·ç«¯id: {} 认è¯ç±»åï¼{} å¼å¸¸!.", clientId, grantType); |
| | | return R.fail(MessageUtils.message("auth.grant.type.error")); |
| | | } |
| | | // æ ¡éªç§æ· |
| | | loginService.checkTenant(loginBody.getTenantId()); |
| | | // ç»å½ |
| | | return R.ok(IAuthStrategy.login(loginBody, client)); |
| | | } |
| | | |
| | | /** |
| | | * çä¿¡ç»å½ |
| | | * |
| | | * @param body ç»å½ä¿¡æ¯ |
| | | * @return ç»æ |
| | | */ |
| | | @PostMapping("/smsLogin") |
| | | public R<LoginVo> smsLogin(@Validated @RequestBody SmsLoginBody body) { |
| | | LoginVo loginVo = new LoginVo(); |
| | | // çæä»¤ç |
| | | String token = loginService.smsLogin( |
| | | body.getTenantId(), |
| | | body.getPhonenumber(), |
| | | body.getSmsCode()); |
| | | loginVo.setToken(token); |
| | | return R.ok(loginVo); |
| | | } |
| | | |
| | | /** |
| | | * é®ä»¶ç»å½ |
| | | * |
| | | * @param body ç»å½ä¿¡æ¯ |
| | | * @return ç»æ |
| | | */ |
| | | @PostMapping("/emailLogin") |
| | | public R<LoginVo> emailLogin(@Validated @RequestBody EmailLoginBody body) { |
| | | LoginVo loginVo = new LoginVo(); |
| | | // çæä»¤ç |
| | | String token = loginService.emailLogin( |
| | | body.getTenantId(), |
| | | body.getEmail(), |
| | | body.getEmailCode()); |
| | | loginVo.setToken(token); |
| | | return R.ok(loginVo); |
| | | } |
| | | |
| | | /** |
| | | * å°ç¨åºç»å½(示ä¾) |
| | | * |
| | | * @param xcxCode å°ç¨åºcode |
| | | * @return ç»æ |
| | | */ |
| | | @PostMapping("/xcxLogin") |
| | | public R<LoginVo> xcxLogin(@NotBlank(message = "{xcx.code.not.blank}") String xcxCode) { |
| | | LoginVo loginVo = new LoginVo(); |
| | | // çæä»¤ç |
| | | String token = loginService.xcxLogin(xcxCode); |
| | | loginVo.setToken(token); |
| | | return R.ok(loginVo); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è®¤è¯ææ |
| | |
| | | package org.dromara.web.domain.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | |
| | | @Data |
| | | public class LoginVo { |
| | | |
| | | private String token; |
| | | /** |
| | | * ææä»¤ç |
| | | */ |
| | | @JsonProperty("access_token") |
| | | private String accessToken; |
| | | |
| | | /** |
| | | * å·æ°ä»¤ç |
| | | */ |
| | | @JsonProperty("refresh_token") |
| | | private String refreshToken; |
| | | |
| | | /** |
| | | * ææä»¤ç access_token çæææ |
| | | */ |
| | | @JsonProperty("expire_in") |
| | | private Long expireIn; |
| | | |
| | | /** |
| | | * å·æ°ä»¤ç refresh_token çæææ |
| | | */ |
| | | @JsonProperty("refresh_expire_in") |
| | | private Long refreshExpireIn; |
| | | |
| | | /** |
| | | * åºç¨id |
| | | */ |
| | | @JsonProperty("client_id") |
| | | private String clientId; |
| | | |
| | | /** |
| | | * 令çæé |
| | | */ |
| | | private String scope; |
| | | |
| | | /** |
| | | * ç¨æ· openid |
| | | */ |
| | | private String openid; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.web.service; |
| | | |
| | | |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.web.domain.vo.LoginVo; |
| | | |
| | | /** |
| | | * ææçç¥ |
| | | * |
| | | * @author Michelle.Chung |
| | | */ |
| | | public interface IAuthStrategy { |
| | | |
| | | String BASE_NAME = "AuthStrategy"; |
| | | |
| | | /** |
| | | * ç»å½ |
| | | */ |
| | | static LoginVo login(LoginBody loginBody, SysClient client) { |
| | | // ææç±»åå客æ·ç«¯id |
| | | String clientId = loginBody.getClientId(); |
| | | String grantType = loginBody.getGrantType(); |
| | | String beanName = grantType + BASE_NAME; |
| | | if (!SpringUtils.containsBean(beanName)) { |
| | | throw new ServiceException("ææç±»å䏿£ç¡®!"); |
| | | } |
| | | IAuthStrategy instance = SpringUtils.getBean(beanName); |
| | | instance.validate(loginBody); |
| | | return instance.login(clientId, loginBody, client); |
| | | } |
| | | |
| | | /** |
| | | * åæ°æ ¡éª |
| | | */ |
| | | void validate(LoginBody loginBody); |
| | | |
| | | /** |
| | | * ç»å½ |
| | | */ |
| | | LoginVo login(String clientId, LoginBody loginBody, SysClient client); |
| | | |
| | | } |
| | |
| | | package org.dromara.web.service; |
| | | |
| | | import cn.dev33.satoken.exception.NotLoginException; |
| | | import cn.dev33.satoken.secure.BCrypt; |
| | | import cn.dev33.satoken.stp.SaLoginModel; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.domain.dto.RoleDTO; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.domain.model.XcxLoginUser; |
| | | import org.dromara.common.core.enums.DeviceType; |
| | | import org.dromara.common.core.enums.LoginType; |
| | | import org.dromara.common.core.enums.TenantStatus; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.user.CaptchaException; |
| | | import org.dromara.common.core.exception.user.CaptchaExpireException; |
| | | import org.dromara.common.core.exception.user.UserException; |
| | | import org.dromara.common.core.utils.*; |
| | | import org.dromara.common.log.event.LogininforEvent; |
| | |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.exception.TenantException; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.common.web.config.properties.CaptchaProperties; |
| | | import org.dromara.system.domain.SysUser; |
| | | import org.dromara.system.domain.bo.SysSocialBo; |
| | | import org.dromara.system.domain.vo.SysSocialVo; |
| | | import org.dromara.system.domain.vo.SysTenantVo; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | | import org.dromara.system.mapper.SysUserMapper; |
| | | import org.dromara.system.service.ISysSocialService; |
| | | import org.dromara.system.service.ISysPermissionService; |
| | | import org.dromara.system.service.ISysSocialService; |
| | | import org.dromara.system.service.ISysTenantService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | |
| | | @Service |
| | | public class SysLoginService { |
| | | |
| | | private final SysUserMapper userMapper; |
| | | private final ISysSocialService sysSocialService; |
| | | private final CaptchaProperties captchaProperties; |
| | | private final ISysPermissionService permissionService; |
| | | private final ISysTenantService tenantService; |
| | | |
| | | @Value("${user.password.maxRetryCount}") |
| | | private Integer maxRetryCount; |
| | | |
| | | @Value("${user.password.lockTime}") |
| | | private Integer lockTime; |
| | | |
| | | /** |
| | | * ç»å½éªè¯ |
| | | * |
| | | * @param username ç¨æ·å |
| | | * @param password å¯ç |
| | | * @param code éªè¯ç |
| | | * @param uuid å¯ä¸æ è¯ |
| | | * @return ç»æ |
| | | */ |
| | | public String login(String tenantId, String username, String password, String code, String uuid) { |
| | | boolean captchaEnabled = captchaProperties.getEnable(); |
| | | // éªè¯ç å¼å
³ |
| | | if (captchaEnabled) { |
| | | validateCaptcha(tenantId, username, code, uuid); |
| | | } |
| | | // æ ¡éªç§æ· |
| | | checkTenant(tenantId); |
| | | |
| | | // æ¡æ¶ç»å½ä¸éå¶ä»ä»ä¹è¡¨æ¥è¯¢ åªè¦æç»æå»ºåº LoginUser å³å¯ |
| | | SysUserVo user = loadUserByUsername(tenantId, username); |
| | | checkLogin(LoginType.PASSWORD, tenantId, username, () -> !BCrypt.checkpw(password, user.getPassword())); |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | LoginUser loginUser = buildLoginUser(user); |
| | | // çætoken |
| | | LoginHelper.loginByDevice(loginUser, DeviceType.PC); |
| | | |
| | | recordLogininfor(loginUser.getTenantId(), username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(user.getUserId()); |
| | | return StpUtil.getTokenValue(); |
| | | } |
| | | |
| | | public String smsLogin(String tenantId, String phonenumber, String smsCode) { |
| | | // æ ¡éªç§æ· |
| | | checkTenant(tenantId); |
| | | // éè¿ææºå·æ¥æ¾ç¨æ· |
| | | SysUserVo user = loadUserByPhonenumber(tenantId, phonenumber); |
| | | |
| | | checkLogin(LoginType.SMS, tenantId, user.getUserName(), () -> !validateSmsCode(tenantId, phonenumber, smsCode)); |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | LoginUser loginUser = buildLoginUser(user); |
| | | // çætoken |
| | | LoginHelper.loginByDevice(loginUser, DeviceType.APP); |
| | | |
| | | recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(user.getUserId()); |
| | | return StpUtil.getTokenValue(); |
| | | } |
| | | |
| | | public String emailLogin(String tenantId, String email, String emailCode) { |
| | | // æ ¡éªç§æ· |
| | | checkTenant(tenantId); |
| | | // éè¿é®ç®±æ¥æ¾ç¨æ· |
| | | SysUserVo user = loadUserByEmail(tenantId, email); |
| | | |
| | | checkLogin(LoginType.EMAIL, tenantId, user.getUserName(), () -> !validateEmailCode(tenantId, email, emailCode)); |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | LoginUser loginUser = buildLoginUser(user); |
| | | // çætoken |
| | | LoginHelper.loginByDevice(loginUser, DeviceType.APP); |
| | | |
| | | recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(user.getUserId()); |
| | | return StpUtil.getTokenValue(); |
| | | } |
| | | |
| | | |
| | | public String xcxLogin(String xcxCode) { |
| | | // xcxCode 为 å°ç¨åºè°ç¨ wx.login ææåè·å |
| | | // todo 以ä¸èªè¡å®ç° |
| | | // æ ¡éª appid + appsrcret + xcxCode è°ç¨ç»å½åè¯æ ¡éªæ¥å£ è·å session_key ä¸ openid |
| | | String openid = ""; |
| | | // æ¡æ¶ç»å½ä¸éå¶ä»ä»ä¹è¡¨æ¥è¯¢ åªè¦æç»æå»ºåº LoginUser å³å¯ |
| | | SysUserVo user = loadUserByOpenid(openid); |
| | | // æ ¡éªç§æ· |
| | | checkTenant(user.getTenantId()); |
| | | |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | XcxLoginUser loginUser = new XcxLoginUser(); |
| | | loginUser.setTenantId(user.getTenantId()); |
| | | loginUser.setUserId(user.getUserId()); |
| | | loginUser.setUsername(user.getUserName()); |
| | | loginUser.setUserType(user.getUserType()); |
| | | loginUser.setOpenid(openid); |
| | | // çætoken |
| | | LoginHelper.loginByDevice(loginUser, DeviceType.XCX); |
| | | |
| | | recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(user.getUserId()); |
| | | return StpUtil.getTokenValue(); |
| | | } |
| | | private final ISysTenantService tenantService; |
| | | private final ISysPermissionService permissionService; |
| | | private final ISysSocialService sysSocialService; |
| | | private final SysUserMapper userMapper; |
| | | |
| | | /** |
| | | * 社交ç»å½ |
| | |
| | | private R<String> loginAndRecord(String tenantId, String userName, AuthUser authUser) { |
| | | checkTenant(tenantId); |
| | | SysUserVo user = loadUserByUsername(tenantId, userName); |
| | | LoginHelper.loginByDevice(buildLoginUser(user), DeviceType.SOCIAL); |
| | | SaLoginModel model = new SaLoginModel(); |
| | | model.setDevice(DeviceType.PC.getDevice()); |
| | | // çætoken |
| | | LoginHelper.login(buildLoginUser(user), model); |
| | | recordLogininfor(user.getTenantId(), userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | recordLoginInfo(user.getUserId()); |
| | | return R.ok(StpUtil.getTokenValue()); |
| | |
| | | * @param status ç¶æ |
| | | * @param message æ¶æ¯å
容 |
| | | */ |
| | | private void recordLogininfor(String tenantId, String username, String status, String message) { |
| | | public void recordLogininfor(String tenantId, String username, String status, String message) { |
| | | LogininforEvent logininforEvent = new LogininforEvent(); |
| | | logininforEvent.setTenantId(tenantId); |
| | | logininforEvent.setUsername(username); |
| | |
| | | SpringUtils.context().publishEvent(logininforEvent); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªçä¿¡éªè¯ç |
| | | */ |
| | | private boolean validateSmsCode(String tenantId, String phonenumber, String smsCode) { |
| | | String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber); |
| | | if (StringUtils.isBlank(code)) { |
| | | recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | return code.equals(smsCode); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªé®ç®±éªè¯ç |
| | | */ |
| | | private boolean validateEmailCode(String tenantId, String email, String emailCode) { |
| | | String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + email); |
| | | if (StringUtils.isBlank(code)) { |
| | | recordLogininfor(tenantId, email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | return code.equals(emailCode); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªéªè¯ç |
| | | * |
| | | * @param username ç¨æ·å |
| | | * @param code éªè¯ç |
| | | * @param uuid å¯ä¸æ è¯ |
| | | */ |
| | | public void validateCaptcha(String tenantId, String username, String code, String uuid) { |
| | | String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, ""); |
| | | String captcha = RedisUtils.getCacheObject(verifyKey); |
| | | RedisUtils.deleteObject(verifyKey); |
| | | if (captcha == null) { |
| | | recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | if (!code.equalsIgnoreCase(captcha)) { |
| | | recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); |
| | | throw new CaptchaException(); |
| | | } |
| | | } |
| | | |
| | | private SysUserVo loadUserByUsername(String tenantId, String username) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getUserName, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getUserName, username)); |
| | | .select(SysUser::getUserName, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getUserName, username)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", username); |
| | | throw new UserException("user.not.exists", username); |
| | |
| | | return userMapper.selectUserByUserName(username); |
| | | } |
| | | |
| | | private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getPhonenumber, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getPhonenumber, phonenumber)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", phonenumber); |
| | | throw new UserException("user.not.exists", phonenumber); |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", phonenumber); |
| | | throw new UserException("user.blocked", phonenumber); |
| | | } |
| | | if (TenantHelper.isEnable()) { |
| | | return userMapper.selectTenantUserByPhonenumber(phonenumber, tenantId); |
| | | } |
| | | return userMapper.selectUserByPhonenumber(phonenumber); |
| | | } |
| | | |
| | | private SysUserVo loadUserByEmail(String tenantId, String email) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getEmail, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getEmail, email)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", email); |
| | | throw new UserException("user.not.exists", email); |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", email); |
| | | throw new UserException("user.blocked", email); |
| | | } |
| | | if (TenantHelper.isEnable()) { |
| | | return userMapper.selectTenantUserByEmail(email, tenantId); |
| | | } |
| | | return userMapper.selectUserByEmail(email); |
| | | } |
| | | |
| | | private SysUserVo loadUserByOpenid(String openid) { |
| | | // ä½¿ç¨ openid æ¥è¯¢ç»å®ç¨æ· 妿ªç»å®ç¨æ· åæ ¹æ®ä¸å¡èªè¡å¤ç ä¾å¦ å建é»è®¤ç¨æ· |
| | | // todo èªè¡å®ç° userService.selectUserByOpenid(openid); |
| | | SysUserVo user = new SysUserVo(); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", openid); |
| | | // todo ç¨æ·ä¸åå¨ ä¸å¡é»è¾èªè¡å®ç° |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", openid); |
| | | // todo ç¨æ·å·²è¢«åç¨ ä¸å¡é»è¾èªè¡å®ç° |
| | | } |
| | | return user; |
| | | } |
| | | |
| | | /** |
| | | * æå»ºç»å½ç¨æ· |
| | | */ |
| | | private LoginUser buildLoginUser(SysUserVo user) { |
| | | public LoginUser buildLoginUser(SysUserVo user) { |
| | | LoginUser loginUser = new LoginUser(); |
| | | loginUser.setTenantId(user.getTenantId()); |
| | | loginUser.setUserId(user.getUserId()); |
| | |
| | | /** |
| | | * ç»å½æ ¡éª |
| | | */ |
| | | private void checkLogin(LoginType loginType, String tenantId, String username, Supplier<Boolean> supplier) { |
| | | public void checkLogin(LoginType loginType, String tenantId, String username, Supplier<Boolean> supplier) { |
| | | String errorKey = GlobalConstants.PWD_ERR_CNT_KEY + username; |
| | | String loginFail = Constants.LOGIN_FAIL; |
| | | |
| | |
| | | RedisUtils.deleteObject(errorKey); |
| | | } |
| | | |
| | | private void checkTenant(String tenantId) { |
| | | /** |
| | | * æ ¡éªç§æ· |
| | | * |
| | | * @param tenantId ç§æ·ID |
| | | */ |
| | | public void checkTenant(String tenantId) { |
| | | if (!TenantHelper.isEnable()) { |
| | | return; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.web.service.impl; |
| | | |
| | | import cn.dev33.satoken.stp.SaLoginModel; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.enums.LoginType; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.user.CaptchaExpireException; |
| | | import org.dromara.common.core.exception.user.UserException; |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.core.utils.ValidatorUtils; |
| | | import org.dromara.common.core.validate.auth.EmailGroup; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.SysUser; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | | import org.dromara.system.mapper.SysUserMapper; |
| | | import org.dromara.web.domain.vo.LoginVo; |
| | | import org.dromara.web.service.IAuthStrategy; |
| | | import org.dromara.web.service.SysLoginService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * é®ä»¶è®¤è¯çç¥ |
| | | * |
| | | * @author Michelle.Chung |
| | | */ |
| | | @Slf4j |
| | | @Service("email" + IAuthStrategy.BASE_NAME) |
| | | @RequiredArgsConstructor |
| | | public class EmailAuthStrategy implements IAuthStrategy { |
| | | |
| | | private final SysLoginService loginService; |
| | | private final SysUserMapper userMapper; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, EmailGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | String tenantId = loginBody.getTenantId(); |
| | | String email = loginBody.getEmail(); |
| | | String emailCode = loginBody.getEmailCode(); |
| | | |
| | | // éè¿é®ç®±æ¥æ¾ç¨æ· |
| | | SysUserVo user = loadUserByEmail(tenantId, email); |
| | | |
| | | loginService.checkLogin(LoginType.EMAIL, tenantId, user.getUserName(), () -> !validateEmailCode(tenantId, email, emailCode)); |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | LoginUser loginUser = loginService.buildLoginUser(user); |
| | | SaLoginModel model = new SaLoginModel(); |
| | | model.setDevice(client.getDeviceType()); |
| | | // èªå®ä¹åé
ä¸åç¨æ·ä½ç³» ä¸å token æææ¶é´ ä¸è®¾ç½®é»è®¤èµ°å
¨å± yml é
ç½® |
| | | // ä¾å¦: åå°ç¨æ·30åéè¿æ appç¨æ·1å¤©è¿æ |
| | | model.setTimeout(client.getTimeout()); |
| | | model.setActiveTimeout(client.getActiveTimeout()); |
| | | // çætoken |
| | | LoginHelper.login(loginUser, model); |
| | | |
| | | loginService.recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | loginService.recordLoginInfo(user.getUserId()); |
| | | LoginVo loginVo = new LoginVo(); |
| | | loginVo.setAccessToken(StpUtil.getTokenValue()); |
| | | return loginVo; |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªé®ç®±éªè¯ç |
| | | */ |
| | | private boolean validateEmailCode(String tenantId, String email, String emailCode) { |
| | | String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + email); |
| | | if (StringUtils.isBlank(code)) { |
| | | loginService.recordLogininfor(tenantId, email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | return code.equals(emailCode); |
| | | } |
| | | |
| | | private SysUserVo loadUserByEmail(String tenantId, String email) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getEmail, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getEmail, email)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", email); |
| | | throw new UserException("user.not.exists", email); |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", email); |
| | | throw new UserException("user.blocked", email); |
| | | } |
| | | if (TenantHelper.isEnable()) { |
| | | return userMapper.selectTenantUserByEmail(email, tenantId); |
| | | } |
| | | return userMapper.selectUserByEmail(email); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.web.service.impl; |
| | | |
| | | import cn.dev33.satoken.secure.BCrypt; |
| | | import cn.dev33.satoken.stp.SaLoginModel; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.enums.LoginType; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.user.CaptchaException; |
| | | import org.dromara.common.core.exception.user.CaptchaExpireException; |
| | | import org.dromara.common.core.exception.user.UserException; |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.core.utils.ValidatorUtils; |
| | | import org.dromara.common.core.validate.auth.PasswordGroup; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.common.web.config.properties.CaptchaProperties; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.SysUser; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | | import org.dromara.system.mapper.SysUserMapper; |
| | | import org.dromara.web.domain.vo.LoginVo; |
| | | import org.dromara.web.service.IAuthStrategy; |
| | | import org.dromara.web.service.SysLoginService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * å¯ç 认è¯çç¥ |
| | | * |
| | | * @author Michelle.Chung |
| | | */ |
| | | @Slf4j |
| | | @Service("password" + IAuthStrategy.BASE_NAME) |
| | | @RequiredArgsConstructor |
| | | public class PasswordAuthStrategy implements IAuthStrategy { |
| | | |
| | | private final CaptchaProperties captchaProperties; |
| | | private final SysLoginService loginService; |
| | | private final SysUserMapper userMapper; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, PasswordGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | String tenantId = loginBody.getTenantId(); |
| | | String username = loginBody.getUsername(); |
| | | String password = loginBody.getPassword(); |
| | | String code = loginBody.getCode(); |
| | | String uuid = loginBody.getUuid(); |
| | | |
| | | boolean captchaEnabled = captchaProperties.getEnable(); |
| | | // éªè¯ç å¼å
³ |
| | | if (captchaEnabled) { |
| | | validateCaptcha(tenantId, username, code, uuid); |
| | | } |
| | | |
| | | SysUserVo user = loadUserByUsername(tenantId, username); |
| | | loginService.checkLogin(LoginType.PASSWORD, tenantId, username, () -> !BCrypt.checkpw(password, user.getPassword())); |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser |
| | | LoginUser loginUser = loginService.buildLoginUser(user); |
| | | SaLoginModel model = new SaLoginModel(); |
| | | model.setDevice(client.getDeviceType()); |
| | | // èªå®ä¹åé
ä¸åç¨æ·ä½ç³» ä¸å token æææ¶é´ ä¸è®¾ç½®é»è®¤èµ°å
¨å± yml é
ç½® |
| | | // ä¾å¦: åå°ç¨æ·30åéè¿æ appç¨æ·1å¤©è¿æ |
| | | model.setTimeout(client.getTimeout()); |
| | | model.setActiveTimeout(client.getActiveTimeout()); |
| | | // çætoken |
| | | LoginHelper.login(loginUser, model); |
| | | |
| | | loginService.recordLogininfor(loginUser.getTenantId(), username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | loginService.recordLoginInfo(user.getUserId()); |
| | | |
| | | LoginVo loginVo = new LoginVo(); |
| | | loginVo.setAccessToken(StpUtil.getTokenValue()); |
| | | loginVo.setExpireIn(StpUtil.getTokenTimeout()); |
| | | return loginVo; |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªéªè¯ç |
| | | * |
| | | * @param username ç¨æ·å |
| | | * @param code éªè¯ç |
| | | * @param uuid å¯ä¸æ è¯ |
| | | */ |
| | | private void validateCaptcha(String tenantId, String username, String code, String uuid) { |
| | | String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, ""); |
| | | String captcha = RedisUtils.getCacheObject(verifyKey); |
| | | RedisUtils.deleteObject(verifyKey); |
| | | if (captcha == null) { |
| | | loginService.recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | if (!code.equalsIgnoreCase(captcha)) { |
| | | loginService.recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); |
| | | throw new CaptchaException(); |
| | | } |
| | | } |
| | | |
| | | private SysUserVo loadUserByUsername(String tenantId, String username) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getUserName, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getUserName, username)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", username); |
| | | throw new UserException("user.not.exists", username); |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", username); |
| | | throw new UserException("user.blocked", username); |
| | | } |
| | | if (TenantHelper.isEnable()) { |
| | | return userMapper.selectTenantUserByUserName(username, tenantId); |
| | | } |
| | | return userMapper.selectUserByUserName(username); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.web.service.impl; |
| | | |
| | | import cn.dev33.satoken.stp.SaLoginModel; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.enums.LoginType; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.user.CaptchaExpireException; |
| | | import org.dromara.common.core.exception.user.UserException; |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.core.utils.ValidatorUtils; |
| | | import org.dromara.common.core.validate.auth.SmsGroup; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.SysUser; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | | import org.dromara.system.mapper.SysUserMapper; |
| | | import org.dromara.web.domain.vo.LoginVo; |
| | | import org.dromara.web.service.IAuthStrategy; |
| | | import org.dromara.web.service.SysLoginService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * ç信认è¯çç¥ |
| | | * |
| | | * @author Michelle.Chung |
| | | */ |
| | | @Slf4j |
| | | @Service("sms" + IAuthStrategy.BASE_NAME) |
| | | @RequiredArgsConstructor |
| | | public class SmsAuthStrategy implements IAuthStrategy { |
| | | |
| | | private final SysLoginService loginService; |
| | | private final SysUserMapper userMapper; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, SmsGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | String tenantId = loginBody.getTenantId(); |
| | | String phonenumber = loginBody.getPhonenumber(); |
| | | String smsCode = loginBody.getSmsCode(); |
| | | |
| | | // éè¿ææºå·æ¥æ¾ç¨æ· |
| | | SysUserVo user = loadUserByPhonenumber(tenantId, phonenumber); |
| | | |
| | | loginService.checkLogin(LoginType.SMS, tenantId, user.getUserName(), () -> !validateSmsCode(tenantId, phonenumber, smsCode)); |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | LoginUser loginUser = loginService.buildLoginUser(user); |
| | | SaLoginModel model = new SaLoginModel(); |
| | | model.setDevice(client.getDeviceType()); |
| | | // èªå®ä¹åé
ä¸åç¨æ·ä½ç³» ä¸å token æææ¶é´ ä¸è®¾ç½®é»è®¤èµ°å
¨å± yml é
ç½® |
| | | // ä¾å¦: åå°ç¨æ·30åéè¿æ appç¨æ·1å¤©è¿æ |
| | | model.setTimeout(client.getTimeout()); |
| | | model.setActiveTimeout(client.getActiveTimeout()); |
| | | // çætoken |
| | | LoginHelper.login(loginUser, model); |
| | | |
| | | loginService.recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | loginService.recordLoginInfo(user.getUserId()); |
| | | LoginVo loginVo = new LoginVo(); |
| | | loginVo.setAccessToken(StpUtil.getTokenValue()); |
| | | return loginVo; |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªçä¿¡éªè¯ç |
| | | */ |
| | | private boolean validateSmsCode(String tenantId, String phonenumber, String smsCode) { |
| | | String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber); |
| | | if (StringUtils.isBlank(code)) { |
| | | loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | return code.equals(smsCode); |
| | | } |
| | | |
| | | private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getPhonenumber, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getPhonenumber, phonenumber)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", phonenumber); |
| | | throw new UserException("user.not.exists", phonenumber); |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", phonenumber); |
| | | throw new UserException("user.blocked", phonenumber); |
| | | } |
| | | if (TenantHelper.isEnable()) { |
| | | return userMapper.selectTenantUserByPhonenumber(phonenumber, tenantId); |
| | | } |
| | | return userMapper.selectUserByPhonenumber(phonenumber); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.web.service.impl; |
| | | |
| | | import cn.dev33.satoken.stp.SaLoginModel; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.XcxLoginUser; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | import org.dromara.common.core.utils.ValidatorUtils; |
| | | import org.dromara.common.core.validate.auth.WechatGroup; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | | import org.dromara.web.domain.vo.LoginVo; |
| | | import org.dromara.web.service.IAuthStrategy; |
| | | import org.dromara.web.service.SysLoginService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * é®ä»¶è®¤è¯çç¥ |
| | | * |
| | | * @author Michelle.Chung |
| | | */ |
| | | @Slf4j |
| | | @Service("xcx" + IAuthStrategy.BASE_NAME) |
| | | @RequiredArgsConstructor |
| | | public class XcxAuthStrategy implements IAuthStrategy { |
| | | |
| | | private final SysLoginService loginService; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, WechatGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | // xcxCode 为 å°ç¨åºè°ç¨ wx.login ææåè·å |
| | | String xcxCode = loginBody.getXcxCode(); |
| | | // todo 以ä¸èªè¡å®ç° |
| | | // æ ¡éª appid + appsrcret + xcxCode è°ç¨ç»å½åè¯æ ¡éªæ¥å£ è·å session_key ä¸ openid |
| | | String openid = ""; |
| | | // æ¡æ¶ç»å½ä¸éå¶ä»ä»ä¹è¡¨æ¥è¯¢ åªè¦æç»æå»ºåº LoginUser å³å¯ |
| | | SysUserVo user = loadUserByOpenid(openid); |
| | | |
| | | // æ¤å¤å¯æ ¹æ®ç»å½ç¨æ·çæ°æ®ä¸å èªè¡å建 loginUser 屿§ä¸å¤ç¨ç»§æ¿æ©å±å°±è¡äº |
| | | XcxLoginUser loginUser = new XcxLoginUser(); |
| | | loginUser.setTenantId(user.getTenantId()); |
| | | loginUser.setUserId(user.getUserId()); |
| | | loginUser.setUsername(user.getUserName()); |
| | | loginUser.setUserType(user.getUserType()); |
| | | loginUser.setOpenid(openid); |
| | | |
| | | SaLoginModel model = new SaLoginModel(); |
| | | model.setDevice(client.getDeviceType()); |
| | | // èªå®ä¹åé
ä¸åç¨æ·ä½ç³» ä¸å token æææ¶é´ ä¸è®¾ç½®é»è®¤èµ°å
¨å± yml é
ç½® |
| | | // ä¾å¦: åå°ç¨æ·30åéè¿æ appç¨æ·1å¤©è¿æ |
| | | model.setTimeout(client.getTimeout()); |
| | | model.setActiveTimeout(client.getActiveTimeout()); |
| | | // çætoken |
| | | LoginHelper.login(loginUser, model); |
| | | |
| | | loginService.recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | loginService.recordLoginInfo(user.getUserId()); |
| | | LoginVo loginVo = new LoginVo(); |
| | | loginVo.setAccessToken(StpUtil.getTokenValue()); |
| | | return loginVo; |
| | | } |
| | | |
| | | private SysUserVo loadUserByOpenid(String openid) { |
| | | // ä½¿ç¨ openid æ¥è¯¢ç»å®ç¨æ· 妿ªç»å®ç¨æ· åæ ¹æ®ä¸å¡èªè¡å¤ç ä¾å¦ å建é»è®¤ç¨æ· |
| | | // todo èªè¡å®ç° userService.selectUserByOpenid(openid); |
| | | SysUserVo user = new SysUserVo(); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", openid); |
| | | // todo ç¨æ·ä¸åå¨ ä¸å¡é»è¾èªè¡å®ç° |
| | | } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { |
| | | log.info("ç»å½ç¨æ·ï¼{} 已被åç¨.", openid); |
| | | // todo ç¨æ·å·²è¢«åç¨ ä¸å¡é»è¾èªè¡å®ç° |
| | | } |
| | | return user; |
| | | } |
| | | |
| | | } |
| | |
| | | - sys_role_menu |
| | | - sys_user_post |
| | | - sys_user_role |
| | | - sys_client |
| | | |
| | | # MyBatisPlusé
ç½® |
| | | # https://baomidou.com/config/ |
| | |
| | | user.notfound=è¯·éæ°ç»å½ |
| | | user.forcelogout=管çå强å¶éåºï¼è¯·éæ°ç»å½ |
| | | user.unknown.error=æªç¥é误ï¼è¯·éæ°ç»å½ |
| | | auth.grant.type.error=è®¤è¯æéç±»åé误 |
| | | auth.grant.type.not.blank=è®¤è¯æéç±»åä¸è½ä¸ºç©º |
| | | auth.clientid.not.blank=认è¯å®¢æ·ç«¯idä¸è½ä¸ºç©º |
| | | ##æä»¶ä¸ä¼ æ¶æ¯ |
| | | upload.exceed.maxSize=ä¸ä¼ çæä»¶å¤§å°è¶
åºéå¶çæä»¶å¤§å°ï¼<br/>å
许çæä»¶æå¤§å¤§å°æ¯ï¼{0}MBï¼ |
| | | upload.filename.exceed.length=ä¸ä¼ çæä»¶åæé¿{0}个å符 |
| | |
| | | user.notfound=Please login again |
| | | user.forcelogout=The administrator is forced to exitï¼please login again |
| | | user.unknown.error=Unknown error, please login again |
| | | auth.grant.type.error=Auth grant type error |
| | | auth.grant.type.not.blank=Auth grant type cannot be blank |
| | | auth.clientid.not.blank=Auth clientid cannot be blank |
| | | ##æä»¶ä¸ä¼ æ¶æ¯ |
| | | upload.exceed.maxSize=The uploaded file size exceeds the limit file sizeï¼<br/>the maximum allowed file size isï¼{0}MBï¼ |
| | | upload.filename.exceed.length=The maximum length of uploaded file name is {0} characters |
| | |
| | | user.notfound=è¯·éæ°ç»å½ |
| | | user.forcelogout=管çå强å¶éåºï¼è¯·éæ°ç»å½ |
| | | user.unknown.error=æªç¥é误ï¼è¯·éæ°ç»å½ |
| | | auth.grant.type.error=è®¤è¯æéç±»åé误 |
| | | auth.grant.type.not.blank=è®¤è¯æéç±»åä¸è½ä¸ºç©º |
| | | auth.clientid.not.blank=认è¯å®¢æ·ç«¯idä¸è½ä¸ºç©º |
| | | ##æä»¶ä¸ä¼ æ¶æ¯ |
| | | upload.exceed.maxSize=ä¸ä¼ çæä»¶å¤§å°è¶
åºéå¶çæä»¶å¤§å°ï¼<br/>å
许çæä»¶æå¤§å¤§å°æ¯ï¼{0}MBï¼ |
| | | upload.filename.exceed.length=ä¸ä¼ çæä»¶åæé¿{0}个å符 |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import jakarta.validation.constraints.Email; |
| | | import org.dromara.common.core.constant.UserConstants; |
| | | import lombok.Data; |
| | | import org.dromara.common.core.validate.auth.EmailGroup; |
| | | import org.dromara.common.core.validate.auth.PasswordGroup; |
| | | import org.dromara.common.core.validate.auth.SmsGroup; |
| | | import org.dromara.common.core.validate.auth.WechatGroup; |
| | | import org.hibernate.validator.constraints.Length; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | |
| | | public class LoginBody { |
| | | |
| | | /** |
| | | * 客æ·ç«¯id |
| | | */ |
| | | @NotBlank(message = "{auth.clientid.not.blank}") |
| | | private String clientId; |
| | | |
| | | /** |
| | | * 客æ·ç«¯key |
| | | */ |
| | | private String clientKey; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç§é¥ |
| | | */ |
| | | private String clientSecret; |
| | | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | @NotBlank(message = "{auth.grant.type.not.blank}") |
| | | private String grantType; |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @NotBlank(message = "{tenant.number.not.blank}") |
| | |
| | | /** |
| | | * ç¨æ·å |
| | | */ |
| | | @NotBlank(message = "{user.username.not.blank}") |
| | | @Length(min = UserConstants.USERNAME_MIN_LENGTH, max = UserConstants.USERNAME_MAX_LENGTH, message = "{user.username.length.valid}") |
| | | @NotBlank(message = "{user.username.not.blank}", groups = {PasswordGroup.class}) |
| | | @Length(min = UserConstants.USERNAME_MIN_LENGTH, max = UserConstants.USERNAME_MAX_LENGTH, message = "{user.username.length.valid}", groups = {PasswordGroup.class}) |
| | | private String username; |
| | | |
| | | /** |
| | | * ç¨æ·å¯ç |
| | | */ |
| | | @NotBlank(message = "{user.password.not.blank}") |
| | | @Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}") |
| | | @NotBlank(message = "{user.password.not.blank}", groups = {PasswordGroup.class}) |
| | | @Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}", groups = {PasswordGroup.class}) |
| | | private String password; |
| | | |
| | | /** |
| | |
| | | */ |
| | | private String uuid; |
| | | |
| | | /** |
| | | * ææºå· |
| | | */ |
| | | @NotBlank(message = "{user.phonenumber.not.blank}", groups = {SmsGroup.class}) |
| | | private String phonenumber; |
| | | |
| | | /** |
| | | * çä¿¡code |
| | | */ |
| | | @NotBlank(message = "{sms.code.not.blank}", groups = {SmsGroup.class}) |
| | | private String smsCode; |
| | | |
| | | /** |
| | | * é®ç®± |
| | | */ |
| | | @NotBlank(message = "{user.email.not.blank}", groups = {EmailGroup.class}) |
| | | @Email(message = "{user.email.not.valid}") |
| | | private String email; |
| | | |
| | | /** |
| | | * é®ç®±code |
| | | */ |
| | | @NotBlank(message = "{email.code.not.blank}", groups = {EmailGroup.class}) |
| | | private String emailCode; |
| | | |
| | | /** |
| | | * å°ç¨åºcode |
| | | */ |
| | | @NotBlank(message = "{xcx.code.not.blank}", groups = {WechatGroup.class}) |
| | | private String xcxCode; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.validate.auth; |
| | | |
| | | /** |
| | | * @Author Michelle.Chung |
| | | */ |
| | | public interface EmailGroup { |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.validate.auth; |
| | | |
| | | /** |
| | | * @Author Michelle.Chung |
| | | */ |
| | | public interface PasswordGroup { |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.validate.auth; |
| | | |
| | | /** |
| | | * @Author Michelle.Chung |
| | | */ |
| | | public interface SmsGroup { |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.validate.auth; |
| | | |
| | | /** |
| | | * @Author Michelle.Chung |
| | | */ |
| | | public interface WechatGroup { |
| | | } |
| | |
| | | |
| | | @Override |
| | | public Object convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { |
| | | Object codeValue = cellData.getData(); |
| | | cellData.checkEmpty(); |
| | | // Excelä¸å¡«å
¥çæ¯æä¸¾ä¸æå®çæè¿° |
| | | Object textValue = switch (cellData.getType()) { |
| | | case STRING, DIRECT_STRING, RICH_TEXT_STRING -> cellData.getStringValue(); |
| | | case NUMBER -> cellData.getNumberValue(); |
| | | case BOOLEAN -> cellData.getBooleanValue(); |
| | | default -> throw new IllegalArgumentException("åå
æ ¼ç±»åå¼å¸¸!"); |
| | | }; |
| | | // 妿æ¯ç©ºå¼ |
| | | if (ObjectUtil.isNull(codeValue)) { |
| | | if (ObjectUtil.isNull(textValue)) { |
| | | return null; |
| | | } |
| | | Map<Object, String> enumValueMap = beforeConvert(contentProperty); |
| | | String textValue = enumValueMap.get(codeValue); |
| | | return Convert.convert(contentProperty.getField().getType(), textValue); |
| | | Map<Object, String> enumCodeToTextMap = beforeConvert(contentProperty); |
| | | // ä»Javaè¾åºè³Excelæ¯code转text |
| | | // å æ¤ä»Excel转Javaåºè¯¥å°textä¸codeå¯¹è° |
| | | Map<Object, Object> enumTextToCodeMap = new HashMap<>(); |
| | | enumCodeToTextMap.forEach((key, value) -> enumTextToCodeMap.put(value, key)); |
| | | // åºè¯¥ä»text -> code䏿¥æ¾ |
| | | Object codeValue = enumTextToCodeMap.get(textValue); |
| | | return Convert.convert(contentProperty.getField().getType(), codeValue); |
| | | } |
| | | |
| | | @Override |
| | |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.convert.Convert; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | import org.dromara.common.core.constant.TenantConstants; |
| | | import org.dromara.common.core.constant.UserConstants; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.enums.DeviceType; |
| | | import org.dromara.common.core.enums.UserType; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Set; |
| | | |
| | |
| | | public static final String USER_KEY = "userId"; |
| | | |
| | | /** |
| | | * ç»å½ç³»ç» |
| | | * |
| | | * @param loginUser ç»å½ç¨æ·ä¿¡æ¯ |
| | | */ |
| | | public static void login(LoginUser loginUser) { |
| | | loginByDevice(loginUser, null); |
| | | } |
| | | |
| | | /** |
| | | * ç»å½ç³»ç» åºäº 设å¤ç±»å |
| | | * é对ç¸åç¨æ·ä½ç³»ä¸åè®¾å¤ |
| | | * |
| | | * @param loginUser ç»å½ç¨æ·ä¿¡æ¯ |
| | | * @param model é
ç½®åæ° |
| | | */ |
| | | public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) { |
| | | public static void login(LoginUser loginUser, SaLoginModel model) { |
| | | SaStorage storage = SaHolder.getStorage(); |
| | | storage.set(LOGIN_USER_KEY, loginUser); |
| | | storage.set(TENANT_KEY, loginUser.getTenantId()); |
| | | storage.set(USER_KEY, loginUser.getUserId()); |
| | | SaLoginModel model = new SaLoginModel(); |
| | | if (ObjectUtil.isNotNull(deviceType)) { |
| | | model.setDevice(deviceType.getDevice()); |
| | | } |
| | | // èªå®ä¹åé
ä¸åç¨æ·ä½ç³» ä¸å token æææ¶é´ ä¸è®¾ç½®é»è®¤èµ°å
¨å± yml é
ç½® |
| | | // ä¾å¦: åå°ç¨æ·30åéè¿æ appç¨æ·1å¤©è¿æ |
| | | // UserType userType = UserType.getUserType(loginUser.getUserType()); |
| | | // if (userType == UserType.SYS_USER) { |
| | | // model.setTimeout(86400).setActiveTimeout(1800); |
| | | // } else if (userType == UserType.APP_USER) { |
| | | // model.setTimeout(86400).setActiveTimeout(1800); |
| | | // } |
| | | model = ObjectUtil.defaultIfNull(model, new SaLoginModel()); |
| | | StpUtil.login(loginUser.getLoginId(), |
| | | model.setExtra(TENANT_KEY, loginUser.getTenantId()) |
| | | .setExtra(USER_KEY, loginUser.getUserId())); |
| | | model.setExtra(TENANT_KEY, loginUser.getTenantId()) |
| | | .setExtra(USER_KEY, loginUser.getUserId())); |
| | | StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.controller.system; |
| | | |
| | | import java.util.List; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.constraints.*; |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.dromara.common.idempotent.annotation.RepeatSubmit; |
| | | import org.dromara.common.log.annotation.Log; |
| | | import org.dromara.common.web.core.BaseController; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import org.dromara.common.log.enums.BusinessType; |
| | | import org.dromara.common.excel.utils.ExcelUtil; |
| | | import org.dromara.system.domain.vo.SysClientVo; |
| | | import org.dromara.system.domain.bo.SysClientBo; |
| | | import org.dromara.system.service.ISysClientService; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç®¡ç |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-06-18 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/system/client") |
| | | public class SysClientController extends BaseController { |
| | | |
| | | private final ISysClientService sysClientService; |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡çå表 |
| | | */ |
| | | @SaCheckPermission("system:client:list") |
| | | @GetMapping("/list") |
| | | public TableDataInfo<SysClientVo> list(SysClientBo bo, PageQuery pageQuery) { |
| | | return sysClientService.queryPageList(bo, pageQuery); |
| | | } |
| | | |
| | | /** |
| | | * 导åºå®¢æ·ç«¯ç®¡çå表 |
| | | */ |
| | | @SaCheckPermission("system:client:export") |
| | | @Log(title = "客æ·ç«¯ç®¡ç", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(SysClientBo bo, HttpServletResponse response) { |
| | | List<SysClientVo> list = sysClientService.queryList(bo); |
| | | ExcelUtil.exportExcel(list, "客æ·ç«¯ç®¡ç", SysClientVo.class, response); |
| | | } |
| | | |
| | | /** |
| | | * è·å客æ·ç«¯ç®¡ç详ç»ä¿¡æ¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | */ |
| | | @SaCheckPermission("system:client:query") |
| | | @GetMapping("/{id}") |
| | | public R<SysClientVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long id) { |
| | | return R.ok(sysClientService.queryById(id)); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @SaCheckPermission("system:client:add") |
| | | @Log(title = "客æ·ç«¯ç®¡ç", businessType = BusinessType.INSERT) |
| | | @RepeatSubmit() |
| | | @PostMapping() |
| | | public R<Void> add(@Validated(AddGroup.class) @RequestBody SysClientBo bo) { |
| | | return toAjax(sysClientService.insertByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @SaCheckPermission("system:client:edit") |
| | | @Log(title = "客æ·ç«¯ç®¡ç", businessType = BusinessType.UPDATE) |
| | | @RepeatSubmit() |
| | | @PutMapping() |
| | | public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysClientBo bo) { |
| | | return toAjax(sysClientService.updateByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * ç¶æä¿®æ¹ |
| | | */ |
| | | @SaCheckPermission("system:client:edit") |
| | | @Log(title = "客æ·ç«¯ç®¡ç", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/changeStatus") |
| | | public R<Void> changeStatus(@RequestBody SysClientBo bo) { |
| | | return toAjax(sysClientService.updateUserStatus(bo.getId(), bo.getStatus())); |
| | | } |
| | | |
| | | /** |
| | | * å é¤å®¢æ·ç«¯ç®¡ç |
| | | * |
| | | * @param ids 主é®ä¸² |
| | | */ |
| | | @SaCheckPermission("system:client:remove") |
| | | @Log(title = "客æ·ç«¯ç®¡ç", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public R<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long[] ids) { |
| | | return toAjax(sysClientService.deleteWithValidByIds(List.of(ids), true)); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.domain; |
| | | |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.io.Serial; |
| | | |
| | | /** |
| | | * ææç®¡ç对象 sys_client |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-05-15 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @TableName("sys_client") |
| | | public class SysClient extends BaseEntity { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * id |
| | | */ |
| | | @TableId(value = "id") |
| | | private Long id; |
| | | |
| | | /** |
| | | * 客æ·ç«¯id |
| | | */ |
| | | private String clientId; |
| | | |
| | | /** |
| | | * 客æ·ç«¯key |
| | | */ |
| | | private String clientKey; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç§é¥ |
| | | */ |
| | | private String clientSecret; |
| | | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | private String grantType; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | private String deviceType; |
| | | |
| | | /** |
| | | * tokenæ´»è·è¶
æ¶æ¶é´ |
| | | */ |
| | | private Long activeTimeout; |
| | | |
| | | /** |
| | | * tokenåºå®è¶
æ¶æ¶é´ |
| | | */ |
| | | private Long timeout; |
| | | |
| | | /** |
| | | * ç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | private String status; |
| | | |
| | | /** |
| | | * å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼ |
| | | */ |
| | | @TableLogic |
| | | private String delFlag; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.domain.bo; |
| | | |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import jakarta.validation.constraints.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * ææç®¡çä¸å¡å¯¹è±¡ sys_client |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-05-15 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @AutoMapper(target = SysClient.class, reverseConvertGenerate = false) |
| | | public class SysClientBo extends BaseEntity { |
| | | |
| | | /** |
| | | * id |
| | | */ |
| | | @NotNull(message = "idä¸è½ä¸ºç©º", groups = { EditGroup.class }) |
| | | private Long id; |
| | | |
| | | /** |
| | | * 客æ·ç«¯id |
| | | */ |
| | | private String clientId; |
| | | |
| | | /** |
| | | * 客æ·ç«¯key |
| | | */ |
| | | @NotBlank(message = "客æ·ç«¯keyä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String clientKey; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç§é¥ |
| | | */ |
| | | @NotBlank(message = "客æ·ç«¯ç§é¥ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String clientSecret; |
| | | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | @NotNull(message = "ææç±»åä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private List<String> grantTypeList; |
| | | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | private String grantType; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | private String deviceType; |
| | | |
| | | /** |
| | | * tokenæ´»è·è¶
æ¶æ¶é´ |
| | | */ |
| | | private Long activeTimeout; |
| | | |
| | | /** |
| | | * tokenåºå®è¶
æ¶æ¶é´ |
| | | */ |
| | | private Long timeout; |
| | | |
| | | /** |
| | | * ç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | private String status; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.domain.vo; |
| | | |
| | | import org.dromara.system.domain.SysClient; |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import org.dromara.common.excel.annotation.ExcelDictFormat; |
| | | import org.dromara.common.excel.convert.ExcelDictConvert; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | |
| | | /** |
| | | * ææç®¡çè§å¾å¯¹è±¡ sys_client |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-05-15 |
| | | */ |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | @AutoMapper(target = SysClient.class) |
| | | public class SysClientVo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * id |
| | | */ |
| | | @ExcelProperty(value = "id") |
| | | private Long id; |
| | | |
| | | /** |
| | | * 客æ·ç«¯id |
| | | */ |
| | | @ExcelProperty(value = "客æ·ç«¯id") |
| | | private String clientId; |
| | | |
| | | /** |
| | | * 客æ·ç«¯key |
| | | */ |
| | | @ExcelProperty(value = "客æ·ç«¯key") |
| | | private String clientKey; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç§é¥ |
| | | */ |
| | | @ExcelProperty(value = "客æ·ç«¯ç§é¥") |
| | | private String clientSecret; |
| | | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | @ExcelProperty(value = "ææç±»å") |
| | | private List<String> grantTypeList; |
| | | |
| | | /** |
| | | * ææç±»å |
| | | */ |
| | | private String grantType; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | private String deviceType; |
| | | |
| | | /** |
| | | * tokenæ´»è·è¶
æ¶æ¶é´ |
| | | */ |
| | | @ExcelProperty(value = "tokenæ´»è·è¶
æ¶æ¶é´") |
| | | private Long activeTimeout; |
| | | |
| | | /** |
| | | * tokenåºå®è¶
æ¶æ¶é´ |
| | | */ |
| | | @ExcelProperty(value = "tokenåºå®è¶
æ¶æ¶é´") |
| | | private Long timeout; |
| | | |
| | | /** |
| | | * ç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | @ExcelProperty(value = "ç¶æ", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(readConverterExp = "0=æ£å¸¸,1=åç¨") |
| | | private String status; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.mapper; |
| | | |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.vo.SysClientVo; |
| | | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
| | | |
| | | /** |
| | | * ææç®¡çMapperæ¥å£ |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-05-15 |
| | | */ |
| | | public interface SysClientMapper extends BaseMapperPlus<SysClient, SysClientVo> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.service; |
| | | |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.vo.SysClientVo; |
| | | import org.dromara.system.domain.bo.SysClientBo; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç®¡çServiceæ¥å£ |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-06-18 |
| | | */ |
| | | public interface ISysClientService { |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | SysClientVo queryById(Long id); |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ä¿¡æ¯åºäºå®¢æ·ç«¯id |
| | | */ |
| | | SysClient queryByClientId(String clientId); |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡çå表 |
| | | */ |
| | | TableDataInfo<SysClientVo> queryPageList(SysClientBo bo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡çå表 |
| | | */ |
| | | List<SysClientVo> queryList(SysClientBo bo); |
| | | |
| | | /** |
| | | * æ°å¢å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | Boolean insertByBo(SysClientBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | Boolean updateByBo(SysClientBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹ç¶æ |
| | | */ |
| | | int updateUserStatus(Long id, String status); |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å®¢æ·ç«¯ç®¡çä¿¡æ¯ |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.service.impl; |
| | | |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.bo.SysClientBo; |
| | | import org.dromara.system.domain.vo.SysClientVo; |
| | | import org.dromara.system.mapper.SysClientMapper; |
| | | import org.dromara.system.service.ISysClientService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç®¡çServiceä¸å¡å±å¤ç |
| | | * |
| | | * @author Michelle.Chung |
| | | * @date 2023-06-18 |
| | | */ |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class SysClientServiceImpl implements ISysClientService { |
| | | |
| | | private final SysClientMapper baseMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @Override |
| | | public SysClientVo queryById(Long id) { |
| | | SysClientVo vo = baseMapper.selectVoById(id); |
| | | vo.setGrantTypeList(List.of(vo.getGrantType().split(","))); |
| | | return vo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @Override |
| | | public SysClient queryByClientId(String clientId) { |
| | | return baseMapper.selectOne(new LambdaQueryWrapper<SysClient>().eq(SysClient::getClientId, clientId)); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡çå表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<SysClientVo> queryPageList(SysClientBo bo, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<SysClient> lqw = buildQueryWrapper(bo); |
| | | Page<SysClientVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
| | | result.getRecords().forEach(r -> r.setGrantTypeList(List.of(r.getGrantType().split(",")))); |
| | | return TableDataInfo.build(result); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å®¢æ·ç«¯ç®¡çå表 |
| | | */ |
| | | @Override |
| | | public List<SysClientVo> queryList(SysClientBo bo) { |
| | | LambdaQueryWrapper<SysClient> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<SysClient> buildQueryWrapper(SysClientBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | LambdaQueryWrapper<SysClient> lqw = Wrappers.lambdaQuery(); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getClientId()), SysClient::getClientId, bo.getClientId()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getClientKey()), SysClient::getClientKey, bo.getClientKey()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getClientSecret()), SysClient::getClientSecret, bo.getClientSecret()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysClient::getStatus, bo.getStatus()); |
| | | return lqw; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @Override |
| | | public Boolean insertByBo(SysClientBo bo) { |
| | | SysClient add = MapstructUtils.convert(bo, SysClient.class); |
| | | validEntityBeforeSave(add); |
| | | add.setGrantType(String.join(",", bo.getGrantTypeList())); |
| | | // çæclientid |
| | | String clientKey = bo.getClientKey(); |
| | | String clientSecret = bo.getClientSecret(); |
| | | add.setClientId(SecureUtil.md5(clientKey + clientSecret)); |
| | | boolean flag = baseMapper.insert(add) > 0; |
| | | if (flag) { |
| | | bo.setId(add.getId()); |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @Override |
| | | public Boolean updateByBo(SysClientBo bo) { |
| | | SysClient update = MapstructUtils.convert(bo, SysClient.class); |
| | | validEntityBeforeSave(update); |
| | | return baseMapper.updateById(update) > 0; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ç¶æ |
| | | */ |
| | | @Override |
| | | public int updateUserStatus(Long id, String status) { |
| | | return baseMapper.update(null, |
| | | new LambdaUpdateWrapper<SysClient>() |
| | | .set(SysClient::getStatus, status) |
| | | .eq(SysClient::getId, id)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿ååçæ°æ®æ ¡éª |
| | | */ |
| | | private void validEntityBeforeSave(SysClient entity) { |
| | | //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå é¤å®¢æ·ç«¯ç®¡ç |
| | | */ |
| | | @Override |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
| | | if (isValid) { |
| | | //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª |
| | | } |
| | | return baseMapper.deleteBatchIds(ids) > 0; |
| | | } |
| | | } |
| | |
| | | |
| | | @Override |
| | | public void cleanOnlineUserByRole(Long roleId) { |
| | | // 妿è§è²æªç»å®ç¨æ· ç´æ¥è¿å |
| | | Long num = userRoleMapper.selectCount(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getRoleId, roleId)); |
| | | if (num == 0) { |
| | | return; |
| | | } |
| | | List<String> keys = StpUtil.searchTokenValue("", 0, -1, false); |
| | | if (CollUtil.isEmpty(keys)) { |
| | | return; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.system.mapper.SysClientMapper"> |
| | | |
| | | </mapper> |
| | |
| | | insert into sys_menu values('114', '表åæå»º', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 103, 1, sysdate, null, null, '表åæå»ºèå'); |
| | | insert into sys_menu values('115', '代ç çæ', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate, null, null, '代ç çæèå'); |
| | | insert into sys_menu values('121', 'ç§æ·ç®¡ç', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate, null, null, 'ç§æ·ç®¡çèå'); |
| | | insert into sys_menu values('122', 'ç§æ·å¥é¤ç®¡ç', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate, null, null, 'ç§æ·å¥é¤ç®¡çèå'); |
| | | insert into sys_menu values('122', 'ç§æ·å¥é¤ç®¡ç', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate, null, null, 'ç§æ·å¥é¤ç®¡çèå'); |
| | | insert into sys_menu values('123', '客æ·ç«¯ç®¡ç', '1', '1', 'client', 'system/client/index', '', 1, 0, 'C', '0', '0', 'system:client:list', 'international', 103, 1, sysdate, null, null, '客æ·ç«¯ç®¡çèå'); |
| | | -- springboot-adminçæ§ |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate, null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | |
| | | insert into sys_menu values('1613', 'ç§æ·å¥é¤ä¿®æ¹', '122', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:edit', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1614', 'ç§æ·å¥é¤å é¤', '122', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:remove', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1615', 'ç§æ·å¥é¤å¯¼åº', '122', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:export', '#', 103, 1, sysdate, null, null, ''); |
| | | |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | insert into sys_menu values('1061', '客æ·ç«¯ç®¡çæ¥è¯¢', '123', '1', '#', '', 1, 0, 'F', '0', '0', 'system:client:query', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1062', '客æ·ç«¯ç®¡çæ°å¢', '123', '2', '#', '', 1, 0, 'F', '0', '0', 'system:client:add', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1063', '客æ·ç«¯ç®¡çä¿®æ¹', '123', '3', '#', '', 1, 0, 'F', '0', '0', 'system:client:edit', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1064', '客æ·ç«¯ç®¡çå é¤', '123', '4', '#', '', 1, 0, 'F', '0', '0', 'system:client:remove', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1065', '客æ·ç«¯ç®¡ç导åº', '123', '5', '#', '', 1, 0, 'F', '0', '0', 'system:client:export', '#', 103, 1, sysdate, null, null, ''); |
| | | |
| | | -- ---------------------------- |
| | | -- 6ãç¨æ·åè§è²å
³è表 ç¨æ·N-1è§è² |
| | |
| | | insert into sys_role_menu values ('2', '1058'); |
| | | insert into sys_role_menu values ('2', '1059'); |
| | | insert into sys_role_menu values ('2', '1060'); |
| | | insert into sys_role_menu values ('2', '1061'); |
| | | insert into sys_role_menu values ('2', '1062'); |
| | | insert into sys_role_menu values ('2', '1063'); |
| | | insert into sys_role_menu values ('2', '1064'); |
| | | insert into sys_role_menu values ('2', '1065'); |
| | | |
| | | -- ---------------------------- |
| | | -- 8ãè§è²åé¨é¨å
³è表 è§è²1-Né¨é¨ |
| | |
| | | insert into sys_dict_type values(7, '000000', 'éç¥ç±»å', 'sys_notice_type', '0', 103, 1, sysdate, null, null, 'éç¥ç±»åå表'); |
| | | insert into sys_dict_type values(8, '000000', 'éç¥ç¶æ', 'sys_notice_status', '0', 103, 1, sysdate, null, null, 'éç¥ç¶æå表'); |
| | | insert into sys_dict_type values(9, '000000', 'æä½ç±»å', 'sys_oper_type', '0', 103, 1, sysdate, null, null, 'æä½ç±»åå表'); |
| | | insert into sys_dict_type values(10, '000000', 'ç³»ç»ç¶æ', 'sys_common_status', '0', 103, 1, sysdate, null, null, 'ç»å½ç¶æå表'); |
| | | insert into sys_dict_type values(10, '000000', 'ç³»ç»ç¶æ', 'sys_common_status', '0', 103, 1, sysdate, null, null, 'ç»å½ç¶æå表'); |
| | | insert into sys_dict_type values(11, '000000', 'ææç±»å', 'sys_grant_type', '0', 103, 1, sysdate, null, null, 'è®¤è¯ææç±»å'); |
| | | insert into sys_dict_type values(12, '000000', '设å¤ç±»å', 'sys_device_type', '0', 103, 1, sysdate, null, null, '客æ·ç«¯è®¾å¤ç±»å'); |
| | | |
| | | |
| | | -- ---------------------------- |
| | |
| | | insert into sys_dict_data values(26, '000000', 9, 'æ¸
ç©ºæ°æ®', '9', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate, null, null, 'æ¸
空æä½'); |
| | | insert into sys_dict_data values(27, '000000', 1, 'æå', '0', 'sys_common_status', '', 'primary', 'N', '0', 103, 1, sysdate, null, null, 'æ£å¸¸ç¶æ'); |
| | | insert into sys_dict_data values(28, '000000', 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 103, 1, sysdate, null, null, 'åç¨ç¶æ'); |
| | | insert into sys_dict_data values(30, '000000', 0, 'å¯ç 认è¯', 'password', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'å¯ç 认è¯'); |
| | | insert into sys_dict_data values(31, '000000', 0, 'ç信认è¯', 'sms', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'ç信认è¯'); |
| | | insert into sys_dict_data values(32, '000000', 0, 'é®ä»¶è®¤è¯', 'email', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'é®ä»¶è®¤è¯'); |
| | | insert into sys_dict_data values(33, '000000', 0, 'å°ç¨åºè®¤è¯', 'xcx', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'å°ç¨åºè®¤è¯'); |
| | | insert into sys_dict_data values(34, '000000', 0, '䏿¹ç»å½è®¤è¯', 'social', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, '䏿¹ç»å½è®¤è¯'); |
| | | insert into sys_dict_data values(35, '000000', 0, 'PC端', 'pc', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'PC端'); |
| | | insert into sys_dict_data values(36, '000000', 0, 'APP端', 'app', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'APP端'); |
| | | |
| | | |
| | | -- ---------------------------- |
| | |
| | | insert into sys_oss_config values (4, '000000', 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '1', '', NULL, 103, 1, sysdate, 1, sysdate); |
| | | insert into sys_oss_config values (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1', '1', '', NULL, 103, 1, sysdate, 1, sysdate); |
| | | |
| | | -- ---------------------------- |
| | | -- ç³»ç»ææè¡¨ |
| | | -- ---------------------------- |
| | | create table sys_client ( |
| | | id number(20) not null, |
| | | client_id varchar(64) default null, |
| | | client_key varchar(32) default null, |
| | | client_secret varchar(255) default null, |
| | | grant_type varchar(255) default null, |
| | | device_type varchar(32) default null, |
| | | active_timeout number(11) default 1800, |
| | | timeout number(11) default 604800, |
| | | status char(1) default '0', |
| | | del_flag char(1) default '0', |
| | | create_dept number(20) default null, |
| | | create_by number(20) default null, |
| | | create_time date, |
| | | update_by number(20) default null, |
| | | update_time date |
| | | ) |
| | | |
| | | alter table sys_client add constraint pk_sys_client primary key (id); |
| | | |
| | | comment on table sys_client is 'ç³»ç»ææè¡¨'; |
| | | comment on column sys_client.id is '主建'; |
| | | comment on column sys_client.client_id is '客æ·ç«¯id'; |
| | | comment on column sys_client.client_key is '客æ·ç«¯key'; |
| | | comment on column sys_client.client_secret is '客æ·ç«¯ç§é¥'; |
| | | comment on column sys_client.grant_type is 'ææç±»å'; |
| | | comment on column sys_client.device_type is '设å¤ç±»å'; |
| | | comment on column sys_client.active_timeout is 'tokenæ´»è·è¶
æ¶æ¶é´'; |
| | | comment on column sys_client.timeout is 'tokenåºå®è¶
æ¶'; |
| | | comment on column sys_client.status is 'ç¶æï¼0æ£å¸¸ 1åç¨ï¼'; |
| | | comment on column sys_client.del_flag is 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | comment on column sys_client.create_dept is 'å建é¨é¨'; |
| | | comment on column sys_client.create_by is 'å建è
'; |
| | | comment on column sys_client.create_time is 'å建æ¶é´'; |
| | | comment on column sys_client.update_by is 'æ´æ°è
'; |
| | | comment on column sys_client.update_time is 'æ´æ°æ¶é´'; |
| | | |
| | | insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); |
| | | insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); |
| | | |
| | | |
| | | -- ---------------------------- |
| | | -- é©å ï¼ç¨äºsessionè¿æ¥ä¹å èªå¨è®¾ç½®é»è®¤çdateç±»åæ ¼å¼å ç®åæ¶é´æ¥è¯¢ |
| | |
| | | insert into sys_menu values('114', '表åæå»º', '3', '1', 'build', 'tool/build/index', '', '1', '0', 'C', '0', '0', 'tool:build:list', 'build', 103, 1, now(), null, null, '表åæå»ºèå'); |
| | | insert into sys_menu values('115', '代ç çæ', '3', '2', 'gen', 'tool/gen/index', '', '1', '0', 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, now(), null, null, '代ç çæèå'); |
| | | insert into sys_menu values('121', 'ç§æ·ç®¡ç', '6', '1', 'tenant', 'system/tenant/index', '', '1', '0', 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, now(), null, null, 'ç§æ·ç®¡çèå'); |
| | | insert into sys_menu values('122', 'ç§æ·å¥é¤ç®¡ç', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', '1', '0', 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, now(), null, null, 'ç§æ·å¥é¤ç®¡çèå'); |
| | | insert into sys_menu values('122', 'ç§æ·å¥é¤ç®¡ç', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', '1', '0', 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, now(), null, null, 'ç§æ·å¥é¤ç®¡çèå'); |
| | | insert into sys_menu values('123', '客æ·ç«¯ç®¡ç', '1', '1', 'client', 'system/client/index', '', '1', '0', 'C', '0', '0', 'system:client:list', 'international', 103, 1, now(), null, null, '客æ·ç«¯ç®¡çèå'); |
| | | |
| | | -- springboot-adminçæ§ |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', '1', '0', 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, now(), null, null, 'Adminçæ§èå'); |
| | |
| | | insert into sys_menu values('1613', 'ç§æ·å¥é¤ä¿®æ¹', '122', '3', '#', '', '', '1', '0', 'F', '0', '0', 'system:tenantPackage:edit', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1614', 'ç§æ·å¥é¤å é¤', '122', '4', '#', '', '', '1', '0', 'F', '0', '0', 'system:tenantPackage:remove', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1615', 'ç§æ·å¥é¤å¯¼åº', '122', '5', '#', '', '', '1', '0', 'F', '0', '0', 'system:tenantPackage:export', '#', 103, 1, now(), null, null, ''); |
| | | |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | insert into sys_menu values('1061', '客æ·ç«¯ç®¡çæ¥è¯¢', '123', '1', '#', '', '1', '0', 'F', '0', '0', 'system:client:query', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1062', '客æ·ç«¯ç®¡çæ°å¢', '123', '2', '#', '', '1', '0', 'F', '0', '0', 'system:client:add', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1063', '客æ·ç«¯ç®¡çä¿®æ¹', '123', '3', '#', '', '1', '0', 'F', '0', '0', 'system:client:edit', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1064', '客æ·ç«¯ç®¡çå é¤', '123', '4', '#', '', '1', '0', 'F', '0', '0', 'system:client:remove', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1065', '客æ·ç«¯ç®¡ç导åº', '123', '5', '#', '', '1', '0', 'F', '0', '0', 'system:client:export', '#', 103, 1, now(), null, null, ''); |
| | | |
| | | -- ---------------------------- |
| | | -- 6ãç¨æ·åè§è²å
³è表 ç¨æ·N-1è§è² |
| | |
| | | insert into sys_role_menu values ('2', '1058'); |
| | | insert into sys_role_menu values ('2', '1059'); |
| | | insert into sys_role_menu values ('2', '1060'); |
| | | insert into sys_role_menu values ('2', '1061'); |
| | | insert into sys_role_menu values ('2', '1062'); |
| | | insert into sys_role_menu values ('2', '1063'); |
| | | insert into sys_role_menu values ('2', '1064'); |
| | | insert into sys_role_menu values ('2', '1065'); |
| | | |
| | | -- ---------------------------- |
| | | -- 8ãè§è²åé¨é¨å
³è表 è§è²1-Né¨é¨ |
| | |
| | | insert into sys_dict_type values(7, '000000', 'éç¥ç±»å', 'sys_notice_type', '0', 103, 1, now(), null, null, 'éç¥ç±»åå表'); |
| | | insert into sys_dict_type values(8, '000000', 'éç¥ç¶æ', 'sys_notice_status', '0', 103, 1, now(), null, null, 'éç¥ç¶æå表'); |
| | | insert into sys_dict_type values(9, '000000', 'æä½ç±»å', 'sys_oper_type', '0', 103, 1, now(), null, null, 'æä½ç±»åå表'); |
| | | insert into sys_dict_type values(10, '000000', 'ç³»ç»ç¶æ', 'sys_common_status', '0', 103, 1, now(), null, null, 'ç»å½ç¶æå表'); |
| | | |
| | | insert into sys_dict_type values(10, '000000', 'ç³»ç»ç¶æ', 'sys_common_status', '0', 103, 1, now(), null, null, 'ç»å½ç¶æå表'); |
| | | insert into sys_dict_type values(11, '000000', 'ææç±»å', 'sys_grant_type', '0', 103, 1, now(), null, null, 'è®¤è¯ææç±»å'); |
| | | insert into sys_dict_type values(12, '000000', '设å¤ç±»å', 'sys_device_type', '0', 103, 1, now(), null, null, '客æ·ç«¯è®¾å¤ç±»å'); |
| | | |
| | | -- ---------------------------- |
| | | -- 12ãåå
¸æ°æ®è¡¨ |
| | |
| | | insert into sys_dict_data values(26, '000000', 9, 'æ¸
ç©ºæ°æ®', '9', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, now(), null, null, 'æ¸
空æä½'); |
| | | insert into sys_dict_data values(27, '000000', 1, 'æå', '0', 'sys_common_status', '', 'primary', 'N', '0', 103, 1, now(), null, null, 'æ£å¸¸ç¶æ'); |
| | | insert into sys_dict_data values(28, '000000', 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 103, 1, now(), null, null, 'åç¨ç¶æ'); |
| | | insert into sys_dict_data values(30, '000000', 0, 'å¯ç 认è¯', 'password', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'å¯ç 认è¯'); |
| | | insert into sys_dict_data values(31, '000000', 0, 'ç信认è¯', 'sms', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'ç信认è¯'); |
| | | insert into sys_dict_data values(32, '000000', 0, 'é®ä»¶è®¤è¯', 'email', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'é®ä»¶è®¤è¯'); |
| | | insert into sys_dict_data values(33, '000000', 0, 'å°ç¨åºè®¤è¯', 'xcx', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'å°ç¨åºè®¤è¯'); |
| | | insert into sys_dict_data values(34, '000000', 0, '䏿¹ç»å½è®¤è¯', 'social', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, '䏿¹ç»å½è®¤è¯'); |
| | | insert into sys_dict_data values(35, '000000', 0, 'PC端', 'pc', 'sys_device_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'PC端'); |
| | | insert into sys_dict_data values(36, '000000', 0, 'APP端', 'app', 'sys_device_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'APP端'); |
| | | |
| | | |
| | | -- ---------------------------- |
| | |
| | | insert into sys_oss_config values (4, '000000', 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '1', '', 103, 1, now(), 1, now(), null); |
| | | insert into sys_oss_config values (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1', '1', '', 103, 1, now(), 1, now(), NULL); |
| | | |
| | | -- ---------------------------- |
| | | -- ç³»ç»ææè¡¨ |
| | | -- ---------------------------- |
| | | drop table if exists sys_client; |
| | | create table sys_client ( |
| | | id int8, |
| | | client_id varchar(64) ''::varchar, |
| | | client_key varchar(32) ''::varchar, |
| | | client_secret varchar(255) ''::varchar, |
| | | grant_type varchar(255) ''::varchar, |
| | | device_type varchar(32) ''::varchar, |
| | | active_timeout int4 default 1800, |
| | | timeout int4 default 604800, |
| | | status char(1) default '0'::bpchar, |
| | | del_flag char(1) default '0'::bpchar, |
| | | create_dept int8, |
| | | create_by int8, |
| | | create_time timestamp, |
| | | update_by int8, |
| | | update_time timestamp, |
| | | constraint sys_client_pk primary key (id) |
| | | ) |
| | | |
| | | comment on table sys_client is 'ç³»ç»ææè¡¨'; |
| | | comment on column sys_client.id is '主建'; |
| | | comment on column sys_client.client_id is '客æ·ç«¯id'; |
| | | comment on column sys_client.client_key is '客æ·ç«¯key'; |
| | | comment on column sys_client.client_secret is '客æ·ç«¯ç§é¥'; |
| | | comment on column sys_client.grant_type is 'ææç±»å'; |
| | | comment on column sys_client.device_type is '设å¤ç±»å'; |
| | | comment on column sys_client.active_timeout is 'tokenæ´»è·è¶
æ¶æ¶é´'; |
| | | comment on column sys_client.timeout is 'tokenåºå®è¶
æ¶'; |
| | | comment on column sys_client.status is 'ç¶æï¼0æ£å¸¸ 1åç¨ï¼'; |
| | | comment on column sys_client.del_flag is 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | comment on column sys_client.create_dept is 'å建é¨é¨'; |
| | | comment on column sys_client.create_by is 'å建è
'; |
| | | comment on column sys_client.create_time is 'å建æ¶é´'; |
| | | comment on column sys_client.update_by is 'æ´æ°è
'; |
| | | comment on column sys_client.update_time is 'æ´æ°æ¶é´'; |
| | | |
| | | insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); |
| | | insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); |
| | | |
| | | -- å符串èªå¨è½¬æ¶é´ é¿å
æ¡æ¶æ¶é´æ¥è¯¢æ¥éé®é¢ |
| | | create or replace function cast_varchar_to_timestamp(varchar) returns timestamptz as $$ |
| | | select to_timestamp($1, 'yyyy-mm-dd hh24:mi:ss'); |
| | |
| | | insert into sys_menu values('113', 'ç¼åçæ§', '2', '5', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, sysdate(), null, null, 'ç¼åçæ§èå'); |
| | | insert into sys_menu values('114', '表åæå»º', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 103, 1, sysdate(), null, null, '表åæå»ºèå'); |
| | | insert into sys_menu values('115', '代ç çæ', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate(), null, null, '代ç çæèå'); |
| | | insert into sys_menu values ('121', 'ç§æ·ç®¡ç', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate(), null, null, 'ç§æ·ç®¡çèå'); |
| | | insert into sys_menu values ('122', 'ç§æ·å¥é¤ç®¡ç', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate(), null, null, 'ç§æ·å¥é¤ç®¡çèå'); |
| | | insert into sys_menu values('121', 'ç§æ·ç®¡ç', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate(), null, null, 'ç§æ·ç®¡çèå'); |
| | | insert into sys_menu values('122', 'ç§æ·å¥é¤ç®¡ç', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate(), null, null, 'ç§æ·å¥é¤ç®¡çèå'); |
| | | insert into sys_menu values('123', '客æ·ç«¯ç®¡ç', '1', '1', 'client', 'system/client/index', '', 1, 0, 'C', '0', '0', 'system:client:list', 'international', 103, 1, sysdate(), null, null, '客æ·ç«¯ç®¡çèå'); |
| | | |
| | | -- springboot-adminçæ§ |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate(), null, null, 'Adminçæ§èå'); |
| | |
| | | insert into sys_menu values ('1613', 'ç§æ·å¥é¤ä¿®æ¹', '122', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:edit', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('1614', 'ç§æ·å¥é¤å é¤', '122', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:remove', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('1615', 'ç§æ·å¥é¤å¯¼åº', '122', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:export', '#', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | insert into sys_menu values('1061', '客æ·ç«¯ç®¡çæ¥è¯¢', '123', '1', '#', '', 1, 0, 'F', '0', '0', 'system:client:query', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1062', '客æ·ç«¯ç®¡çæ°å¢', '123', '2', '#', '', 1, 0, 'F', '0', '0', 'system:client:add', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1063', '客æ·ç«¯ç®¡çä¿®æ¹', '123', '3', '#', '', 1, 0, 'F', '0', '0', 'system:client:edit', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1064', '客æ·ç«¯ç®¡çå é¤', '123', '4', '#', '', 1, 0, 'F', '0', '0', 'system:client:remove', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1065', '客æ·ç«¯ç®¡ç导åº', '123', '5', '#', '', 1, 0, 'F', '0', '0', 'system:client:export', '#', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | -- ---------------------------- |
| | | -- 6ãç¨æ·åè§è²å
³è表 ç¨æ·N-1è§è² |
| | |
| | | insert into sys_role_menu values ('2', '1058'); |
| | | insert into sys_role_menu values ('2', '1059'); |
| | | insert into sys_role_menu values ('2', '1060'); |
| | | insert into sys_role_menu values ('2', '1061'); |
| | | insert into sys_role_menu values ('2', '1062'); |
| | | insert into sys_role_menu values ('2', '1063'); |
| | | insert into sys_role_menu values ('2', '1064'); |
| | | insert into sys_role_menu values ('2', '1065'); |
| | | |
| | | -- ---------------------------- |
| | | -- 8ãè§è²åé¨é¨å
³è表 è§è²1-Né¨é¨ |
| | |
| | | insert into sys_dict_type values(7, '000000', 'éç¥ç±»å', 'sys_notice_type', '0', 103, 1, sysdate(), null, null, 'éç¥ç±»åå表'); |
| | | insert into sys_dict_type values(8, '000000', 'éç¥ç¶æ', 'sys_notice_status', '0', 103, 1, sysdate(), null, null, 'éç¥ç¶æå表'); |
| | | insert into sys_dict_type values(9, '000000', 'æä½ç±»å', 'sys_oper_type', '0', 103, 1, sysdate(), null, null, 'æä½ç±»åå表'); |
| | | insert into sys_dict_type values(10, '000000', 'ç³»ç»ç¶æ', 'sys_common_status', '0', 103, 1, sysdate(), null, null, 'ç»å½ç¶æå表'); |
| | | insert into sys_dict_type values(10, '000000', 'ç³»ç»ç¶æ', 'sys_common_status', '0', 103, 1, sysdate(), null, null, 'ç»å½ç¶æå表'); |
| | | insert into sys_dict_type values(11, '000000', 'ææç±»å', 'sys_grant_type', '0', 103, 1, sysdate(), null, null, 'è®¤è¯ææç±»å'); |
| | | insert into sys_dict_type values(12, '000000', '设å¤ç±»å', 'sys_device_type', '0', 103, 1, sysdate(), null, null, '客æ·ç«¯è®¾å¤ç±»å'); |
| | | |
| | | |
| | | -- ---------------------------- |
| | |
| | | insert into sys_dict_data values(26, '000000', 9, 'æ¸
ç©ºæ°æ®', '9', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, 'æ¸
空æä½'); |
| | | insert into sys_dict_data values(27, '000000', 1, 'æå', '0', 'sys_common_status', '', 'primary', 'N', '0', 103, 1, sysdate(), null, null, 'æ£å¸¸ç¶æ'); |
| | | insert into sys_dict_data values(28, '000000', 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, 'åç¨ç¶æ'); |
| | | insert into sys_dict_data values(30, '000000', 0, 'å¯ç 认è¯', 'password', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'å¯ç 认è¯'); |
| | | insert into sys_dict_data values(31, '000000', 0, 'ç信认è¯', 'sms', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'ç信认è¯'); |
| | | insert into sys_dict_data values(32, '000000', 0, 'é®ä»¶è®¤è¯', 'email', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'é®ä»¶è®¤è¯'); |
| | | insert into sys_dict_data values(33, '000000', 0, 'å°ç¨åºè®¤è¯', 'xcx', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'å°ç¨åºè®¤è¯'); |
| | | insert into sys_dict_data values(34, '000000', 0, '䏿¹ç»å½è®¤è¯', 'social', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, '䏿¹ç»å½è®¤è¯'); |
| | | insert into sys_dict_data values(35, '000000', 0, 'PC端', 'pc', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'PC端'); |
| | | insert into sys_dict_data values(36, '000000', 0, 'APP端', 'app', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'APP端'); |
| | | |
| | | |
| | | -- ---------------------------- |
| | |
| | | insert into sys_oss_config values (3, '000000', 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), null); |
| | | insert into sys_oss_config values (4, '000000', 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), null); |
| | | insert into sys_oss_config values (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), null); |
| | | |
| | | -- ---------------------------- |
| | | -- ç³»ç»ææè¡¨ |
| | | -- ---------------------------- |
| | | drop table if exists sys_client; |
| | | create table sys_client ( |
| | | id bigint(20) not null comment 'id', |
| | | client_id varchar(64) default null comment '客æ·ç«¯id', |
| | | client_key varchar(32) default null comment '客æ·ç«¯key', |
| | | client_secret varchar(255) default null comment '客æ·ç«¯ç§é¥', |
| | | grant_type varchar(255) default null comment 'ææç±»å', |
| | | device_type varchar(32) default null comment '设å¤ç±»å', |
| | | active_timeout int(11) default 1800 comment 'tokenæ´»è·è¶
æ¶æ¶é´', |
| | | timeout int(11) default 604800 comment 'tokenåºå®è¶
æ¶', |
| | | status char(1) default '0' comment 'ç¶æï¼0æ£å¸¸ 1åç¨ï¼', |
| | | del_flag char(1) default '0' comment 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | create_dept bigint(20) default null comment 'å建é¨é¨', |
| | | create_by bigint(20) default null comment 'å建è
', |
| | | create_time datetime default null comment 'å建æ¶é´', |
| | | update_by bigint(20) default null comment 'æ´æ°è
', |
| | | update_time datetime default null comment 'æ´æ°æ¶é´', |
| | | primary key (id) |
| | | ) engine=innodb comment='ç³»ç»ææè¡¨'; |
| | | |
| | | insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); |
| | | insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); |
| | |
| | | GO |
| | | INSERT sys_dict_data VALUES (28, N'000000', 2, N'失败', N'1', N'sys_common_status', N'', N'danger', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'åç¨ç¶æ') |
| | | GO |
| | | INSERT sys_dict_data VALUES (30, N'000000', 0, N'å¯ç 认è¯', N'password', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'å¯ç 认è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (31, N'000000', 0, N'ç信认è¯', N'sms', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'ç信认è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (32, N'000000', 0, N'é®ä»¶è®¤è¯', N'email', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'é®ä»¶è®¤è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (33, N'000000', 0, N'å°ç¨åºè®¤è¯', N'xcx', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'å°ç¨åºè®¤è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (34, N'000000', 0, N'䏿¹ç»å½è®¤è¯', N'`social`', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'䏿¹ç»å½è®¤è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (35, N'000000', 0, N'PC端', N'`pc`', N'sys_device_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'PC端') |
| | | GO |
| | | INSERT sys_dict_data VALUES (36, N'000000', 0, N'APP端', N'`app`', N'sys_device_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'APP端') |
| | | GO |
| | | |
| | | CREATE TABLE sys_dict_type |
| | | ( |
| | |
| | | INSERT sys_dict_type VALUES (9, N'000000', N'æä½ç±»å', N'sys_oper_type', N'0', 103, 1, getdate(), NULL, NULL, N'æä½ç±»åå表') |
| | | GO |
| | | INSERT sys_dict_type VALUES (10, N'000000', N'ç³»ç»ç¶æ', N'sys_common_status', N'0', 103, 1, getdate(), NULL, NULL, N'ç»å½ç¶æå表') |
| | | GO |
| | | INSERT sys_dict_type VALUES (11, N'000000', N'ææç±»å', N'sys_grant_type', N'0', 103, 1, getdate(), NULL, NULL, N'è®¤è¯ææç±»å') |
| | | GO |
| | | INSERT sys_dict_type VALUES (12, N'000000', N'设å¤ç±»å', N'sys_device_type', N'0', 103, 1, getdate(), NULL, NULL, N'客æ·ç«¯è®¾å¤ç±»å') |
| | | GO |
| | | |
| | | CREATE TABLE sys_logininfor |
| | |
| | | GO |
| | | INSERT sys_menu VALUES (122, N'ç§æ·å¥é¤ç®¡ç', 6, 2, N'tenantPackage', N'system/tenantPackage/index', N'', 1, 0, N'C', N'0', N'0', N'system:tenantPackage:list', N'code', 103, 1, getdate(), NULL, NULL, N'ç§æ·å¥é¤ç®¡çèå') |
| | | GO |
| | | INSERT sys_menu VALUES (123, N'客æ·ç«¯ç®¡ç', 1, 1, N'client', N'system/client/index', N'', 1, 0, N'C', N'0', N'0', N'system:client:list', N'international', 103, 1, getdate(), NULL, NULL, N'客æ·ç«¯ç®¡çèå') |
| | | GO |
| | | INSERT sys_menu VALUES (117, N'Adminçæ§', 2, 5, N'Admin', N'monitor/admin/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:admin:list', N'dashboard', 103, 1, getdate(), NULL, NULL, N'Adminçæ§èå'); |
| | | GO |
| | | INSERT sys_menu VALUES (118, N'æä»¶ç®¡ç', 1, 10, N'oss', N'system/oss/index', N'', 1, 0, N'C', '0', N'0', N'system:oss:list', N'upload', 103, 1, getdate(), NULL, NULL, N'æä»¶ç®¡çèå'); |
| | |
| | | INSERT sys_menu VALUES (1614, N'ç§æ·å¥é¤å é¤', 122, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:tenantPackage:remove', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1615, N'ç§æ·å¥é¤å¯¼åº', 122, 5, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:tenantPackage:export', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | INSERT sys_menu VALUES (1061, N'客æ·ç«¯ç®¡çæ¥è¯¢', 123, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:query', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1062, N'客æ·ç«¯ç®¡çæ°å¢', 123, 2, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:add', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1063, N'客æ·ç«¯ç®¡çä¿®æ¹', 123, 3, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:edit', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1064, N'客æ·ç«¯ç®¡çå é¤', 123, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:remove', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1065, N'客æ·ç«¯ç®¡ç导åº', 123, 5, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:export', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | |
| | | CREATE TABLE sys_notice |
| | |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1060) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1061) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1062) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1063) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1064) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1065) |
| | | GO |
| | | |
| | | CREATE TABLE sys_user |
| | | ( |
| | |
| | | GO |
| | | INSERT INTO sys_oss_config VALUES (N'5', N'000000', N'image', N'ruoyi', N'ruoyi123', N'ruoyi', N'image', N'127.0.0.1:9000', N'',N'N', N'', N'1', N'1', N'', 103, 1, getdate(), 1, getdate(), NULL) |
| | | GO |
| | | |
| | | |
| | | CREATE TABLE sys_client |
| | | ( |
| | | id bigint NOT NULL, |
| | | client_id nvarchar(20) DEFAULT '' NULL, |
| | | client_key nvarchar(255) DEFAULT '' NULL, |
| | | client_secret nvarchar(255) DEFAULT '' NULL, |
| | | grant_type nvarchar(255) DEFAULT '' NULL, |
| | | device_type nvarchar(32) DEFAULT '' NULL, |
| | | active_timeout int DEFAULT ((1800)) NULL, |
| | | timeout int DEFAULT ((604800)) NULL, |
| | | status nchar(1) DEFAULT ('0') NULL, |
| | | del_flag nchar(1) DEFAULT ('0') NULL, |
| | | create_dept bigint NULL, |
| | | create_by bigint NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_by bigint NULL, |
| | | update_time datetime2(7) NULL |
| | | CONSTRAINT PK__sys_client___BFBDE87009ED2882 PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主建', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | EXEC sys.sp_addextendedproperty |
| | | 'MS_Description', N'客æ·ç«¯id' , |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'客æ·ç«¯key', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'client_key' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'客æ·ç«¯ç§é¥', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'client_secret' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ææç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'grant_type' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'设å¤ç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'device_type' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'tokenæ´»è·è¶
æ¶æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'active_timeout' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'tokenåºå®è¶
æ¶', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'timeout' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç¶æï¼0æ£å¸¸ 1åç¨ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'status' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | EXEC sys.sp_addextendedproperty |
| | | 'MS_Description', N'å建é¨é¨' , |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'create_dept' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'create_by' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'update_by' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç³»ç»ææè¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client' |
| | | GO |
| | | |
| | | INSERT INTO sys_client VALUES (N'1', N'e5cd7e4891bf95d1d19206ce24a7b32e', N'pc', N'pc123', N'password,social', N'pc', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) |
| | | GO |
| | | INSERT INTO sys_client VALUES (N'2', N'428a8310cd442757ae699df5d894f051', N'app', N'app123', N'password,sms,social', N'app', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) |
| | | GO |
| | |
| | | comment on column sys_social.update_by is 'æ´æ°è
'; |
| | | comment on column sys_social.update_time is 'æ´æ°æ¶é´'; |
| | | comment on column sys_social.del_flag is 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | |
| | | -- ---------------------------- |
| | | -- ç³»ç»ææè¡¨ |
| | | -- ---------------------------- |
| | | create table sys_client ( |
| | | id number(20) not null, |
| | | client_id varchar(64) default null, |
| | | client_key varchar(32) default null, |
| | | client_secret varchar(255) default null, |
| | | grant_type varchar(255) default null, |
| | | device_type varchar(32) default null, |
| | | active_timeout number(11) default 1800, |
| | | timeout number(11) default 604800, |
| | | status char(1) default '0', |
| | | del_flag char(1) default '0', |
| | | create_dept number(20) default null, |
| | | create_by number(20) default null, |
| | | create_time date, |
| | | update_by number(20) default null, |
| | | update_time date |
| | | ) |
| | | |
| | | alter table sys_client add constraint pk_sys_client primary key (id); |
| | | |
| | | comment on table sys_client is 'ç³»ç»ææè¡¨'; |
| | | comment on column sys_client.id is '主建'; |
| | | comment on column sys_client.client_id is '客æ·ç«¯id'; |
| | | comment on column sys_client.client_key is '客æ·ç«¯key'; |
| | | comment on column sys_client.client_secret is '客æ·ç«¯ç§é¥'; |
| | | comment on column sys_client.grant_type is 'ææç±»å'; |
| | | comment on column sys_client.device_type is '设å¤ç±»å'; |
| | | comment on column sys_client.active_timeout is 'tokenæ´»è·è¶
æ¶æ¶é´'; |
| | | comment on column sys_client.timeout is 'tokenåºå®è¶
æ¶'; |
| | | comment on column sys_client.status is 'ç¶æï¼0æ£å¸¸ 1åç¨ï¼'; |
| | | comment on column sys_client.del_flag is 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | comment on column sys_client.create_dept is 'å建é¨é¨'; |
| | | comment on column sys_client.create_by is 'å建è
'; |
| | | comment on column sys_client.create_time is 'å建æ¶é´'; |
| | | comment on column sys_client.update_by is 'æ´æ°è
'; |
| | | comment on column sys_client.update_time is 'æ´æ°æ¶é´'; |
| | | |
| | | insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); |
| | | insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); |
| | | |
| | | insert into sys_dict_type values(11, '000000', 'ææç±»å', 'sys_grant_type', '0', 103, 1, sysdate, null, null, 'è®¤è¯ææç±»å'); |
| | | insert into sys_dict_type values(12, '000000', '设å¤ç±»å', 'sys_device_type', '0', 103, 1, sysdate, null, null, '客æ·ç«¯è®¾å¤ç±»å'); |
| | | |
| | | insert into sys_dict_data values(30, '000000', 0, 'å¯ç 认è¯', 'password', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'å¯ç 认è¯'); |
| | | insert into sys_dict_data values(31, '000000', 0, 'ç信认è¯', 'sms', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'ç信认è¯'); |
| | | insert into sys_dict_data values(32, '000000', 0, 'é®ä»¶è®¤è¯', 'email', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'é®ä»¶è®¤è¯'); |
| | | insert into sys_dict_data values(33, '000000', 0, 'å°ç¨åºè®¤è¯', 'xcx', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'å°ç¨åºè®¤è¯'); |
| | | insert into sys_dict_data values(34, '000000', 0, '䏿¹ç»å½è®¤è¯', 'social', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, '䏿¹ç»å½è®¤è¯'); |
| | | insert into sys_dict_data values(35, '000000', 0, 'PC端', 'pc', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'PC端'); |
| | | insert into sys_dict_data values(36, '000000', 0, 'APP端', 'app', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate, null, null, 'APP端'); |
| | | |
| | | -- äºçº§èå |
| | | insert into sys_menu values('123', '客æ·ç«¯ç®¡ç', '1', '1', 'client', 'system/client/index', '', 1, 0, 'C', '0', '0', 'system:client:list', 'international', 103, 1, sysdate, null, null, '客æ·ç«¯ç®¡çèå'); |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | insert into sys_menu values('1061', '客æ·ç«¯ç®¡çæ¥è¯¢', '123', '1', '#', '', 1, 0, 'F', '0', '0', 'system:client:query', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1062', '客æ·ç«¯ç®¡çæ°å¢', '123', '2', '#', '', 1, 0, 'F', '0', '0', 'system:client:add', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1063', '客æ·ç«¯ç®¡çä¿®æ¹', '123', '3', '#', '', 1, 0, 'F', '0', '0', 'system:client:edit', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1064', '客æ·ç«¯ç®¡çå é¤', '123', '4', '#', '', 1, 0, 'F', '0', '0', 'system:client:remove', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values('1065', '客æ·ç«¯ç®¡ç导åº', '123', '5', '#', '', 1, 0, 'F', '0', '0', 'system:client:export', '#', 103, 1, sysdate, null, null, ''); |
| | | |
| | | -- è§è²èåæé |
| | | insert into sys_role_menu values ('2', '1061'); |
| | | insert into sys_role_menu values ('2', '1062'); |
| | | insert into sys_role_menu values ('2', '1063'); |
| | | insert into sys_role_menu values ('2', '1064'); |
| | | insert into sys_role_menu values ('2', '1065'); |
| | |
| | | comment on column sys_social.update_by is 'æ´æ°è
'; |
| | | comment on column sys_social.update_time is 'æ´æ°æ¶é´'; |
| | | comment on column sys_social.del_flag is 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | |
| | | -- ---------------------------- |
| | | -- ç³»ç»ææè¡¨ |
| | | -- ---------------------------- |
| | | drop table if exists sys_client; |
| | | create table sys_client ( |
| | | id int8, |
| | | client_id varchar(64) ''::varchar, |
| | | client_key varchar(32) ''::varchar, |
| | | client_secret varchar(255) ''::varchar, |
| | | grant_type varchar(255) ''::varchar, |
| | | device_type varchar(32) ''::varchar, |
| | | active_timeout int4 default 1800, |
| | | timeout int4 default 604800, |
| | | status char(1) default '0'::bpchar, |
| | | del_flag char(1) default '0'::bpchar, |
| | | create_dept int8, |
| | | create_by int8, |
| | | create_time timestamp, |
| | | update_by int8, |
| | | update_time timestamp, |
| | | constraint sys_client_pk primary key (id) |
| | | ) |
| | | |
| | | comment on table sys_client is 'ç³»ç»ææè¡¨'; |
| | | comment on column sys_client.id is '主建'; |
| | | comment on column sys_client.client_id is '客æ·ç«¯id'; |
| | | comment on column sys_client.client_key is '客æ·ç«¯key'; |
| | | comment on column sys_client.client_secret is '客æ·ç«¯ç§é¥'; |
| | | comment on column sys_client.grant_type is 'ææç±»å'; |
| | | comment on column sys_client.device_type is '设å¤ç±»å'; |
| | | comment on column sys_client.active_timeout is 'tokenæ´»è·è¶
æ¶æ¶é´'; |
| | | comment on column sys_client.timeout is 'tokenåºå®è¶
æ¶'; |
| | | comment on column sys_client.status is 'ç¶æï¼0æ£å¸¸ 1åç¨ï¼'; |
| | | comment on column sys_client.del_flag is 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | comment on column sys_client.create_dept is 'å建é¨é¨'; |
| | | comment on column sys_client.create_by is 'å建è
'; |
| | | comment on column sys_client.create_time is 'å建æ¶é´'; |
| | | comment on column sys_client.update_by is 'æ´æ°è
'; |
| | | comment on column sys_client.update_time is 'æ´æ°æ¶é´'; |
| | | |
| | | insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); |
| | | insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); |
| | | |
| | | insert into sys_dict_type values(11, '000000', 'ææç±»å', 'sys_grant_type', '0', 103, 1, now(), null, null, 'è®¤è¯ææç±»å'); |
| | | insert into sys_dict_type values(12, '000000', '设å¤ç±»å', 'sys_device_type', '0', 103, 1, now(), null, null, '客æ·ç«¯è®¾å¤ç±»å'); |
| | | |
| | | insert into sys_dict_data values(30, '000000', 0, 'å¯ç 认è¯', 'password', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'å¯ç 认è¯'); |
| | | insert into sys_dict_data values(31, '000000', 0, 'ç信认è¯', 'sms', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'ç信认è¯'); |
| | | insert into sys_dict_data values(32, '000000', 0, 'é®ä»¶è®¤è¯', 'email', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'é®ä»¶è®¤è¯'); |
| | | insert into sys_dict_data values(33, '000000', 0, 'å°ç¨åºè®¤è¯', 'xcx', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'å°ç¨åºè®¤è¯'); |
| | | insert into sys_dict_data values(34, '000000', 0, '䏿¹ç»å½è®¤è¯', 'social', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, now(), null, null, '䏿¹ç»å½è®¤è¯'); |
| | | insert into sys_dict_data values(35, '000000', 0, 'PC端', 'pc', 'sys_device_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'PC端'); |
| | | insert into sys_dict_data values(36, '000000', 0, 'APP端', 'app', 'sys_device_type', '', 'default', 'N', '0', 103, 1, now(), null, null, 'APP端'); |
| | | |
| | | -- äºçº§èå |
| | | insert into sys_menu values('123', '客æ·ç«¯ç®¡ç', '1', '1', 'client', 'system/client/index', '', '1', '0', 'C', '0', '0', 'system:client:list', 'international', 103, 1, now(), null, null, '客æ·ç«¯ç®¡çèå'); |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | insert into sys_menu values('1061', '客æ·ç«¯ç®¡çæ¥è¯¢', '123', '1', '#', '', '1', '0', 'F', '0', '0', 'system:client:query', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1062', '客æ·ç«¯ç®¡çæ°å¢', '123', '2', '#', '', '1', '0', 'F', '0', '0', 'system:client:add', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1063', '客æ·ç«¯ç®¡çä¿®æ¹', '123', '3', '#', '', '1', '0', 'F', '0', '0', 'system:client:edit', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1064', '客æ·ç«¯ç®¡çå é¤', '123', '4', '#', '', '1', '0', 'F', '0', '0', 'system:client:remove', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values('1065', '客æ·ç«¯ç®¡ç导åº', '123', '5', '#', '', '1', '0', 'F', '0', '0', 'system:client:export', '#', 103, 1, now(), null, null, ''); |
| | | |
| | | -- è§è²èåæé |
| | | insert into sys_role_menu values ('2', '1061'); |
| | | insert into sys_role_menu values ('2', '1062'); |
| | | insert into sys_role_menu values ('2', '1063'); |
| | | insert into sys_role_menu values ('2', '1064'); |
| | | insert into sys_role_menu values ('2', '1065'); |
| | |
| | | 'TABLE', N'sys_social', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | |
| | | CREATE TABLE sys_client |
| | | ( |
| | | id bigint NOT NULL, |
| | | client_id nvarchar(20) DEFAULT '' NULL, |
| | | client_key nvarchar(255) DEFAULT '' NULL, |
| | | client_secret nvarchar(255) DEFAULT '' NULL, |
| | | grant_type nvarchar(255) DEFAULT '' NULL, |
| | | device_type nvarchar(32) DEFAULT '' NULL, |
| | | active_timeout int DEFAULT ((1800)) NULL, |
| | | timeout int DEFAULT ((604800)) NULL, |
| | | status nchar(1) DEFAULT ('0') NULL, |
| | | del_flag nchar(1) DEFAULT ('0') NULL, |
| | | create_dept bigint NULL, |
| | | create_by bigint NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_by bigint NULL, |
| | | update_time datetime2(7) NULL |
| | | CONSTRAINT PK__sys_client___BFBDE87009ED2882 PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主建', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | EXEC sys.sp_addextendedproperty |
| | | 'MS_Description', N'客æ·ç«¯id' , |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'客æ·ç«¯key', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'client_key' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'客æ·ç«¯ç§é¥', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'client_secret' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ææç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'grant_type' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'设å¤ç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'device_type' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'tokenæ´»è·è¶
æ¶æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'active_timeout' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'tokenåºå®è¶
æ¶', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'timeout' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç¶æï¼0æ£å¸¸ 1åç¨ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'status' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | EXEC sys.sp_addextendedproperty |
| | | 'MS_Description', N'å建é¨é¨' , |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'create_dept' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'create_by' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'update_by' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç³»ç»ææè¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_client' |
| | | GO |
| | | |
| | | INSERT INTO sys_client VALUES (N'1', N'e5cd7e4891bf95d1d19206ce24a7b32e', N'pc', N'pc123', N'password,social', N'pc', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) |
| | | GO |
| | | INSERT INTO sys_client VALUES (N'2', N'428a8310cd442757ae699df5d894f051', N'app', N'app123', N'password,sms,social', N'app', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) |
| | | GO |
| | | |
| | | INSERT sys_dict_type VALUES (11, N'000000', N'ææç±»å', N'sys_grant_type', N'0', 103, 1, getdate(), NULL, NULL, N'è®¤è¯ææç±»å') |
| | | GO |
| | | INSERT sys_dict_type VALUES (12, N'000000', N'设å¤ç±»å', N'sys_device_type', N'0', 103, 1, getdate(), NULL, NULL, N'客æ·ç«¯è®¾å¤ç±»å') |
| | | GO |
| | | |
| | | INSERT sys_dict_data VALUES (30, N'000000', 0, N'å¯ç 认è¯', N'password', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'å¯ç 认è¯'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (31, N'000000', 0, N'ç信认è¯', N'sms', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'ç信认è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (32, N'000000', 0, N'é®ä»¶è®¤è¯', N'email', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'é®ä»¶è®¤è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (33, N'000000', 0, N'å°ç¨åºè®¤è¯', N'xcx', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'å°ç¨åºè®¤è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (34, N'000000', 0, N'䏿¹ç»å½è®¤è¯', N'`social`', N'sys_grant_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'䏿¹ç»å½è®¤è¯') |
| | | GO |
| | | INSERT sys_dict_data VALUES (35, N'000000', 0, N'PC端', N'`pc`', N'sys_device_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'PC端') |
| | | GO |
| | | INSERT sys_dict_data VALUES (36, N'000000', 0, N'APP端', N'`app`', N'sys_device_type', N'', N'default', N'N', N'0', 103, 1, getdate(), NULL, NULL, N'APP端') |
| | | GO |
| | | |
| | | -- äºçº§èå |
| | | INSERT sys_menu VALUES (123, N'客æ·ç«¯ç®¡ç', 1, 1, N'client', N'system/client/index', N'', 1, 0, N'C', N'0', N'0', N'system:client:list', N'international', 103, 1, getdate(), NULL, NULL, N'客æ·ç«¯ç®¡çèå') |
| | | GO |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | INSERT sys_menu VALUES (1061, N'客æ·ç«¯ç®¡çæ¥è¯¢', 123, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:query', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1062, N'客æ·ç«¯ç®¡çæ°å¢', 123, 2, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:add', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1063, N'客æ·ç«¯ç®¡çä¿®æ¹', 123, 3, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:edit', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1064, N'客æ·ç«¯ç®¡çå é¤', 123, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:remove', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (1065, N'客æ·ç«¯ç®¡ç导åº', 123, 5, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'system:client:export', N'#', 103, 1, getdate(), NULL, NULL, N''); |
| | | GO |
| | | |
| | | |
| | | -- è§è²èåæé |
| | | INSERT sys_role_menu VALUES (2, 1061) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1062) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1063) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1064) |
| | | GO |
| | | INSERT sys_role_menu VALUES (2, 1065) |
| | | GO |
| | |
| | | del_flag char(1) default '0' comment 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | PRIMARY KEY (id) |
| | | ) engine=innodb comment = '社ä¼åå
³ç³»è¡¨'; |
| | | |
| | | -- ---------------------------- |
| | | -- ç³»ç»ææè¡¨ |
| | | -- ---------------------------- |
| | | drop table if exists sys_client; |
| | | create table sys_client ( |
| | | id bigint(20) not null comment 'id', |
| | | client_id varchar(64) default null comment '客æ·ç«¯id', |
| | | client_key varchar(32) default null comment '客æ·ç«¯key', |
| | | client_secret varchar(255) default null comment '客æ·ç«¯ç§é¥', |
| | | grant_type varchar(255) default null comment 'ææç±»å', |
| | | device_type varchar(32) default null comment '设å¤ç±»å', |
| | | active_timeout int(11) default 1800 comment 'tokenæ´»è·è¶
æ¶æ¶é´', |
| | | timeout int(11) default 604800 comment 'tokenåºå®è¶
æ¶', |
| | | status char(1) default '0' comment 'ç¶æï¼0æ£å¸¸ 1åç¨ï¼', |
| | | del_flag char(1) default '0' comment 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | create_dept bigint(20) default null comment 'å建é¨é¨', |
| | | create_by bigint(20) default null comment 'å建è
', |
| | | create_time datetime default null comment 'å建æ¶é´', |
| | | update_by bigint(20) default null comment 'æ´æ°è
', |
| | | update_time datetime default null comment 'æ´æ°æ¶é´', |
| | | primary key (id) |
| | | ) engine=innodb comment='ç³»ç»ææè¡¨'; |
| | | |
| | | insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); |
| | | insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); |
| | | |
| | | insert into sys_dict_type values(11, '000000', 'ææç±»å', 'sys_grant_type', '0', 103, 1, sysdate(), null, null, 'è®¤è¯ææç±»å'); |
| | | insert into sys_dict_type values(12, '000000', '设å¤ç±»å', 'sys_device_type', '0', 103, 1, sysdate(), null, null, '客æ·ç«¯è®¾å¤ç±»å'); |
| | | |
| | | insert into sys_dict_data values(30, '000000', 0, 'å¯ç 认è¯', 'password', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'å¯ç 认è¯'); |
| | | insert into sys_dict_data values(31, '000000', 0, 'ç信认è¯', 'sms', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'ç信认è¯'); |
| | | insert into sys_dict_data values(32, '000000', 0, 'é®ä»¶è®¤è¯', 'email', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'é®ä»¶è®¤è¯'); |
| | | insert into sys_dict_data values(33, '000000', 0, 'å°ç¨åºè®¤è¯', 'xcx', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'å°ç¨åºè®¤è¯'); |
| | | insert into sys_dict_data values(34, '000000', 0, '䏿¹ç»å½è®¤è¯', 'social', 'sys_grant_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, '䏿¹ç»å½è®¤è¯'); |
| | | insert into sys_dict_data values(35, '000000', 0, 'PC端', 'pc', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'PC端'); |
| | | insert into sys_dict_data values(36, '000000', 0, 'APP端', 'app', 'sys_device_type', '', 'default', 'N', '0', 103, 1, sysdate(), null, null, 'APP端'); |
| | | |
| | | -- äºçº§èå |
| | | insert into sys_menu values('123', '客æ·ç«¯ç®¡ç', '1', '1', 'client', 'system/client/index', '', 1, 0, 'C', '0', '0', 'system:client:list', 'international', 103, 1, sysdate(), null, null, '客æ·ç«¯ç®¡çèå'); |
| | | -- 客æ·ç«¯ç®¡çæé® |
| | | insert into sys_menu values('1061', '客æ·ç«¯ç®¡çæ¥è¯¢', '123', '1', '#', '', 1, 0, 'F', '0', '0', 'system:client:query', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1062', '客æ·ç«¯ç®¡çæ°å¢', '123', '2', '#', '', 1, 0, 'F', '0', '0', 'system:client:add', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1063', '客æ·ç«¯ç®¡çä¿®æ¹', '123', '3', '#', '', 1, 0, 'F', '0', '0', 'system:client:edit', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1064', '客æ·ç«¯ç®¡çå é¤', '123', '4', '#', '', 1, 0, 'F', '0', '0', 'system:client:remove', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values('1065', '客æ·ç«¯ç®¡ç导åº', '123', '5', '#', '', 1, 0, 'F', '0', '0', 'system:client:export', '#', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | -- è§è²èåæé |
| | | insert into sys_role_menu values ('2', '1061'); |
| | | insert into sys_role_menu values ('2', '1062'); |
| | | insert into sys_role_menu values ('2', '1063'); |
| | | insert into sys_role_menu values ('2', '1064'); |
| | | insert into sys_role_menu values ('2', '1065'); |