|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
package com.yeqifu.bus.cache;
|
|
|
|
|
|
|
|
|
|
import com.yeqifu.bus.entity.Customer;
|
|
|
|
|
import com.yeqifu.bus.entity.Provider;
|
|
|
|
|
import com.yeqifu.bus.entity.Goods;
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
|
|
|
@ -147,114 +147,92 @@ public class BusinessCacheAspect {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 声明供应商的切面表达式
|
|
|
|
|
* 声明商品的切面表达式
|
|
|
|
|
*/
|
|
|
|
|
private static final String POINTCUT_PROVIDER_ADD="execution(* com.yeqifu.bus.service.impl.ProviderServiceImpl.save(..))";
|
|
|
|
|
private static final String POINTCUT_PROVIDER_UPDATE="execution(* com.yeqifu.bus.service.impl.ProviderServiceImpl.updateById(..))";
|
|
|
|
|
private static final String POINTCUT_PROVIDER_GET="execution(* com.yeqifu.bus.service.impl.ProviderServiceImpl.getById(..))";
|
|
|
|
|
private static final String POINTCUT_PROVIDER_DELETE="execution(* com.yeqifu.bus.service.impl.ProviderServiceImpl.removeById(..))";
|
|
|
|
|
private static final String POINTCUT_PROVIDER_BATCHDELETE="execution(* com.yeqifu.bus.service.impl.ProviderServiceImpl.removeByIds(..))";
|
|
|
|
|
private static final String POINTCUT_GOODS_ADD="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.save(..))";
|
|
|
|
|
private static final String POINTCUT_GOODS_UPDATE="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.updateById(..))";
|
|
|
|
|
private static final String POINTCUT_GOODS_GET="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.getById(..))";
|
|
|
|
|
private static final String POINTCUT_GOODS_DELETE="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.removeById(..))";
|
|
|
|
|
|
|
|
|
|
private static final String CACHE_PROVIDER_PROFIX="provider:";
|
|
|
|
|
private static final String CACHE_GOODS_PROFIX="goods:";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 添加供应商切入
|
|
|
|
|
* 添加商品切入
|
|
|
|
|
* @param joinPoint
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Around(value = POINTCUT_PROVIDER_ADD)
|
|
|
|
|
public Object cacheProviderAdd(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
@Around(value = POINTCUT_GOODS_ADD)
|
|
|
|
|
public Object cacheGoodsAdd(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
//取出第一个参数
|
|
|
|
|
Provider object = (Provider) joinPoint.getArgs()[0];
|
|
|
|
|
Goods object = (Goods) joinPoint.getArgs()[0];
|
|
|
|
|
Boolean res = (Boolean) joinPoint.proceed();
|
|
|
|
|
if (res){
|
|
|
|
|
CACHE_CONTAINER.put(CACHE_PROVIDER_PROFIX + object.getId(),object);
|
|
|
|
|
CACHE_CONTAINER.put(CACHE_GOODS_PROFIX + object.getId(),object);
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询供应商切入
|
|
|
|
|
* 查询商品切入
|
|
|
|
|
* @param joinPoint
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Around(value = POINTCUT_PROVIDER_GET)
|
|
|
|
|
public Object cacheProviderGet(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
@Around(value = POINTCUT_GOODS_GET)
|
|
|
|
|
public Object cacheGoodsGet(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
//取出第一个参数
|
|
|
|
|
Integer object = (Integer) joinPoint.getArgs()[0];
|
|
|
|
|
//从缓存里面取
|
|
|
|
|
Object res1 = CACHE_CONTAINER.get(CACHE_PROVIDER_PROFIX + object);
|
|
|
|
|
Object res1 = CACHE_CONTAINER.get(CACHE_GOODS_PROFIX + object);
|
|
|
|
|
if (res1!=null){
|
|
|
|
|
log.info("已从缓存里面找到供应商对象"+CACHE_PROVIDER_PROFIX + object);
|
|
|
|
|
log.info("已从缓存里面找到商品对象"+CACHE_GOODS_PROFIX + object);
|
|
|
|
|
return res1;
|
|
|
|
|
}else {
|
|
|
|
|
log.info("未从缓存里面找到供应商对象,从数据库中查询并放入缓存");
|
|
|
|
|
Provider res2 =(Provider) joinPoint.proceed();
|
|
|
|
|
CACHE_CONTAINER.put(CACHE_PROVIDER_PROFIX+res2.getId(),res2);
|
|
|
|
|
log.info("未从缓存里面找到商品对象,从数据库中查询并放入缓存");
|
|
|
|
|
Goods res2 =(Goods) joinPoint.proceed();
|
|
|
|
|
CACHE_CONTAINER.put(CACHE_GOODS_PROFIX+res2.getId(),res2);
|
|
|
|
|
return res2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新供应商切入
|
|
|
|
|
* 更新商品切入
|
|
|
|
|
* @param joinPoint
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Around(value = POINTCUT_PROVIDER_UPDATE)
|
|
|
|
|
public Object cacheProviderUpdate(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
@Around(value = POINTCUT_GOODS_UPDATE)
|
|
|
|
|
public Object cacheGoodsUpdate(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
//取出第一个参数
|
|
|
|
|
Provider providerVo = (Provider) joinPoint.getArgs()[0];
|
|
|
|
|
Goods goodsVo = (Goods) joinPoint.getArgs()[0];
|
|
|
|
|
Boolean isSuccess = (Boolean) joinPoint.proceed();
|
|
|
|
|
if (isSuccess){
|
|
|
|
|
Provider provider =(Provider) CACHE_CONTAINER.get(CACHE_PROVIDER_PROFIX + providerVo.getId());
|
|
|
|
|
if (null==provider){
|
|
|
|
|
provider=new Provider();
|
|
|
|
|
Goods goods =(Goods) CACHE_CONTAINER.get(CACHE_GOODS_PROFIX + goodsVo.getId());
|
|
|
|
|
if (null==goods){
|
|
|
|
|
goods=new Goods();
|
|
|
|
|
}
|
|
|
|
|
BeanUtils.copyProperties(providerVo,provider);
|
|
|
|
|
log.info("供应商对象缓存已更新"+CACHE_PROVIDER_PROFIX + providerVo.getId());
|
|
|
|
|
CACHE_CONTAINER.put(CACHE_PROVIDER_PROFIX+provider.getId(),provider);
|
|
|
|
|
BeanUtils.copyProperties(goodsVo,goods);
|
|
|
|
|
log.info("商品对象缓存已更新"+CACHE_GOODS_PROFIX + goodsVo.getId());
|
|
|
|
|
CACHE_CONTAINER.put(CACHE_GOODS_PROFIX+goods.getId(),goods);
|
|
|
|
|
}
|
|
|
|
|
return isSuccess;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除供应商切入
|
|
|
|
|
* 删除商品切入
|
|
|
|
|
* @param joinPoint
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Around(value = POINTCUT_PROVIDER_DELETE)
|
|
|
|
|
public Object cacheProviderDelete(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
@Around(value = POINTCUT_GOODS_DELETE)
|
|
|
|
|
public Object cacheGoodsDelete(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
|
|
|
|
|
//取出第一个参数
|
|
|
|
|
Integer id = (Integer) joinPoint.getArgs()[0];
|
|
|
|
|
Boolean isSuccess = (Boolean) joinPoint.proceed();
|
|
|
|
|
if (isSuccess){
|
|
|
|
|
//删除缓存
|
|
|
|
|
CACHE_CONTAINER.remove(CACHE_PROVIDER_PROFIX+id);
|
|
|
|
|
CACHE_CONTAINER.remove(CACHE_GOODS_PROFIX+id);
|
|
|
|
|
}
|
|
|
|
|
return isSuccess;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 批量删除供应商切入
|
|
|
|
|
*
|
|
|
|
|
* @throws Throwable
|
|
|
|
|
*/
|
|
|
|
|
@Around(value = POINTCUT_PROVIDER_BATCHDELETE)
|
|
|
|
|
public Object cacheProviderBatchDelete(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
|
|
// 取出第一个参数
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
Collection<Serializable> idList = (Collection<Serializable>) joinPoint.getArgs()[0];
|
|
|
|
|
Boolean isSuccess = (Boolean) joinPoint.proceed();
|
|
|
|
|
if (isSuccess) {
|
|
|
|
|
for (Serializable id : idList) {
|
|
|
|
|
// 删除缓存
|
|
|
|
|
CACHE_CONTAINER.remove(CACHE_PROVIDER_PROFIX + id);
|
|
|
|
|
log.info("供应商对象缓存已删除" + CACHE_PROVIDER_PROFIX + id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return isSuccess;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|