package cn.iocoder.yudao.module.system.service.carteen;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSerialSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo;
import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * 门店管理 Service 接口
 *
 * @author 开发账号
 */
public interface CarteenService {

    /**
     * 创建门店管理
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCarteen(@Valid CarteenSaveReqVO createReqVO);

    /**
     * 更新门店管理
     *
     * @param updateReqVO 更新信息
     */
    void updateCarteen(@Valid CarteenSaveReqVO updateReqVO);

    /**
     * 删除门店管理
     *
     * @param id 编号
     */
    void deleteCarteen(Long id);

    /**
     * 获得门店管理
     *
     * @param id 编号
     * @return 门店管理
     */
    CarteenDO getCarteen(Long id);

    /**
     * 获得门店管理分页
     *
     * @param pageReqVO 分页查询
     * @return 门店管理分页
     */
    PageResult<CarteenDO> getCarteenPage(CarteenPageReqVO pageReqVO);

    /**
     * @Description: 获取门店一周卖出多少销量 千克
     * @Author: qjq
     * @Date: 2024/4/19 上午9:55
     * @return
     */
    Map<String, List<CarteenWeekSalesRespVo>> getCarteenWeekSales(CarteenPageReqVO pageReqVO);
    /**
     * @Description: 根据用户编号获取门店
     * @Author: qjq
     * @Date: 2024/4/23 上午9:58
     * @return
     */
    List<CarteenDO> getUserCarteem(Long userId);
    /**
     * @Description: 修改门店那些用户可以看
     * @Author: qjq
     * @Date: 2024/4/23 上午10:37
     * @return
     */
    Boolean updateUserCarteen(CarteenSerialSaveReqVO req);
    /**
     * @Description: 获取所有门店
     * @Author: qjq
     * @Date: 2024/4/23 下午1:47
     * @return
     */
    List<CarteenDO> getCarteenList();
}