package com.ym.mec.biz.service.impl;

import com.ym.mec.auth.api.client.SysUserFeignService;
import com.ym.mec.auth.api.entity.SysUser;
import com.ym.mec.biz.dal.dao.PageMonitorDao;
import com.ym.mec.biz.dal.entity.PageMonitor;
import com.ym.mec.biz.service.PageMonitorService;
import com.ym.mec.common.dal.BaseDAO;
import com.ym.mec.common.exception.BizException;
import com.ym.mec.common.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

@Service
public class PageMonitorServiceImpl extends BaseServiceImpl<Long, PageMonitor>  implements PageMonitorService {
	
	@Autowired
	private PageMonitorDao pageMonitorDao;
	@Autowired
	private SysUserFeignService sysUserFeignService;

	@Override
	public BaseDAO<Long, PageMonitor> getDAO() {
		return pageMonitorDao;
	}

	@Override
	@Transactional(rollbackFor = Exception.class)
	public void add(PageMonitor pageMonitor) {
		if(pageMonitor == null){
			throw new BizException("参数校验失败");
		}
		SysUser sysUser = sysUserFeignService.queryUserInfo();
		if(sysUser == null){
			throw new BizException("用户信息获取失败");
		}
		Integer userId = sysUser.getId();
		PageMonitor oldPageMonitor = pageMonitorDao.findByUserIdAndEvent(userId,pageMonitor.getEvent());
		if(oldPageMonitor == null){
			pageMonitor.setUserId(userId);
			pageMonitor.setTimes(1);
			pageMonitorDao.insert(pageMonitor);
		}else {
			oldPageMonitor.setTimes(oldPageMonitor.getTimes() + 1);
			oldPageMonitor.setUpdateTime(new Date());
			pageMonitorDao.update(oldPageMonitor);
		}
	}
}