package com.tiesheng.core.service;

import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil;
import com.tiesheng.core.util.servlet.ServletKit;
import com.tiesheng.util.TimedCacheHelper;
import com.tiesheng.util.exception.ApiException;
import org.springframework.stereotype.Service;

/**
 * @author hao
 * @ProjectName cmcc
 * @Copyright Hangzhou ShuoChuang Technology Co.,Ltd All Right Reserved
 * @Description 这里是对文件的描述
 * @data 2019-06-19
 * @note 这里写文件的详细功能和改动
 * @note
 */
@Service
public class TimedCacheService {


    /**
     * 清空数据
     *
     * @param key
     */
    public void clearByKey(String key) {
        TimedCacheHelper.getTimedCache().remove(key);
    }

    /**
     * 放入缓存
     *
     * @param key
     * @param val
     */
    public void putCache(String key, String val) {
        TimedCacheHelper.getTimedCache().put(key, val);
    }

    /**
     * 获取缓存
     *
     * @param key
     * @return
     */
    public String getCache(String key) {
        return TimedCacheHelper.getTimedCache().get(key);
    }


    ///////////////////////////////////////////////////////////////////////////
    // 图片验证码缓存
    ///////////////////////////////////////////////////////////////////////////


    /**
     * 缓存 图片验证码
     *
     * @param session
     * @param value
     */
    public void setImageCode(String session, String value) {
        putCache(session, value);
    }


    /**
     * 验证 图片验证码
     * 该验证兼容V2的图片验证码
     *
     * @param session
     */
    public void verifyImage(String session, String value) {
        String captchaKey = ServletUtil.getHeader(ServletKit.getRequest(), "captcha", "utf-8");
        String cache = !StrUtil.isEmpty(captchaKey) ? getCache(captchaKey) : getCache(session);
        if (StrUtil.isEmpty(cache) || !StrUtil.equals(cache, value)) {
            throw new ApiException("验证码不正确");
        }
        clearByKey(session);
    }


}
