package com.ycwl.basic.service.pc;

import com.github.pagehelper.PageInfo;
import com.ycwl.basic.model.mobile.face.FaceRecognizeResp;
import com.ycwl.basic.model.mobile.face.FaceStatusResp;
import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO;
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
import com.ycwl.basic.model.mobile.face.FaceRecognitionUpdateReq;
import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.mobile.face.FaceRecognitionDetailVO;
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Author：longbinbin
 * @Date：2024/12/2 16:34
 */
public interface FaceService {
    ApiResponse<PageInfo<FaceRespVO>> pageQuery(FaceReqQuery faceReqQuery);
    ApiResponse<List<FaceRespVO>> list(FaceReqQuery faceReqQuery);
    ApiResponse<FaceRespVO> getById(Long id);
    ApiResponse<Integer> add(FaceEntity face);
    ApiResponse<Integer> deleteById(Long id);
    ApiResponse<Integer> deleteByIds(List<Long> ids);

    FaceRecognizeResp faceUpload(MultipartFile file, Long scenicId, Long userId, String scene);

    List<FaceRespVO> listByUser(Long userId, Long scenicId);
    SearchFaceRespVo matchFaceId(Long faceId);

    SearchFaceRespVo matchFaceId(Long faceId, boolean isNew);
    SearchFaceRespVo matchFaceId(Long faceId, boolean isNew, String scene);

    ApiResponse<String> deleteFace(Long faceId);

    List<ContentPageVO> faceContentList(Long faceId);

    void bindFace(Long faceId, Long memberId);

    String bindWxaCode(Long faceId);

    FaceStatusResp getFaceStatus(Long faceId);

    Boolean checkHasExtraCheck(Long faceId);

    List<FaceSampleEntity> getLowMatchedFaceSamples(Long faceId);

    void matchCustomFaceId(Long faceId, List<Long> faceSampleIds);

    void updateRecognition(FaceRecognitionUpdateReq req);

    FaceRecognitionDetailVO getRecognitionDetail(Long faceId);
}
