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

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

import java.util.List;

/**
 * @Author 陈标
 * @Date 2020/3/25 14:57
 */
@Repository
public interface NewHintOrderDao {
    /**
     * 扫描
     * 定时任务专用
     * 勿动
     * @param query
     * @return
     */
    List<Order> syncScan(OrderQuery query);

    /**
     * 批量更新
     * @param list
     * @return
     */
    int updateBizType(@Param("list") List<Long> list);

    int updateEncryptById(@Param("list") List<Long> list);

    /**
     * 插入
     *
     * @param list
     * @return
     */
    int replaceList(@Param("list") List<Order> list);

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

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

    /**
     * 扫描
     * @param orderNoList
     * @return:
     * @Date: 2020/12/21 5:06 PM
     */
    List<Order> selectByOrderNo(@Param("orderNoList") List<String> orderNoList);

    /**
     * 统计数量
     * @return
     */
    int count(OrderQuery query);

    /**
     * 批量更新
     * @param idList
     * @param syncFlag
     * @return
     */
    int updateSyncFlag(@Param("idList") List<Long> idList,
                       @Param("syncFlag") Integer syncFlag);


    /**
     * 管理员批量修改订单
     *
     * @param order 修改条件和内容
     * @return
     */

    int update(Order order);

    /**
     * 批量更新订单商品与订单优惠信息
     *
     * @param orderList
     * @return
     */
    int updateList(List<Order> orderList);

    /**
     * 批量更新
     * @param order
     * @return:
     * @Date: 2021/1/18 9:52 下午
     */
    int batchUpdatePayDetails(List<Order> order);

    /**
     * 批量更新订单商品快照
     * @param order
     * @return:
     * @Date: 2021/2/19 2:13 下午
     */
    int batchUpdateItemInfo(List<Order> order);

    /**
     * 批量更新
     * @param order
     * @return
     * Date: 2021/5/19 4:57 下午
     */
    int batchUpdateOrderInfo(List<Order> order);

    /**
     * 批量更新支付信息
     * @param order
     * @return
     * Date: 2021/5/25 4:28 下午
     */
    int batchUpdatePayDetailInfo(List<Order> order);

    /**
     * 批量回滚
     * @param order
     * @return
     * Date: 2021/5/25 3:53 下午
     */
    int batchUpdateOrderRollBack(List<Order> order);

    int batchUpdateOrder(List<Order> order);

    /**
     *  特定结果查询
     * @param query
     * @return
     */
    List<Order> selectList(OrderQuery query);

    List<Order> selectListById(List<Long> list);

    List<Order> selectListByIdTemp(List<Long> list);

    List<Order> selectListBySyncFlag(@Param("list") List<Long> list,
                                     @Param("syncFlag") Integer syncFlag,
                                     @Param("deleteTypeList") List<Integer> deleteTypeList);

    /**
     * 修改零时数据
     * @param order
     * @return
     */
    int updateFlag(Order order);

    /**
     * 批量删除
     * @param list
     * @return:
     * @Date: 2020/12/17 2:38 PM
     */
    void batchDeleted(List<Long> list);

    /**
     * 批量删除
     * @param list
     * @return:
     * @Date: 2020/12/17 2:38 PM
     */
    void physicalDeleted(List<Long> list);
}
