明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
L
letian_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
letian_backend
Commits
d5a6c8d4
Commit
d5a6c8d4
authored
Sep 04, 2024
by
zengfanpei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 通知
parent
0d8a2f3a
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
132 additions
and
54 deletions
+132
-54
README.md
README.md
+16
-27
dev.json
config/dev.json
+1
-1
local.json
config/local.json
+8
-1
noticeController.js
controller/noticeController.js
+53
-0
userController.js
controller/userController.js
+3
-2
index.js
db/index.js
+3
-0
systemNotice.js
db/models/systemNotice.js
+9
-2
redis.js
db/redis.js
+4
-2
request.js
middleware/request.js
+21
-19
index.js
router/index.js
+2
-0
noticeRouter.js
router/noticeRouter.js
+12
-0
No files found.
README.md
View file @
d5a6c8d4
# 文件结构
# 文件结构
### config
| 目录 | 注释 |
| --- | --- |
| config | 配置 |
| controller | 控制器 |
| cron | 定时任务 |
| db | 数据库初始化 |
| middlerware | 中间件 |
| module | 数据操作 |
| public | 公共文件 |
| router | 路由 |
| utils | 工具方法 |
### controller
### db
#
## middlerware
#
记录
### modules
```
1. 待完成excel导出
2. 农业投入品表的增删改查
```
### public
### router
### test
### utils
### server.js
1.
现阶段进展:20240822
a. 建表用户表、设备表(多种设备集成)、三张信息采集表(按设备种类对应采集表)
b. 定时任务获取 墒情设备列表、获取设备信息入库代码流程基本走通
c. 用户、角色、菜单权限(要看前端控制程度, 是否包含父子结构)
2.
未处理
a. 设备在线状态 接口获取到状态直接更新倒redis里面
b. 硬件返回信息 返回形式 有待细化
config/dev.json
View file @
d5a6c8d4
{
{
"tokenEx"
:
86400
,
"tokenEx"
:
86400
000000
,
"dbURI"
:
"mongodb://bridata:Mingshu20170706@47.94.146.184:27017/letian?authSource=admin"
,
"dbURI"
:
"mongodb://bridata:Mingshu20170706@47.94.146.184:27017/letian?authSource=admin"
,
"file"
:
{
"file"
:
{
"storagePath"
:
"public/avatar"
"storagePath"
:
"public/avatar"
...
...
config/local.json
View file @
d5a6c8d4
...
@@ -18,7 +18,14 @@
...
@@ -18,7 +18,14 @@
"getAllDevice"
:
"http://open.sennor.net:1881/getAllDevice"
,
"getAllDevice"
:
"http://open.sennor.net:1881/getAllDevice"
,
"getInsectNewCollectionResult"
:
"http://open.sennor.net:1881/getInsectNewCollectionResult"
,
"getInsectNewCollectionResult"
:
"http://open.sennor.net:1881/getInsectNewCollectionResult"
,
"uploadCameraPhoto"
:
"http://open.sennor.net:1881/uploadCameraPhoto"
,
"uploadCameraPhoto"
:
"http://open.sennor.net:1881/uploadCameraPhoto"
,
"getPreventionToInsectName"
:
"http://open.sennor.net:1881/getPreventionToInsectName"
"getPreventionToInsectName"
:
"http://open.sennor.net:1881/getPreventionToInsectName"
,
"typeName"
:
{
"1"
:
"采集点"
,
"2"
:
"气象站"
,
"3"
:
"全景相机"
,
"4"
:
"细节相机"
}
},
},
"cron"
:
{
"cron"
:
{
"getDeviceList"
:
false
,
"getDeviceList"
:
false
,
...
...
controller/noticeController.js
0 → 100644
View file @
d5a6c8d4
async
function
list
(
req
,
res
,
next
)
{
try
{
let
userId
=
req
.
user
.
_id
;
let
search
=
{
del
:
0
,
receiveUser
:
userId
};
let
page
=
req
.
body
.
page
||
1
;
let
pageSize
=
req
.
body
.
pageSize
||
10
;
let
skip
=
(
page
-
1
)
*
pageSize
;
const
count
=
await
DB
.
Notice
.
countDocuments
(
search
);
let
list
=
await
DB
.
Notice
.
find
(
search
).
skip
(
skip
).
limit
(
pageSize
).
populate
({
path
:
"sendUser receiveUser"
}).
lean
().
exec
();
res
.
sendData
({
count
,
list
});
}
catch
(
error
)
{
next
(
error
)
}
}
async
function
getNotice
(
req
,
res
,
next
)
{
try
{
let
userId
=
req
.
user
.
_id
;
let
ret
=
await
DB
.
Notice
.
findOne
({
_id
:
req
.
body
.
_id
}).
populate
({
path
:
"sendUser receiveUser"
}).
lean
().
exec
();
await
DB
.
Notice
.
updateOne
({
_id
:
req
.
body
.
_id
},
{
read
:
true
});
return
ret
;
}
catch
(
error
)
{
next
(
error
)
}
}
module
.
exports
=
{
list
,
getNotice
}
\ No newline at end of file
controller/userController.js
View file @
d5a6c8d4
...
@@ -39,9 +39,10 @@ async function login(req, res, next) {
...
@@ -39,9 +39,10 @@ async function login(req, res, next) {
}
}
// 生成一个串 返回前端
// 生成一个串 返回前端
let
token
=
crypto
.
randomUUID
();
let
token
=
crypto
.
randomUUID
();
user
.
token
=
token
;
user
.
token
=
token
.
split
(
'-'
).
join
(
""
)
;
let
userStr
=
JSON
.
stringify
(
user
);
let
userStr
=
JSON
.
stringify
(
user
);
await
ioRedis
.
set
(
`token:
${
token
}
`
,
userStr
,
'EX'
,
sysConfig
.
tokenEx
);
console
.
log
(
userStr
,
"===="
)
await
ioRedis
.
set
(
`token:
${
user
.
token
}
`
,
userStr
,
'EX'
,
sysConfig
.
tokenEx
);
let
ret
=
_
.
omit
(
user
,
[
'password'
,
'salt'
]);
let
ret
=
_
.
omit
(
user
,
[
'password'
,
'salt'
]);
let
menus
=
await
userModule
.
getRoleMenus
(
ret
.
roles
);
let
menus
=
await
userModule
.
getRoleMenus
(
ret
.
roles
);
ret
.
menus
=
menus
;
ret
.
menus
=
menus
;
...
...
db/index.js
View file @
d5a6c8d4
...
@@ -33,6 +33,7 @@ const Menu = require('./models/systemMenu');
...
@@ -33,6 +33,7 @@ const Menu = require('./models/systemMenu');
const
Button
=
require
(
'./models/systemButton'
);
const
Button
=
require
(
'./models/systemButton'
);
const
Depart
=
require
(
'./models/systemDepart'
);
const
Depart
=
require
(
'./models/systemDepart'
);
const
File
=
require
(
'./models/systemFile'
);
const
File
=
require
(
'./models/systemFile'
);
const
Notice
=
require
(
'./models/systemNotice'
);
const
Land
=
require
(
'./models/letianLand'
);
const
Land
=
require
(
'./models/letianLand'
);
const
AgrInRecord
=
require
(
'./models/letianAgrInRecord'
);
const
AgrInRecord
=
require
(
'./models/letianAgrInRecord'
);
...
@@ -59,6 +60,7 @@ global.DB = {
...
@@ -59,6 +60,7 @@ global.DB = {
Device
,
Device
,
Depart
,
Depart
,
File
,
File
,
Notice
,
Land
,
Land
,
AgrInRecord
,
AgrInRecord
,
...
@@ -81,3 +83,4 @@ global.DB = {
...
@@ -81,3 +83,4 @@ global.DB = {
db/models/systemNotice
s
.js
→
db/models/systemNotice.js
View file @
d5a6c8d4
...
@@ -7,10 +7,12 @@ const moment = require('moment');
...
@@ -7,10 +7,12 @@ const moment = require('moment');
*/
*/
const
Noticechema
=
new
Schema
({
const
Noticechema
=
new
Schema
({
sendUser
:
{
sendUser
:
{
type
:
mongoose
.
Types
.
ObjectId
,
ref
:
"User"
},
},
receiveUser
:
{
receiveUser
:
{
type
:
mongoose
.
Types
.
ObjectId
,
ref
:
"User"
},
},
content
:
String
,
content
:
String
,
sendTime
:
{
sendTime
:
{
...
@@ -18,6 +20,11 @@ const Noticechema = new Schema({
...
@@ -18,6 +20,11 @@ const Noticechema = new Schema({
default
:
Date
.
now
,
default
:
Date
.
now
,
get
:
v
=>
moment
(
v
).
format
(
"YYYY-MM-DD HH:mm:ss"
),
get
:
v
=>
moment
(
v
).
format
(
"YYYY-MM-DD HH:mm:ss"
),
},
},
read
:
{
type
:
Boolean
,
default
:
false
,
comment
:
"true 已读, false 未读"
},
...
...
db/redis.js
View file @
d5a6c8d4
...
@@ -2,8 +2,10 @@ const Redis = require('ioredis');
...
@@ -2,8 +2,10 @@ const Redis = require('ioredis');
const
redis
=
new
Redis
({
const
redis
=
new
Redis
({
host
:
"localhost"
,
port
:
6379
,
port
:
6379
,
host
:
"127.0.0.1"
,
password
:
"Mingshu20170706"
,
db
:
0
,
});
});
...
...
middleware/request.js
View file @
d5a6c8d4
...
@@ -6,25 +6,27 @@ const mongoose = require('mongoose');
...
@@ -6,25 +6,27 @@ const mongoose = require('mongoose');
module
.
exports
=
async
(
req
,
res
,
next
)
=>
{
module
.
exports
=
async
(
req
,
res
,
next
)
=>
{
req
.
reqId
=
new
mongoose
.
Types
.
ObjectId
();
req
.
reqId
=
new
mongoose
.
Types
.
ObjectId
();
/* 1. 处理token */
/* 1. 处理token */
// if (!checkPath(req.path)) {
if
(
!
checkPath
(
req
.
path
))
{
// if (!req.headers.Authorization) {
if
(
!
req
.
headers
.
authorization
)
{
// next(createError(401));
next
(
createError
(
401
));
// }
}
// const userStr = await ioRedis.get(`token:${req.headers.Authorization}`);
console
.
log
(
`token:
${
req
.
headers
.
authorization
}
`
,
"=="
)
// if (userStr) {
const
userStr
=
await
ioRedis
.
get
(
`token:
${
req
.
headers
.
authorization
}
`
);
// try {
console
.
log
(
userStr
)
// req.user = JSON.parse(userStr);
if
(
userStr
)
{
// // 刷新token时间
try
{
// await ioRedis.expire(`token:${req.headers.Authorization}`, sysConfig.tokenEx)
req
.
user
=
JSON
.
parse
(
userStr
);
// } catch (error) {
// 刷新token时间
// //解析有误
await
ioRedis
.
expire
(
`token:
${
req
.
headers
.
authorization
}
`
,
sysConfig
.
tokenEx
)
// next(createError(401));
}
catch
(
error
)
{
// }
//解析有误
// } else {
next
(
createError
(
401
));
// //过期
}
// next(createError(401));
}
else
{
// }
//过期
// }
next
(
createError
(
401
));
}
}
/* --------------3. 记录所有进来的日志,是否记录响应的值有待 */
/* --------------3. 记录所有进来的日志,是否记录响应的值有待 */
requestLogModule
.
createRequestLog
({
requestLogModule
.
createRequestLog
({
...
...
router/index.js
View file @
d5a6c8d4
...
@@ -4,6 +4,7 @@ const router = express.Router();
...
@@ -4,6 +4,7 @@ const router = express.Router();
const
userRouter
=
require
(
'./userRouter'
);
const
userRouter
=
require
(
'./userRouter'
);
const
departRouter
=
require
(
'./departRouter'
);
const
departRouter
=
require
(
'./departRouter'
);
const
menuRouter
=
require
(
'./menuRouter'
);
const
menuRouter
=
require
(
'./menuRouter'
);
const
noticeRouter
=
require
(
'./noticeRouter'
);
const
fileRouter
=
require
(
'./fileRouter'
);
const
fileRouter
=
require
(
'./fileRouter'
);
...
@@ -20,6 +21,7 @@ router.post('/init', initController.init); // 后续删除
...
@@ -20,6 +21,7 @@ router.post('/init', initController.init); // 后续删除
router
.
use
(
'/user'
,
userRouter
);
// 用户 角色
router
.
use
(
'/user'
,
userRouter
);
// 用户 角色
router
.
use
(
'/depart'
,
departRouter
);
// 部门
router
.
use
(
'/depart'
,
departRouter
);
// 部门
router
.
use
(
'/menu'
,
menuRouter
);
//菜单 按钮
router
.
use
(
'/menu'
,
menuRouter
);
//菜单 按钮
router
.
use
(
'/notice'
,
noticeRouter
);
router
.
use
(
'/file'
,
fileRouter
);
// 文件
router
.
use
(
'/file'
,
fileRouter
);
// 文件
...
...
router/noticeRouter.js
0 → 100644
View file @
d5a6c8d4
const
express
=
require
(
'express'
);
const
router
=
express
.
Router
();
const
noticeController
=
require
(
'../controller/noticeController'
);
router
.
post
(
'/list'
,
noticeController
.
list
);
router
.
post
(
'/info'
,
noticeController
.
getNotice
);
module
.
exports
=
router
;
\ No newline at end of file
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