9. 基於Vue+Element+nodeJs+Express+MySql後臺管理系統-後臺週報接口編寫

一、後臺週報接口編寫

在已有的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

 

本人前端程序員,長期混跡於各種前端開發中,現在專門爲前端熱愛者建了個微信羣,和大家一起分享自己在工作、學習中遇到的技術知識或問題,還有各種資料和課程,各位感興趣的可以加入哦~  
 

微信前端交流羣

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章