package com.muchinfo.mtp3century.service;

import com.muchinfo.mtp3century.utils.AjaxResult;
import com.muchinfo.mtp3pojos.entity.*;
import com.muchinfo.mtp3pojos.vo.FileMetaVo;
import com.muchinfo.mtp3pojos.vo.HolderDetailExRedisVo;
import com.muchinfo.mtp3pojos.vo.RealtimeQuoteVo;
import com.muchinfo.mtp3pojos.vo.bankcusbank.BankCusBankExtendResult;
import com.muchinfo.mtp3pojos.vo.common.*;
import com.muchinfo.mtp3pojos.vo.taaccount.TaAccountQueryResult;
import com.muchinfo.mtp3pojos.vo.taaccount.TaAccountReportParam;

import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;

public interface ICommonService {
    String getUserLoginCode(HttpServletRequest request);

    String getSystemParam(String redisHeaderSysparam, String sysparamCodeDefaultPwd);

    AjaxResult<OrganSelectResult> queryOrganSelect(OrganSelectParam vo, HttpServletRequest request);

    AjaxResult<FileMetaVo> uploadFile(HttpServletRequest request);

    AjaxResult getEnumType(String typeCode, HttpServletRequest request);

    AjaxResult<InvestorSelectResult> queryInvestorSelect(InvestorSelectParam investorSelectParam, HttpServletRequest request);

    AjaxResult<BankAccountsign> getSignBank(HttpServletRequest request);

    AjaxResult<CusBankInfoResult> getBankInfoByCusBank(String cusBankId, String bankName, HttpServletRequest request);

    AjaxResult<TAAccountChildrenResult> queryTAAccountChildren(String accountName, Long areaUserId, HttpServletRequest request);

    AjaxResult<GoodsSelectResult> queryGoodsSelect(GoodsSelectParam param, HttpServletRequest request);

    AjaxResult<Market> getOrderListAll(List<Long> markets, HttpServletRequest request);

    AjaxResult<InvestorSelectResult> getOrganListAll(Long userId, String searchCode, HttpServletRequest request);

    String getSysparmById(String number);

    BigDecimal calcFloaPL(String quoteGoodsCode, BigDecimal agreeUnit, Integer buyorsell, Integer holderqty, BigDecimal holderamount);

    AjaxResult<BankCusbankinfo> getAllBankCus(HttpServletRequest request);

    AjaxResult<BankCusBankExtendResult> queryBooleanForAmount(String cusbankid, Integer extendbiztype, Integer usabletype, HttpServletRequest request);

    boolean checkUserAccountRole(Systemmanager sm, Long userid);

    boolean checkTaAccountReport(Systemmanager systemmanager, Long accountid);

    boolean checkIsAreaSon2(Long areauserid, Long userid);

    AjaxResult<CommonResult> queryCommonFlag(CommonParam commonParam, HttpServletRequest request);

    Boolean checkOranCardNumOrMobile(Integer checkType, Integer checkField, Long userid, String message);

    AjaxResult<BankAccountsign> getBankAccountSign(Long accountcode, Integer signstatus, HttpServletRequest request);

    AjaxResult queryMoney(Long accountid, Integer type, Integer mtype, HttpServletRequest request);

    boolean checkTaaccountReport(Systemmanager systemmanager, Long accountid);

    boolean checkLoginAccountRole(Systemmanager systemmanager, Long loginid);

    void sendMsg(Loginaccount la, int type);

    List<HolderDetailExRedisVo> getHolderDetailExFromRedis(HolderDetailExRedisVo holderDetailExRedisVo, int flag);

    AjaxResult<OrganSelectResult> queryOrganSelect2And3(OrganSelectParam param, HttpServletRequest request);

    RealtimeQuoteVo getRealtimeQuote(String goodscode, int decimalplace);

    AjaxResult<Taaccount> queryAccountId(Long userid, HttpServletRequest request);

    AjaxResult<TaAccountQueryResult> queryTAAccountList(TaAccountReportParam param, HttpServletRequest request);

    AjaxResult<Userinfo>  queryUserinfoUserId(Long userid, HttpServletRequest request);

    AjaxResult<OrganSelectResult> queryExchSonOrgin(OrganSelectParam vo, HttpServletRequest request);

    AjaxResult<WskhOpenaccountconfig> queryConfig(Long configid, HttpServletRequest request);

    AjaxResult<Taaccount> queryAccountIdForMarket(Long userid, HttpServletRequest request);
}
