package com.palmnest.service.dinner.service;

import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.dto.DinnerPushSetVo;
import com.palmnest.application.dto.RechargeSetDto;
import com.palmnest.application.dto.WebPageResultDto;

import java.util.Map;

public interface PlaceAnOrderService {
	/**
	 * 获取能够订餐的用户
	 *
	 * @param orgId     项目
	 * @param time      订餐日期
	 * @param openId操作人
	 * @return
	 */
	AppResultDto getUserBy(Map<String, Object> paraments);

	AppResultDto getWeek(String orgId, String wxUserId);

	AppResultDto getWeekDate(String orgId, String wxUserId, String dinnerTime);

	/**
	 * 根据参数获取该餐品下购物车中的详情
	 *
	 * @param parements
	 * @param orgId
	 * @param openId
	 * @param mealId
	 * @param time
	 * @return
	 */
	AppResultDto getMealCarByMealId(Map<String, String> parements);

	/**
	 * 汇总会议餐
	 *
	 * @param orgId
	 * @param wxUserId
	 * @param time
	 * @return
	 */
	AppResultDto getAllMeetFood(String orgId, String wxUserId, String time);

	/**
	 * 汇总临时工作餐
	 *
	 * @param orgId
	 * @param wxUserId
	 * @param time
	 * @return
	 */
	AppResultDto getAllTempOrder(String orgId, String wxUserId, String time);

	//获取会议餐的总份数
	int getMeetFoodCount(String orgId, String time);

	//获取临时工作餐的总份数
	int getTempOrderCount(String orgId, String time);

	/**
	 * 根据项目手机号查找该用户下相关的操作记录
	 *
	 * @param wxUserId
	 * @param orgId
	 * @return
	 */
	AppResultDto getRecodeInfo(String wxUserId, String orgId);
	
	WebPageResultDto getAllIntegralRecodeList(Map<String, Object> paramets, int pageSize, int pageNo);
	
	
	

	AppResultDto getMealUser(Map<String, String> parements);

	/**
	 * 每天(工作日)推送消息给包含有订餐项目下的用户
	 */
	void sendMessageByEveryDay(String openId, String orgId);

	void sendMessageByOrgSet(String orgId, String mobile);

	/**
	 * 自动充值
	 */
	void automaticRecharge();

	/**
	 * 自动将待送餐的订单置为待评价
	 */
	void updateOrderDinner();

	/**
	 * 获取项目下自动充值积分设置及自动充值记录
	 *
	 * @param orgId
	 * @return
	 */
	AppResultDto getRechargeSetRecode(String orgId);

	AppResultDto getPushSet(Integer orgId);

	AppResultDto getPushSetByUserId(Integer userId);



	/**
	 * 获取项目下自动充值积分设置
	 *
	 * @param orgId
	 * @return
	 */
	RechargeSetDto getRechargeSetDto(String orgId);

	/**
	 * 保存或修改自动充值积分设置
	 *
	 * @param userId
	 * @param reSetDto
	 * @return
	 */
	AppResultDto saveAndRechargeSet(String userId, RechargeSetDto reSetDto);

	AppResultDto saveAndPushSet(DinnerPushSetVo reSetDto);

	/**
	 * 根据用户id修改这些用户的积分
	 *
	 * @param map
	 * @return
	 */
	AppResultDto updateAppUserByUserIds(String orgId, Integer integral, String userIds, String userId);

	/**
	 * 根据项目获取设置的积分数
	 *
	 * @param orgId
	 * @return
	 */
	AppResultDto getIntegralByOrgId(String orgId);

	/**
	 * 发送短信给餐品管理员
	 */
	void sendMessage();

	/**
	 * 清理项目缓存
	 */
	void cleanRedisByOrgIds();

	/**
	 * 获取临时工作餐的开关
	 *
	 * @param orgId
	 * @return
	 */
	int getTempOpen(String orgId);

	/**
	 * 获取订餐统计信息
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	WebPageResultDto getDinnerDateByInfo(String orgId, int dateType, String date, String endDate, int pageSize, int pageNo);

	/**
	 * 导出订餐统计报表
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	AppResultDto exportDinnerStatistics(String orgId, Integer dateType, String date, String endDate);

	/**
	 * 获取通行统计信息
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	WebPageResultDto getVisitorDateByInfo(String orgId, int dateType, String date, String endDate, int pageSize, int pageNo);

	/**
	 * 导出通行统计报表
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	AppResultDto exportVisitorStatistics(String orgId, Integer dateType, String date, String endDate);

	/**
	 * 获取平台活跃度
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	WebPageResultDto getPlatformDataByInfo(String orgId, int dateType, String date, String endDate, int pageSize, int pageNo);

	/**
	 * 获取会议室统计
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	WebPageResultDto getMeetStatistics(String orgId, int dateType, String date, String endDate, int pageSize, int pageNo);

	/**
	 * 导出平台活跃度报表
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	AppResultDto exportPlatformStatistics(String orgId, Integer dateType, String date, String endDate);

	/**
	 * 导出会议室报表
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	AppResultDto exportMeetStatistics(String orgId, Integer dateType, String date, String endDate);

	String setPath(String fileName);

	/**
	 * 设置项目的是否开启短信提醒
	 *
	 * @param orgId
	 * @param isSetMessage
	 * @return
	 */
	AppResultDto setOrgByMessage(String orgId, Integer isSetMessage,Integer isSetWechatMessage);


	void sendTempMsg(String openId, String orgId,String date);
}
