const router = require('express').Router();
const api_admin_router = require('./admin_api');
const checkLogin = require('../middleware/checkLogin');
const field = require('../maps/field')
const c_user = require("../controller/account");
const code = require("../maps/rcodeMap");
const progress = require("../maps/progress");
const paramsCheck = require("../middleware/paramsCheck");
// 管理员主页
router.get('/',
    checkLogin(field.adminType,'view'),
    function(req, res, next) {
    res.send('respond with a resource');
});

// 管理员登陆页
router.get('/login',
    function(req, res, next) {
        res.send('respond with a resource');
    });

// 登陆接口
router.post('/login',
    paramsCheck({
        post:{
            account:{required:true},
            passwd:{required:true},
            captcha: { required: true }
        }}),
    async (req,res)=>{
        try{
            console.log('登录')
            // 用户登陆
            let result = {
                rcode: code.customError
            };
            // 提前检查验证码是否正确
            if (req.body.captcha.toLowerCase() != req.session.captcha) return res.json({...result, msg: `验证码错误,captcha error` });
            let results = await c_user.login(field.adminType,req.body.account,req.body.passwd);
            console.log(results);
            req.session[progress.adminSessionField] = results.account;
            res.json({
                rcode: code.ok,
                data: results.account
            })
        }catch (error) {
            if (error.rcode !== code.customError) {
                console.log(error);
                console.error(`login error ${error.message||error.msg}`);
            }
            res.json({
                rcode: error.rcode || code.serverError,
                msg: error.msg || error.message
            });
        }
})

// 退出登陆
router.get('/logout',
    async (req,res)=>{
        try{
            req.session[progress.adminSessionField] = null;
            res.redirect(302,progress.adminLoginUrl)
        }catch (error) {
            if (error.rcode !== code.customError) {
                console.log(error);
                console.log.error(`logout error ${error.message||error.msg}`);
            }
            res.json({
                rcode: error.rcode || code.serverError,
                msg: error.msg || error.message
            });
        }
    });

// 后台相关接口
router.use('/api',checkLogin(field.adminType),api_admin_router)

module.exports = router;