package com.softwarebr.nunu.service.hall;

import com.softwarebr.nunu.dto.org.InvestOrgParamDTO;
import com.softwarebr.nunu.entity.hall.InvestOrg;
import com.brframework.commondb.core.EntityService;

import java.time.LocalDateTime;

/**
 * @author lilin
 * @date 2020-02-25 15:59:36
 */

public interface InvestOrgService extends EntityService<InvestOrg, Long, Object> {

    /**
     * 查询指定用户审核通过投资机构信息
     *
     * @param memberId 用户Id
     * @return
     */
    void checkInvestOrgVerify(Long memberId);

    /**
     * 认证投资机构
     *
     * @param memberId          认证用户 -1为平台
     * @param investOrgParamDTO 参数数据
     * @return
     */
    InvestOrg saveInvestOrg(Long memberId, InvestOrgParamDTO investOrgParamDTO);

    /**
     * 修改投资机构数据
     *
     * @param investOrgId       投资机构id
     * @param investOrgParamDTO 参数数据
     */
    void updateInvestOrg(Long investOrgId, InvestOrgParamDTO investOrgParamDTO);

    /**
     * 投资机构认证结果
     *
     * @param memberId
     * @return
     */
    InvestOrg getInvestOrgResult(Long memberId);

    /**
     * 时间区间统计审核通过投资机构数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    Long countInvestOrgByVerifyAdopt(LocalDateTime startDate, LocalDateTime endDate);

    /**
     * 投资机构上架
     *
     * @param investOrgId 投资机构id
     */
    void investOrgUpperShelf(Long investOrgId);

    /**
     * 投资机构下架
     *
     * @param investOrgId 投资机构id
     */
    void investOrgLowerShelf(Long investOrgId);

    /**
     * 投资机构认证审核
     *
     * @param investOrgId  投资机构id
     * @param verify       审核结果
     * @param verifyRemark 审核备注
     */
    void investOrgVerify(Long investOrgId, Integer verify, String verifyRemark);

}