package com.zm.order.tool.server.dao;

import com.zm.order.tool.server.model.ItemCommentQuery;
import com.zm.order.tool.server.model.OrderItemComment;
import com.zm.order.tool.server.model.RecommendItem;
import com.zm.order.tool.server.query.OrderItemCommentUserCountQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 订单商品表
 *
 * @author nianchang
 */
@Repository
public interface OrderItemCommentDao {

    /**
     * 更新
     * @param itemComment
     * @return
     * Date: 2021/5/27 4:15 下午
     */
    int update(OrderItemComment itemComment);

    /**
     * 查询
     * @param orderNo
     * @param sellerId
     * @return
     * Date: 2021/5/27 4:20 下午
     */
    List<RecommendItem> selectByUserId(@Param("orderNo") String orderNo, @Param("sellerId") Long sellerId);

    /**
     * 查询单条
     * @param itemCommentQuery
     * @return
     * Date: 2021/5/27 4:20 下午
     */
    OrderItemComment selectOne(ItemCommentQuery itemCommentQuery);

    /**
     * 根据订单号查询单条评价
     *
     * @param sellerId 商家id
     * @param orderNo 订单号
     * @param goodsId spuId
     * @param itemId skuId
     * @return 商品评价
     */
    OrderItemComment selectByOrderNo(@Param("sellerId") Long sellerId, @Param("orderNo") String orderNo,
                                     @Param("goodsId") Long goodsId, @Param("itemId") String itemId);

    /**
     * 查询列表
     * @param query
     * @return
     * Date: 2021/5/27 4:20 下午
     */
    List<OrderItemComment> selectList(ItemCommentQuery query);
    List<OrderItemComment> selectByOrderNoList(@Param("orderNoList") List<String> orderNoList, @Param("sellerId") Long sellerId);

    /**
     * 查询列表
     * 返回指定字段
     * @param query query
     * @return
     * Date: 2021/3/30 4:45 下午
     */
    List<Long> selectIdList(ItemCommentQuery query);

    /**
     * 批量新增
     * @param list
     * Date: 2021/5/7 6:32 下午
     */
    void insertList(List<OrderItemComment> list);

    /**
     * 批量新增
     * @param list
     * Date: 2021/5/7 6:32 下午
     */
    void replaceList(List<OrderItemComment> list);

    /**
     * 重置同步标识
     *
     * @param comment
     * @return
     */
    int resetFlag(OrderItemComment comment);

    /**
     * 删除评价（软删）
     *
     * @param id 主键
     * @param sellerId 商家id（分片建）
     * @param deleteType 删除类型
     * @return 是否成功
     */
    Integer delete(@Param("id") Long id,
                   @Param("sellerId") Long sellerId,
                   @Param("deleteType") Integer deleteType);

    /**
     * 查找id
     *
     * @param query
     * @return list
     */
    List<Long> selectCountIdList(OrderItemCommentUserCountQuery query);

    /**
     * 根据主键查询单条评价
     *
     * @param sellerId 商家id
     * @param id 主键
     * @return OrderItemComment
     */
    OrderItemComment selectById(@Param("sellerId") Long sellerId, @Param("id") Long id);

    int updateBatchToBaking(List<OrderItemComment> list, Long sellerId);

    List<OrderItemComment> selectCountFix(ItemCommentQuery query);

    int updateSellerUser(
            @Param("sellerId") Long sellerId,
            @Param("storeId") Long storeId,
            @Param("oldUserId") Long oldUserId,
            @Param("newUserId") Long newUserId,
            @Param("orderNo") String orderNo);

    int deleteByOrderNo(@Param("orderNo") String orderNo, @Param("sellerId") Long sellerId);

    /**
     * 查询列表
     * @param orderNo
     * @param sellerId
     * @return
     * Date: 2021/4/21 4:19 下午
     */
    List<OrderItemComment> selectByOrderNoNew(@Param("orderNo") String orderNo,
                                              @Param("sellerId") Long sellerId);
}
