/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.ldt.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.gateway.web_gateway.entity.vo.YeePayInfoVO;
import org.springblade.ldt.shop.dto.ArtificialWechatApplyDto;
import org.springblade.ldt.shop.entity.Shop;
import org.springblade.ldt.shop.vo.ShopVO;
import org.springblade.ldt.shop.vo.WechatConfigQueryVO;
import org.springblade.yeePay.entity.saas.InvitationDto;
import org.springblade.yeePay.entity.saas.MicroInvitationDto;
import org.springblade.yeePay.entity.saas.WechatApplyDto;
import org.springblade.yeePay.entity.saas.WechatConfigAddDto;

import java.util.List;

/**
 * 服务类
 *
 * @author BladeX
 * @since 2021-09-23
 */
public interface IShopService extends BaseService<Shop> {

	/**
	 * 自定义分页
	 *
	 * @param page
	 * @param shop
	 * @return
	 */
	IPage<ShopVO> selectShopPage(IPage<ShopVO> page, ShopVO shop);

	/**
	 * @param businessId 商店id
	 * @return 微信实名认证信息
	 * @description 根据商店id查询微信实名认证信息
	 * @author July
	 * @createdTime 2021/10/18 15:34
	 */
	WechatApplyDto getAuthAuditInfo(String businessId);

	/**
	 * @param artificialWechatApplyDto 微信实名认证信息
	 * @return 申请是否成功信息
	 * @description 商店进行微信实名认证申请
	 * @author July
	 * @createdTime 2021/10/18 15:35
	 */
	String wechatApply(ArtificialWechatApplyDto artificialWechatApplyDto);

	/**
	 * @param businessId 商店id
	 * @return 商户授权状态信息
	 * @description 根据商店id查询商户授权状态
	 * @author July
	 * @createdTime 2021/10/18 15:33
	 */
	String getAuthStateQuery(String businessId);

	/**
	 * @param shopId 商店id
	 * @return 商户易宝信息
	 * @description 根据商店id获取易宝信息
	 * @author July
	 * @createdTime 2021/10/18 15:30
	 */
	YeePayInfoVO getMerchantInfo(Long shopId);

	/**
	 * @param businessId 商店id
	 * @description 根据商店id查询公众号配置
	 * @author July
	 * @param: businessId
	 * @createdTime 2021/10/18 15:31
	 * @return: org.springblade.core.tool.api.R<java.util.List < org.springblade.ldt.shop.vo.WechatConfigQueryVO>>
	 */
	R<List<WechatConfigQueryVO>> getWechatConfigQuery(String businessId);

	/**
	 * @param wechatConfigAddDto 公众号配置信息
	 * @return 配置是否成功信息
	 * @description 商店配置公众号
	 * @author July
	 * @createdTime 2021/10/18 15:32
	 */
	R wechatConfigAdd(WechatConfigAddDto wechatConfigAddDto);

	/**
	 * @param microInvitationDto: 小微进件信息
	 * @Return R 易宝请求结果
	 * @Author July
	 * @Description 人工小微进件
	 * @Date 2021/11/22 14:08
	 */
	R inviteMicro(MicroInvitationDto microInvitationDto);

	/**
	 * @param invitationDto: 商户进件信息
	 * @Return R 易宝请求结果
	 * @Author July
	 * @Description 人工商户进件
	 * @Date 2021/11/22 16:10
	 */
	R inviteMerchant(InvitationDto invitationDto);
}
