package com.xiaozhi.blog.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import solr.index.BlogIndexData;
import solr.index.SolrjIndexCreater;
import solr.index.UserIndexData;
import com.xiaozhi.blog.rabbitmq.gateway.RabbitBlogDataMessageGateway;
import com.xiaozhi.blog.rabbitmq.gateway.RabbitUserDataMessageGateway;
import com.xiaozhi.blog.vo.User;
import com.xiaozhi.blog.vo.WebPost;
@Aspect
@Service("jobAspect")
public class JobAspect {
private static Log logger = LogFactory.getLog(JobAspect.class);
private static boolean isDebug = logger.isDebugEnabled();
@Autowired
private RabbitUserDataMessageGateway rabbitUserDataMessageGateway;
@Autowired
private RabbitBlogDataMessageGateway rabbitBlogDataMessageGateway;
@Qualifier("blogIndexCreater")
@Autowired
private SolrjIndexCreater<BlogIndexData> blogIndexCreater;
@Qualifier("userIndexCreater")
@Autowired
private SolrjIndexCreater<UserIndexData> userIndexCreater;
/**
* 新增用户时通过MQ创建用户索引
* @param user
* @throws Exception
*/
@After("com.xiaozhi.blog.aop.SystemArchitecture.userAddAopFuction()&&args(user)")
protected void creatUserIndex(User user) throws Exception{
if(isDebug){
logger.debug("#########后置置通知开始!!");
logger.debug("----------------->user :"+user.toString());
}
UserIndexData data = new UserIndexData();
BeanUtils.copyProperties(data, user);
//rabbitUserDataMessageGateway.sendMessage(data);//rabbitmq实现
this.userIndexCreater.addOrUpdateBean(data);//dubbo远程异步调用实现
}
/**
* 发布微博时通过MQ创建微博索引
* @param uid
* @param post
* @param isForword
* @param webPost
* @throws Exception
*/
@AfterReturning(pointcut="com.xiaozhi.blog.aop.SystemArchitecture.postBlogFuction()&&args(uid,post,isForword)",returning="webPost")
protected void createBlogIndex(String uid, WebPost post ,boolean isForword,WebPost webPost) throws Exception{
if(isDebug){
logger.debug("#####################-gePersonById()方法被AfterReturning拦截了 ...");
logger.debug("#########uid :"+uid);
logger.debug("#########webPost :"+webPost.toString());
}
BlogIndexData data = new BlogIndexData();
data.setContent(webPost.getContent());
data.setForwardcontent(webPost.getWebPost()==null?null:webPost.getWebPost().getContent());
data.setPid(webPost.getPid().toString());
//this.rabbitBlogDataMessageGateway.sendMessage(data);//rabbitmq实现
this.blogIndexCreater.addOrUpdateBean(data);//dubbo远程异步调用实现
}
}