package cn.pluss.platform.merchant;

import cn.pluss.platform.dto.MerchantStaffDTO;
import cn.pluss.platform.entity.MerchantBaseInfo;
import cn.pluss.platform.entity.MerchantStaffConn;
import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.vo.MerchantStaffConnVO;
import cn.pluss.platform.vo.MerchantStaffVO;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 * 员工商户关联表 服务类
 * </p>
 *
 * @author Djh
 * @since 2021-03-24
 */
public interface MerchantStaffConnService extends IService<MerchantStaffConn> {

    /**
     * 创建或修改
     * @param staffDTO
     * @return
     */
    UserApp createOrEditStaff(MerchantStaffDTO staffDTO);



    /**
     * 创建员工
     *
     * @return
     */
    UserApp createStaff(MerchantStaffDTO staffDTO);

    UserApp editStaff(MerchantStaffDTO staffDTO);

    /**
     * 绑定员工
     *
     * @param userId       用户id
     * @param merchantCode 商户code
     */
    void bindStaff(Long userId, String merchantCode);

    /**
     * 删除所有关联信息
     * @param userId    用户id
     */
    void delAllStaff(Long userId);

    /**
     * 员工
     * @param userId            用户id
     * @param merchantCodeList  商户编码列表
     */
    void delStaff(Long userId, List<String> merchantCodeList);

    /**
     * 获取员工信息，并且获得相关联的所有商户
     * @return  员工信息
     */
    MerchantStaffVO getOneForApp(String userId);

    List<MerchantStaffConnVO> getListByUserId(String userId);

    /**
     * @description:根据员工userAppid获取所绑定门店信息
     * @date: 2021/9/23 17:58
     * @param userAppId:
     * @return java.util.List<cn.pluss.platform.entity.MerchantBaseInfo>
     */
    List<MerchantBaseInfo> getMercInfoByStaffId(String userAppId);

    /**
     * @description:根据userId和merchantcode 获取员工绑定的信息
     * @date: 2021/9/24 14:13
     * @param userId:
     * @param merchantCode:
     * @return cn.pluss.platform.entity.MerchantStaffConn
     */
    MerchantStaffConn getStaffConnInfoByCodeAndId(String userId, String merchantCode);
}
