package com.bonus.canteen.core.customer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.canteen.core.customer.dto.*;
import com.bonus.canteen.core.customer.dto.CustChangePasswordDTO;
import com.bonus.canteen.core.customer.dto.CustForgetPasswordDTO;
import com.bonus.canteen.core.customer.dto.CustInfoDTO;
import com.bonus.canteen.core.customer.dto.CustPayDTO;
import com.bonus.canteen.core.customer.model.CustInfo;
import com.bonus.canteen.core.customer.vo.CustInfoVo;
import com.bonus.canteen.core.customer.vo.CustNoticeInfoVO;
import com.bonus.canteen.core.customer.vo.CustPayVO;
import com.bonus.canteen.core.customer.vo.PageCustInfoPhotoVO;
import com.bonus.canteen.core.customer.vo.CustPayVO;
import java.time.LocalDateTime;
import java.util.*;

public interface CustInfoService extends IService<CustInfo> {

   CustInfoVo queryCustInfoDetail(CustInfo custInfo, Integer sourceType);

   AjaxResult custChangePassword(CustChangePasswordDTO content);

   AjaxResult custForgetPassword(CustForgetPasswordDTO content);

   AjaxResult rebindMobile(CustBindMobileDTO content, Integer sourceType);

   String getOrderQRCode(Integer sourceType, String paramValue);

   void updateCustPhotoUrl(Long custId, String photoUrl);
   boolean existsNormalCustNum(String custNum, Long excludeCustId);

   boolean existsNormalCustMobile(String mobile, Long excludeCustId);

   Map<String, Long> getAllNormalCustNumValueMap();


   void updateDetailCustInfo(CustInfoModel infoModel);

   CustInfoVo queryCustInfo(CustInfoDTO record);

   List<Long> selectCustIdByCondition(List<Long> orgIdList, List<Integer> psnTypeList, LocalDateTime crtime);

   List<Long> selectCustIdOrCondition(List<Long> orgIdList, List<Integer> psnTypeList);

   CustPayVO getCustPayVO(CustPayDTO custPayDTO);

   void updateCustName(Long custId, String custName);


   List<CustNoticeInfoVO> queryCustNoticeInfoList(CustNoticeInfoPageDTO queryDTO);

   CustInfo addCustForDing(AddCustForDingDTO dto);


   void updateCustForDing(AddCustForDingDTO dto);

   Long customerCountByParams(Collection<Integer> custStates, Collection<Long> orgIds);

   Map<Long, Integer> getCustomerNumBelongOrg();

   void updateCustomersOrgNumAndOrgFullName(Collection<Long> orgIdList);


   public void updateOrgNoAdjuestLog(Collection<Long> custIds, Long orgId) ;

   List <PageCustInfoPhotoVO> pageCustInfoPhoto(CustInfoParam infoParam);

}
