package cn.iocoder.yudao.module.aftersales.dal.mysql.ticket; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO; import cn.iocoder.yudao.module.aftersales.enums.AfterSaleBizTypeEnum; import cn.iocoder.yudao.module.aftersales.util.AfterSalePermissionUtils; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * 售后工单 Mapper */ @Mapper public interface AfterSaleTicketMapper extends BaseMapperX { default AfterSaleTicketDO selectByNo(String no) { return selectOne(AfterSaleTicketDO::getNo, no); } default PageResult selectPage(PageParam pageParam, Long userId, Integer sceneType, String no, String name, Long customerId, Long saleOrderId, Integer status, Integer issueType) { MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); // 数据权限 AfterSalePermissionUtils.appendPermissionCondition(query, AfterSaleBizTypeEnum.AFTER_SALE_TICKET.getType(), AfterSaleTicketDO::getId, userId, sceneType); // 查询条件 query.selectAll(AfterSaleTicketDO.class) .likeIfPresent(AfterSaleTicketDO::getNo, no) .likeIfPresent(AfterSaleTicketDO::getName, name) .eqIfPresent(AfterSaleTicketDO::getCustomerId, customerId) .eqIfPresent(AfterSaleTicketDO::getSaleOrderId, saleOrderId) .eqIfPresent(AfterSaleTicketDO::getStatus, status) .eqIfPresent(AfterSaleTicketDO::getIssueType, issueType) .orderByDesc(AfterSaleTicketDO::getId); return selectJoinPage(pageParam, AfterSaleTicketDO.class, query); } default List selectListByCustomerId(Long customerId) { return selectList(new LambdaQueryWrapperX() .eq(AfterSaleTicketDO::getCustomerId, customerId)); } default AfterSaleTicketDO selectBySaleOrderId(Long saleOrderId) { return selectOne(AfterSaleTicketDO::getSaleOrderId, saleOrderId); } default Long selectCountByOwnerUserId(Long ownerUserId) { return selectCount(AfterSaleTicketDO::getOwnerUserId, ownerUserId); } }