PostsDescriptorRecordListener.java 1.9 KB
Newer Older
街头小贩's avatar
街头小贩 已提交
1 2
package com.apobates.forum.trident.event;

街头小贩's avatar
街头小贩 已提交
3
import java.util.Optional;
街头小贩's avatar
街头小贩 已提交
4 5 6 7 8 9 10 11 12 13 14
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import com.apobates.forum.core.api.dao.PostsDescriptorDao;
import com.apobates.forum.core.entity.Posts;
import com.apobates.forum.core.entity.PostsDescriptor;
import com.apobates.forum.core.impl.event.PostsPublishEvent;
import com.apobates.forum.utils.ip.IPMatcher;
import com.apobates.forum.utils.ip.IPMatcher.IpMatchResult;
import eu.bitwalker.useragentutils.UserAgent;
15 16
import org.springframework.stereotype.Component;

街头小贩's avatar
街头小贩 已提交
17 18 19 20 21 22
/**
 * 回复操作描述记录
 * 
 * @author xiaofanku
 *
 */
23
@Component
街头小贩's avatar
街头小贩 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
public class PostsDescriptorRecordListener implements ApplicationListener<PostsPublishEvent>{
	@Autowired
	private PostsDescriptorDao postsDescriptorDao;
	private final static Logger logger = LoggerFactory.getLogger(PostsDescriptorRecordListener.class);
	
	@Override
	public void onApplicationEvent(PostsPublishEvent event) {
		logger.info("[Event][Posts][3]回复动作描述处理开始");
		Posts p = event.getPosts();
		PostsDescriptor pd = new PostsDescriptor();
		pd.setMemberId(p.getMemberId());
		pd.setMemberNames("*");
		pd.setMemberNickname(p.getMemberNickname());
		pd.setIpAddr(p.getIpAddr());
		pd.setPostsId(p.getId());
		//
		pd.setAgent(event.getUserAgent());
		pd.setDevice(UserAgent.parseUserAgentString(event.getUserAgent()).getOperatingSystem().getName());
		//
街头小贩's avatar
街头小贩 已提交
43 44 45
		Optional<IpMatchResult> mr = IPMatcher.getInstance().matchToResult(p.getIpAddr());
		if(mr.isPresent()){
			IpMatchResult imr = mr.get();
街头小贩's avatar
街头小贩 已提交
46 47 48 49 50 51 52 53 54
			pd.setCity(imr.getCity());
			pd.setProvince(imr.getProvince());
			pd.setDistrict(imr.getDistrict());
			pd.setIsp(imr.getIsp());
		}
		postsDescriptorDao.save(pd);
		logger.info("[Event][Posts][3]回复动作描述处理开始");
	}
}