package com.ruoyi.invest.mapper;

import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.invest.domain.AccountsDealRecord;
import com.ruoyi.invest.domain.dto.AccountsDealRecordDto;
import com.ruoyi.invest.domain.vo.AccountsDealRecordVo;

import java.util.List;
import java.util.Map;

/**
 * 账户交易记录Mapper接口
 *
 * @author tianyongbao
 * @date 2024-03-30
 */
public interface AccountsDealRecordMapper
{
    /**
     * 查询账户交易记录
     *
     * @param id 账户交易记录主键
     * @return 账户交易记录
     */
    public AccountsDealRecordVo selectAccountsDealRecordById(Long id);

    /**
     * 查询账户交易记录列表
     *
     * @param accountsDealRecordDto 账户交易记录
     * @return 账户交易记录集合
     */
    @DataScope(businessAlias = "a")
    public List<AccountsDealRecordVo> selectAccountsDealRecordList(AccountsDealRecordDto accountsDealRecordDto);

    /**
     * 新增账户交易记录
     *
     * @param accountsDealRecord 账户交易记录
     * @return 结果
     */
    public int insertAccountsDealRecord(AccountsDealRecord accountsDealRecord);

    /**
     * 修改账户交易记录
     *
     * @param accountsDealRecord 账户交易记录
     * @return 结果
     */
    public int updateAccountsDealRecord(AccountsDealRecord accountsDealRecord);

    /**
     * 删除账户交易记录
     *
     * @param id 账户交易记录主键
     * @return 结果
     */
    public int deleteAccountsDealRecordById(Long id);

    /**
     * 批量删除账户交易记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAccountsDealRecordByIds(Long[] ids);

    /**
     * 逻辑删除账户交易记录
     *
     * @param id 账户交易记录主键
     * @return 结果
     */
    public int removeAccountsDealRecordById(Long id);

    /**
     * 批量逻辑删除账户交易记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int removeAccountsDealRecordByIds(Long[] ids);

    /**
     * 删除账户交易记录
     *
     * @param id 账户交易记录主键
     * @return 结果
     */
    public int deleteAccountsDealRecordByTransferId(Long id);

    /**
     * 修改账户交易记录
     *
     * @param map 账户交易记录
     * @return 结果
     */
    public int batchPlusCurrentBalance(Map<String, Object> map);

    /**
     * 修改账户交易记录
     *
     * @param map 账户交易记录
     * @return 结果
     */
    public int batchMinusCurrentBalance(Map<String, Object> map);


    /**
     * 查询账户交易记录
     *
     * @param map 账户交易记录主键
     * @return 账户交易记录
     */
    public AccountsDealRecordVo getLastOneAccountsDealRecordByMap(Map<String, Object> map);
}
