一、後臺週報接口編寫
在已有的controls文件夾,然後下面創建一個weekly.js文件,用來管理週報相關接口。
1. 引入所需文件
首先將需要用到的已封裝的方法文件引入到weekly.js文件中
const $sql = require('../sql/sqlMap')
const $http = require('../sql/http')
const $time = require('../utils/time')
然後在定義一個名爲weekly的Object類型的常量,並將各個接口函數作爲Object的一個屬性放到weekly常量裏
const weekly = {}
接下來我們開始進行接口編寫:
2. 添加週報
/*添加週報 start*/
add (req, res) {
let params = req.body
$http.userVerify(req, res, () => {
let curTime = $time.formatTime()
let userId = params.userId
let startTime = params.startTime
let endTime = params.endTime
let title = params.title
let thisWeekWork = params.thisWeekWork
let nextWeekWork = params.nextWeekWork
let collaboration = params.collaboration
let create_time = curTime
let update_time = curTime
if(!startTime || !endTime || !title || !thisWeekWork || !nextWeekWork) $http.writeJson(res, {code: 2, message:'參數有誤'})
else {
let sql = $sql.weekly.add
let arrayParams = [userId, startTime, endTime, title, thisWeekWork, nextWeekWork, collaboration, create_time, update_time]
$http.connPool(sql, arrayParams, (err, result) => {
if(err) return $http.writeJson(res, {code:-2, message:'失敗',errMsg: err})
if(result.affectedRows != 1) return $http.writeJson(res, {code: 2, message:'添加失敗'})
return $http.writeJson(res, {code: 1, message: '添加週報成功'})
})
}
})
}
/*添加週報 end*/
3. 更新週報信息
/*更新週報信息 start*/
updateInfo (req, res) {
let params = req.body
$http.userVerify(req, res, () => {
let curTime = $time.formatTime()
let id = params.id
let startTime = params.startTime
let endTime = params.endTime
let title = params.title
let thisWeekWork = params.thisWeekWork
let nextWeekWork = params.nextWeekWork
let collaboration = params.collaboration
let update_time = curTime
if(!id || !startTime || !endTime || !title || !thisWeekWork || !nextWeekWork) {
$http.writeJson(res, {code: 2, message:'參數有誤'})
} else {
let sql = $sql.weekly.updateInfo
let arrayParams = [startTime, endTime, title, thisWeekWork, nextWeekWork, collaboration, update_time, id]
$http.connPool(sql, arrayParams, (err, result) => {
if(err) return $http.writeJson(res, {code:-2, message:'失敗',errMsg: err})
if(result.affectedRows != 1) return $http.writeJson(res, {code: 2, message:'更新失敗'})
return $http.writeJson(res, {code: 1, data: result, message: '更新週報成功'})
})
}
})
}
/*更新週報信息 end*/
4. 更新週報狀態
/*更新週報狀態 start*/
updateState (req, res) {
let params = req.body
$http.userVerify(req, res, () => {
let curTime = $time.formatTime()
let id = params.id
let state = !params.state ? '0' : params.state
let update_time = curTime
if(!id) {$http.writeJson(res, {code: 2, message:'參數有誤'})}
else {
let sql = $sql.weekly.updateState
let arrayParams = [state, update_time, id]
$http.connPool(sql, arrayParams, (err, result) => {
if(err) return $http.writeJson(res, {code:-2, message:'失敗',errMsg: err})
if(result.affectedRows != 1) return $http.writeJson(res, {code: 2, data: result, message:'更新週報狀態失敗'})
return $http.writeJson(res, {code: 1, message: '更新週報狀態成功'})
})
}
})
}
/*更新週報狀態 end*/
5. 獲取週報信息
因涉及到時間格式問題,我這裏按照需要創建了一個用於時間格式化的方法
// 格式化時間
function formatData(rows) {
return rows.map(row => {
if(row.create_time) {
row.create_time = $time.formatTime(row.create_time)
}
if(row.update_time) {
row.update_time = $time.formatTime(row.update_time)
}
if(row.startTime) {
row.startTime = $time.formatYmd(row.startTime)
}
if(row.endTime) {
row.endTime = $time.formatYmd(row.endTime)
}
return Object.assign({}, row)
})
}
再進行獲取週報信息接口編寫
detail (req, res) {
let params = req.body
$http.userVerify(req, res, () => {
let userId = params.userId
let id = params.id
if(!id) {$http.writeJson(res, {code: 2, message:'參數有誤'})}
else {
let sql = $sql.weekly.getDetail
let arrayParams = [id]
$http.connPool(sql, arrayParams, (err, result) => {
if(err) {return $http.writeJson(res, {code:-2, message:'失敗',errMsg: err})}
if(result.length != 1) {
return $http.writeJson(res, {code: 2, message:'獲取週報信息不存在'})
} else {
let resultData = formatData(result)[0]
return $http.writeJson(res, {code: 1, data: resultData, message: '獲取週報信息成功'})
}
})
}
})
}
6. 獲取週報列表
/*獲取週報列表 start*/
list (req, res) {
let params = req.body
$http.userVerify(req, res, () => {
let sqlSelectTotal = $sql.weekly.selectTotal
let sqlSelectList= $sql.weekly.selectList
let userId = params.userId
let userType = params.userType
let searchId = params.searchId
let searchUserId = params.searchUserId
let searchTitle = params.searchTitle
let searchStartTime = params.searchStartTime
let searchEndTime = params.searchEndTime
params.pageSize = !params.pageSize ? 10 : params.pageSize
// 分頁查詢入參 start
let limitFirst = (params.pageNum-1)*params.pageSize;
let limitLast = params.pageSize;
// 分頁查詢入參 end
if(userType!=1){
sqlSelectTotal += " and userId = "+userId
sqlSelectList += " and userId = "+userId
}else{
if(searchUserId) {
sqlSelectTotal += " and userId = "+searchUserId
sqlSelectList += " and userId = "+searchUserId
}
}
if(searchId){
sqlSelectTotal += " and weekly.id = "+searchId
sqlSelectList += " and weekly.id = "+searchId
}
if(searchTitle){
sqlSelectTotal += " and weekly.title like '%"+searchTitle+"%'"
sqlSelectList += " and weekly.title like '%"+searchTitle+"%'"
}
if(searchStartTime){
sqlSelectTotal += " and weekly.create_time >= "+searchStartTime
sqlSelectList += " and weekly.create_time >= "+searchStartTime
}
if(searchEndTime){
sqlSelectTotal += " and weekly.create_time <= "+searchEndTime
sqlSelectList += " and weekly.create_time <= "+searchEndTime
}
let sql= sqlSelectTotal + '; ' + sqlSelectList
sql += " order by weekly.id desc limit ?,?"; // id倒序排
let arrayParams = [limitFirst, limitLast]
$http.connPool(sql, arrayParams, (err, result) => {
if(err) {
return $http.writeJson(res, {code:-2, message:'失敗',errMsg: err})
} else {
let resultData = {}
resultData.totalCount = result[0][0]['totalCount']
resultData.list = formatData(result[1])
return $http.writeJson(res, {code: 1, data: resultData, message: '獲取週報列表成功'})
}
})
})
}
/*獲取週報列表 end*/
7. 導出整個weekly模塊
module.exports = weekly
二、項目體驗鏈接
週報管理系統體驗鏈接:https://www.17sucai.com/pins/35488.html
本人前端程序員,長期混跡於各種前端開發中,現在專門爲前端熱愛者建了個微信羣,和大家一起分享自己在工作、學習中遇到的技術知識或問題,還有各種資料和課程,各位感興趣的可以加入哦~