Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
d9d73c56
提交
d9d73c56
authored
6月 26, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev'
上级
e02af858
bb4efa5f
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
341 行增加
和
170 行删除
+341
-170
IBaseService.java
...java/org/dromara/common/mybatis/service/IBaseService.java
+2
-2
LoginHelper.java
...in/java/org/dromara/common/satoken/utils/LoginHelper.java
+28
-4
OrderAirportServiceImpl.java
.../dromara/server/service/impl/OrderAirportServiceImpl.java
+2
-0
OrderHotelServiceImpl.java
...rg/dromara/server/service/impl/OrderHotelServiceImpl.java
+2
-0
OrderInvoicingServiceImpl.java
...romara/server/service/impl/OrderInvoicingServiceImpl.java
+0
-1
OrderTrainServiceImpl.java
...rg/dromara/server/service/impl/OrderTrainServiceImpl.java
+2
-0
OrderVehiclesServiceImpl.java
...dromara/server/service/impl/OrderVehiclesServiceImpl.java
+2
-0
SysProjectController.java
...romara/system/controller/system/SysProjectController.java
+17
-1
SysUserController.java
...g/dromara/system/controller/system/SysUserController.java
+3
-18
SysUserProjectController.java
...ra/system/controller/system/SysUserProjectController.java
+13
-0
SysUserProject.java
...c/main/java/org/dromara/system/domain/SysUserProject.java
+9
-2
SysUserProjectBo.java
...n/java/org/dromara/system/domain/bo/SysUserProjectBo.java
+5
-0
SysUserProjectInsertBo.java
.../org/dromara/system/domain/bo/SysUserProjectInsertBo.java
+65
-0
SysUserProjectVo.java
...n/java/org/dromara/system/domain/vo/SysUserProjectVo.java
+12
-2
RemoteProjectServiceImpl.java
...va/org/dromara/system/dubbo/RemoteProjectServiceImpl.java
+14
-9
SysProjectUserImportListener.java
...dromara/system/listener/SysProjectUserImportListener.java
+24
-47
SysUserImportListener.java
...va/org/dromara/system/listener/SysUserImportListener.java
+1
-9
ISysUserProjectService.java
...va/org/dromara/system/service/ISysUserProjectService.java
+8
-0
ISysUserService.java
...main/java/org/dromara/system/service/ISysUserService.java
+0
-8
IThirdService.java
...c/main/java/org/dromara/system/service/IThirdService.java
+18
-0
SysTenantServiceImpl.java
...org/dromara/system/service/impl/SysTenantServiceImpl.java
+3
-3
SysUserProjectServiceImpl.java
...romara/system/service/impl/SysUserProjectServiceImpl.java
+53
-0
SysUserServiceImpl.java
...a/org/dromara/system/service/impl/SysUserServiceImpl.java
+0
-0
ThirdServiceImpl.java
...ava/org/dromara/system/service/impl/ThirdServiceImpl.java
+36
-0
DeptFileApproveAssigneeListener.java
...ow/flowable/listener/DeptFileApproveAssigneeListener.java
+22
-4
DeptFileApproveGroupListener.java
...kflow/flowable/listener/DeptFileApproveGroupListener.java
+0
-46
DeptReviewCompleteListener.java
...orkflow/flowable/listener/DeptReviewCompleteListener.java
+0
-14
没有找到文件。
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/IBaseService.java
浏览文件 @
d9d73c56
...
...
@@ -24,11 +24,11 @@ public interface IBaseService<V, B, T> {
V
queryById
(
Long
id
);
/**
* 分页查询
活动机票订单列表
* 分页查询
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return
活动机票订单
分页列表
* @return 分页列表
*/
TableDataInfo
<
V
>
queryPageList
(
B
bo
,
PageQuery
pageQuery
);
...
...
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
浏览文件 @
d9d73c56
...
...
@@ -46,6 +46,7 @@ public class LoginHelper {
public
static
final
String
MEMBER_ID
=
"memberId"
;
public
static
final
String
USER_TYPE
=
"userType"
;
public
static
final
String
PROJECT_ID
=
"projectId"
;
public
static
final
String
PROJECT_DEPT_ID
=
"projectDeptId"
;
/**
* 登录系统 基于 设备类型
...
...
@@ -66,9 +67,6 @@ public class LoginHelper {
.
setExtra
(
USER_TYPE
,
loginUser
.
getUserType
())
);
StpUtil
.
getTokenSession
().
set
(
LOGIN_USER_KEY
,
loginUser
);
if
(
StringUtils
.
contains
(
loginUser
.
getUserType
(),
UserType
.
PROJECT_USER
.
getUserType
()))
{
StpUtil
.
getTokenSession
().
set
(
PROJECT_ID
,
Long
.
valueOf
(
StringUtils
.
splitList
(
loginUser
.
getUserType
(),
":"
).
get
(
1
)));
}
}
/**
...
...
@@ -165,6 +163,25 @@ public class LoginHelper {
}
}
/**
* 获取项目部门id
*/
public
static
Long
getProjectDeptId
()
{
if
(
StringUtils
.
equals
(
getUserTypeStr
(),
UserType
.
SYS_USER
.
getUserType
())
&&
getProjectId
()
==
null
)
{
return
getDeptId
();
}
SaSession
session
=
StpUtil
.
getTokenSession
();
if
(
ObjectUtil
.
isNull
(
session
))
{
return
null
;
}
Object
projectDept
=
session
.
get
(
PROJECT_DEPT_ID
);
if
(
projectDept
==
null
)
{
return
null
;
}
else
{
return
Long
.
parseLong
(
projectDept
.
toString
());
}
}
/**
* 获取客户端ID
*/
...
...
@@ -274,12 +291,19 @@ public class LoginHelper {
* 动态设置项目id
*
* @param projectId 项目id
* @param deptId 部门id
*/
public
static
void
dynamicProjectId
(
Long
projectId
)
{
public
static
void
dynamicProjectId
(
Long
projectId
,
Long
deptId
)
{
if
(
projectId
!=
null
)
{
StpUtil
.
getTokenSession
().
set
(
PROJECT_ID
,
projectId
);
if
(
deptId
!=
null
)
{
StpUtil
.
getTokenSession
().
set
(
PROJECT_DEPT_ID
,
deptId
);
}
else
{
StpUtil
.
getTokenSession
().
delete
(
PROJECT_DEPT_ID
);
}
}
else
{
StpUtil
.
getTokenSession
().
delete
(
PROJECT_ID
);
StpUtil
.
getTokenSession
().
delete
(
PROJECT_DEPT_ID
);
}
}
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/OrderAirportServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -178,6 +178,7 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo,
List
<
OrderAirportPay
>
orderPayList
=
payMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderAirportPay
>().
in
(
OrderAirportPay:
:
getOrderId
,
orderIds
));
List
<
OrderAirportTicket
>
orderTicketList
=
ticketMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderAirportTicket
>().
in
(
OrderAirportTicket:
:
getOrderId
,
orderIds
));
Long
projectId
=
isAdd
?
LoginHelper
.
getProjectId
()
:
null
;
Long
projectDeptId
=
isAdd
?
LoginHelper
.
getProjectDeptId
()
:
null
;
//更新数据
orderList
.
forEach
(
order
->
{
scheduledExecutorService
.
execute
(()
->
{
...
...
@@ -312,6 +313,7 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo,
.
map
(
o
->
DateUtil
.
parse
(
o
.
getDepartTime
(),
"yyyy-MM-dd HH:mm"
))
.
orElse
(
null
)
);
invoice
.
setCreateDept
(
projectDeptId
);
orderInvoicingService
.
save
(
invoice
);
});
}
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/OrderHotelServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -177,6 +177,7 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord
List
<
OrderHotelPsgInfo
>
orderPsgList
=
psgInfoMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderHotelPsgInfo
>().
in
(
OrderHotelPsgInfo:
:
getOrderId
,
orderIds
));
List
<
OrderHotelPayInfo
>
orderPayInfoList
=
payInfoMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderHotelPayInfo
>().
in
(
OrderHotelPayInfo:
:
getOrderId
,
orderIds
));
Long
projectId
=
isAdd
?
LoginHelper
.
getProjectId
()
:
null
;
Long
projectDeptId
=
isAdd
?
LoginHelper
.
getProjectDeptId
()
:
null
;
//更新数据
orderList
.
forEach
(
order
->
{
scheduledExecutorService
.
execute
(()
->
{
...
...
@@ -281,6 +282,7 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord
.
setUseTime
(
Optional
.
ofNullable
(
order
)
.
map
(
o
->
DateUtil
.
parse
(
o
.
getCheckInDate
(),
"yyyy-MM-dd"
))
.
orElse
(
null
));
invoice
.
setCreateDept
(
projectDeptId
);
orderInvoicingService
.
save
(
invoice
);
});
}
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/OrderInvoicingServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -58,7 +58,6 @@ public class OrderInvoicingServiceImpl extends AbstractBaseService<OrderInvoicin
if
(
user
!=
null
)
{
bo
.
setUserType
(
user
.
getUserType
());
bo
.
setCreateName
(
user
.
getNickName
());
bo
.
setCreateDept
(
user
.
getDeptId
());
}
bo
.
setProjectId
(
bo
.
getProjectId
());
bo
.
setCreateBy
(
bo
.
getUserId
());
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/OrderTrainServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -187,6 +187,7 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
List
<
OrderTrainRange
>
orderRangeList
=
rangeMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderTrainRange
>().
in
(
OrderTrainRange:
:
getOrderId
,
orderIds
));
List
<
OrderTrainTicket
>
orderTicketList
=
ticketMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderTrainTicket
>().
in
(
OrderTrainTicket:
:
getOrderId
,
orderIds
));
Long
projectId
=
isAdd
?
LoginHelper
.
getProjectId
()
:
null
;
Long
projectDeptId
=
isAdd
?
LoginHelper
.
getProjectDeptId
()
:
null
;
//更新数据
orderList
.
forEach
(
order
->
{
scheduledExecutorService
.
execute
(()
->
{
...
...
@@ -319,6 +320,7 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
.
setUseTime
(
Optional
.
ofNullable
(
rangeMapper
.
selectOne
(
OrderTrainRange:
:
getOrderNo
,
order
.
getOrderNo
()))
.
map
(
o
->
DateUtil
.
parse
(
o
.
getFromDate
()
+
" "
+
o
.
getFromTime
(),
"yyyy-MM-dd HH:mm"
))
.
orElse
(
null
));
invoice
.
setCreateDept
(
projectDeptId
);
orderInvoicingService
.
save
(
invoice
);
});
}
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/OrderVehiclesServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -220,6 +220,7 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
List
<
OrderVehiclesBusiness
>
orderBusinessList
=
businessMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderVehiclesBusiness
>().
in
(
OrderVehiclesBusiness:
:
getOrderId
,
orderIds
));
List
<
OrderVehiclesPayInfo
>
orderPayInfoList
=
payInfoMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderVehiclesPayInfo
>().
in
(
OrderVehiclesPayInfo:
:
getOrderId
,
orderIds
));
Long
projectId
=
isAdd
?
LoginHelper
.
getProjectId
()
:
null
;
Long
projectDeptId
=
isAdd
?
LoginHelper
.
getProjectDeptId
()
:
null
;
//更新数据
orderList
.
forEach
(
order
->
{
scheduledExecutorService
.
execute
(()
->
{
...
...
@@ -286,6 +287,7 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
}
return
null
;
}).
orElse
(
null
));
invoice
.
setCreateDept
(
projectDeptId
);
orderInvoicingService
.
save
(
invoice
);
});
}
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProjectController.java
浏览文件 @
d9d73c56
...
...
@@ -6,6 +6,7 @@ import jakarta.validation.constraints.NotEmpty;
import
jakarta.validation.constraints.NotNull
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.common.core.domain.R
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
...
...
@@ -19,8 +20,11 @@ import org.dromara.common.satoken.utils.LoginHelper;
import
org.dromara.common.web.core.BaseController
;
import
org.dromara.system.constant.Constant
;
import
org.dromara.system.domain.bo.SysProjectBo
;
import
org.dromara.system.domain.bo.SysUserProjectBo
;
import
org.dromara.system.domain.vo.SysProjectVo
;
import
org.dromara.system.domain.vo.SysUserProjectVo
;
import
org.dromara.system.service.ISysProjectService
;
import
org.dromara.system.service.ISysUserProjectService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -40,6 +44,7 @@ import java.util.List;
public
class
SysProjectController
extends
BaseController
{
private
final
ISysProjectService
sysProjectService
;
private
final
ISysUserProjectService
userProjectService
;
/**
* 查询系统项目列表
...
...
@@ -129,7 +134,18 @@ public class SysProjectController extends BaseController {
*/
@GetMapping
(
"/dynamic"
)
public
R
<
Void
>
dynamicProjectId
(
@RequestParam
(
required
=
false
)
Long
projectId
)
{
LoginHelper
.
dynamicProjectId
(
projectId
);
Long
deptId
=
null
;
if
(
projectId
!=
null
)
{
SysUserProjectBo
sup
=
new
SysUserProjectBo
();
sup
.
setUserId
(
LoginHelper
.
getUserId
());
sup
.
setProjectId
(
projectId
);
SysUserProjectVo
vo
=
userProjectService
.
getOne
(
sup
);
if
(
vo
==
null
)
{
throw
new
ServiceException
(
"用户不存在在该项目中"
);
}
deptId
=
vo
.
getCreateDept
();
}
LoginHelper
.
dynamicProjectId
(
projectId
,
deptId
);
return
R
.
ok
();
}
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
浏览文件 @
d9d73c56
...
...
@@ -57,7 +57,6 @@ public class SysUserController extends BaseController {
private
final
ISysRoleService
roleService
;
private
final
ISysPostService
postService
;
private
final
ISysDeptService
deptService
;
private
final
ISysTenantService
tenantService
;
private
final
ISysUserProjectService
userProjectService
;
@DubboReference
private
RemoteDeptOrderApproveService
remoteDeptOrderApproveService
;
...
...
@@ -162,7 +161,7 @@ public class SysUserController extends BaseController {
}
/**
* 获取用户
信息
* 获取用户
订单审批数据
*
* @return 用户信息
*/
...
...
@@ -179,10 +178,10 @@ public class SysUserController extends BaseController {
if
(
su
==
null
)
{
return
R
.
ok
(
uoa
);
}
if
(
su
.
getUserType
().
contains
(
SysUser
.
PROJECT_USER_TYPE
))
{
if
(
su
.
getUserType
().
contains
(
SysUser
.
PROJECT_USER_TYPE
)
&&
projectId
==
null
)
{
uoa
.
setStaffId
(
su
.
getCreateBy
());
su
=
userService
.
selectUserById
(
uoa
.
getStaffId
());
}
else
if
(
StringUtils
.
equals
(
su
.
getUserType
(),
UserType
.
SYS_USER
.
getUserType
())
&&
projectId
!=
null
)
{
}
else
if
(
projectId
!=
null
)
{
SysUserProjectBo
sup
=
new
SysUserProjectBo
();
sup
.
setUserId
(
LoginHelper
.
getUserId
());
sup
.
setProjectId
(
projectId
);
...
...
@@ -242,20 +241,6 @@ public class SysUserController extends BaseController {
@Log
(
title
=
"用户管理"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
public
R
<
Void
>
add
(
@Validated
@RequestBody
SysUserBo
user
)
{
deptService
.
checkDeptDataScope
(
user
.
getDeptId
());
if
(!
userService
.
checkUserNameUnique
(
user
))
{
return
R
.
fail
(
"新增用户'"
+
user
.
getUserName
()
+
"'失败,登录账号已存在"
);
}
else
if
(
StringUtils
.
isNotEmpty
(
user
.
getPhonenumber
())
&&
!
userService
.
checkPhoneUnique
(
user
))
{
return
R
.
fail
(
"新增用户'"
+
user
.
getUserName
()
+
"'失败,手机号码已存在"
);
}
else
if
(
StringUtils
.
isNotEmpty
(
user
.
getEmail
())
&&
!
userService
.
checkEmailUnique
(
user
))
{
return
R
.
fail
(
"新增用户'"
+
user
.
getUserName
()
+
"'失败,邮箱账号已存在"
);
}
if
(
TenantHelper
.
isEnable
())
{
if
(!
tenantService
.
checkAccountBalance
(
TenantHelper
.
getTenantId
()))
{
return
R
.
fail
(
"当前租户下用户名额不足,请联系管理员"
);
}
}
user
.
setPassword
(
BCrypt
.
hashpw
(
user
.
getPassword
()));
return
toAjax
(
userService
.
insertUser
(
user
));
}
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserProjectController.java
浏览文件 @
d9d73c56
...
...
@@ -13,6 +13,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.common.web.core.BaseController
;
import
org.dromara.system.domain.bo.SysUserProjectBo
;
import
org.dromara.system.domain.bo.SysUserProjectInsertBo
;
import
org.dromara.system.domain.vo.SysUserProjectVo
;
import
org.dromara.system.domain.vo.UserProjectVo
;
import
org.dromara.system.service.ISysUserProjectService
;
...
...
@@ -67,6 +68,18 @@ public class SysUserProjectController extends BaseController {
return
toAjax
(
sysUserProjectService
.
insertByBo
(
bo
));
}
/**
* 新增用户项目
*/
@SaCheckPermission
(
"system:userProject:add"
)
@Log
(
title
=
"用户项目"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
(
"/addProjectUser"
)
public
R
<
Void
>
addProjectUser
(
@Validated
(
AddGroup
.
class
)
@RequestBody
SysUserProjectInsertBo
bo
)
{
sysUserProjectService
.
insert
(
bo
);
return
R
.
ok
();
}
/**
* 删除用户项目
*
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserProject.java
浏览文件 @
d9d73c56
package
org
.
dromara
.
system
.
domain
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
java.io.Serial
;
...
...
@@ -32,6 +34,11 @@ public class SysUserProject extends TenantEntity {
*/
private
Long
userId
;
/**
* 用户类型
*/
private
String
userType
;
/**
* 项目id
*/
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProjectBo.java
浏览文件 @
d9d73c56
...
...
@@ -38,6 +38,11 @@ public class SysUserProjectBo extends BaseEntity {
@NotNull
(
message
=
"项目id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
projectId
;
/**
* 用户类型
*/
private
String
userType
;
/**
* 角色id
*/
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProjectInsertBo.java
0 → 100644
浏览文件 @
d9d73c56
package
org
.
dromara
.
system
.
domain
.
bo
;
import
jakarta.validation.constraints.Email
;
import
jakarta.validation.constraints.NotNull
;
import
jakarta.validation.constraints.Size
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.xss.Xss
;
import
org.dromara.common.mybatis.core.domain.BaseEntity
;
/**
* 用户项目业务对象 sys_user_project
*
* @author hzh
* @date 2025-06-19
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SysUserProjectInsertBo
extends
BaseEntity
{
/**
* 用户id
*/
private
Long
userId
;
/**
* 项目id
*/
@NotNull
(
message
=
"项目id不能为空"
,
groups
=
{
AddGroup
.
class
})
private
Long
projectId
;
/**
* 角色id
*/
@NotNull
(
message
=
"角色id不能为空"
,
groups
=
{
AddGroup
.
class
})
private
Long
roleId
;
/**
* 昵称
*/
@Xss
(
message
=
"用户名不能包含脚本字符"
)
@Size
(
min
=
0
,
max
=
30
,
message
=
"用户名长度不能超过{max}个字符"
)
private
String
nickName
;
/**
* 手机号
*/
private
String
phonenumber
;
/**
* 邮箱
*/
@Email
(
message
=
"邮箱格式不正确"
)
@Size
(
min
=
0
,
max
=
50
,
message
=
"邮箱长度不能超过{max}个字符"
)
private
String
email
;
/**
* 密码
*/
private
String
password
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserProjectVo.java
浏览文件 @
d9d73c56
...
...
@@ -38,6 +38,11 @@ public class SysUserProjectVo implements Serializable {
@ExcelProperty
(
value
=
"用户id"
)
private
Long
userId
;
/**
* 用户类型
*/
private
String
userType
;
/**
* 项目id
*/
...
...
@@ -50,13 +55,18 @@ public class SysUserProjectVo implements Serializable {
@ExcelProperty
(
value
=
"角色id"
)
private
Long
roleId
;
/**
* 创建部门
*/
private
Long
createDept
;
/**
* 创建人
*/
private
Long
createBy
;
@Translation
(
type
=
TransConstant
.
USER_ID_TO_NICKNAME
,
mapper
=
"createBy"
)
@Translation
(
type
=
TransConstant
.
USER_ID_TO_NICKNAME
,
mapper
=
"createBy"
)
private
String
createNickName
;
@Translation
(
type
=
TransConstant
.
USER_ID_TO_NAME
,
mapper
=
"createBy"
)
@Translation
(
type
=
TransConstant
.
USER_ID_TO_NAME
,
mapper
=
"createBy"
)
private
String
createUserName
;
/**
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteProjectServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -15,16 +15,16 @@ import org.dromara.system.api.domain.vo.RemoteProjectVo;
import
org.dromara.system.constant.Constant
;
import
org.dromara.system.domain.SysProject
;
import
org.dromara.system.domain.SysUser
;
import
org.dromara.system.domain.SysUserProject
;
import
org.dromara.system.mapper.SysProjectMapper
;
import
org.dromara.system.mapper.SysUserMapper
;
import
org.dromara.system.mapper.SysUserProjectMapper
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
import
static
org
.
dromara
.
system
.
domain
.
SysUser
.
PROJECT_USER_TYPE_SPLIT
;
/**
* @author hzh
* @date 2025-06-11
...
...
@@ -36,21 +36,26 @@ public class RemoteProjectServiceImpl implements RemoteProjectService {
private
final
SysProjectMapper
sysProjectMapper
;
private
final
SysUserMapper
sysUserMapper
;
private
final
SysUserProjectMapper
sysUserProjectMapper
;
@Override
public
List
<
RemoteProjectVo
>
queryList
(
String
tenantId
,
String
phone
)
{
List
<
SysUser
>
userList
=
sysUserMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysUser
>()
.
eq
(
StringUtils
.
isNotEmpty
(
tenantId
),
SysUser:
:
getTenantId
,
tenantId
)
.
eq
(
StringUtils
.
isNotEmpty
(
phone
),
SysUser:
:
getPhonenumber
,
phone
)
.
likeRight
(
SysUser:
:
getUserType
,
SysUser
.
PROJECT_USER_TYPE
)
.
eq
(
SysUser:
:
getUserType
,
SysUser
.
PROJECT_USER_TYPE
)
.
eq
(
SysUser:
:
getStatus
,
UserConstants
.
USER_NORMAL
)
.
select
(
SysUser:
:
getUser
Type
)
.
select
(
SysUser:
:
getUser
Id
)
);
Set
<
Long
>
projectIds
=
StreamUtils
.
toSet
(
userList
,
u
->
{
String
[]
split
=
u
.
getUserType
().
split
(
PROJECT_USER_TYPE_SPLIT
);
return
Long
.
parseLong
(
split
[
1
]);
});
return
CollectionUtil
.
isEmpty
(
projectIds
)
?
List
.
of
()
:
BeanUtil
.
copyToList
(
StreamUtils
.
filter
(
sysProjectMapper
.
selectByIds
(
projectIds
),
sp
->
StringUtils
.
equals
(
sp
.
getStatus
(),
Constant
.
PROJECT_NORMAL
)),
RemoteProjectVo
.
class
);
if
(
CollectionUtil
.
isEmpty
(
userList
))
{
return
List
.
of
();
}
List
<
SysUserProject
>
supList
=
sysUserProjectMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysUserProject
>()
.
in
(
SysUserProject:
:
getUserId
,
StreamUtils
.
toList
(
userList
,
SysUser:
:
getUserId
)));
Set
<
Long
>
projectIds
=
StreamUtils
.
toSet
(
supList
,
SysUserProject:
:
getProjectId
);
return
CollectionUtil
.
isEmpty
(
projectIds
)
?
List
.
of
()
:
BeanUtil
.
copyToList
(
StreamUtils
.
filter
(
sysProjectMapper
.
selectByIds
(
projectIds
),
sp
->
StringUtils
.
equals
(
sp
.
getStatus
(),
Constant
.
PROJECT_NORMAL
)),
RemoteProjectVo
.
class
);
}
@Override
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/SysProjectUserImportListener.java
浏览文件 @
d9d73c56
package
org
.
dromara
.
system
.
listener
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.http.HtmlUtil
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
jakarta.validation.ConstraintViolation
;
import
jakarta.validation.ConstraintViolationException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.core.domain.R
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.core.utils.ValidatorUtils
;
import
org.dromara.common.excel.core.ExcelListener
;
import
org.dromara.common.excel.core.ExcelResult
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.system.controller.system.SysUserController
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.bo.SysUserProjectInsertBo
;
import
org.dromara.system.domain.vo.SysProjectUserImportVo
;
import
org.dromara.system.
domain.vo.SysUserVo
;
import
org.dromara.system.service.ISysUserService
;
import
org.dromara.system.
service.ISysConfigService
;
import
org.dromara.system.service.ISysUser
Project
Service
;
import
java.util.List
;
import
static
org
.
dromara
.
system
.
domain
.
SysUser
.
PROJECT_USER_TYPE
;
import
static
org
.
dromara
.
system
.
domain
.
SysUser
.
PROJECT_USER_TYPE_SPLIT
;
/**
* 项目用户自定义导入
*
...
...
@@ -36,12 +28,12 @@ import static org.dromara.system.domain.SysUser.PROJECT_USER_TYPE_SPLIT;
@Slf4j
public
class
SysProjectUserImportListener
extends
AnalysisEventListener
<
SysProjectUserImportVo
>
implements
ExcelListener
<
SysProjectUserImportVo
>
{
private
final
ISysUserService
userService
;
private
final
SysUserController
sysUserController
;
private
final
ISysUserProjectService
sysUserProjectService
;
private
final
Long
operUserId
;
private
final
Long
roleId
;
private
final
String
userType
;
private
final
String
operTenantId
;
private
final
Long
projectId
;
private
final
String
initPassword
;
private
int
successNum
=
0
;
private
int
failureNum
=
0
;
...
...
@@ -49,46 +41,31 @@ public class SysProjectUserImportListener extends AnalysisEventListener<SysProje
private
final
StringBuilder
failureMsg
=
new
StringBuilder
();
public
SysProjectUserImportListener
(
Long
projectId
,
Long
roleId
)
{
this
.
userService
=
SpringUtils
.
getBean
(
ISysUserService
.
class
);
this
.
sysUserController
=
SpringUtils
.
getBean
(
SysUserController
.
class
);
this
.
sysUserProjectService
=
SpringUtils
.
getBean
(
ISysUserProjectService
.
class
);
this
.
operUserId
=
LoginHelper
.
getUserId
();
this
.
operTenantId
=
LoginHelper
.
getTenantId
();
this
.
userType
=
PROJECT_USER_TYPE
+
PROJECT_USER_TYPE_SPLIT
+
projectId
;
this
.
projectId
=
projectId
;
this
.
roleId
=
roleId
;
this
.
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
}
@Override
public
void
invoke
(
SysProjectUserImportVo
userVo
,
AnalysisContext
context
)
{
SysUserVo
sysUser
=
this
.
userService
.
selectUserByUserName
(
userVo
.
getPhonenumber
(),
userType
,
operTenantId
);
public
void
invoke
(
SysProjectUserImportVo
vo
,
AnalysisContext
context
)
{
try
{
// 验证是否存在这个用户
if
(
ObjectUtil
.
isNull
(
sysUser
))
{
SysUserBo
user
=
BeanUtil
.
toBean
(
userVo
,
SysUserBo
.
class
);
user
.
setUserName
(
user
.
getPhonenumber
());
user
.
setUserType
(
userType
);
ValidatorUtils
.
validate
(
user
);
String
password
=
user
.
getPassword
();
if
(
StringUtils
.
isBlank
(
password
))
{
password
=
user
.
getPhonenumber
();
}
user
.
setPassword
(
password
.
trim
());
user
.
setCreateBy
(
operUserId
);
if
(
roleId
!=
null
)
{
user
.
setRoleIds
(
new
Long
[]{
roleId
});
}
R
<
Void
>
r
=
sysUserController
.
add
(
user
);
if
(
r
.
getCode
()
==
R
.
FAIL
)
{
throw
new
ServiceException
(
r
.
getMsg
());
}
successNum
++;
successMsg
.
append
(
"<br/>"
).
append
(
successNum
).
append
(
"、账号 "
).
append
(
user
.
getUserName
()).
append
(
" 导入成功"
);
}
else
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
).
append
(
failureNum
).
append
(
"、账号 "
).
append
(
sysUser
.
getUserName
()).
append
(
" 已存在"
);
}
String
password
=
StringUtils
.
isBlank
(
vo
.
getPassword
())
?
initPassword:
vo
.
getPassword
();
SysUserProjectInsertBo
bo
=
new
SysUserProjectInsertBo
()
.
setProjectId
(
projectId
)
.
setRoleId
(
roleId
)
.
setNickName
(
vo
.
getNickName
())
.
setPhonenumber
(
vo
.
getPhonenumber
())
.
setEmail
(
vo
.
getEmail
())
.
setPassword
(
password
);
bo
.
setCreateBy
(
operUserId
);
sysUserProjectService
.
insert
(
bo
);
successNum
++;
successMsg
.
append
(
"<br/>"
).
append
(
successNum
).
append
(
"、账号 "
).
append
(
vo
.
getPhonenumber
()).
append
(
" 导入成功"
);
}
catch
(
Exception
e
)
{
failureNum
++;
String
msg
=
"<br/>"
+
failureNum
+
"、账号 "
+
HtmlUtil
.
cleanHtmlTag
(
userV
o
.
getPhonenumber
())
+
" 导入失败:"
;
String
msg
=
"<br/>"
+
failureNum
+
"、账号 "
+
HtmlUtil
.
cleanHtmlTag
(
v
o
.
getPhonenumber
())
+
" 导入失败:"
;
String
message
=
e
.
getMessage
();
if
(
e
instanceof
ConstraintViolationException
cvException
)
{
message
=
StreamUtils
.
join
(
cvException
.
getConstraintViolations
(),
ConstraintViolation:
:
getMessage
,
", "
);
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java
浏览文件 @
d9d73c56
...
...
@@ -9,7 +9,6 @@ import com.alibaba.excel.event.AnalysisEventListener;
import
jakarta.validation.ConstraintViolation
;
import
jakarta.validation.ConstraintViolationException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.core.domain.R
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
...
...
@@ -18,7 +17,6 @@ import org.dromara.common.core.utils.ValidatorUtils;
import
org.dromara.common.excel.core.ExcelListener
;
import
org.dromara.common.excel.core.ExcelResult
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.system.controller.system.SysUserController
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.vo.SysUserImportVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
...
...
@@ -36,7 +34,6 @@ import java.util.Objects;
public
class
SysUserImportListener
extends
AnalysisEventListener
<
SysUserImportVo
>
implements
ExcelListener
<
SysUserImportVo
>
{
private
final
ISysUserService
userService
;
private
final
SysUserController
sysUserController
;
private
final
ISysDeptService
sysDeptService
;
private
final
ISysPostService
sysPostService
;
private
final
ISysRoleService
sysRoleService
;
...
...
@@ -55,7 +52,6 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
public
SysUserImportListener
(
Boolean
isUpdateSupport
)
{
String
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
this
.
userService
=
SpringUtils
.
getBean
(
ISysUserService
.
class
);
this
.
sysUserController
=
SpringUtils
.
getBean
(
SysUserController
.
class
);
this
.
sysDeptService
=
SpringUtils
.
getBean
(
ISysDeptService
.
class
);
this
.
sysPostService
=
SpringUtils
.
getBean
(
ISysPostService
.
class
);
this
.
sysRoleService
=
SpringUtils
.
getBean
(
ISysRoleService
.
class
);
...
...
@@ -87,11 +83,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
if
(
StringUtils
.
isNotEmpty
(
userVo
.
getRoleName
()))
{
user
.
setRoleIds
(
sysRoleService
.
selectRoleIdsByNameList
(
StrUtil
.
split
(
userVo
.
getRoleName
(),
"/"
)).
toArray
(
Long
[]::
new
));
}
sysUserController
.
add
(
user
);
R
<
Void
>
r
=
sysUserController
.
add
(
user
);
if
(
r
.
getCode
()
==
R
.
FAIL
)
{
throw
new
ServiceException
(
r
.
getMsg
());
}
userService
.
insertUser
(
user
);
successNum
++;
successMsg
.
append
(
"<br/>"
).
append
(
successNum
).
append
(
"、账号 "
).
append
(
user
.
getUserName
()).
append
(
" 导入成功"
);
}
else
if
(
isUpdateSupport
)
{
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserProjectService.java
浏览文件 @
d9d73c56
...
...
@@ -3,6 +3,7 @@ package org.dromara.system.service;
import
org.dromara.common.mybatis.service.IBaseService
;
import
org.dromara.system.domain.SysUserProject
;
import
org.dromara.system.domain.bo.SysUserProjectBo
;
import
org.dromara.system.domain.bo.SysUserProjectInsertBo
;
import
org.dromara.system.domain.vo.SysUserProjectVo
;
import
org.dromara.system.domain.vo.UserProjectVo
;
...
...
@@ -24,4 +25,11 @@ public interface ISysUserProjectService extends IBaseService<SysUserProjectVo, S
* @return 项目列表
*/
List
<
UserProjectVo
>
selectListByUserId
(
Long
userId
);
/**
* 添加项目人员
*
* @param bo 数据
*/
void
insert
(
SysUserProjectInsertBo
bo
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
浏览文件 @
d9d73c56
...
...
@@ -2,7 +2,6 @@ package org.dromara.system.service;
import
org.dromara.common.mybatis.core.page.PageQuery
;
import
org.dromara.common.mybatis.core.page.TableDataInfo
;
import
org.dromara.system.domain.SysUser
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.vo.SysUserExportVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
...
...
@@ -293,13 +292,6 @@ public interface ISysUserService {
*/
List
<
Long
>
selectUserIdsByRoleKeyAndDeptId
(
String
roleKey
,
Long
deptId
);
/**
* 保存或更新用户信息
*
* @param sysUser 用户信息
*/
void
saveOrUpdateYsUser
(
SysUser
sysUser
);
/**
* 根据用户昵称查询userIds
*
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IThirdService.java
0 → 100644
浏览文件 @
d9d73c56
package
org
.
dromara
.
system
.
service
;
import
org.dromara.system.domain.SysUser
;
/**
* @author hzh
* @date 2025-06-25
**/
public
interface
IThirdService
{
/**
* 保存或更新用户信息
*
* @param sysUser 用户信息
*/
void
saveOrUpdateYsUser
(
SysUser
sysUser
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -32,7 +32,7 @@ import org.dromara.system.domain.bo.SysTenantBo;
import
org.dromara.system.domain.vo.SysTenantVo
;
import
org.dromara.system.mapper.*
;
import
org.dromara.system.service.ISysTenantService
;
import
org.dromara.system.service.I
SysUser
Service
;
import
org.dromara.system.service.I
Third
Service
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
...
...
@@ -60,7 +60,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
private
final
SysDictTypeMapper
dictTypeMapper
;
private
final
SysDictDataMapper
dictDataMapper
;
private
final
SysConfigMapper
configMapper
;
private
final
I
SysUserService
user
Service
;
private
final
I
ThirdService
third
Service
;
@DubboReference
private
final
RemoteProcessService
remoteProcessService
;
@DubboReference
...
...
@@ -178,7 +178,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
userMapper
.
insert
(
user
);
// 同步到云服务用户
user
Service
.
saveOrUpdateYsUser
(
user
);
third
Service
.
saveOrUpdateYsUser
(
user
);
//创建审批流程
remoteProcessService
.
createDefaultProcessConfig
(
tenantId
);
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserProjectServiceImpl.java
浏览文件 @
d9d73c56
...
...
@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.google.common.base.Objects
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.common.core.enums.UserType
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
import
org.dromara.common.mybatis.service.AbstractBaseService
;
import
org.dromara.system.constant.Constant
;
...
...
@@ -16,7 +18,9 @@ import org.dromara.system.domain.SysProject;
import
org.dromara.system.domain.SysUser
;
import
org.dromara.system.domain.SysUserProject
;
import
org.dromara.system.domain.SysUserRole
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.bo.SysUserProjectBo
;
import
org.dromara.system.domain.bo.SysUserProjectInsertBo
;
import
org.dromara.system.domain.vo.SysUserProjectVo
;
import
org.dromara.system.domain.vo.UserProjectVo
;
import
org.dromara.system.mapper.SysProjectMapper
;
...
...
@@ -24,6 +28,7 @@ import org.dromara.system.mapper.SysUserMapper;
import
org.dromara.system.mapper.SysUserProjectMapper
;
import
org.dromara.system.mapper.SysUserRoleMapper
;
import
org.dromara.system.service.ISysUserProjectService
;
import
org.dromara.system.service.ISysUserService
;
import
org.springframework.stereotype.Service
;
import
java.util.Collection
;
...
...
@@ -45,6 +50,7 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
private
final
SysUserRoleMapper
userRoleMapper
;
private
final
SysUserMapper
sysUserMapper
;
private
final
SysProjectMapper
sysProjectMapper
;
private
final
ISysUserService
userService
;
@Override
public
BaseMapperPlus
<
SysUserProject
,
SysUserProjectVo
>
mapper
()
{
...
...
@@ -57,6 +63,7 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
LambdaQueryWrapper
<
SysUserProject
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getUserId
()
!=
null
,
SysUserProject:
:
getUserId
,
bo
.
getUserId
());
lqw
.
eq
(
bo
.
getProjectId
()
!=
null
,
SysUserProject:
:
getProjectId
,
bo
.
getProjectId
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getUserType
()),
SysUserProject:
:
getUserType
,
bo
.
getUserType
());
lqw
.
eq
(
bo
.
getRoleId
()
!=
null
,
SysUserProject:
:
getRoleId
,
bo
.
getRoleId
());
return
lqw
;
}
...
...
@@ -98,6 +105,9 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
@Override
public
void
validEntityBeforeSave
(
SysUserProject
entity
)
{
super
.
validEntityBeforeSave
(
entity
);
if
(
entity
.
getId
()
==
null
)
{
entity
.
setUserType
(
Optional
.
ofNullable
(
sysUserMapper
.
selectById
(
entity
.
getUserId
())).
map
(
SysUser:
:
getUserType
).
orElse
(
UserType
.
SYS_USER
.
getUserType
()));
}
//校验用户是否已经存在
List
<
SysUserProject
>
supList
=
baseMapper
.
selectList
(
SysUserProject:
:
getUserId
,
entity
.
getUserId
(),
SysUserProject:
:
getProjectId
,
entity
.
getProjectId
());
SysUserProject
sysUserProject
=
StreamUtils
.
findFirst
(
supList
,
sup
->
!
Objects
.
equal
(
sup
.
getId
(),
entity
.
getId
()));
...
...
@@ -144,4 +154,47 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
.
eq
(
SysProject:
:
getStatus
,
Constant
.
PROJECT_NORMAL
));
return
BeanUtil
.
copyToList
(
projectList
,
UserProjectVo
.
class
);
}
@Override
public
void
insert
(
SysUserProjectInsertBo
bo
)
{
SysUserProjectBo
sup
=
new
SysUserProjectBo
();
sup
.
setProjectId
(
bo
.
getProjectId
());
sup
.
setRoleId
(
bo
.
getRoleId
());
String
userType
=
UserType
.
PROJECT_USER
.
getUserType
();
if
(
bo
.
getUserId
()
!=
null
)
{
sup
.
setUserId
(
bo
.
getUserId
());
}
else
{
validEntity
(
bo
);
//根据手机号查询是否存在用户信息
SysUser
user
=
sysUserMapper
.
selectOne
(
SysUser:
:
getUserType
,
UserType
.
PROJECT_USER
.
getUserType
(),
SysUser:
:
getPhonenumber
,
bo
.
getPhonenumber
());
if
(
user
!=
null
)
{
sup
.
setUserId
(
user
.
getUserId
());
}
else
{
//新增用户
SysUserBo
su
=
new
SysUserBo
();
su
.
setNickName
(
bo
.
getNickName
());
su
.
setUserName
(
bo
.
getPhonenumber
());
su
.
setPhonenumber
(
bo
.
getPhonenumber
());
su
.
setEmail
(
bo
.
getEmail
());
su
.
setPassword
(
bo
.
getPassword
());
su
.
setCreateBy
(
bo
.
getCreateBy
());
su
.
setUserType
(
userType
);
userService
.
insertUser
(
su
);
//查询用户
user
=
sysUserMapper
.
selectOne
(
SysUser:
:
getUserType
,
userType
,
SysUser:
:
getPhonenumber
,
bo
.
getPhonenumber
());
sup
.
setUserId
(
user
.
getUserId
());
}
}
sup
.
setUserType
(
userType
);
insertByBo
(
sup
);
}
private
void
validEntity
(
SysUserProjectInsertBo
bo
)
{
if
(
StringUtils
.
isBlank
(
bo
.
getNickName
()))
{
throw
new
ServiceException
(
"姓名不能为空"
);
}
if
(
StringUtils
.
isEmpty
(
bo
.
getPhonenumber
()))
{
throw
new
ServiceException
(
"手机号码不能为空"
);
}
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
浏览文件 @
d9d73c56
差异被折叠。
点击展开。
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ThirdServiceImpl.java
0 → 100644
浏览文件 @
d9d73c56
package
org
.
dromara
.
system
.
service
.
impl
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.dubbo.config.annotation.DubboReference
;
import
org.dromara.server.api.RemoteServerService
;
import
org.dromara.server.api.domain.RemoteUser
;
import
org.dromara.system.domain.SysUser
;
import
org.dromara.system.service.IThirdService
;
import
org.springframework.stereotype.Service
;
/**
* @author hzh
* @date 2025-06-25
**/
@Slf4j
@RequiredArgsConstructor
@Service
public
class
ThirdServiceImpl
implements
IThirdService
{
@DubboReference
private
RemoteServerService
remoteServerService
;
@Override
public
void
saveOrUpdateYsUser
(
SysUser
sysUser
)
{
remoteServerService
.
saveOrUpdateUser
(
new
RemoteUser
()
.
setSystemUserId
(
sysUser
.
getUserId
())
.
setUserName
(
sysUser
.
getUserName
())
.
setPhoneNumber
(
sysUser
.
getPhonenumber
())
.
setIdCard
(
sysUser
.
getIdCard
())
.
setUserType
(
sysUser
.
getUserType
())
.
setTenantId
(
sysUser
.
getTenantId
())
);
}
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/listener/DeptFileApproveAssigneeListener.java
浏览文件 @
d9d73c56
package
org
.
dromara
.
workflow
.
flowable
.
listener
;
import
cn.hutool.core.collection.CollectionUtil
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.workflow.common.constant.FlowConstant
;
import
org.dromara.workflow.domain.FileApprove
;
import
org.dromara.workflow.mapper.FileApproveMapper
;
import
org.dromara.workflow.service.IDeptService
;
import
org.flowable.common.engine.api.variable.VariableContainer
;
import
org.flowable.engine.impl.el.FixedValue
;
import
org.flowable.task.service.delegate.DelegateTask
;
import
org.flowable.task.service.delegate.TaskListener
;
import
org.springframework.stereotype.Component
;
import
java.util.
Objects
;
import
java.util.
List
;
/**
* 部门文件下载申请自定义审批人监听器
...
...
@@ -20,8 +26,15 @@ import java.util.Objects;
*/
@Component
@Slf4j
@Getter
@Setter
public
class
DeptFileApproveAssigneeListener
implements
TaskListener
{
/**
* 角色编码
*/
private
FixedValue
roleKey
;
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
// 获取业务id
...
...
@@ -34,10 +47,15 @@ public class DeptFileApproveAssigneeListener implements TaskListener {
// 调用服务获取审批人列表
Long
approveId
=
deptService
.
selectLeaderIdByFileId
(
fa
.
getSysDeptFileId
());
List
<
Long
>
roleUserIds
=
deptService
.
selectUserListByFileIdAndRoleKey
(
fa
.
getSysDeptFileId
(),
roleKey
.
getValue
(
VariableContainer
.
empty
()).
toString
());
if
(
approveId
!=
null
)
{
roleUserIds
.
add
(
approveId
);
}
if
(
CollectionUtil
.
isEmpty
(
roleUserIds
))
{
roleUserIds
=
List
.
of
(-
1L
);
}
// 设置候选用户
String
owner
=
Objects
.
isNull
(
approveId
)
?
null
:
approveId
.
toString
();
delegateTask
.
setAssignee
(
owner
);
delegateTask
.
addCandidateUsers
(
StreamUtils
.
toList
(
roleUserIds
,
Object:
:
toString
));
}
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/listener/DeptFileApproveGroupListener.java
deleted
100644 → 0
浏览文件 @
e02af858
package
org
.
dromara
.
workflow
.
flowable
.
listener
;
import
cn.hutool.core.collection.CollectionUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.workflow.common.constant.FlowConstant
;
import
org.dromara.workflow.domain.FileApprove
;
import
org.dromara.workflow.mapper.FileApproveMapper
;
import
org.dromara.workflow.service.IDeptService
;
import
org.flowable.task.service.delegate.DelegateTask
;
import
org.flowable.task.service.delegate.TaskListener
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* 部门文件下载申请自定义审批人监听器
*
* @author wenhe
*/
@Component
@Slf4j
public
class
DeptFileApproveGroupListener
implements
TaskListener
{
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
// 获取业务id
Long
businessKey
=
Long
.
parseLong
(
delegateTask
.
getVariable
(
FlowConstant
.
BUSINESS_KEY
).
toString
());
FileApproveMapper
mapper
=
SpringUtils
.
getBean
(
FileApproveMapper
.
class
);
FileApprove
fa
=
mapper
.
selectById
(
businessKey
);
IDeptService
deptService
=
SpringUtils
.
getBean
(
IDeptService
.
class
);
// 调用服务获取审批人列表
List
<
Long
>
userIds
=
deptService
.
selectUserListByFileIdAndRoleKey
(
fa
.
getSysDeptFileId
(),
"file_approve"
);
if
(
CollectionUtil
.
isEmpty
(
userIds
))
{
userIds
=
List
.
of
(-
1L
);
}
// 设置候选用户
delegateTask
.
addCandidateUsers
(
StreamUtils
.
toList
(
userIds
,
Object:
:
toString
));
}
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/listener/DeptReviewCompleteListener.java
deleted
100644 → 0
浏览文件 @
e02af858
package
org
.
dromara
.
workflow
.
flowable
.
listener
;
import
org.flowable.task.service.delegate.DelegateTask
;
import
org.flowable.task.service.delegate.TaskListener
;
/**
* @author wenhe
*/
public
class
DeptReviewCompleteListener
implements
TaskListener
{
@Override
public
void
notify
(
DelegateTask
task
)
{
task
.
setVariable
(
"end"
,
true
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论