package com.palmnest.service.dinner.service;

import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.bean.Page;
import com.palmnest.application.dto.WebPageResultDto;
import com.palmnest.application.dto.input.AppUserInputDto;
import com.palmnest.application.dto.input.ConsumerInputDto;
import com.palmnest.application.dto.output.IntegralRecodeDto;
import com.palmnest.model.dinner.Consumer;
import com.palmnest.model.estateserve.AppUser;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

/**
 * 订餐管理  新增账号
 *
 * @author leixiaoliang
 */

public interface ConsumerUserService {

	/**
	 * 保存用户信息
	 *
	 * @param appUserInputDto
	 * @param userId          操作用户(userInputDto)
	 * @return
	 * @throws Exception
	 */
	public String saveUpdateUserInfo(AppUserInputDto appUserInputDto, String userId, String addimgUrls, String imageUrlids, String removeUrlids) throws Exception;

	/**
	 * 修改用户
	 *
	 * @param cust
	 */
	public boolean updateUserInfo(AppUserInputDto appUserInputDto, String userId) throws Exception;

	/**
	 * 导入用户信息
	 *
	 * @param ins
	 * @return
	 * @throws Exception
	 */
	public AppResultDto importUserInfo(String orgId, String virId, InputStream ins, String userId) throws Exception;

	/**
	 * 根据openId获取用户
	 *
	 * @param orgId
	 * @param openId
	 * @return
	 */
	Consumer getConsumerByOpenId(String orgId, String openId);

	/**
	 * 登录
	 *
	 * @param mobile
	 * @param code
	 * @param openId
	 * @param orgId
	 * @return
	 */
	AppResultDto login(String mobile, String code, String openId, String orgId);

	/**
	 * 退出登录
	 *
	 * @param openId
	 * @return
	 */
	String exitLogin(String openId, String orgId);

	/**
	 * 修改用户信息
	 *
	 * @param dto
	 * @return
	 */
	String updateConsumer(ConsumerInputDto dto);

	/**
	 * 修改密码
	 *
	 * @param id
	 * @param openId
	 * @param oldPassword
	 * @param newPassword
	 * @return
	 */
	String updatePassword(String id, String openId, String oldPassword, String newPassword);

	/**
	 * 判断用户是否有提交多份的权限
	 *
	 * @param orgId
	 * @param openId
	 * @return
	 */
	AppResultDto isConsPower(String orgId, String openId);

	/**
	 * 查询企业白名单用户
	 *
	 * @return
	 */
	Page findList(Map<String, Object> paramets, int pageSize, int pageNo);
	
	/**
	 * 查询企业白名单用户
	 *
	 * @return
	 */
	List<Map<String,Object>> findListForReport(Map<String, Object> paramets);
	
	List<IntegralRecodeDto> getAllIntegralRecodeList(Map<String, Object> paramets);
	
	WebPageResultDto findListReportExcel(List<Map<String,Object>> list) throws IOException;
	
	WebPageResultDto getAllIntegralRecodeListExcel(List<Map<String, Object>> list) throws IOException;

	/**
	 * 查询员工通行列表
	 *
	 * @param paramets
	 * @param pageSize
	 * @param pageNo
	 * @return
	 */
	Page findEmployeeList(Map<String, Object> paramets, int pageSize, int pageNo);

	/**
	 * 获取用户详情
	 *
	 * @param id
	 * @return
	 */
	AppResultDto findById(Integer id);

	/**
	 * 1禁用、2启用、3删除
	 *
	 * @param id
	 * @param type
	 * @return
	 */
	AppResultDto updateConsumer(Integer id, int type, String userId);

	/**
	 * 获取该项目下的所有有效企业
	 *
	 * @param orgId
	 * @return
	 */
	AppResultDto getVirInfo(String orgId);

	/**
	 * 获取该项目下充值设置
	 *
	 * @param orgId
	 * @return
	 */
	AppResultDto getRechargeSet(String orgId);

	AppResultDto getUserNumber(String id);

	/**
	 * 设置人脸识别
	 *
	 * @param user
	 * @param addimgUrls
	 * @param imageUrlids
	 * @param removeUrlids
	 * @return
	 */
	String setFaceImage(AppUser user, String addimgUrls, String imageUrlids, String removeUrlids);

	String setPath(String fileName);


	AppResultDto importUserAddress(String orgId, InputStream ins, String userId);

}
