package com.liquidnet.service.sweet.utils;

import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.vo.SweetAppletUsersVo;
import com.liquidnet.service.sweet.vo.SweetWechatUsersVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class WechatUsersRedisUtils {

    @Autowired
    private RedisUtil redisUtil;

    public SweetWechatUsersVo getSweetWechatUsersOfUnionId(String unionId, Integer type) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_UNIONID.concat(unionId)
                .concat(SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_TYPE).concat(String.valueOf(type));
        Object obj = redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            SweetWechatUsersVo sweetWechatUsersVo = (SweetWechatUsersVo) obj;
            return sweetWechatUsersVo;
        }
    }
    public SweetWechatUsersVo getSweetWechatUsersOfOpenId(String openId, Integer type) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_OPENID.concat(openId)
                .concat(SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_TYPE).concat(String.valueOf(type));
        Object obj = redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            SweetWechatUsersVo sweetWechatUsersVo = (SweetWechatUsersVo) obj;
            return sweetWechatUsersVo;
        }
    }
    public void setSweetWechatUsers(SweetWechatUsersVo sweetWechatUsersVo) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_UNIONID.concat(sweetWechatUsersVo.getUnionId())
                .concat(SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_TYPE).concat(String.valueOf(sweetWechatUsersVo.getType()));
        redisUtil.set(redisKey, sweetWechatUsersVo);

        String redisKeyOpenId = SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_OPENID.concat(sweetWechatUsersVo.getOpenId())
                .concat(SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_TYPE).concat(String.valueOf(sweetWechatUsersVo.getType()));
        redisUtil.set(redisKeyOpenId, sweetWechatUsersVo);
    }
    public void delSweetWechatUsers(String unionId, String openId, Integer type) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_UNIONID.concat(unionId)
                .concat(SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_TYPE).concat(String.valueOf(type));
        redisUtil.del(redisKey);

        String redisKeyOpenId = SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_OPENID.concat(openId)
                .concat(SweetConstant.REDIS_KEY_SWEET_WECHAT_USERS_TYPE).concat(String.valueOf(type));
        redisUtil.del(redisKeyOpenId);
    }

    public SweetAppletUsersVo getSweetAppletUsersOfPhone(String mobile) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_APPLET_USERS_PHONE.concat(mobile);
        Object obj = redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            SweetAppletUsersVo sweetAppletUsersVo = (SweetAppletUsersVo) obj;
            return sweetAppletUsersVo;
        }
    }
    public SweetAppletUsersVo getSweetAppletUsersOfUnionId(String unionId) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_APPLET_USERS_UNIONID.concat(unionId);
        Object obj = redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            SweetAppletUsersVo sweetAppletUsersVo = (SweetAppletUsersVo) obj;
            return sweetAppletUsersVo;
        }
    }
    public void setSweetAppletUsers(SweetAppletUsersVo sweetAppletUsersVo) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_APPLET_USERS_PHONE.concat(sweetAppletUsersVo.getPurePhoneNumber());
        redisUtil.set(redisKey, sweetAppletUsersVo);

        String redisKeyU = SweetConstant.REDIS_KEY_SWEET_APPLET_USERS_UNIONID.concat(sweetAppletUsersVo.getUnionId());
        redisUtil.set(redisKeyU, sweetAppletUsersVo);
    }

    public void setStrawberryPosterClick(String openId, long time) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_STRAWBERRY_POSTER_CLICK.concat(openId);
        redisUtil.set(redisKey, 1, time);
    }
    public boolean getStrawberryPosterClick(String openId) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_STRAWBERRY_POSTER_CLICK.concat(openId);
        Object obj = redisUtil.get(redisKey);
        if(null == obj) {
            return false;
        } else {
            return true;
        }
    }
}
