category.js 11.2 KB
var express = require('express');
var router = express.Router();
var request = require('request');
require('dotenv').config();

/* GET home page. */
let SIGUN_CODE;
let GYEONGI_API_KEY = process.env.GYEONGGI_APIKEY;
let user_latitude;
let user_logitude;
let sigun = [{
        sigun_name: '가평군',
        sigun_code: 41820
    },
    {
        sigun_name: '경기도',
        sigun_code: 41000
    },
    {
        sigun_name: '고양시',
        sigun_code: 41280
    },
    {
        sigun_name: '과천시',
        sigun_code: 41290
    },
    {
        sigun_name: '광명시',
        sigun_code: 41210
    },
    {
        sigun_name: '광주시',
        sigun_code: 41610
    },
    {
        sigun_name: '구리시',
        sigun_code: 41310
    },
    {
        sigun_name: '군포시',
        sigun_code: 41410
    },
    {
        sigun_name: '김포시',
        sigun_code: 41570
    },
    {
        sigun_name: '남양주시',
        sigun_code: 41360
    },
    {
        sigun_name: '동두천시',
        sigun_code: 41250
    },
    {
        sigun_name: '부천시',
        sigun_code: 41190
    },
    {
        sigun_name: '성남시',
        sigun_code: 41130
    },
    {
        sigun_name: '수원시',
        sigun_code: 41110
    },
    {
        sigun_name: '시흥시',
        sigun_code: 41390
    },
    {
        sigun_name: '안산시',
        sigun_code: 41270
    },
    {
        sigun_name: '안성시',
        sigun_code: 41550
    },
    {
        sigun_name: '안양시',
        sigun_code: 41170
    },
    {
        sigun_name: '양주시',
        sigun_code: 41630
    },
    {
        sigun_name: '양평군',
        sigun_code: 41830
    },
    {
        sigun_name: '여주시',
        sigun_code: 41670
    },
    {
        sigun_name: '연천군',
        sigun_code: 41800
    },
    {
        sigun_name: '오산시',
        sigun_code: 41370
    },
    {
        sigun_name: '용인시',
        sigun_code: 41460
    },
    {
        sigun_name: '의왕시',
        sigun_code: 41430
    },
    {
        sigun_name: '의정부시',
        sigun_code: 41150
    },
    {
        sigun_name: '이천시',
        sigun_code: 41500
    },
    {
        sigun_name: '파주시',
        sigun_code: 41480
    },
    {
        sigun_name: '평택시',
        sigun_code: 41220
    },
    {
        sigun_name: '포천시',
        sigun_code: 41650
    },
    {
        sigun_name: '하남시',
        sigun_code: 41450
    },
    {
        sigun_name: '화성시',
        sigun_code: 41590
    },
]


// 사용자가 index 페이지에서 주소를 입력하고 넘어오면 
router.post('/', function(req, res) {
    console.log(req.body);
    let userLocation = req.body.userLocation;
    console.log('사용자가 입력한 주소', userLocation);
    let KAKAO_API_KEY = process.env.KAKAO_APIKEY;
    let kakaoOptions = {
            url: 'https://dapi.kakao.com/v2/local/search/address.json',
            method: 'GET',
            headers: {
                'Authorization': `KakaoAK ${KAKAO_API_KEY}`
            },
            qs: {
                query: userLocation
            },
            encoding: 'UTF-8',
        }
        // sigun code 받는 부분
    for (var key in sigun) {
        if (userLocation.includes(sigun[key].sigun_name)) {
            console.log('hey!');
            SIGUN_CODE = sigun[key].sigun_code;
        }
        console.log(sigun[key].sigun_name);
    }
    console.log('SIGUN_CODE', SIGUN_CODE);
    request(kakaoOptions, function(err, res, body) {
        if (!err && res.statusCode == 200) {
            var result = JSON.parse(body);
            console.log('result', result);
            user_latitude = result.documents[0].address.x;
            user_logitude = result.documents[0].address.y;
            console.log('위도, 경도', user_latitude, user_logitude);
        }
    })
    res.render('category', { userLocation: req.body.userLocation });
});


router.get('/food', function(req, res) {

    // 맛집 리스트 조회
    let url = 'https://openapi.gg.go.kr/PlaceThatDoATasteyFoodSt';
    let fastfood_url = 'https://openapi.gg.go.kr/Genrestrtfastfood'
    let qs = `?KEY=${GYEONGI_API_KEY}&SIGUN_CD=${SIGUN_CODE}&Type=json`;

    request({
        url: url + qs,
        method: 'GET'
    }, function(err, response, body) {
        if (!err && res.statusCode == 200) {
            let food_result = JSON.parse(body);
            // console.log('food_result', food_result.PlaceThatDoATasteyFoodSt[1]);
            let store_names = [];
            for (let i = 0; i < food_result.PlaceThatDoATasteyFoodSt[1].row.length; i++) {
                // 상호명, 음식명, 전화번호, 도로명주소(REFINE_ROADNM_ADDR), 지번 주소(REFINE_LOTNO_ADDR)
                store_name = food_result.PlaceThatDoATasteyFoodSt[1].row[i];
                console.log('store_name', store_name);
                store_names.push(store_name);
            }
            console.log('food_result', food_result);
            console.log('store_names', store_names);
            request({
                url: fastfood_url + qs,
                method: 'GET'
            }, function(err, response, body) {
                if (!err && res.statusCode == 200) {
                    let fast_food_result = JSON.parse(body);
                    let fast_store_names = [];
                    for (let i = 0; i < fast_food_result.Genrestrtfastfood[1].row.length; i++) {
                        fast_store_name = fast_food_result.Genrestrtfastfood[1].row[i];
                        // 폐업인 지점 제외 
                        if (fast_store_name['BSN_STATE_NM'] != '폐업') {
                            console.log('fast_store_name', fast_store_name);
                            fast_store_names.push(fast_store_name);
                        }
                    }
                    res.render('food_result', { store_names: store_names, fast_store_names: fast_store_names });
                }

            })

        }
    });
});
router.get('/school', function(req, res) {

    let library_url = 'https://openapi.gg.go.kr/Tbggibllbrm';
    let institute_url = 'https://openapi.gg.go.kr/TninsttInstutM';
    let qs = `?KEY=${GYEONGI_API_KEY}&SIGUN_CD=${SIGUN_CODE}&Type=json`;

    request({
        url: library_url + qs,
        method: 'GET'
    }, function(err, response, body) {
        if (!err && res.statusCode == 200) {
            let library_result = JSON.parse(body);
            console.log(library_result);
            let library_names = [];
            for (let i = 0; i < library_result.Tbggibllbrm[1].row.length; i++) {
                library_name = library_result.Tbggibllbrm[1].row[i];
                console.log('library_name', library_name);
                library_names.push(library_name);
            }
            request({
                url: institute_url + qs,
                method: 'GET'
            }, function(err, response, body) {
                if (!err && res.statusCode == 200) {
                    let institute_result = JSON.parse(body);
                    console.log(institute_result);
                    let institute_names = [];
                    for (let i = 0; i < institute_result.TninsttInstutM[1].row.length; i++) {
                        institute_name = institute_result.TninsttInstutM[1].row[i];
                        console.log('institute_name', institute_name);
                        institute_names.push(institute_name);
                    }
                    res.render('school_result', { library_names: library_names, institute_names: institute_names });
                }
            })
        }
    })
});
router.get('/park', function(req, res) {
    // let cityparknum = 0;
    let citypark_url = 'https://openapi.gg.go.kr/CityPark';

    let qs = `?Type=json&KEY=${GYEONGI_API_KEY}&SIGUN_CD=${SIGUN_CODE}`;
    request({
        url: citypark_url + qs,
        method: 'GET'
    }, function(err, response, body) {
        // console.log('park_result', park_result.CityPark[0].head);
        if (!err && res.statusCode == 200) {
            let city_park_result = JSON.parse(body);
            console.log('park', city_park_result)
            let city_park_names = [];
            for (let i = 0; i < city_park_result.CityPark[1].row.length; i++) {
                city_park_name = city_park_result.CityPark[1].row[i];
                city_park_names.push(city_park_name);
            }
            res.render('park_result', { city_park_names: city_park_names });
        }

        // if (park_result.CityPark[0].head[1].RESULT.CODE == 'INFO-000') {
        //     cityparknum = park_result.CityPark[0].head[0].list_total_count;
        //     console.log(cityparknum + "개의 도시공원이 존재합니다.");
        //     res.send(String(cityparknum) + "개의 도시공원이 존재합니다.");
        // } else {
        //     res.send("도시공원이 없습니다.");
        // }
    })
});

router.get('/shop', function(req, res) {

    let mallnum = 0;
    let shop_url = 'https://openapi.gg.go.kr/MrktStoreM';
    let qs = `?Type=json&KEY=${GYEONGI_API_KEY}&SIGUN_CD=${SIGUN_CODE}`;
    request({
        url: shop_url + qs,
        method: 'GET'
    }, function(err, response, body) {
        if (!err && res.statusCode == 200) {
            let shop_result = JSON.parse(body);
            let shops = [];
            for (let i = 0; i < shop_result.MrktStoreM[1].row.length; i++) {
                shop = shop_result.MrktStoreM[1].row[i];
                // 폐업인 지점 제외 
                console.log('shop', shop);
                shops.push(shop);
            }
            res.render('shop_result', { shops: shops });

        }
        // var shop_result = JSON.parse(body);
        // if (shop_result.MrktStoreM[0].head[1].RESULT.CODE == 'INFO-000') {
        //     mallnum = shop_result.MrktStoreM[0].head[0].list_total_count;
        //     console.log(mallnum + "개의 쇼핑몰이 존재합니다.");
        //     res.send(String(mallnum) + "개의 쇼핑몰이 존재합니다.");
        // } else {
        //     res.send("쇼핑몰이 없습니다.");
        // }
    })
});

router.get('/gym', function(req, res) {
    let GYEONGI_API_KEY = process.env.GYEONGGI_APIKEY;
    let sigun_cd = SIGUN_CODE;
    let gymnum = 0;
    let url = 'https://openapi.gg.go.kr/PhysicaFitnessTrainingPlace';
    let qs = `?Type=json&KEY=${GYEONGI_API_KEY}&SIGUN_CD=${sigun_cd}`;
    request({
        url: url + qs,
        method: 'GET'
    }, function(err, response, body) {
        var gym_result = JSON.parse(body);
        if (gym_result.PhysicaFitnessTrainingPlace[0].head[1].RESULT.CODE == 'INFO-000') {

            gymnum = gym_result.PhysicaFitnessTrainingPlace[0].head[0].list_total_count;
            console.log(gymnum + "개의 체육관이 존재합니다.");
            res.send(String(gymnum) + "개의 체육관이 존재합니다.");
        } else {

            console.log("주변에 체육관이 없습니다.");
            res.send("주변에 체육관이 없습니다.");
        }
    })
});
router.get('/transport', function(req, res) {
    res.send(BusCnt);
});
router.get('/safe', function(req, res) {
    res.send('This is safe');
});

router.get('/culture', function(req, res) {
    res.send('This is culture');
});

module.exports = router;