package com.cool.store.mapper;

import com.cool.store.entity.ShopAccountDO;
import com.cool.store.request.DeskRequest;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.common.Mapper;

import java.util.Date;
import java.util.List;

public interface ShopAccountMapper extends Mapper<ShopAccountDO> {

    /**
     * 批量新增店铺账号
     * @param list 店铺账号列表
     * @return 影响的行数
     */
    int batchInsert(List<ShopAccountDO> list);

    /**
     * 根据shopId查询多条数据
     * @param shopId 店铺ID
     * @return 店铺账号列表
     */
    List<ShopAccountDO> selectByShopId(Long shopId);

    /**
     * 根据shopId与系统名称查询
     * @param shopId
     * @param systemName
     * @return
     */
    ShopAccountDO selectByShopIdAndSystemName(@Param("shopId") Long shopId , @Param("systemName") String systemName);

    /**
     * 根据shopId与system_name修改status
     * @param shopId 店铺ID
     * @param systemName 系统名称
     * @param status 状态
     * @param lastSyncTime 最后同步时间
     * @return 影响的行数
     */
    int updateStatusByShopIdAndSystemName(
            @Param("shopId") Long shopId,
            @Param("systemNameList") List<String> systemNameList,
            @Param("status") Integer status,
            @Param("syncTime") Date lastSyncTime,
            @Param("ylsCode") String ylsCode
    );

    int updateEntryStatusByShopIdAndSystemName(
            @Param("shopId") Long shopId,
            @Param("systemNameList") List<String> systemNameList,
            @Param("entryStatus") Integer entryStatus
    );

    int updateAccountByShopIdAndSystemName(
            @Param("shopId") Long shopId,
            @Param("systemName") String systemName,
            @Param("account") String account,
            @Param("password") String password,
            @Param("status") Integer status
    );


    /**
     * 批量修改密码和密码盐
     * @param shopIds 店铺ID列表
     * @param password 新密码
     * @param passwordSalt 新密码盐
     * @param lastSyncTime 最后同步时间
     * @return 影响的行数
     */
    int batchUpdatePasswordByShopIds(
            @Param("shopIds") List<Long> shopIds,
            @Param("password") String password,
            @Param("secondaryPassword") String secondaryPassword,
            @Param("passwordSalt") String passwordSalt,
            @Param("lastSyncTime") Date lastSyncTime
    );


    /**
     * 查询云流水、新掌柜 POS失败的数据 重新推数据
     * @return
     */
    List<ShopAccountDO> getALlFail();


    Integer dateHandle(@Param("list") List<ShopAccountDO> list);

    /**
     * @Auther: wangshuo
     * @Date: 2025/4/28
     * @description: 获取特定字段
     */
    List<ShopAccountDO> getSpecificByShopIds(@Param("shopIds") List<Long> shopIds);

    //数据处理用
    List<Long> getPasswordIsNull();

    Integer updateStatusDataHandle(@Param("list") List<Long> shopIds);

    /**
     * 进件待办列表
     * @param request
     * @param systemName
     * @return
     */
    List<ShopAccountDO> getEntryPendingList(@Param("request") DeskRequest request, @Param("systemName") String systemName);


}