package com.tzld.piaoquan.api.service.wecom.thirdparty;

import com.tzld.piaoquan.api.model.param.wecom.thirdpart.*;
import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComCorp;
import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComRoom;
import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComStaff;

import java.util.List;

public interface WeComThirdPartyService {

    InitResponse init(InitRequest request);

    void setCallbackUrl(SetCallbackUrlRequest request);

    QrCodeResponse getQrCode(UuidRequest request);

    void setCheckCode(CheckCodeRequest request);

    String secondaryValidation(UuidRequest request);

    LoginInfo getRunClientByUuid(UuidRequest request);

    void saveStaffQrCode(String uuid);

    List<ThirdPartWeComCorp> getCorpListByIds(List<Long> ids);

    List<GetInnerContactsResponse.ContactItem> getInnerContacts(GetInnerContactsRequest request);

    List<ExternalContactsResponse.ContactItem> getExternalContacts(GetExternalContactsRequest request);

    List<GetChatroomMembersResponse.RoomInfo> getChatroomMembers(GetChatroomMembersRequest request);

    List<GetRoomUserListResponse.Member> getRoomUserList(GetRoomUserListRequest request);

    CdnUploadImgLinkResponse cdnUploadImgLink(CdnUploadImgLinkRequest request);

    CommonResponse<SendAppMsgResponse> sendAppMsg(ThirdPartWeComStaff staff, ThirdPartWeComRoom room, SendAppMsgRequest request);

    CommonResponse<SendTextMsgResponse> sendTextMsg(ThirdPartWeComStaff staff, ThirdPartWeComRoom room, SendTextMsgRequest request);

    List<ThirdPartWeComStaff> getActiveStaffList();

    List<ThirdPartWeComRoom> getAllStaffRoomList(Long staffId);

    List<ThirdPartWeComRoom> getStaffRoomList(Long staffId);

    CreateRoomWxResponse createRoom(CreateRoomWxRequest request);

    void updateRoomName(UpdateRoomNameRequest request);

    List<AntiSpamRuleResponse.AntiSpamRule> queryCRMAntiSpamRule(QueryCRMAntiSpamRuleRequest request);

    void updateRoomSendStatus(UpdateRoomSendStatusRequest request);

    Long getTodayCreateRoomCount(Long staffId);

    CommonResponse<String> invitationToRoom(InvitationToRoomRequest request);

    ThirdPartWeComRoom getRoomByThirdRoomId(Long roomId);

    List<ThirdPartWeComRoom> getRoomByRoomIds(List<Long> roomIds);

    ThirdPartWeComStaff getStaffById(Long id);

    List<ThirdPartWeComStaff> getStaffByIds(List<Long> ids);

    ThirdPartWeComStaff getStaffByUuid(String uuid);

    List<ThirdPartWeComStaff> getStaffListByThirdStaffIds(List<Long> thirdStaffIds);

    void updateStaffStatus(UpdateStaffStatusRequest request);

    void updateAutoCreateRoomStatus(UpdateAutoCreateRoomStatusRequest request);

    ThirdPartWeComRoom getRoomById(Long roomId);

    void automaticLogin(UuidRequest request);
}
