Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
9f521600
提交
9f521600
authored
6月 11, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
项目以及项目用户增删改查功能实现
上级
d41fb221
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
371 行增加
和
7 行删除
+371
-7
RemoteUser.java
...c/main/java/org/dromara/server/api/domain/RemoteUser.java
+5
-0
UserType.java
...src/main/java/org/dromara/common/core/enums/UserType.java
+7
-2
AbstractBaseService.java
...g/dromara/common/mybatis/service/AbstractBaseService.java
+0
-1
RemoteServerServiceImpl.java
...ava/org/dromara/server/dubbo/RemoteServerServiceImpl.java
+4
-0
SysProjectController.java
...romara/system/controller/system/SysProjectController.java
+107
-0
SysUserController.java
...g/dromara/system/controller/system/SysUserController.java
+10
-0
SysProject.java
...m/src/main/java/org/dromara/system/domain/SysProject.java
+45
-0
SysProjectBo.java
.../main/java/org/dromara/system/domain/bo/SysProjectBo.java
+36
-0
SysProjectVo.java
.../main/java/org/dromara/system/domain/vo/SysProjectVo.java
+49
-0
SysProjectMapper.java
...main/java/org/dromara/system/mapper/SysProjectMapper.java
+15
-0
ISysProjectService.java
...n/java/org/dromara/system/service/ISysProjectService.java
+17
-0
SysProjectServiceImpl.java
...rg/dromara/system/service/impl/SysProjectServiceImpl.java
+56
-0
SysUserServiceImpl.java
...a/org/dromara/system/service/impl/SysUserServiceImpl.java
+13
-4
SysProjectMapper.xml
...tem/src/main/resources/mapper/system/SysProjectMapper.xml
+7
-0
没有找到文件。
ruoyi-api/ruoyi-api-server/src/main/java/org/dromara/server/api/domain/RemoteUser.java
浏览文件 @
9f521600
...
...
@@ -48,5 +48,10 @@ public class RemoteUser implements Serializable {
*/
private
String
phoneNumber
;
/**
* 用户类型
*/
private
String
userType
;
}
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/UserType.java
浏览文件 @
9f521600
package
org
.
dromara
.
common
.
core
.
enums
;
import
org.dromara.common.core.utils.StringUtils
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
org.dromara.common.core.utils.StringUtils
;
/**
* 设备类型
...
...
@@ -22,7 +22,12 @@ public enum UserType {
/**
* app端
*/
APP_USER
(
"app_user"
);
APP_USER
(
"app_user"
),
/**
* 项目人员
*/
PROJECT_USER
(
"project_user"
);
private
final
String
userType
;
...
...
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/AbstractBaseService.java
浏览文件 @
9f521600
...
...
@@ -103,7 +103,6 @@ public abstract class AbstractBaseService<V, B, T> implements IBaseService<V, B,
}
}
catch
(
NoSuchFieldException
|
IllegalAccessException
e
)
{
// 处理异常,可以打印日志或者抛出异常
e
.
printStackTrace
();
}
}
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/dubbo/RemoteServerServiceImpl.java
浏览文件 @
9f521600
...
...
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
io.seata.spring.annotation.GlobalTransactional
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.dubbo.config.annotation.DubboService
;
import
org.dromara.common.core.enums.UserType
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.ys.config.Config
;
import
org.dromara.common.ys.constant.Status
;
...
...
@@ -41,6 +42,9 @@ public class RemoteServerServiceImpl implements RemoteServerService {
@Override
public
boolean
saveOrUpdateUser
(
RemoteUser
user
)
{
String
userNo
=
user
.
getTenantId
()
+
"-"
+
user
.
getPhoneNumber
();
if
(!
StringUtils
.
equals
(
user
.
getUserType
(),
UserType
.
SYS_USER
.
getUserType
()))
{
userNo
=
user
.
getTenantId
()
+
"-"
+
user
.
getUserType
()
+
"-"
+
user
.
getPhoneNumber
();
}
BizUser
bz
=
userMapper
.
selectOne
(
new
LambdaQueryWrapper
<>(
BizUser
.
class
).
eq
(
BizUser:
:
getUserNo
,
userNo
));
if
(
Objects
.
isNull
(
bz
))
{
//新增
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProjectController.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
controller
.
system
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
jakarta.servlet.http.HttpServletResponse
;
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.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
org.dromara.common.excel.utils.ExcelUtil
;
import
org.dromara.common.idempotent.annotation.RepeatSubmit
;
import
org.dromara.common.log.annotation.Log
;
import
org.dromara.common.log.enums.BusinessType
;
import
org.dromara.common.mybatis.core.page.PageQuery
;
import
org.dromara.common.mybatis.core.page.TableDataInfo
;
import
org.dromara.common.web.core.BaseController
;
import
org.dromara.system.domain.bo.SysProjectBo
;
import
org.dromara.system.domain.vo.SysProjectVo
;
import
org.dromara.system.service.ISysProjectService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* 系统项目
* 前端访问路由地址为:/system/project
*
* @author hzh
* @date 2025-06-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/project"
)
public
class
SysProjectController
extends
BaseController
{
private
final
ISysProjectService
sysProjectService
;
/**
* 查询系统项目列表
*/
@SaCheckPermission
(
"system:project:list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
SysProjectVo
>
list
(
SysProjectBo
bo
,
PageQuery
pageQuery
)
{
return
sysProjectService
.
queryPageList
(
bo
,
pageQuery
);
}
/**
* 导出系统项目列表
*/
@SaCheckPermission
(
"system:project:export"
)
@Log
(
title
=
"系统项目"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
void
export
(
SysProjectBo
bo
,
HttpServletResponse
response
)
{
List
<
SysProjectVo
>
list
=
sysProjectService
.
queryList
(
bo
);
ExcelUtil
.
exportExcel
(
list
,
"系统项目"
,
SysProjectVo
.
class
,
response
);
}
/**
* 获取系统项目详细信息
*
* @param projectId 主键
*/
@SaCheckPermission
(
"system:project:query"
)
@GetMapping
(
"/{projectId}"
)
public
R
<
SysProjectVo
>
getInfo
(
@NotNull
(
message
=
"主键不能为空"
)
@PathVariable
Long
projectId
)
{
return
R
.
ok
(
sysProjectService
.
queryById
(
projectId
));
}
/**
* 新增系统项目
*/
@SaCheckPermission
(
"system:project:add"
)
@Log
(
title
=
"系统项目"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
()
public
R
<
Void
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
SysProjectBo
bo
)
{
return
toAjax
(
sysProjectService
.
insertByBo
(
bo
));
}
/**
* 修改系统项目
*/
@SaCheckPermission
(
"system:project:edit"
)
@Log
(
title
=
"系统项目"
,
businessType
=
BusinessType
.
UPDATE
)
@RepeatSubmit
()
@PutMapping
()
public
R
<
Void
>
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
SysProjectBo
bo
)
{
return
toAjax
(
sysProjectService
.
updateByBo
(
bo
));
}
/**
* 删除系统项目
*
* @param projectIds 主键串
*/
@SaCheckPermission
(
"system:project:remove"
)
@Log
(
title
=
"系统项目"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{projectIds}"
)
public
R
<
Void
>
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
[]
projectIds
)
{
return
toAjax
(
sysProjectService
.
deleteWithValidByIds
(
List
.
of
(
projectIds
),
true
));
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
浏览文件 @
9f521600
...
...
@@ -69,6 +69,16 @@ public class SysUserController extends BaseController {
return
userService
.
selectPageUserList
(
user
,
pageQuery
);
}
/**
* 获取项目用户列表
*/
@SaCheckPermission
(
"system:project:user:list"
)
@GetMapping
(
"/project/list"
)
public
TableDataInfo
<
SysUserVo
>
projectUserList
(
SysUserBo
user
,
PageQuery
pageQuery
)
{
user
.
setUserType
(
StringUtils
.
isEmpty
(
user
.
getUserType
())
?
UserType
.
PROJECT_USER
.
getUserType
()
:
user
.
getUserType
());
return
userService
.
selectPageUserList
(
user
,
pageQuery
);
}
/**
* 导出用户列表
*/
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysProject.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
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
;
/**
* 系统项目对象 sys_project
*
* @author hzh
* @date 2025-06-11
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"sys_project"
)
public
class
SysProject
extends
TenantEntity
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
@TableId
(
value
=
"project_id"
,
type
=
IdType
.
AUTO
)
private
Long
projectId
;
/**
* 项目名称
*/
private
String
projectName
;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private
String
delFlag
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysProjectBo.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
domain
.
bo
;
import
org.dromara.system.domain.SysProject
;
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.*
;
/**
* 系统项目业务对象 sys_project
*
* @author hzh
* @date 2025-06-11
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@AutoMapper
(
target
=
SysProject
.
class
,
reverseConvertGenerate
=
false
)
public
class
SysProjectBo
extends
BaseEntity
{
/**
* id
*/
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
projectId
;
/**
* 项目名称
*/
@NotBlank
(
message
=
"项目名称不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
projectName
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysProjectVo.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
org.dromara.common.translation.annotation.Translation
;
import
org.dromara.common.translation.constant.TransConstant
;
import
org.dromara.system.domain.SysProject
;
import
java.io.Serial
;
import
java.io.Serializable
;
/**
* 系统项目视图对象 sys_project
*
* @author hzh
* @date 2025-06-11
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
SysProject
.
class
)
public
class
SysProjectVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
@ExcelProperty
(
value
=
"id"
)
private
Long
projectId
;
/**
* 项目名称
*/
@ExcelProperty
(
value
=
"项目名称"
)
private
String
projectName
;
/**
* 创建者
*/
@ExcelProperty
(
value
=
"创建者"
)
@Translation
(
type
=
TransConstant
.
USER_ID_TO_NAME
)
private
Long
createBy
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysProjectMapper.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
mapper
;
import
org.dromara.system.domain.SysProject
;
import
org.dromara.system.domain.vo.SysProjectVo
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
/**
* 系统项目Mapper接口
*
* @author hzh
* @date 2025-06-11
*/
public
interface
SysProjectMapper
extends
BaseMapperPlus
<
SysProject
,
SysProjectVo
>
{
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysProjectService.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
service
;
import
org.dromara.common.mybatis.service.IBaseService
;
import
org.dromara.system.domain.SysProject
;
import
org.dromara.system.domain.bo.SysProjectBo
;
import
org.dromara.system.domain.vo.SysProjectVo
;
/**
* 系统项目Service接口
*
* @author hzh
* @date 2025-06-11
*/
public
interface
ISysProjectService
extends
IBaseService
<
SysProjectVo
,
SysProjectBo
,
SysProject
>{
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysProjectServiceImpl.java
0 → 100644
浏览文件 @
9f521600
package
org
.
dromara
.
system
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.google.common.base.Objects
;
import
lombok.RequiredArgsConstructor
;
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.domain.SysProject
;
import
org.dromara.system.domain.bo.SysProjectBo
;
import
org.dromara.system.domain.vo.SysProjectVo
;
import
org.dromara.system.mapper.SysProjectMapper
;
import
org.dromara.system.service.ISysProjectService
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Map
;
/**
* 系统项目Service业务层处理
*
* @author hzh
* @date 2025-06-11
*/
@RequiredArgsConstructor
@Service
public
class
SysProjectServiceImpl
extends
AbstractBaseService
<
SysProjectVo
,
SysProjectBo
,
SysProject
>
implements
ISysProjectService
{
private
final
SysProjectMapper
baseMapper
;
@Override
public
BaseMapperPlus
<
SysProject
,
SysProjectVo
>
mapper
()
{
return
baseMapper
;
}
@Override
public
LambdaQueryWrapper
<
SysProject
>
buildQueryWrapper
(
SysProjectBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
SysProject
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getProjectName
()),
SysProject:
:
getProjectName
,
bo
.
getProjectName
());
return
lqw
;
}
@Override
public
void
validEntityBeforeSave
(
SysProject
entity
)
{
super
.
validEntityBeforeSave
(
entity
);
List
<
SysProject
>
list
=
baseMapper
.
selectList
(
SysProject:
:
getProjectName
,
entity
.
getProjectName
());
SysProject
sp
=
StreamUtils
.
findFirst
(
list
,
p
->
!
Objects
.
equal
(
entity
.
getProjectId
(),
p
.
getProjectId
()));
if
(
sp
!=
null
)
{
throw
new
ServiceException
(
"项目:"
+
entity
.
getProjectName
()
+
"已存在,不能重复添加"
);
}
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
浏览文件 @
9f521600
...
...
@@ -159,7 +159,6 @@ public class SysUserServiceImpl implements ISysUserService {
QueryWrapper
<
SysUser
>
wrapper
=
Wrappers
.
query
();
wrapper
.
eq
(
"u.del_flag"
,
UserConstants
.
USER_NORMAL
)
.
eq
(
ObjectUtil
.
isNotNull
(
user
.
getUserId
()),
"u.user_id"
,
user
.
getUserId
())
.
eq
(
StringUtils
.
isNotBlank
(
user
.
getUserType
()),
"u.user_type"
,
user
.
getUserType
())
.
like
(
StringUtils
.
isNotBlank
(
user
.
getUserName
()),
"u.user_name"
,
user
.
getUserName
())
.
eq
(
StringUtils
.
isNotBlank
(
user
.
getStatus
()),
"u.status"
,
user
.
getStatus
())
.
like
(
StringUtils
.
isNotBlank
(
user
.
getPhonenumber
()),
"u.phonenumber"
,
user
.
getPhonenumber
())
...
...
@@ -177,6 +176,14 @@ public class SysUserServiceImpl implements ISysUserService {
if
(
StringUtils
.
isNotBlank
(
user
.
getExcludeUserIds
()))
{
wrapper
.
notIn
(
"u.user_id"
,
StringUtils
.
splitList
(
user
.
getExcludeUserIds
()));
}
if
(
StringUtils
.
isNotBlank
(
user
.
getUserType
()))
{
boolean
contains
=
user
.
getUserType
().
contains
(
":"
);
if
(
contains
)
{
wrapper
.
eq
(
"u.user_type"
,
user
.
getUserType
());
}
else
{
wrapper
.
likeRight
(
"u.user_type"
,
user
.
getUserType
());
}
}
return
wrapper
;
}
...
...
@@ -318,7 +325,7 @@ public class SysUserServiceImpl implements ISysUserService {
public
boolean
checkUserNameUnique
(
SysUserBo
user
)
{
boolean
exist
=
baseMapper
.
exists
(
new
LambdaQueryWrapper
<
SysUser
>()
.
eq
(
SysUser:
:
getUserName
,
user
.
getUserName
())
.
eq
(
SysUser:
:
getUserType
,
UserType
.
SYS_USER
.
getUserType
())
.
eq
(
SysUser:
:
getUserType
,
StringUtils
.
isEmpty
(
user
.
getUserType
())
?
UserType
.
SYS_USER
.
getUserType
()
:
user
.
getUserType
())
.
ne
(
ObjectUtil
.
isNotNull
(
user
.
getUserId
()),
SysUser:
:
getUserId
,
user
.
getUserId
()));
return
!
exist
;
}
...
...
@@ -332,7 +339,7 @@ public class SysUserServiceImpl implements ISysUserService {
public
boolean
checkPhoneUnique
(
SysUserBo
user
)
{
boolean
exist
=
baseMapper
.
exists
(
new
LambdaQueryWrapper
<
SysUser
>()
.
eq
(
SysUser:
:
getPhonenumber
,
user
.
getPhonenumber
())
.
eq
(
SysUser:
:
getUserType
,
UserType
.
SYS_USER
.
getUserType
())
.
eq
(
SysUser:
:
getUserType
,
StringUtils
.
isEmpty
(
user
.
getUserType
())
?
UserType
.
SYS_USER
.
getUserType
()
:
user
.
getUserType
())
.
ne
(
ObjectUtil
.
isNotNull
(
user
.
getUserId
()),
SysUser:
:
getUserId
,
user
.
getUserId
()));
return
!
exist
;
}
...
...
@@ -346,7 +353,7 @@ public class SysUserServiceImpl implements ISysUserService {
public
boolean
checkEmailUnique
(
SysUserBo
user
)
{
boolean
exist
=
baseMapper
.
exists
(
new
LambdaQueryWrapper
<
SysUser
>()
.
eq
(
SysUser:
:
getEmail
,
user
.
getEmail
())
.
eq
(
SysUser:
:
getUserType
,
UserType
.
SYS_USER
.
getUserType
())
.
eq
(
SysUser:
:
getUserType
,
StringUtils
.
isEmpty
(
user
.
getUserType
())
?
UserType
.
SYS_USER
.
getUserType
()
:
user
.
getUserType
())
.
ne
(
ObjectUtil
.
isNotNull
(
user
.
getUserId
()),
SysUser:
:
getUserId
,
user
.
getUserId
()));
return
!
exist
;
}
...
...
@@ -390,6 +397,7 @@ public class SysUserServiceImpl implements ISysUserService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
int
insertUser
(
SysUserBo
user
)
{
user
.
setUserType
(
StringUtils
.
isEmpty
(
user
.
getUserType
())
?
UserType
.
SYS_USER
.
getUserType
()
:
user
.
getUserType
());
SysUser
sysUser
=
MapstructUtils
.
convert
(
user
,
SysUser
.
class
);
sysUser
.
setTenantId
(
LoginHelper
.
getTenantId
());
// 新增用户信息
...
...
@@ -437,6 +445,7 @@ public class SysUserServiceImpl implements ISysUserService {
.
setUserName
(
sysUser
.
getUserName
())
.
setPhoneNumber
(
sysUser
.
getPhonenumber
())
.
setIdCard
(
sysUser
.
getIdCard
())
.
setUserType
(
sysUser
.
getUserType
())
.
setTenantId
(
sysUser
.
getTenantId
())
);
}
...
...
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysProjectMapper.xml
0 → 100644
浏览文件 @
9f521600
<?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.SysProjectMapper"
>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论