package com.ruoyi.frequency.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.controller.req.RegisterUserReq;
import com.ruoyi.controller.req.UserEditReqVo;
import com.ruoyi.frequency.store.entity.Store;
import com.ruoyi.frequency.store.model.result.StoreCount;
import com.ruoyi.response.ResponseData;
import com.ruoyi.vo.UserVo;

import java.util.List;

/**
 * 商户Service接口
 *
 * @author liwenlong
 * @date 2023-09-22
 */
public interface StoreService extends IService<Store>
{
    /**
     * 查询商户
     *
     * @param id 商户主键
     * @return 商户
     */
    public Store selectStoreById(Long id);

    /**
     * 查询商户列表
     *
     * @param store 商户
     * @return 商户集合
     */
    public List<Store> selectStoreList(Store store);


    StoreCount statistics(Store store);
    /**
     * 新增商户
     *
     * @param store 商户
     * @return 结果
     */
    public int insertStore(Store store);

    /**
     * 修改商户
     *
     * @param store 商户
     * @return 结果
     */
    public int updateStore(Store store);

    /**
     * 批量删除商户
     *
     * @param ids 需要删除的商户主键集合
     * @return 结果
     */
    public int deleteStoreByIds(Long[] ids,Integer delFlag);

    /**
     * 删除商户信息
     *
     * @param id 商户主键
     * @return 结果
     */
    public int deleteStoreById(Long id);


    /**
     * 修改扣款金额
     * @param store
     * @return
     */
    int updateViolationDeduction(Store store);

    /**
     * 设置为企业
     * @param store
     * @return
     */
    AjaxResult setUpEnterprise(Store store);

    /**
     * 修改余额
     * @param store
     * @return
     */
    AjaxResult updateBalance(Store store);


    Store assembleStore(RegisterUserReq req, String md5Pwd);

    void saveIdNo(Long id);

    /**
     * 编辑用户信息
     * @param req
     * @param userVo
     * @return
     */
    ResponseData editInfo(UserEditReqVo req, UserVo userVo);

    /**
     * 用户个人信息
     * @param userVo
     * @return
     */
    ResponseData info(UserVo userVo);

    int getAuthStore(List<Long> userIds,Integer ifHighend);

    /**
     * 设置为平台
     * @param store
     * @return
     */
    AjaxResult setUpPlatform(Store store);

    AjaxResult setDDAuth(Store store);

    AjaxResult setCommissionRatio(Store store);

    void canCancellation(Long userId);
}
