package com.red.circle.other.infra.database.mongo.service.team.team;

import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberChangeRecord;
import java.sql.Timestamp;

/**
 * 成员或团队变更区域，为配合恢复目标工资而用.
 *
 * @author pengshigang on 2023/4/13
 */
public interface TeamMemberChangeRecordService {

  /**
   * 团队或成员最后一次变更时间.
   *
   * @param relationId 关联id
   * @param type       类型: 1.用户 2.团队
   */
  Timestamp getLastChangeDateByRelationId(Long relationId, Integer type);

  /**
   * 添加团队或成员变更记录.
   *
   * @param sysOrigin        系统
   * @param relationId       关联id
   * @param type             类型: 1.用户 2.团队
   * @param regionId         区域ID
   * @param createUser       创建人id
   * @param createUserOrigin 创建用户来源：0 app、1 后台
   */
  void add(String sysOrigin, Long relationId, Integer type, String regionId, Long createUser,
      Integer createUserOrigin);

  /**
   * 团队最后一次变更不通区域记录.
   *
   * @param teamId 团队id
   */
  TeamMemberChangeRecord getLastTeamChangeRecord(Long teamId);

  /**
   * 成员最后一次被删除记录(排除区域).
   *
   * @param memberId 用户Id
   */
  TeamMemberChangeRecord getLastDelMemberRecord(Long memberId, String notRegionId);
}
