package cn.pluss.platform.merchant;

import cn.pluss.platform.entity.MerchantCashPayCode;
import cn.pluss.platform.entity.MerchantCashPlace;
import cn.pluss.platform.entity.MerchantOrder;
import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.vo.MerchantCashPlaceStaffVO;
import cn.pluss.platform.vo.MerchantCashPlaceVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 商户收银点表 服务类
 * </p>
 *
 * @author Djh
 * @since 2021-03-23
 */
public interface MerchantCashPlaceService extends IService<MerchantCashPlace> {

    /**
     * 通过用户id生成默认的收银点，并绑定电子码
     * @param userId 用户id
     */
    void createDefaultCashPlace(Long userId);

    /**
     * 通过收银点编码删除
     * @param code  收银台编码code
     */
    void delByCodeForApp(String code);

    /**
     * 查看收银点列表
     * @param merchantCashPlace 收银点查询条件
     * @return  收银点列表
     */
    List<MerchantCashPlaceVO> getListForApp(Page<MerchantCashPlace> page, MerchantCashPlace merchantCashPlace);

    /**
     * 收银点绑定收款码
     * @param merchantCashPayCode
     */
    void bindPayCode(MerchantCashPayCode merchantCashPayCode);

    /**
     * 收款码解绑
     * @param payCode 收款码牌号
     */
    void unbindPayCode(String payCode);

    /**
     * 根据收银台编码获得签到员工列表
     * @param code  收银台编码
     * @return  员工信息
     */
    List<UserApp> getStaffByCode(String code);

    /**
     * 根据收银台id获得签到员工列表
     * @param id  收银台编码
     * @return  员工信息
     */
    List<UserApp> getStaffByCashPlaceId(Long id);

    MerchantCashPlaceStaffVO getStatusByStaffId(String userId);

    /**
     * 根据收款码排获取收银点状态
     * @return
     */
    MerchantCashPlaceStaffVO getStatusByPayCode(String payCode);

    /**
     * 设置收银点信息
     * @date: 2021/11/29 10:51
     * @param order: 订单信息
     * @param snNo:  设备号
     */
    void setOrderPlaceInfo(MerchantOrder order,String snNo);
}
