React Native 서버 구현 7

윤수환·2025년 3월 18일

React Native

목록 보기
19/26

변경점
index.js

var express = require('express');
var router = express.Router();

const db = require('../database/db_connect')

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.get('/taxi/test', function (req, res, next) {
  
  db.query('select * from tb_user', (err, rows, fields) => {
    if (!err) {
      console.log("test / rows =" + JSON.stringify(rows))
      res.json([{code:0, data:rows}])
    }
    else {
      console.log("test / err: " + err)
      res.json([{code:1, data:err}])
    }
  })
})

router.post('/taxi/login', function (req, res, next) {
  console.log("login / req.body " + JSON.stringify(req.body))

  let userId = req.body.userId
  let userPw = req.body.userPw

  let queryStr = `SELECT * FROM tb_user WHERE user_id="${userId}" AND user_pw="${userPw}"`
  console.log("login / queryStr = " + queryStr)
  db.query(queryStr, (err, rows, fields) => {
    if (!err) {
      console.log("login / rows = " + JSON.stringify(rows))
      let len = Object.keys(rows).length
      console.log("login / len = " + len)
      let code = len==0 ? 1 : 0
      let message = len == 0 ? "아이디 또는 비밀번호가 잘못 입력되었습니다" : "로그인 성공"

      res.json([{code: code}, {message: message}])
    }
    else {
      console.log("login / err : " + err)
      res.json([{code: 1, message: err}])
    }
  })
})

router.post('/taxi/register', function (req,res) {
  console.log("register / req.body " + JSON.stringify(req.body))

  let userId = req.body.userId
  let userPw = req.body.userPw

  console.log("register / userId = " + userId + ", userPw = " + userPw)
  if (!(userId && userPw)) {
    res.json([{code: 1, message: "아이디 또는 비밀번호가 없습니다."}])
    return
  }

  let queryStr = `insert into tb_user values ("${userId}", "${userPw}", "")`
  console.log("register / queryStr = " + queryStr)
  db.query(queryStr, function(err,rows,fields) {
    if (!err) {
      console.log("register / rows = " + JSON.stringify(rows))
      res.json([{code: 0, message: "회원가입이 완료되었습니다."}])
    }
    else {
      console.log("register / err: " + JSON.stringify(err))
      if (err.code=="ER_DUP_ENTRY") {
        res.json([{code: 2, message: "이미 등록된 아이디입니다."}])
      }
      else {
        res.json([{code: 3, message: "알 수 없는 오류.", data: err}])
      }
    }
  })
})

router.post('/taxi/list', function (req, res) {
  console.log('list / req.body ' + JSON.stringify(req.body))
  let userId = req.body.userId
  console.log('list / userId = ' + userId)

  let queryStr = `SELECT * FROM tb_call WHERE user_id="${userId}" ORDER BY id DESC`
  console.log("list / queryStr = " + queryStr)
  db.query(queryStr, function(err, rows, fields) {
    if (!err) {
      console.log("list / rows = " + JSON.stringify(rows))
      let code = 0
      res.json([{code: code, message: "택시 호출 목록 호출 성공", data : rows}])
    }
    else {
      console.log('err : ' + err)
      res.json([{code: 1, message: "알 수 없는 오류", data: err}])
    }
  })
})

router.post('/taxi/call', function(req, res) {
  console.log("taxi/call / req.body " + JSON.stringify(req.body))

  let userId = req.body.userId
  let startAddr = req.body.startAddr
  let startLat = req.body.startLat
  let startLng = req.body.startLng
  let endAddr = req.body.endAddr
  let endLat = req.body.endLat
  let endLng = req.body.endLng

  if (!(userId && startAddr && startLat && startLng && endAddr && endLat && endLng)) {
    //하나라도 빠지면
    res.json([{code: 1, message: "출발지 또는 도착지 정보가 없습니다."}])
    return
  }
  
  let queryStr = `INSERT INTO tb_call VALUES(NULL, "${userId}",
  "${startLat}", "${startLng}", "${startAddr}",
  "${endLat}", "${endLng}", "${endAddr}", "REQ", "")`

  console.log("call / queryStr = " + queryStr)

  db.query(queryStr, function(err, rows, fields) {
    if (!err) {
      console.log("call / rows = " + JSON.stringify(rows))
      res.json([{code: 0, message: "택시 호출이 완료되었습니다."}])
    }
    else {
      console.log("call / err : " + JSON.stringify(err))
      res.json([{code: 2, message: "택시 호출이 실패했습니다.", data: err}])
    }
  })
})

router.post('/driver/register', function(req, res) {
  console.log('driver-register / req.body ' + JSON.stringify(req.body))

  let userId = req.body.userId
  let userPw = req.body.userPw
  
  console.log('driver-register / userId = ' + userId + ',userPw' + userPw)

  if (!(userId && userPw)) {
    res.json([{code: 1, message: "아이디 또는 비밀번호가 없습니다."}])
    return
  }

  let queryStr = `INSERT INTO tb_driver VALUES("${userId}", "${userPw}", "")`
  console.log("driver-register / queryStr = " + queryStr)

  db.query(queryStr, function(err, rows, fields) {
    if (!err) {
      console.log("driver-register / rows = " + JSON.stringify(rows))
      res.json([{code: 0, message: "회원가입이 완료되었습니다."}])
    }
    else {
      console.log('driver-register / err : ' + JSON.stringify(err))
      if (err.code == "ER_DUP_ENTRY") {
        res.json([{code: 2, message: "이미 등록된 아이디입니다."}])
      }
      else {
        res.json([{code: 3, message: "알 수 없는 오류", data: err}])
      }
    }
  })
})

router.post('/driver/login', function(req, res) {
  console.log("driver-login / req.body" + JSON.stringify(req.body))

  let userId = req.body.userId
  let userPw = req.body.userPw

  let queryStr = `SELECT * FROM tb_driver WHERE driver_id="${userId}" AND driver_pw="${userPw}"`
  console.log("driveer-login / queryStr " + queryStr)
  db.query(queryStr, (err, rows, fields) => {
    if (!err) {
      console.log("driver-login / rows = " + JSON.stringify(rows))
      let len = Object.keys(rows).length
      console.log("driver-login / len = " + len)
      let code = len == 0 ? 1 : 0
      let message = len == 0 ? "아이디 또는 비밀번호가 잘못 입력되었습니다." : "로그인 성공"

      res.json([{code: code, message: message}])
    }
    else {
      console.log("driver-login / err : " + err)
      res.json([{code: 1, message: err}])
    }
  })
})

router.post('/driver/list', function(req, res) {
  console.log("driver-list / req.body " + JSON.stringify(req.body))

  let userId = req.body.userId

  console.log("driver-list / userId = " + userId)

  let queryStr = `SELECT * FROM tb_call WHERE driver_id="${userId}"
    OR call_state="REQ" ORDER BY id DESC`

  console.log("driver-list / queryStr = " + queryStr)
  db.query(queryStr, function(err, rows, fields) {
    if (!err) {
      console.log("driver-list / rows = " + JSON.stringify(rows))
      let code = 0
      res.json([{code: code, message: "택시 호출 목록 호출 성공", data: rows}])
    }
    else {
      console.log("driver-list / err " + err)
      res.json([{code: 1, message: "알 수 없는 오류", data: err}])
    }
  })
})

router.post('/driver/accept', function(req, res) {
  console.log("driver-accept / req.body " + JSON.stringify(req.body))

  let callId = req.body.callId
  let driverId = req.body.driverId

  console.log("driver-accept / callId = " + callId + ",driverId = " + driverId)

  if(!(callId && driverId)) {
    res.json([{code: 1, message: "callId 또는 driverId가 없습니다."}])
    return
  }

  let queryStr = `UPDATE tb_call set driver_id="${driverId}", call_state="RES" WHERE id=${callId}`
  console.log("driver-accept / queryStr = " + queryStr)
  db.query(queryStr, function(err, rows, fields) {
    if(!err) {
      console.log("driver-accept / rows = " + JSON.stringify(rows))
      if(rows.affectedRows > 0) {
        res.json([{code: 0, message: "배차가 완료되었습니다"}])
      }
      else {
        res.json([{code: 2, message: "이미 완료되었거나 존재하지 않는 콜입니다."}])
      }
    }
    else {
      console.log("driver-accept / err : " + JSON.stringify(err))
      res.json([{code: 3, message: "알 수 없는 오류", data: err}])
    }
  })

})

module.exports = router;

택시 호출 목록 호출

2번은 RES(응답이 온 콜) - 이미 배차가 완료된 콜이기 때문에 빠짐

driver_id에 z를 넣으면 2번도 출력


왜인지는 잘 모르겠음 이해 안됌 ㅋ

배차

SQL
call_state -> RES로 변경
driver_id -> z추가

0개의 댓글