package com.hzya.frame.sysnew.testCaching.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.sysnew.testCaching.service.ITestCachingService;
import com.hzya.frame.sysnew.user.dao.ISysUserDao;
import com.hzya.frame.sysnew.user.entity.SysUserEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service(value = "testCachingService")
public class TestCachingServiceImpl implements ITestCachingService {

    @Resource
    private ISysUserDao sysUserDao;

    /**

     @Cacheable注解说明：
     @Cacheable声明 当前方法的返回值 放入缓存中，其中要指定缓存的存储位置，以及缓存中保存当前方法返回值对应的名称。
     上例中value属性描述缓存的存储位置，cacheSpace可以理解为是一个存储空间名
     key属性描述了缓存中 保存数据的名称，使用#id读取形参中的id值作为缓存名称。
     使用@Cacheable注解后，执行当前操作，如果发现对应名称在缓存中没有数据，就正常读取数据，然后放入缓存；如果对应名称在缓存中有数据，就终止当前业务方法执行，直接返回缓存中的数据。
     https://blog.csdn.net/guorui_java/article/details/132592760  不会的可以看看这篇博客
     **/
    @Override
    @Cacheable(value="sysUser",key="#id")
    public SysUserEntity getEntity(String id) {
        SysUserEntity sysUserEntity = sysUserDao.get(id);
        return sysUserEntity;
    }

    @Override
    public SysExtensionApiEntity testExtensionApi(SysExtensionApiEntity entity) {
        entity.setQuerys("userCode=admin&entcode=004&orgcode=100303&clientid=001&clientsecret=3a4738524e1344309b9988b5b42c5a1a");
        System.out.println(entity);
        return entity;
    }
}
