Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
4b4d5c01
提交
4b4d5c01
authored
1月 13, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
用户注册登录功能实现
上级
7260db1e
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
72 行增加
和
7 行删除
+72
-7
TokenController.java
...ain/java/org/dromara/auth/controller/TokenController.java
+6
-1
RegisterBody.java
...uth/src/main/java/org/dromara/auth/form/RegisterBody.java
+9
-2
SysLoginService.java
...c/main/java/org/dromara/auth/service/SysLoginService.java
+8
-3
SysTenant.java
...em/src/main/java/org/dromara/system/domain/SysTenant.java
+12
-0
SysTenantBo.java
...c/main/java/org/dromara/system/domain/bo/SysTenantBo.java
+11
-0
SysTenantVo.java
...c/main/java/org/dromara/system/domain/vo/SysTenantVo.java
+6
-0
RemoteUserServiceImpl.java
.../java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
+7
-0
SysTenantServiceImpl.java
...org/dromara/system/service/impl/SysTenantServiceImpl.java
+13
-1
没有找到文件。
ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java
浏览文件 @
4b4d5c01
...
@@ -191,10 +191,15 @@ public class TokenController {
...
@@ -191,10 +191,15 @@ public class TokenController {
/**
/**
* 登录页面租户下拉框
* 登录页面租户下拉框
*
*
* @param request 请求
* @param virtual 是否虚拟租户,默认为false
* @param phone 手机号
* @return 租户列表
* @return 租户列表
*/
*/
@GetMapping
(
"/tenant/list"
)
@GetMapping
(
"/tenant/list"
)
public
R
<
LoginTenantVo
>
tenantList
(
HttpServletRequest
request
,
@RequestParam
(
value
=
"phone"
,
required
=
false
)
String
phone
)
throws
Exception
{
public
R
<
LoginTenantVo
>
tenantList
(
HttpServletRequest
request
,
@RequestParam
(
value
=
"virtual"
,
defaultValue
=
"false"
)
Boolean
virtual
,
@RequestParam
(
value
=
"phone"
,
required
=
false
)
String
phone
)
throws
Exception
{
// 返回对象
// 返回对象
LoginTenantVo
result
=
new
LoginTenantVo
();
LoginTenantVo
result
=
new
LoginTenantVo
();
boolean
enable
=
TenantHelper
.
isEnable
();
boolean
enable
=
TenantHelper
.
isEnable
();
...
...
ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java
浏览文件 @
4b4d5c01
package
org
.
dromara
.
auth
.
form
;
package
org
.
dromara
.
auth
.
form
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.Pattern
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
org.dromara.common.core.constant.RegexConstants
;
import
org.dromara.common.core.domain.model.LoginBody
;
import
org.dromara.common.core.domain.model.LoginBody
;
import
org.hibernate.validator.constraints.Length
;
import
org.hibernate.validator.constraints.Length
;
...
@@ -27,10 +29,15 @@ public class RegisterBody extends LoginBody {
...
@@ -27,10 +29,15 @@ public class RegisterBody extends LoginBody {
/**
/**
* 用户密码
* 用户密码
*/
*/
@NotBlank
(
message
=
"{user.password.not.blank}"
)
@Length
(
min
=
PASSWORD_MIN_LENGTH
,
max
=
PASSWORD_MAX_LENGTH
,
message
=
"{user.password.length.valid}"
)
private
String
password
;
private
String
password
;
/**
* 用户手机号
*/
@NotBlank
(
message
=
"{user.phone.not.blank}"
)
@Pattern
(
regexp
=
RegexConstants
.
MOBILE
,
message
=
"{user.phone.length.valid}"
)
private
String
phone
;
/**
/**
* 用户类型
* 用户类型
*/
*/
...
...
ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java
浏览文件 @
4b4d5c01
package
org
.
dromara
.
auth
.
service
;
package
org
.
dromara
.
auth
.
service
;
import
cn.dev33.satoken.exception.NotLoginException
;
import
cn.dev33.satoken.exception.NotLoginException
;
import
cn.dev33.satoken.secure.BCrypt
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
...
@@ -138,7 +137,9 @@ public class SysLoginService {
...
@@ -138,7 +137,9 @@ public class SysLoginService {
public
void
register
(
RegisterBody
registerBody
)
{
public
void
register
(
RegisterBody
registerBody
)
{
String
tenantId
=
registerBody
.
getTenantId
();
String
tenantId
=
registerBody
.
getTenantId
();
String
username
=
registerBody
.
getUsername
();
String
username
=
registerBody
.
getUsername
();
String
password
=
registerBody
.
getPassword
();
String
password
=
registerBody
.
getPassword
();
String
phone
=
registerBody
.
getPhone
();
// 校验用户类型是否存在
// 校验用户类型是否存在
String
userType
=
UserType
.
getUserType
(
registerBody
.
getUserType
()).
getUserType
();
String
userType
=
UserType
.
getUserType
(
registerBody
.
getUserType
()).
getUserType
();
...
@@ -151,15 +152,19 @@ public class SysLoginService {
...
@@ -151,15 +152,19 @@ public class SysLoginService {
// 注册用户信息
// 注册用户信息
RemoteUserBo
remoteUserBo
=
new
RemoteUserBo
();
RemoteUserBo
remoteUserBo
=
new
RemoteUserBo
();
remoteUserBo
.
setTenantId
(
tenantId
);
remoteUserBo
.
setTenantId
(
tenantId
);
remoteUserBo
.
setUserName
(
username
);
remoteUserBo
.
setUserName
(
StringUtils
.
isNotEmpty
(
phone
)
?
phone
:
username
);
remoteUserBo
.
setNickName
(
username
);
remoteUserBo
.
setNickName
(
username
);
remoteUserBo
.
setPassword
(
BCrypt
.
hashpw
(
password
)
);
remoteUserBo
.
setPassword
(
password
);
remoteUserBo
.
setUserType
(
userType
);
remoteUserBo
.
setUserType
(
userType
);
remoteUserBo
.
setPhonenumber
(
phone
);
boolean
regFlag
=
remoteUserService
.
registerUserInfo
(
remoteUserBo
);
boolean
regFlag
=
remoteUserService
.
registerUserInfo
(
remoteUserBo
);
if
(!
regFlag
)
{
if
(!
regFlag
)
{
throw
new
UserException
(
"user.register.error"
);
throw
new
UserException
(
"user.register.error"
);
}
}
recordLogininfor
(
tenantId
,
username
,
Constants
.
REGISTER
,
MessageUtils
.
message
(
"user.register.success"
));
recordLogininfor
(
tenantId
,
username
,
Constants
.
REGISTER
,
MessageUtils
.
message
(
"user.register.success"
));
}
}
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java
浏览文件 @
4b4d5c01
package
org
.
dromara
.
system
.
domain
;
package
org
.
dromara
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
...
@@ -34,6 +35,11 @@ public class SysTenant extends BaseEntity {
...
@@ -34,6 +35,11 @@ public class SysTenant extends BaseEntity {
*/
*/
private
String
tenantId
;
private
String
tenantId
;
/**
* 企业码
*/
private
String
companyCode
;
/**
/**
* 联系人
* 联系人
*/
*/
...
@@ -99,6 +105,12 @@ public class SysTenant extends BaseEntity {
...
@@ -99,6 +105,12 @@ public class SysTenant extends BaseEntity {
*/
*/
private
Long
accountCount
;
private
Long
accountCount
;
/**
* 是否虚拟租户(0否 1是)
*/
@TableField
(
value
=
"`virtual`"
)
private
Boolean
virtual
;
/**
/**
* 租户状态(0正常 1停用)
* 租户状态(0正常 1停用)
*/
*/
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java
浏览文件 @
4b4d5c01
...
@@ -34,6 +34,11 @@ public class SysTenantBo extends BaseEntity {
...
@@ -34,6 +34,11 @@ public class SysTenantBo extends BaseEntity {
*/
*/
private
String
tenantId
;
private
String
tenantId
;
/**
* 企业码
*/
private
String
companyCode
;
/**
/**
* 联系人
* 联系人
*/
*/
...
@@ -99,6 +104,12 @@ public class SysTenantBo extends BaseEntity {
...
@@ -99,6 +104,12 @@ public class SysTenantBo extends BaseEntity {
*/
*/
private
String
remark
;
private
String
remark
;
/**
* 是否虚拟租户(0否 1是)
*/
@NotNull
(
message
=
"是否虚拟租户不能为空"
,
groups
=
{
AddGroup
.
class
})
private
Boolean
virtual
;
/**
/**
* 租户套餐编号
* 租户套餐编号
*/
*/
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java
浏览文件 @
4b4d5c01
...
@@ -125,5 +125,11 @@ public class SysTenantVo implements Serializable {
...
@@ -125,5 +125,11 @@ public class SysTenantVo implements Serializable {
@ExcelDictFormat
(
readConverterExp
=
"0=正常,1=停用"
)
@ExcelDictFormat
(
readConverterExp
=
"0=正常,1=停用"
)
private
String
status
;
private
String
status
;
/**
* 是否虚拟租户(0否 1是)
*/
@ExcelProperty
(
value
=
"是否虚拟租户"
,
converter
=
ExcelDictConvert
.
class
)
@ExcelDictFormat
(
readConverterExp
=
"false=否,true=是"
)
private
Boolean
virtual
;
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
浏览文件 @
4b4d5c01
package
org
.
dromara
.
system
.
dubbo
;
package
org
.
dromara
.
system
.
dubbo
;
import
cn.dev33.satoken.secure.BCrypt
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Opt
;
import
cn.hutool.core.lang.Opt
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
...
@@ -15,6 +16,7 @@ import org.dromara.common.core.exception.ServiceException;
...
@@ -15,6 +16,7 @@ import org.dromara.common.core.exception.ServiceException;
import
org.dromara.common.core.exception.user.UserException
;
import
org.dromara.common.core.exception.user.UserException
;
import
org.dromara.common.core.utils.DateUtils
;
import
org.dromara.common.core.utils.DateUtils
;
import
org.dromara.common.core.utils.MapstructUtils
;
import
org.dromara.common.core.utils.MapstructUtils
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.mybatis.helper.DataPermissionHelper
;
import
org.dromara.common.mybatis.helper.DataPermissionHelper
;
import
org.dromara.common.tenant.helper.TenantHelper
;
import
org.dromara.common.tenant.helper.TenantHelper
;
...
@@ -194,6 +196,11 @@ public class RemoteUserServiceImpl implements RemoteUserService {
...
@@ -194,6 +196,11 @@ public class RemoteUserServiceImpl implements RemoteUserService {
*/
*/
@Override
@Override
public
Boolean
registerUserInfo
(
RemoteUserBo
remoteUserBo
)
throws
UserException
,
ServiceException
{
public
Boolean
registerUserInfo
(
RemoteUserBo
remoteUserBo
)
throws
UserException
,
ServiceException
{
//密码为空使用初始化密码
String
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
String
password
=
StringUtils
.
isEmpty
(
remoteUserBo
.
getPassword
())
?
initPassword
:
remoteUserBo
.
getPassword
();
remoteUserBo
.
setPassword
(
BCrypt
.
hashpw
(
password
));
SysUserBo
sysUserBo
=
MapstructUtils
.
convert
(
remoteUserBo
,
SysUserBo
.
class
);
SysUserBo
sysUserBo
=
MapstructUtils
.
convert
(
remoteUserBo
,
SysUserBo
.
class
);
String
username
=
sysUserBo
.
getUserName
();
String
username
=
sysUserBo
.
getUserName
();
boolean
exist
=
TenantHelper
.
dynamic
(
remoteUserBo
.
getTenantId
(),
()
->
{
boolean
exist
=
TenantHelper
.
dynamic
(
remoteUserBo
.
getTenantId
(),
()
->
{
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
浏览文件 @
4b4d5c01
...
@@ -112,6 +112,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
...
@@ -112,6 +112,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getAddress
()),
SysTenant:
:
getAddress
,
bo
.
getAddress
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getAddress
()),
SysTenant:
:
getAddress
,
bo
.
getAddress
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getIntro
()),
SysTenant:
:
getIntro
,
bo
.
getIntro
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getIntro
()),
SysTenant:
:
getIntro
,
bo
.
getIntro
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getDomain
()),
SysTenant:
:
getDomain
,
bo
.
getDomain
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getDomain
()),
SysTenant:
:
getDomain
,
bo
.
getDomain
());
lqw
.
eq
(
bo
.
getVirtual
()
!=
null
,
SysTenant:
:
getVirtual
,
bo
.
getVirtual
());
lqw
.
eq
(
bo
.
getPackageId
()
!=
null
,
SysTenant:
:
getPackageId
,
bo
.
getPackageId
());
lqw
.
eq
(
bo
.
getPackageId
()
!=
null
,
SysTenant:
:
getPackageId
,
bo
.
getPackageId
());
lqw
.
eq
(
bo
.
getExpireTime
()
!=
null
,
SysTenant:
:
getExpireTime
,
bo
.
getExpireTime
());
lqw
.
eq
(
bo
.
getExpireTime
()
!=
null
,
SysTenant:
:
getExpireTime
,
bo
.
getExpireTime
());
lqw
.
eq
(
bo
.
getAccountCount
()
!=
null
,
SysTenant:
:
getAccountCount
,
bo
.
getAccountCount
());
lqw
.
eq
(
bo
.
getAccountCount
()
!=
null
,
SysTenant:
:
getAccountCount
,
bo
.
getAccountCount
());
...
@@ -130,9 +131,18 @@ public class SysTenantServiceImpl implements ISysTenantService {
...
@@ -130,9 +131,18 @@ public class SysTenantServiceImpl implements ISysTenantService {
// 获取所有租户编号
// 获取所有租户编号
List
<
String
>
tenantIds
=
baseMapper
.
selectObjs
(
List
<
String
>
tenantIds
=
baseMapper
.
selectObjs
(
new
LambdaQueryWrapper
<
SysTenant
>().
select
(
SysTenant:
:
getTenantId
),
x
->
{
return
Convert
.
toStr
(
x
);});
new
LambdaQueryWrapper
<
SysTenant
>().
select
(
SysTenant:
:
getTenantId
),
x
->
{
return
Convert
.
toStr
(
x
);
});
//获取所有租户公司码
List
<
String
>
companyCodes
=
baseMapper
.
selectObjs
(
new
LambdaQueryWrapper
<
SysTenant
>().
select
(
SysTenant:
:
getCompanyCode
),
x
->
{
return
Convert
.
toStr
(
x
);
});
String
tenantId
=
generateTenantId
(
tenantIds
);
String
tenantId
=
generateTenantId
(
tenantIds
);
String
companyCode
=
generateTenantId
(
companyCodes
);
add
.
setTenantId
(
tenantId
);
add
.
setTenantId
(
tenantId
);
add
.
setCompanyCode
(
companyCode
);
boolean
flag
=
baseMapper
.
insert
(
add
)
>
0
;
boolean
flag
=
baseMapper
.
insert
(
add
)
>
0
;
if
(!
flag
)
{
if
(!
flag
)
{
throw
new
ServiceException
(
"创建租户失败"
);
throw
new
ServiceException
(
"创建租户失败"
);
...
@@ -278,6 +288,8 @@ public class SysTenantServiceImpl implements ISysTenantService {
...
@@ -278,6 +288,8 @@ public class SysTenantServiceImpl implements ISysTenantService {
SysTenant
tenant
=
MapstructUtils
.
convert
(
bo
,
SysTenant
.
class
);
SysTenant
tenant
=
MapstructUtils
.
convert
(
bo
,
SysTenant
.
class
);
tenant
.
setTenantId
(
null
);
tenant
.
setTenantId
(
null
);
tenant
.
setPackageId
(
null
);
tenant
.
setPackageId
(
null
);
tenant
.
setCompanyCode
(
null
);
tenant
.
setVirtual
(
null
);
return
baseMapper
.
updateById
(
tenant
)
>
0
;
return
baseMapper
.
updateById
(
tenant
)
>
0
;
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论