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

import com.zm.order.tool.server.model.OrderItem;
import com.zm.order.tool.server.query.OrderItemQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Author 陈标
 * @Date 2020/3/25 14:58
 */
@Repository
public interface HintOrderItemDao {

    /**
     * 扫描
     *
     * @param orderNoList
     * @return
     */
    List<OrderItem> list(@Param("orderNoList") List<String> orderNoList);

    /**
     * 扫描
     *
     * @param list
     * @return
     */
    List<OrderItem> listById(@Param("list") List<Long> list);

    /**
     * 扫描
     *
     * @param query
     * @return
     */
    List<OrderItem> scanList(OrderItemQuery query);

    /**
     * 扫描
     * @param query
     * @return:
     * @Date: 2020/12/21 5:06 PM
     */
    List<Long> scan(OrderItemQuery query);

    /**
     * 修改订单商品
     *
     * @param query
     * @return
     */
    int update(OrderItemQuery query);

    /**
     * 批量更新商品类型
     * @param list
     * @return
     * Date: 2021/5/19 4:11 下午
     */
    int updateItemType(List<OrderItem> list);

    /**
     * 批量设置bizType = 1
     * @param list
     * @return
     * Date: 2021/5/25 3:58 下午
     */
    int updateBizTypeRollBack(List<OrderItem> list);

    /**
     * 更新订单删除字段
     *
     * @param orderNoList
     * @return
     */
    int updateDeleted(@Param("orderNoList") List<String> orderNoList);

    /**
     * 更新用户ID
     *
     * @param orderNo
     * @param userId
     * @return
     */
    int updateUserId(@Param("userId") Long userId, @Param("orderNo") String orderNo);

    /**
     * 修改bizType
     *
     * @param orderNoList
     * @param bizType
     * @return
     */
    int updateBizType(@Param("orderNoList") List<String> orderNoList, @Param("bizType") Integer bizType);

    /**
     * 修改bizType sellerId
     *
     * @param newOrderItemList
     * @param bizType
     * @param sellerId
     * @return
     */
    int updateBizTypeSellerId(@Param("list") List<OrderItem> newOrderItemList,
                              @Param("bizType") Integer bizType, @Param("sellerId") Long sellerId);

    /**
     * 批量删除
     * @param orderNoList
     * @return:
     * @Date: 2020/12/17 2:38 PM
     */
    void physicalDeleted(@Param("orderNoList") List<String> orderNoList);

    /**
     * 批量删除
     * @param orderNoList
     * @return:
     * @Date: 2020/12/17 2:38 PM
     */
    void physicalDeletedTest(@Param("orderNoList") List<String> orderNoList);

    /**
     * 更新商品类型
     * @date 2021/9/3 17:55
     * @param orderItemIdList
     * @param itemType
     * @return int
     **/
    int updateItemTypeByIds(List<Long> orderItemIdList, Integer itemType);

    void batchUpdateDate(List<Long> list);

    /**
     * 扫描
     *
     * @return
     */
    List<OrderItem> checkItem();

}
