package com.gyee.alarm.controller;

import com.gyee.alarm.model.vo.AjaxResult;
import com.gyee.alarm.model.vo.AjaxStatus;
import com.gyee.alarm.model.vo.TokenVo;
import com.gyee.alarm.service.TokenService;
import com.gyee.common.model.StringUtils;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.Date;

@Controller
@RequestMapping("/auth")
@Api(value = "权限管理", tags = "权限管理")
public class AuthController {


    @Resource
    private TokenService tokenService;

    @PostMapping("/login")
    @ResponseBody
    @ApiOperation(value = "使用账号密码登录")
    public AjaxResult login(@RequestBody TokenVo tokenVo) {

        if (StringUtils.notEmp(tokenVo)) {

            if (!tokenService.sessionMap.containsKey(tokenVo.getToken())) {
                tokenVo.setTime(new Date());
                tokenService.sessionMap.put(tokenVo.getToken(), tokenVo);
            }

            tokenService.judegeSession();
        }

        return AjaxResult.successData(AjaxStatus.success.code, "ok");
    }

    @PostMapping("/logout")
    @ApiOperation(value = "登出系统")
    @ResponseBody
    public AjaxResult logout(@RequestBody  TokenVo tokenVo) {
        if (StringUtils.notEmp(tokenVo)) {

            if (tokenService.sessionMap.containsKey(tokenVo.getToken())) {
                tokenService.sessionMap.remove(tokenVo.getToken());
            }

            if (tokenService.sessionWtMap.containsKey(tokenVo.getToken())) {
                tokenService.sessionWtMap.remove(tokenVo.getToken());
            }
            if (tokenService.sessionWpMap.containsKey(tokenVo.getToken())) {
                tokenService.sessionWpMap.remove(tokenVo.getToken());

            }
            if (tokenService.sessionSubMap.containsKey(tokenVo.getToken())) {
                tokenService.sessionSubMap.remove(tokenVo.getToken());

            }
            if (tokenService.sessionWeMap.containsKey(tokenVo.getToken())) {
                tokenService.sessionWeMap.remove(tokenVo.getToken());

            }

        }

        tokenService.judegeSession();

        return AjaxResult.successData(AjaxStatus.success.code, "ok");
    }


}