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.SweetMaoDengVo;
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;
        }
    }

 /*   public SweetMaoDengVo getSweetMaoDengText(String userId) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER.concat(userId);
        Object obj = redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            SweetMaoDengVo sweetMaoDengVo = (SweetMaoDengVo) obj;

            return sweetMaoDengVo;
        }
    }*/

    public String  getSweetMaoDengOpen(String fromUser) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_OPEN_POSTER.concat(fromUser);
        String obj = (String) redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            return obj;
        }
    }

    //整体取
    public SweetMaoDengVo getSweetMaoDeng(String fromUser) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER.concat(fromUser);
        SweetMaoDengVo obj = (SweetMaoDengVo) redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            return obj;
        }
    }
    //整体存
    public void setSweetMaoDeng(SweetMaoDengVo sweetMaoDengVo) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER.concat(sweetMaoDengVo.getUserId());
        redisUtil.set(redisKey,sweetMaoDengVo);
    }

    //开启猫登天空活动
    public void setSweetMaoDengOpen(String fromUser, long time) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_OPEN_POSTER.concat(fromUser);
        redisUtil.set(redisKey,"1",time);
    }
    //临时数据中转
    public void setSweetMaoDengTransfer(SweetMaoDengVo sweetMaoDengVo, long expire) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER_TRANSFER.concat(sweetMaoDengVo.getUserId());
        redisUtil.set(redisKey,sweetMaoDengVo,expire);
    }
    //临时数据中转
    public SweetMaoDengVo getSweetMaoDengTransfer(String fromUser) {
        String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER_TRANSFER.concat(fromUser);
        SweetMaoDengVo obj = (SweetMaoDengVo) redisUtil.get(redisKey);
        if (null == obj) {
            return null;
        } else {
            return obj;
        }
    }
}
