明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_backend
Project
Project
Details
Activity
Releases
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
zengfanpei
jt_backend
Commits
bc09d118
Commit
bc09d118
authored
Oct 30, 2025
by
zfp1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
dd3436a3
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
479 additions
and
64 deletions
+479
-64
departController.js
controller/departController.js
+137
-0
menuController.js
controller/menuController.js
+14
-1
roleController.js
controller/roleController.js
+38
-22
userController.js
controller/userController.js
+57
-27
index.js
db/index.js
+23
-0
depart.js
db/model/depart.js
+44
-0
userDepart.js
db/model/userDepart.js
+37
-0
userModule.js
module/userModule.js
+103
-0
userRouter.js
router/userRouter.js
+12
-0
server.js
server.js
+14
-14
No files found.
controller/departController.js
0 → 100644
View file @
bc09d118
const
errorMessage
=
require
(
"../utils/errorMessage"
);
const
{
Op
}
=
require
(
'sequelize'
);
async
function
createDepart
(
req
,
res
,
next
)
{
try
{
const
body
=
req
.
body
;
if
(
body
.
parentId
)
{
//查父节点
let
parendNode
=
await
DB
.
Menu
.
findOne
({
where
:
{
id
:
body
.
parentId
},
raw
:
true
,
attributes
:
[
'parentIds'
]
});
if
(
!
parendNode
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
if
(
parendNode
.
parentIds
)
{
body
.
parentIds
=
parendNode
.
parentIds
+
","
+
String
(
body
.
parentId
);
}
else
{
body
.
parentIds
=
String
(
body
.
parentId
);
}
}
const
ret
=
await
DB
.
Depart
.
create
(
body
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
updateDepart
(
req
,
res
,
next
)
{
try
{
let
body
=
req
.
body
;
if
(
!
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
if
(
body
.
parentId
)
{
let
parendNode
=
await
DB
.
Menu
.
findOne
({
where
:
{
id
:
body
.
parentId
},
raw
:
true
,
attributes
:
[
'parentIds'
]
});
if
(
!
parendNode
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
if
(
parendNode
.
parentIds
)
{
body
.
parentIds
=
parendNode
.
parentIds
+
","
+
String
(
body
.
parentId
);
}
else
{
body
.
parentIds
=
String
(
body
.
parentId
);
}
}
// sequelize 只有update 写时需要注意条件 不能为空
const
ret
=
await
DB
.
Menu
.
update
(
body
,
{
where
:
{
id
:
body
.
id
}
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
listDepart
(
req
,
res
,
next
)
{
try
{
let
search
=
{
where
:
{
del
:
0
}
};
let
page
=
req
.
body
.
page
||
1
;
let
limit
=
req
.
body
.
pageSize
||
10
;
let
offset
=
(
page
-
1
)
*
limit
;
if
(
req
.
body
.
name
)
{
search
.
where
=
{
[
Op
.
or
]:
[
{
name
:
{
[
Op
.
like
]:
`%
${
req
.
body
.
name
}
%`
}
}
],
del
:
0
,
}
}
search
.
limit
=
limit
;
search
.
offset
=
offset
;
let
ret
=
await
DB
.
Depart
.
findAndCountAll
(
search
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
treeDepart
(
req
,
res
,
next
)
{
try
{
let
nodes
=
await
DB
.
Depart
.
findAll
({
where
:
{
del
:
0
},
raw
:
true
});
let
tree
=
utils
.
buildTree
(
nodes
);
return
res
.
sendData
(
tree
);
}
catch
(
error
)
{
next
(
error
);
}
}
/**
*
* 删除菜单,则此菜单所有子菜单借删除
*/
async
function
deleteDepart
(
req
,
res
,
next
)
{
try
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
let
curNode
=
await
DB
.
Depart
.
findOne
({
where
:
{
id
:
req
.
body
.
id
}
});
if
(
!
(
curNode
&&
curNode
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
let
parStr
=
curNode
.
parentIds
?
`
${
curNode
.
parentIds
}
,
${
curNode
.
id
}
`
:
curNode
.
id
;
//拼接父字符串查找所有的子
const
ret
=
await
DB
.
Menu
.
update
(
{
del
:
1
},
{
where
:
{
[
Op
.
or
]:
[
{
parentIds
:
{
[
Op
.
startsWith
]:
parStr
}
},
//删除所有以自己为父节点得子节点
{
id
:
curNode
.
id
}
//删除自己
]
}
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
getDepart
(
req
,
res
,
next
)
{
try
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
const
ret
=
await
DB
.
Depart
.
findOne
({
where
:
{
id
:
req
.
body
.
id
},
raw
:
true
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
module
.
exports
=
{
createDepart
,
updateDepart
,
deleteDepart
,
listDepart
,
treeDepart
,
getDepart
,
}
\ No newline at end of file
controller/menuController.js
View file @
bc09d118
...
...
@@ -31,6 +31,19 @@ async function updateMenu(req, res, next) {
if
(
!
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
if
(
body
.
parentId
)
{
//查父节点
let
parendNode
=
await
DB
.
Menu
.
findOne
({
where
:
{
id
:
body
.
parentId
},
raw
:
true
,
attributes
:
[
'parentIds'
]
});
if
(
!
parendNode
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
if
(
parendNode
.
parentIds
)
{
body
.
parentIds
=
parendNode
.
parentIds
+
","
+
String
(
body
.
parentId
);
}
else
{
body
.
parentIds
=
String
(
body
.
parentId
);
}
}
// sequelize 只有update 写时需要注意条件 不能为空
const
ret
=
await
DB
.
Menu
.
update
(
body
,
{
where
:
{
id
:
body
.
id
}
});
return
res
.
sendData
(
ret
);
...
...
@@ -108,7 +121,7 @@ async function getMenu(req, res, next) {
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
const
ret
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
req
.
body
.
id
},
raw
:
true
});
const
ret
=
await
DB
.
Depart
.
findOne
({
where
:
{
id
:
req
.
body
.
id
},
raw
:
true
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
...
...
controller/roleController.js
View file @
bc09d118
const
errorMessage
=
require
(
"../utils/errorMessage"
);
const
userModule
=
require
(
'../module/userModule'
);
async
function
createRole
(
req
,
res
,
next
)
{
try
{
...
...
@@ -16,6 +17,27 @@ async function updateRole(req, res, next) {
if
(
!
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
let
role
=
await
DB
.
Role
.
findOne
({
where
:
{
del
:
0
},
raw
:
true
,
include
:
[
{
model
:
DB
.
Menu
,
as
:
'menus'
,
where
:
{
del
:
0
},
attributes
:
[
"id"
],
through
:
{
attributes
:
[]
},
}
]
})
if
(
!
(
role
&&
role
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
if
(
body
.
menus
)
{
//如果这里前端给的是树形结构 需要把它拆成平行,//TODO:
// body.menus = utils.disTree(body.menus);
await
userModule
.
setRoleMenu
(
role
.
id
,
body
.
menus
,
role
.
menus
);
delete
body
.
menus
;
}
// sequelize 只有update 写时需要注意条件 不能为空
const
ret
=
await
DB
.
Role
.
update
(
body
,
{
where
:
{
id
:
body
.
id
}
});
return
res
.
sendData
(
ret
);
...
...
@@ -64,7 +86,21 @@ async function getRole(req, res, next) {
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
const
ret
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
req
.
body
.
id
},
raw
:
true
});
const
ret
=
await
DB
.
Role
.
findOne
({
where
:
{
id
:
req
.
body
.
id
},
raw
:
true
,
include
:
[
{
model
:
DB
.
Menu
,
as
:
'menus'
,
where
:
{
del
:
0
},
// attributes: ["id"],
through
:
{
attributes
:
[]
},
}
]
});
if
(
ret
&&
ret
.
menus
&&
ret
.
menus
.
length
)
{
ret
.
menus
=
utils
.
buildTree
(
ret
.
menus
);
}
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
...
...
@@ -79,27 +115,7 @@ async function setRoleMenu(req, res, next) {
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
const
rolemenus
=
await
DB
.
RoleMenu
.
findAll
({
where
:
{
roleId
:
roleId
},
raw
:
true
});
let
needAddIds
=
[],
needDelIds
=
[],
dbMenuIds
=
[];
for
(
let
index
=
0
;
index
<
rolemenus
.
length
;
index
++
)
{
const
element
=
rolemenus
[
index
];
dbMenuIds
.
push
(
element
.
menuId
);
if
(
!
(
menuIds
.
includes
(
element
.
menuId
)))
{
needDelIds
.
push
(
element
.
menuId
);
}
}
for
(
let
index
=
0
;
index
<
menuIds
.
length
;
index
++
)
{
const
element
=
menuIds
[
index
];
if
(
!
(
dbMenuIds
.
includes
(
element
)))
{
needAddIds
.
push
(
element
);
}
}
if
(
needAddIds
.
length
)
{
let
objs
=
needAddIds
.
map
(
o
=>
{
return
{
roleId
,
menuId
:
o
}});
await
DB
.
RoleMenu
.
bulkCreate
(
objs
);
}
if
(
needDelIds
.
length
)
{
await
DB
.
RoleMenu
.
destroy
({
where
:
{
roleId
,
menuId
:
{[
Op
.
in
]:
needDelIds
}}});
}
await
userModule
.
setRoleMenu
(
roleId
,
menuIds
,
rolemenus
);
return
res
.
sendData
();
}
catch
(
error
)
{
next
(
error
);
...
...
controller/userController.js
View file @
bc09d118
...
...
@@ -44,7 +44,14 @@ async function login(req, res, next) {
// attributes: ['id', 'name', 'parentId'],
through
:
{
attributes
:
[]
},
}]
}]
},
{
model
:
DB
.
Depart
,
as
:
'departs'
,
where
:
{
del
:
0
},
attributes
:
[
"id"
,
"name"
],
through
:
{
attributes
:
[]
},
}
]
});
user
=
user
.
toJSON
();
if
(
!
user
)
{
...
...
@@ -76,7 +83,7 @@ async function login(req, res, next) {
newRoles
.
push
(
element
);
}
user
.
roles
=
roles
||
[];
user
.
menus
=
utils
.
buildTree
(
menus
);
user
.
menus
=
utils
.
buildTree
(
menus
);
return
res
.
sendData
(
user
);
}
catch
(
error
)
{
next
(
error
);
...
...
@@ -94,7 +101,18 @@ async function createUser(req, res, next) {
const
{
salt
,
passwordHash
}
=
utils
.
saltHashPassword
(
req
.
body
.
password
);
body
.
salt
=
salt
;
body
.
password
=
passwordHash
;
const
ret
=
await
DB
.
User
.
create
(
body
);
if
(
!
(
ret
&&
ret
.
id
))
{
return
res
.
sendError
(
errorMessage
.
databaseQueryError
);
}
//处理部门 角色
body
.
departs
=
body
.
departs
||
[];
body
.
roles
=
body
.
roles
||
[];
let
userDeparts
=
body
.
departs
.
map
(
o
=>
{
return
{
userId
:
ret
.
id
,
departId
:
o
&&
o
.
id
||
o
}
});
let
userRoles
=
body
.
roles
.
map
(
o
=>
{
return
{
userId
:
ret
.
id
,
roleId
:
o
&&
o
.
id
||
o
}
});
await
DB
.
UserDepart
.
bulkCreate
(
userDeparts
);
await
DB
.
UserRole
.
bulkCreate
(
userRoles
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
...
...
@@ -115,12 +133,12 @@ async function getUserInfo(req, res, next) {
where
:
query
,
// raw: true,
attributes
:
{
exclude
:
[
'password'
,
'salt'
]
},
include
:
{
include
:
[
{
model
:
DB
.
Role
,
as
:
'roles'
,
where
:
{
del
:
0
},
// attributes: ['id']
}
}
]
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
...
...
@@ -134,6 +152,40 @@ async function updateUser(req, res, next) {
if
(
!
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
let
user
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
body
.
id
},
include
:
[
{
model
:
DB
.
Role
,
as
:
'roles'
,
where
:
{
del
:
0
},
attributes
:
[
"id"
],
through
:
{
attributes
:
[]
},
},
{
model
:
DB
.
Depart
,
as
:
'departs'
,
where
:
{
del
:
0
},
attributes
:
[
"id"
],
through
:
{
attributes
:
[]
},
}
],
raw
:
true
,
});
if
(
!
(
user
&&
user
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
if
(
body
.
departs
&&
body
.
departs
.
length
)
{
//跟现有情况对比 确定增删关系
const
departIds
=
body
.
departs
.
map
(
o
=>
{
return
o
&&
o
.
id
||
o
});
await
userModule
.
setUserDepart
(
user
.
id
,
departIds
,
user
.
departs
);
delete
body
.
departs
;
}
if
(
body
.
roles
&&
body
.
roles
.
length
)
{
//跟现有情况对比 确定增删关系
const
roleIds
=
body
.
roles
.
map
(
o
=>
{
return
o
&&
o
.
id
||
o
});
await
userModule
.
setUserRole
(
user
.
id
,
roleIds
,
user
.
roles
);
delete
body
.
roles
;
}
const
ret
=
await
DB
.
User
.
update
(
body
,
{
where
:
{
id
:
body
.
id
}
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
...
...
@@ -193,29 +245,7 @@ async function setUserRole(req, res, next) {
let
{
userId
,
roleIds
}
=
req
.
body
;
//1. 先查被设置用户 有什么角色
const
roles
=
await
DB
.
UserRole
.
findAll
({
where
:
{
userId
:
req
.
body
.
userId
},
raw
:
true
,
attributes
:
[
'roleId'
,
'userId'
]
});
//需新增得
let
dbRoleIds
=
[],
needAddRoleIds
=
[],
needDelRoleIds
=
[];
for
(
let
index
=
0
;
index
<
roles
.
length
;
index
++
)
{
const
element
=
roles
[
index
];
dbRoleIds
.
push
(
element
.
roleId
);
if
(
!
roleIds
.
includes
(
element
.
roleId
))
{
// 1. roleIds里面没有 但是关系表里有的 需要删除
needDelRoleIds
.
push
(
element
.
roleId
);
}
}
for
(
let
index
=
0
;
index
<
roleIds
.
length
;
index
++
)
{
const
element
=
roleIds
[
index
];
if
(
!
dbRoleIds
.
includes
(
element
))
{
needAddRoleIds
.
push
(
element
);
}
}
if
(
needAddRoleIds
.
length
)
{
let
objs
=
needAddRoleIds
.
map
(
o
=>
{
return
{
userId
:
userId
,
roleId
:
o
}
});
await
DB
.
UserRole
.
bulkCreate
(
objs
);
}
if
(
needDelRoleIds
.
length
)
{
await
DB
.
UserRole
.
destroy
({
where
:
{
userId
:
userId
,
roleId
:
{
[
Op
.
in
]:
needDelRoleIds
}
}
});
}
await
userModule
.
setUserRole
(
userId
,
roleIds
,
roles
);
return
res
.
sendData
();
}
catch
(
error
)
{
console
.
log
(
error
)
...
...
db/index.js
View file @
bc09d118
...
...
@@ -5,8 +5,14 @@ const Role = require("./model/role");
const
UserRole
=
require
(
"./model/userRole"
);
const
Menu
=
require
(
"./model/menu"
);
const
RoleMenu
=
require
(
"./model/roleMenu"
);
const
Depart
=
require
(
"./model/depart"
);
const
UserDepart
=
require
(
"./model/userDepart"
);
const
RequestLog
=
require
(
"./model/requestLog"
);
/**
* 业务表
*/
global
.
DB
=
{
...
...
@@ -16,6 +22,9 @@ global.DB = {
UserRole
,
Menu
,
RoleMenu
,
Depart
,
UserDepart
,
}
...
...
@@ -54,3 +63,17 @@ Menu.belongsToMany(Role, {
foreignKey
:
'menuId'
,
otherKey
:
'roleId'
});
User
.
belongsToMany
(
Depart
,
{
through
:
'system_user_depart'
,
// 中间表名
foreignKey
:
'userId'
,
// 用户ID外键
otherKey
:
'departId'
,
// 角色ID外键
as
:
'departs'
,
});
Depart
.
belongsToMany
(
User
,
{
through
:
'system_user_depart'
,
foreignKey
:
'departId'
,
otherKey
:
'userId'
,
as
:
'users'
});
db/model/depart.js
0 → 100644
View file @
bc09d118
// models/Depart.js
const
{
DataTypes
}
=
require
(
'sequelize'
);
const
sequelize
=
require
(
'./index'
);
const
Depart
=
sequelize
.
define
(
'Depart'
,
{
// 定义字段
id
:
{
type
:
DataTypes
.
INTEGER
,
primaryKey
:
true
,
autoIncrement
:
true
},
name
:
{
type
:
DataTypes
.
STRING
(
50
),
allowNull
:
true
},
parentId
:
{
type
:
DataTypes
.
INTEGER
,
},
parentIds
:
{
type
:
DataTypes
.
STRING
(
500
),
},
del
:
{
type
:
DataTypes
.
INTEGER
,
defaultValue
:
0
,
comment
:
"0 正常 1 删除"
},
},
{
tableName
:
'system_depart'
,
// 指定表名(如果与模型名不同)
timestamps
:
true
,
// 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
Depart
.
sync
({
// force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.
then
(()
=>
{
console
.
log
(
'Depart 表同步成功'
);
});
module
.
exports
=
Depart
;
\ No newline at end of file
db/model/userDepart.js
0 → 100644
View file @
bc09d118
// models/User.js
const
{
DataTypes
}
=
require
(
'sequelize'
);
const
sequelize
=
require
(
'./index'
);
const
User
=
require
(
'./user'
);
const
Depart
=
require
(
'./depart'
);
const
UserDepart
=
sequelize
.
define
(
'UserDepart'
,
{
// 定义字段
id
:
{
type
:
DataTypes
.
INTEGER
,
primaryKey
:
true
,
autoIncrement
:
true
},
userId
:
{
type
:
DataTypes
.
INTEGER
,
references
:
{
model
:
User
,
key
:
'id'
}
},
departId
:
{
type
:
DataTypes
.
INTEGER
,
references
:
{
model
:
Depart
,
key
:
'id'
}
}
},
{
tableName
:
'system_user_depart'
,
// 指定表名(如果与模型名不同)
timestamps
:
true
,
// 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
UserDepart
.
sync
({
// force: false, // force: true 会删除已存在表并重新创建
alter
:
true
})
.
then
(()
=>
{
console
.
log
(
'UserDepart 表同步成功'
);
});
module
.
exports
=
UserDepart
;
\ No newline at end of file
module/userModule.js
0 → 100644
View file @
bc09d118
/**
*
* @param {*} userId 被设置用户
* @param {*} roleIds 被设置角色
* @param {*} roles 当前已拥有角色
*/
async
function
setUserRole
(
userId
,
roleIds
,
roles
)
{
//需新增得
let
dbIds
=
[],
needAddIds
=
[],
needDelIds
=
[];
for
(
let
index
=
0
;
index
<
roles
.
length
;
index
++
)
{
const
element
=
roles
[
index
];
dbIds
.
push
(
element
.
roleId
);
if
(
!
roleIds
.
includes
(
element
.
roleId
))
{
// 1. roleIds里面没有 但是关系表里有的 需要删除
needDelIds
.
push
(
element
.
roleId
);
}
}
for
(
let
index
=
0
;
index
<
roleIds
.
length
;
index
++
)
{
const
element
=
roleIds
[
index
];
if
(
!
dbIds
.
includes
(
element
))
{
needAddIds
.
push
(
element
);
}
}
if
(
needAddIds
.
length
)
{
let
objs
=
needAddIds
.
map
(
o
=>
{
return
{
userId
:
userId
,
roleId
:
o
}
});
await
DB
.
UserRole
.
bulkCreate
(
objs
);
}
if
(
needDelIds
.
length
)
{
await
DB
.
UserRole
.
destroy
({
where
:
{
userId
:
userId
,
roleId
:
{
[
Op
.
in
]:
needDelIds
}
}
});
}
}
/**
*
* @param {*} userId 被设置用户
* @param {*} departIds 被设置部门
* @param {*} departs 当前已拥有部门
*/
async
function
setUserDepart
(
userId
,
departIds
,
departs
)
{
//需新增得
let
dbIds
=
[],
needAddIds
=
[],
needDelIds
=
[];
for
(
let
index
=
0
;
index
<
departs
.
length
;
index
++
)
{
const
element
=
departs
[
index
];
dbIds
.
push
(
element
.
roleId
);
if
(
!
departIds
.
includes
(
element
.
roleId
))
{
// 1. departIds里面没有 但是关系表里有的 需要删除
needDelIds
.
push
(
element
.
roleId
);
}
}
for
(
let
index
=
0
;
index
<
departIds
.
length
;
index
++
)
{
const
element
=
departIds
[
index
];
if
(
!
dbIds
.
includes
(
element
))
{
needAddIds
.
push
(
element
);
}
}
if
(
needAddIds
.
length
)
{
let
objs
=
needAddIds
.
map
(
o
=>
{
return
{
userId
:
userId
,
roleId
:
o
}
});
await
DB
.
UserRole
.
bulkCreate
(
objs
);
}
if
(
needDelIds
.
length
)
{
await
DB
.
UserRole
.
destroy
({
where
:
{
userId
:
userId
,
roleId
:
{
[
Op
.
in
]:
needDelIds
}
}
});
}
}
/**
*
* @param {*} roleId 被设置角色
* @param {*} menuIds 被设置的菜单id
* @param {*} rolemenus 角色已有的菜单
*/
async
function
setRoleMenu
(
roleId
,
menuIds
,
rolemenus
)
{
menuIds
=
menuIds
.
map
(
o
=>
{
return
o
&&
o
.
id
||
o
});
let
needAddIds
=
[],
needDelIds
=
[],
dbMenuIds
=
[];
for
(
let
index
=
0
;
index
<
rolemenus
.
length
;
index
++
)
{
const
element
=
rolemenus
[
index
];
dbMenuIds
.
push
(
element
.
menuId
);
if
(
!
(
menuIds
.
includes
(
element
.
menuId
)))
{
needDelIds
.
push
(
element
.
menuId
);
}
}
for
(
let
index
=
0
;
index
<
menuIds
.
length
;
index
++
)
{
const
element
=
menuIds
[
index
];
if
(
!
(
dbMenuIds
.
includes
(
element
)))
{
needAddIds
.
push
(
element
);
}
}
if
(
needAddIds
.
length
)
{
let
objs
=
needAddIds
.
map
(
o
=>
{
return
{
roleId
,
menuId
:
o
}
});
await
DB
.
RoleMenu
.
bulkCreate
(
objs
);
}
if
(
needDelIds
.
length
)
{
await
DB
.
RoleMenu
.
destroy
({
where
:
{
roleId
,
menuId
:
{
[
Op
.
in
]:
needDelIds
}
}
});
}
}
module
.
exports
=
{
setUserRole
,
setUserDepart
,
setRoleMenu
,
}
\ No newline at end of file
router/userRouter.js
View file @
bc09d118
...
...
@@ -6,6 +6,7 @@ const router = express.Router();
const
userController
=
require
(
'../controller/userController'
);
const
roleController
=
require
(
'../controller/roleController'
);
const
menuController
=
require
(
'../controller/menuController'
);
const
departController
=
require
(
'../controller/departController'
);
/**
* 用户
...
...
@@ -42,4 +43,15 @@ router.post('/menu/listMenu', menuController.listMenu);
router
.
post
(
'/menu/treeMenu'
,
menuController
.
treeMenu
);
router
.
post
(
'/menu/getMenu'
,
menuController
.
getMenu
);
/**
* 部门
*/
router
.
post
(
'/depart/createDepart'
,
departController
.
createDepart
);
router
.
post
(
'/depart/updateDepart'
,
departController
.
updateDepart
);
router
.
post
(
'/depart/deleteDepart'
,
departController
.
deleteDepart
);
router
.
post
(
'/depart/listDepart'
,
departController
.
listDepart
);
router
.
post
(
'/depart/treeDepart'
,
departController
.
treeDepart
);
router
.
post
(
'/depart/getDepart'
,
departController
.
getDepart
);
module
.
exports
=
router
;
\ No newline at end of file
server.js
View file @
bc09d118
...
...
@@ -52,20 +52,20 @@ app.use(function(req, res, next) {
app
.
use
(
function
(
err
,
req
,
res
,
next
)
{
console
.
log
(
err
)
// 记录下错误日志
//
requestLogModule.createRequestLog({
//
url: req.path,
//
params: JSON.stringify({
//
...req.body,
//
...req.query,
//
...req.params,
//
}),
//
user: JSON.stringify(req.user),
//
status: err.status || err.code || 500,
//
msg: err.message || 'server error'
//
});
//
if(err.code && err.message) {
//
return res.sendError(err);
//
}
requestLogModule
.
createRequestLog
({
url
:
req
.
path
,
params
:
JSON
.
stringify
({
...
req
.
body
,
...
req
.
query
,
...
req
.
params
,
}),
user
:
JSON
.
stringify
(
req
.
user
),
status
:
err
.
status
||
err
.
code
||
500
,
msg
:
err
.
message
||
'server error'
});
if
(
err
.
code
&&
err
.
message
)
{
return
res
.
sendError
(
err
);
}
return
res
.
status
(
err
.
status
||
500
).
send
({
code
:
err
.
status
||
500
,
msg
:
err
.
message
||
'server error'
});
});
...
...
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