/******************************************************************************* * Copyright [2015] [Onboard team of SERC, Peking University] * * 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 com.onboard.service.activity; import java.util.Date; import java.util.List; import java.util.Map; import java.util.TreeMap; import com.onboard.domain.mapper.model.ActivityExample; import com.onboard.domain.model.Activity; /** * {@link Activity}服务接口 * * @author yewei * */ public interface ActivityService { /** * 创建一个Activity对象 * * @param activity * @return 返回创建的Activity对象,包括数据库中的id */ Activity create(Activity activity); /** * 更新Activity * * @param activity * @return */ Activity update(Activity activity); /** * 删除Activity * * @param id */ void delete(int id); /** * 根据id获取Activity对象 * * @param id * Activity id * @return */ Activity getById(int id); /** * 获取一个项目内的Activity * * @param projectId * @param start * @param limit * @return */ List<Activity> getByProject(int projectId, int start, int limit); /** * 获取一个项目的Activity,截止到endTime为止, 试取limit条数据,如果最前一条数据的当天还有其它Activity数据,则取完该天的所有数据, 返回的Activity数据最终可能大于limit条。 * * @param projectId * @param endTime * 截止时间 * @param limit * @return */ List<Activity> getByProjectTillDay(int projectId, Date endTime, int limit); /** * 获取一个公司的Activity * * @param projectId * @param start * @param limit * @return */ List<Activity> getByCompany(int projectId, int start, int limit); /** * 获取一个公司的Activity,截止到endTime为止, 试取limit条数据,如果最前一条数据的当天还有其它Activity数据,则取完该天的所有数据, 返回的Activity数据最终可能大于limit条。 * * @param projectId * @param start * @param limit * @return */ List<Activity> getByCompanyTillDay(int companyId, Date endTime, int limit); /** * 获取用户的最新Activity列表 * * @param companyId * @param userId * @param limit * @param projectList * 如果为空,表示用户参与的所有项目 * @return */ List<Activity> getLatestByUser(int companyId, int userId, int limit, List<Integer> projectList); /** * 分页获取一个用户在一个公司的活动 * * @param companyId * @param userId * @param start * @param limit * @param projectList * @return */ List<Activity> getLatestByUserByPage(int companyId, int userId, int start, int limit, List<Integer> projectList); /** * 获取一组项目用户相关的活动,基于日期进行分组 * * @param companyId * @param userId * @param projectList * 如果为空,表示用户参与的所有项目 * @return */ TreeMap<Date, List<Activity>> getByUserGroupByDate(int companyId, int userId, int limit, List<Integer> projectList, Date until); /** * 获取用户可以查看的Activity信息 * * @param companyId * @param filterUserId * @param filterProjectId * @param endTime * @param limit * @return */ List<Activity> getUserVisibleTillDay(int companyId, Integer filterUserId, Integer filterProjectId, Date endTime, String type, int limit); /** * 获取用户可以查看的Activity信息 * * @param companyId * @param userId * @return */ List<Activity> getUserVisibleBySampleTillDay(int companyId, Activity sample, Date endTime, int limit); /** * 获取一个任务的相关活动信息,其中删除了回复相关的活动信息 * * @param todoId * @param start * @param limit * @return */ List<Activity> getByTodo(int todoId, int start, int limit); /** * 获取某项目某天的activity * * @param projectId * @param date * @return */ List<Activity> getByProjectByDate(int projectId, Date date); /** * 根据某对象的类型和id来获取activity * * @param type * @param id * @return */ List<Activity> getByAttachTypeAndId(String type, int id); /** * 分页获取一个用户在一个公司的活动 * * @param companyId * @param userId * @param start * @param limit * @param projectList * @return */ List<Activity> getLatestByBySampleCompanyByPage(Activity sample, int companyId, int start, int limit, List<Integer> projectList); /** * 根据example获取activity * * @param example * @return */ List<Activity> getByActivityExample(ActivityExample example); /** * 根据attachType和id删除activity * * @param type * @param id */ void deleteByAttachTypeAndId(String type, int id); /** * 获取某一日期之后所有的该用户的活动信息 * * @author Chenlong * @param companyId * @param userId * @param projectList * @param until * @return */ List<Activity> getLatestByUserSince(int companyId, int userId, List<Integer> projectList, Date until); /** * 获取一个用户在某个项目中某时间范围内的活动 * * @param projectId * @param start * @param end * @return */ List<Activity> getByProjectBetweenDates(int projectId, Date start, Date end); List<Activity> getByUserGroupByDateReturnList(int companyId, int userId, int limit, List<Integer> projectList, Date until); /** * 获取一个用户在某个项目中某时间范围内的活动 * * @param projectId * @param userId * @param start * @param end * @return */ List<Activity> getByProjectUserBetweenDates(int projectId, int userId, Date start, Date end); /** * 获取团队成员某段时间的活动数 * * @param companyId * @param since * @param until * @return */ Map<Integer, Integer> getActivityCountForUsers(Integer companyId, Date since, Date until); /** * 获取团队成员某段时间内每天的活动数 * * @param companyId * @param since * @param until * @return */ List<Map<String, ?>> getActivityCountForUsersGroupByDate(Integer companyId, Date since, Date until); List<Activity> getActivitiesByCompanyAndDates(Integer companyId, Date since, Date until); }