Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fulixin
dsk-operate-sys-cscec
Commits
cd459e7f
Commit
cd459e7f
authored
Nov 15, 2023
by
施翔轲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
企业管理页面操作栏增加添加账号功能
parent
01b1720f
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
189 additions
and
11 deletions
+189
-11
SysTenantController.java
...va/com/dsk/web/controller/system/SysTenantController.java
+27
-7
SysTenantAdminBo.java
.../main/java/com/dsk/system/domain/bo/SysTenantAdminBo.java
+63
-0
ISysTenantService.java
...c/main/java/com/dsk/system/service/ISysTenantService.java
+9
-0
ISysTenantServiceImpl.java
...va/com/dsk/system/service/impl/ISysTenantServiceImpl.java
+90
-4
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/system/SysTenantController.java
View file @
cd459e7f
...
...
@@ -3,6 +3,7 @@ package com.dsk.web.controller.system;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.annotation.SaCheckRole
;
import
cn.dev33.satoken.annotation.SaMode
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.lock.annotation.Lock4j
;
import
com.dsk.common.annotation.Log
;
import
com.dsk.common.annotation.RepeatSubmit
;
...
...
@@ -15,9 +16,13 @@ import com.dsk.common.core.validate.AddGroup;
import
com.dsk.common.core.validate.EditGroup
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.tenant.helper.TenantHelper
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.system.domain.SysUser
;
import
com.dsk.system.domain.bo.SysTenantAdminBo
;
import
com.dsk.system.domain.bo.SysTenantBo
;
import
com.dsk.system.domain.vo.SysTenantVo
;
import
com.dsk.system.service.ISysTenantService
;
import
com.dsk.system.service.ISysUserService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -39,11 +44,12 @@ import java.util.Arrays;
@RequestMapping
(
"/system/tenant"
)
public
class
SysTenantController
extends
BaseController
{
private
final
ISysTenantService
tenantService
;
private
final
ISysUserService
userService
;
/**
* 查询租户列表
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:tenant:list"
,
orRole
=
"accountAdmin"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
SysTenantVo
>
list
(
SysTenantBo
bo
,
PageQuery
pageQuery
)
{
...
...
@@ -67,7 +73,7 @@ public class SysTenantController extends BaseController {
*
* @param id 主键
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:tenant:query"
,
orRole
=
"accountAdmin"
)
@GetMapping
(
"/{id}"
)
public
R
<
SysTenantVo
>
getInfo
(
@NotNull
(
message
=
"主键不能为空"
)
@PathVariable
Long
id
)
{
...
...
@@ -77,7 +83,7 @@ public class SysTenantController extends BaseController {
/**
* 新增租户
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:tenant:add"
,
orRole
=
"accountAdmin"
)
@Log
(
title
=
"租户"
,
businessType
=
BusinessType
.
INSERT
)
@Lock4j
...
...
@@ -90,10 +96,24 @@ public class SysTenantController extends BaseController {
return
toAjax
(
TenantHelper
.
ignore
(()
->
tenantService
.
insertByBo
(
bo
)));
}
/**
* 新增企业普通管理员账号
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:user:add"
)
@Log
(
title
=
"用户管理"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
(
"/addTenantAdmin"
)
public
R
<
Void
>
addTenantAdmin
(
@Validated
@RequestBody
SysTenantAdminBo
tenantAdminBo
)
{
if
(!
userService
.
checkPhoneUnique
(
BeanUtil
.
toBean
(
tenantAdminBo
,
SysUser
.
class
)))
{
return
R
.
fail
(
"新增用户'"
+
tenantAdminBo
.
getPhonenumber
()
+
"'失败,手机号码已存在"
);
}
return
toAjax
(
TenantHelper
.
ignore
(()
->
tenantService
.
addTenantAdmin
(
tenantAdminBo
)));
}
/**
* 修改租户
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:tenant:edit"
,
orRole
=
"accountAdmin"
)
@Log
(
title
=
"租户"
,
businessType
=
BusinessType
.
UPDATE
)
@RepeatSubmit
()
...
...
@@ -123,7 +143,7 @@ public class SysTenantController extends BaseController {
*
* @param ids 主键串
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:tenant:remove"
,
orRole
=
"accountAdmin"
)
@Log
(
title
=
"租户"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
...
...
@@ -146,7 +166,7 @@ public class SysTenantController extends BaseController {
/**
* 清除动态租户
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@GetMapping
(
"/dynamic/clear"
)
public
R
<
Void
>
dynamicClear
()
{
TenantHelper
.
clearDynamic
();
...
...
@@ -159,7 +179,7 @@ public class SysTenantController extends BaseController {
* @param tenantId 租户id
* @param packageId 套餐id
*/
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckRole
(
value
=
{
TenantConstants
.
SUPER_ADMIN_ROLE_KEY
,
TenantConstants
.
DSK_TENANT_ADMIN_ROLE_KEY
},
mode
=
SaMode
.
OR
)
@SaCheckPermission
(
value
=
"system:tenant:edit"
,
orRole
=
"accountAdmin"
)
@Log
(
title
=
"租户"
,
businessType
=
BusinessType
.
UPDATE
)
@GetMapping
(
"/syncTenantPackage"
)
...
...
dsk-system/src/main/java/com/dsk/system/domain/bo/SysTenantAdminBo.java
0 → 100644
View file @
cd459e7f
package
com
.
dsk
.
system
.
domain
.
bo
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.dsk.common.annotation.Sensitive
;
import
com.dsk.common.core.validate.AddGroup
;
import
com.dsk.common.core.validate.EditGroup
;
import
com.dsk.common.enums.SensitiveStrategy
;
import
com.dsk.common.tenant.core.TenantEntity
;
import
com.dsk.common.xss.Xss
;
import
com.dsk.system.domain.SysDept
;
import
com.dsk.system.domain.SysRole
;
import
com.dsk.system.domain.SysUser
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
import
java.util.Date
;
import
java.util.List
;
/**
* 用户对象 sys_user
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
SysTenantAdminBo
extends
TenantEntity
{
/**
* 租户ID
*/
@NotNull
(
message
=
"租户ID不能为空"
,
groups
=
AddGroup
.
class
)
private
String
tenantId
;
/**
* 用户昵称
*/
@Xss
(
message
=
"用户昵称不能包含脚本字符"
)
@NotBlank
(
message
=
"用户昵称不能为空"
)
@Size
(
min
=
0
,
max
=
30
,
message
=
"用户昵称长度不能超过{max}个字符"
)
private
String
nickName
;
/**
* 手机号码
*/
@Xss
(
message
=
"用户昵称不能包含脚本字符"
)
@NotBlank
(
message
=
"手机号码不能为空"
,
groups
=
AddGroup
.
class
)
@Sensitive
(
strategy
=
SensitiveStrategy
.
PHONE
)
private
String
phonenumber
;
/**
* 租户套餐编号
*/
@NotNull
(
message
=
"租户套餐不能为空"
,
groups
=
AddGroup
.
class
)
private
Long
packageId
;
}
dsk-system/src/main/java/com/dsk/system/service/ISysTenantService.java
View file @
cd459e7f
...
...
@@ -2,6 +2,7 @@ package com.dsk.system.service;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.system.domain.bo.SysTenantAdminBo
;
import
com.dsk.system.domain.bo.SysTenantBo
;
import
com.dsk.system.domain.vo.SysTenantVo
;
...
...
@@ -44,6 +45,14 @@ public interface ISysTenantService {
*/
Boolean
insertByBo
(
SysTenantBo
bo
);
/**
* 新增企业普通管理员账号
*
* @param tenantAdminBo 用户信息
* @return 结果
*/
Boolean
addTenantAdmin
(
SysTenantAdminBo
tenantAdminBo
);
/**
* 校验租户是否允许操作
*/
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/ISysTenantServiceImpl.java
View file @
cd459e7f
...
...
@@ -26,6 +26,7 @@ import com.dsk.common.utils.PasswordUtils;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.redis.RedisUtils
;
import
com.dsk.system.domain.*
;
import
com.dsk.system.domain.bo.SysTenantAdminBo
;
import
com.dsk.system.domain.bo.SysTenantBo
;
import
com.dsk.system.domain.vo.SysTenantVo
;
import
com.dsk.system.mapper.*
;
...
...
@@ -180,7 +181,9 @@ public class ISysTenantServiceImpl implements ISysTenantService {
bo
.
setId
(
add
.
getId
());
// 根据套餐创建角色
Long
roleId
=
createTenantRole
(
tenantId
,
bo
.
getPackageId
());
Long
roleId
=
createTenantRole
(
tenantId
,
bo
.
getPackageId
(),
TenantConstants
.
TENANT_SUPER_ADMIN_ROLE_NAME
,
TenantConstants
.
TENANT_SUPER_ADMIN_ROLE_KEY
);
// 创建部门: 公司名是部门名称
SysDept
dept
=
new
SysDept
();
...
...
@@ -268,6 +271,89 @@ public class ISysTenantServiceImpl implements ISysTenantService {
return
true
;
}
/**
* 新增企业普通管理员账号
*
* @param tenantAdminBo 用户信息
* @return 结果
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
addTenantAdmin
(
SysTenantAdminBo
tenantAdminBo
)
{
String
tenantId
=
tenantAdminBo
.
getTenantId
();
// 根据套餐创建角色
Long
roleId
=
createTenantRole
(
tenantId
,
tenantAdminBo
.
getPackageId
(),
TenantConstants
.
TENANT_ADMIN_ROLE_NAME
,
TenantConstants
.
TENANT_ADMIN_ROLE_KEY
);
//获取部门ID
Long
deptId
=
deptMapper
.
selectOne
(
new
LambdaQueryWrapper
<
SysDept
>()
.
eq
(
SysDept:
:
getTenantId
,
tenantId
)).
getDeptId
();
// 角色和部门关联表
SysRoleDept
roleDept
=
new
SysRoleDept
();
roleDept
.
setRoleId
(
roleId
);
roleDept
.
setDeptId
(
deptId
);
roleDeptMapper
.
insert
(
roleDept
);
// 创建系统用户
SysUser
user
=
new
SysUser
();
user
.
setTenantId
(
tenantId
);
user
.
setPhonenumber
(
tenantAdminBo
.
getPhonenumber
());
//默认新增用户名为手机号
user
.
setUserName
(
tenantAdminBo
.
getPhonenumber
());
user
.
setNickName
(
tenantAdminBo
.
getNickName
());
//生成8位随机密码
String
password
=
PasswordUtils
.
generatePwd
(
8
);
user
.
setPassword
(
BCrypt
.
hashpw
(
password
));
user
.
setDeptId
(
deptId
);
user
.
setCreateTime
(
new
DateTime
());
userMapper
.
insert
(
user
);
// 用户和角色关联表
SysUserRole
userRole
=
new
SysUserRole
();
userRole
.
setUserId
(
user
.
getUserId
());
userRole
.
setRoleId
(
roleId
);
userRoleMapper
.
insert
(
userRole
);
String
defaultTenantId
=
TenantConstants
.
DEFAULT_TENANT_ID
;
//List<SysDictType> dictTypeList = dictTypeMapper.selectList(
// new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getTenantId, defaultTenantId));
//List<SysDictData> dictDataList = dictDataMapper.selectList(
// new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getTenantId, defaultTenantId));
//for (SysDictType dictType : dictTypeList) {
// dictType.setDictId(null);
// dictType.setTenantId(tenantId);
//}
//for (SysDictData dictData : dictDataList) {
// dictData.setDictCode(null);
// dictData.setTenantId(tenantId);
//}
//dictTypeMapper.insertBatch(dictTypeList);
//dictDataMapper.insertBatch(dictDataList);
List
<
SysConfig
>
sysConfigList
=
configMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysConfig
>()
.
eq
(
SysConfig:
:
getTenantId
,
defaultTenantId
)
.
eq
(
SysConfig:
:
getConfigType
,
"Y"
));
for
(
SysConfig
config
:
sysConfigList
)
{
config
.
setConfigId
(
null
);
config
.
setTenantId
(
tenantId
);
}
configMapper
.
insertBatch
(
sysConfigList
);
//管理员新增成功,发送短信通知用户
LinkedHashMap
<
String
,
String
>
map
=
new
LinkedHashMap
<>(
1
);
map
.
put
(
"company"
,
tenantAdminBo
.
getNickName
());
map
.
put
(
"pwd"
,
password
);
SmsBlend
smsBlend
=
SmsFactory
.
createSmsBlend
(
SupplierType
.
ALIBABA
);
SmsResponse
smsResponse
=
smsBlend
.
sendMessage
(
tenantAdminBo
.
getPhonenumber
(),
"SMS_463175230"
,
map
);
if
(!
"OK"
.
equals
(
smsResponse
.
getCode
()))
{
log
.
error
(
"新增租户通知短信发送异常 => {}"
,
smsResponse
);
}
return
true
;
}
/**
* 生成租户id
*
...
...
@@ -291,7 +377,7 @@ public class ISysTenantServiceImpl implements ISysTenantService {
* @param packageId 租户套餐id
* @return 角色id
*/
private
Long
createTenantRole
(
String
tenantId
,
Long
packageId
)
{
private
Long
createTenantRole
(
String
tenantId
,
Long
packageId
,
String
roleName
,
String
roleKey
)
{
// 获取租户套餐
SysTenantPackage
tenantPackage
=
tenantPackageMapper
.
selectById
(
packageId
);
if
(
ObjectUtil
.
isNull
(
tenantPackage
))
{
...
...
@@ -303,8 +389,8 @@ public class ISysTenantServiceImpl implements ISysTenantService {
// 创建角色
SysRole
role
=
new
SysRole
();
role
.
setTenantId
(
tenantId
);
role
.
setRoleName
(
TenantConstants
.
TENANT_SUPER_ADMIN_ROLE_NAME
);
role
.
setRoleKey
(
TenantConstants
.
TENANT_SUPER_ADMIN_ROLE_KEY
);
role
.
setRoleName
(
roleName
);
role
.
setRoleKey
(
roleKey
);
role
.
setRoleSort
(
1
);
role
.
setStatus
(
TenantConstants
.
NORMAL
);
roleMapper
.
insert
(
role
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment