/* * Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences. * * This file is part of Duckling project. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package cn.vlabs.umt.services.account; import java.util.Collection; import java.util.Date; import java.util.List; import net.duckling.cloudy.common.CommonUtils; import org.apache.log4j.Logger; import cn.vlabs.umt.common.job.JobThread; import cn.vlabs.umt.common.job.impl.DiffrentRegisterJob; import cn.vlabs.umt.common.job.impl.UMTLogGEOJob; import cn.vlabs.umt.common.mail.MessageSender; import cn.vlabs.umt.domain.UMTLog; import cn.vlabs.umt.services.user.UserService; import cn.vlabs.umt.services.user.bean.User; public class AccountServiceImpl implements IAccountService { private static final Logger LOGGER=Logger.getLogger(AccountServiceImpl.class); private MessageSender mailSender; private UserService userService; public AccountServiceImpl(IAccountDAO ad,IUMTLogDAO umtLogDao,MessageSender mailSender,UserService userService){ this.ad=ad; this.mailSender=mailSender; this.userService=userService; this.umtLogDao=umtLogDao; } public Collection<StatisticBean> getLoginCount(Date begin, Date end) { return umtLogDao.getLoginCount(begin, end); } public void login(String appname, String appurl, int uid, String userip, Date logintime, String browserType, String remark) { UMTLog umtLog=new UMTLog(); umtLog.setEventType(IAccountService.LOGIN_EVENT); umtLog.setAppName(appname); umtLog.setAppUrl(appurl); umtLog.setUid(uid); umtLog.setUserIp(userip); umtLog.setOccurTime(logintime); umtLog.setBrowserType(browserType); umtLog.setRemark(remark); umtLogDao.log(umtLog); JobThread.addJobThread(new DiffrentRegisterJob(mailSender, userService, ad,umtLogDao, uid,umtLog.getId())); } public void logout(String appname, String appurl, int uid, String userip, Date logintime, String browserType, String remark) { UMTLog umtLog=new UMTLog(); umtLog.setEventType(IAccountService.LOGOUT_EVENT); umtLog.setAppName(appname); umtLog.setAppUrl(appurl); umtLog.setUid(uid); umtLog.setUserIp(userip); umtLog.setOccurTime(logintime); umtLog.setBrowserType(browserType); umtLog.setRemark(remark); umtLogDao.log(umtLog); JobThread.addJobThread(new UMTLogGEOJob(umtLogDao, umtLog.getId(), uid)); } /** * 获得日志信息,取最近一条 * @param username 用户登录名 * @param eventType 出发事件,想减UMTLog **/ public List<UMTLog> getTopTenLogByEventType(int uid,String eventType){ return umtLogDao.getLastLogByEventType(uid, eventType); } @Override public void log(String eventType,int uid, String userip, String browserType) { UMTLog umtLog=new UMTLog(); umtLog.setEventType(eventType); umtLog.setAppName(User.USER_TYPE_UMT); umtLog.setAppUrl(null); umtLog.setUid(uid); umtLog.setUserIp(userip); umtLog.setOccurTime(new Date()); umtLog.setBrowserType(browserType); umtLog.setRemark(""); umtLogDao.log(umtLog); switch(eventType){ case UMTLog.EVENT_TYPE_LOG_IN:{ JobThread.addJobThread(new DiffrentRegisterJob(mailSender, userService, ad,umtLogDao, uid,umtLog.getId())); return; }default:{ JobThread.addJobThread(new UMTLogGEOJob(umtLogDao, umtLog.getId(), uid)); return; } } } @Override public UMTLog getLastLogByEventType(int uid, String eventType) { return CommonUtils.first(umtLogDao.getLastLogByEventTypeLimit(uid, eventType, 1)); } @Override public List<UMTLog> getMyPreCommonUseGeos(int uid) { return ad.getMyPreference(uid); } @Override public void removeCommonGEO(int id, int uid) { ad.removeCommonGEO(id,uid); } @Override public List<UMTLog> readCommonGEO(int uid) { return ad.readCommonGEO(uid); } @Override public void addCommonGEO(UMTLog umtLog) { ad.addCommonGEO(umtLog); } @Override public boolean isExitsCommonGEO(UMTLog umtLog) { return ad.isExitsCommonGEO(umtLog); } @Override public int countCommonGEO(int uid) { return ad.countCommonGEO(uid); } private IAccountDAO ad; private IUMTLogDAO umtLogDao; }