package com.red.circle.other.app.service.user.relation;

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.app.AppUserIdCmd;
import com.red.circle.other.app.dto.clientobject.user.relation.friendcard.UserFriendCardApplyCO;
import com.red.circle.other.app.dto.clientobject.user.relation.friendcard.UserFriendCardCO;
import com.red.circle.other.app.dto.clientobject.user.relation.friendcard.UserFriendCardCountMessageCO;
import com.red.circle.other.app.dto.clientobject.user.relation.friendcard.UserFriendCardStoreCO;
import com.red.circle.other.app.dto.cmd.user.relation.cp.ProcessApplyCmd;
import com.red.circle.other.app.dto.cmd.user.relation.friendcard.FriendshipCardApplyCmd;
import com.red.circle.other.app.dto.cmd.user.relation.friendcard.FriendshipCardApplyDismissCmd;
import com.red.circle.other.app.dto.cmd.user.relation.friendcard.FriendshipCardPageCmd;
import java.util.List;

/**
 * <p>
 * 用户友谊关系卡 .
 * </p>
 *
 * @author pengshigang
 * @since 2022-06-09
 */
public interface UserFriendCardService {

  /**
   * 五张关系卡
   */
  List<UserFriendCardStoreCO> cards(AppExtCommand cmd);

  /**
   * 五张用户关系卡
   */
  List<UserFriendCardCO> userCards(AppUserIdCmd cmd);

  /**
   * 查询指定卡片类型的用户列表
   */
  List<UserFriendCardCO> pageUserByType(FriendshipCardPageCmd cmd);

  /**
   * 发送关系卡申请
   */
  void sendApply(FriendshipCardApplyCmd cmd);

  /**
   * 处理用户友谊关系卡
   */
  void processApply(ProcessApplyCmd cmd);

  /**
   * 解除指定关系卡申请
   */
  void dismissApply(FriendshipCardApplyDismissCmd cmd);

  /**
   * 关系卡申请记录分页
   */
  List<UserFriendCardApplyCO> pageApply(FriendshipCardPageCmd cmd);

  /**
   * 统计未同意友谊关系卡申请、好友申请、我的消息列表.
   */
  UserFriendCardCountMessageCO countMessageInfo(AppExtCommand cmd);

}
