<?php

namespace SRVX;

use JetBrains\PhpStorm\Pure;
use SRVX\Service\DemoService;
use SRVX\Service\FileManager\QiniuOssService;
use SRVX\Service\InitDbService;
use SRVX\Service\Merchant\MerchantService;
use SRVX\Service\Provider\ProviderService;

/**
 * Class Services
 * @package SRVX\Service
 */
class Service
{
    /**
     * @return DemoService()
     */
    public function demo()
    {
        return new Service\DemoService();
    }

    /**
     * @return Service\SetCenter\NavService
     */
    public function nav()
    {
        return new Service\SetCenter\NavService();
    }

    /**
     * @return Service\SetCenter\GeneralSetService
     */
    public function generalSet()
    {
        return new Service\SetCenter\GeneralSetService();
    }

    /**
     * @return Service\SetCenter\WebUnionService
     */
    public function webUnion()
    {
        return new Service\SetCenter\WebUnionService();
    }

    public function pvdAuth()
    {
        return new Service\SetCenter\PvdAuthService();
    }

    public function skip()
    {
        return new Service\Module\SkipService();
    }

    public function custom()
    {
        return new Service\Module\AppCustomService();
    }

    public function groupBuyCustom()
    {
        return new Service\Module\GroupBuyCustomService();
    }

    public function superGroupBuyCustom()
    {
        return new Service\Module\SuperGroupBuyCustomService();
    }

    public function user()
    {
        return new Service\MemberCenter\UserService();
    }

    public function userTag()
    {
        return new Service\MemberCenter\UserTagService();
    }

    public function withdraw()
    {
        return new Service\MemberCenter\WithdrawService();
    }

    public function withdrawExport()
    {
        return new Service\MemberCenter\WithdrawExportService();
    }

    public function ruleSet()
    {
        return new Service\RuleCenter\RuleService();
    }

    public function zmApi()
    {
        return new Service\Api\ZmApiService();
    }

    public function webSite()
    {
        return new Service\Api\WebSiteService();
    }

    /**
     * @return Service\OrderCenter\OrderService
     */
    public function order()
    {
        return new Service\OrderCenter\OrderService();
    }

    /**
     * @return Service\SetCenter\CloudBundleService
     */
    public function cloudBundle()
    {
        return new Service\SetCenter\CloudBundleService();
    }

    /**
     * @return Service\SetCenter\ArticleService
     */
    public function article()
    {
        return new Service\SetCenter\ArticleService();
    }

    /**
     * @return Service\SetCenter\ArticleCateService
     */
    public function articleCate()
    {
        return new Service\SetCenter\ArticleCateService();
    }

    /**
     * @return Service\SetCenter\ArticleTypeService
     */
    public function articleType()
    {
        return new Service\SetCenter\ArticleTypeService();
    }


    public function alipay()
    {
        return new Service\Pay\AlipayService();
    }

    public function sms()
    {
        return new Service\Common\SmsService();
    }

    public function userFlow()
    {
        return new Service\MemberCenter\UserFlowService();
    }

    public function productCategory()
    {
        return new Service\Product\CategoryService();
    }

    public function productMod()
    {
        return new Service\Product\ProductService();
    }

    public function productScreen()
    {
        return new Service\Product\ProductScreenService();
    }

    public function feedBack()
    {
        return new Service\Message\FeedBackService();
    }


    public function appPushTemplate()
    {
        return new Service\Message\AppPushTemplateService();
    }


    public function appPush()
    {
        return new Service\Message\AppPushService();
    }

    public function mob()
    {
        return new Service\Common\MobService();
    }

    public function newcomersFree()
    {
        return new Service\Marketing\NewcomersFreeService();
    }

    public function acquisition()
    {
        return new Service\Marketing\AcquisitionService();
    }

    public function moments()
    {
        return new Service\Marketing\MomentsService();
    }

    /**
     * @return Service\Tool\ImportExportService
     */
    public function importExport()
    {
        return new Service\Tool\ImportExportService();
    }

    public function userLevelAudit()
    {
        return new Service\MemberCenter\UserLevelAuditService();
    }

    public function privilege()
    {
        return new Service\Marketing\PrivilegeService();
    }

    public function privilegeOpenCard()
    {
        return new Service\Marketing\PrivilegeOpenCardService();
    }

    public function privilegeCardNum()
    {
        return new Service\Marketing\PrivilegeCardNumService();
    }

    public function privilegeBrand()
    {
        return new Service\Marketing\PrivilegeBrandService();
    }

    public function duoMaiBrand()
    {
        return new Service\Marketing\DuoMaiBrandService();
    }

    public function shakeCoupon()
    {
        return new Service\Marketing\ShakeCouponsService();
    }

    public function newAdmin()
    {
        return new Service\Common\NewAdminService();
    }

    public function examine()
    {
        return new Service\GroupBuy\ExamineService();
    }

    public function wx()
    {
        return new Service\Wx\CommService();
    }

    public function virtualCoin()
    {
        return new Service\SetCenter\VirtualCoinService();
    }

    /**
     * @param bool $isForce
     * @param array $extraConfig
     * @return QiniuOssService|null
     */
    public function oss($isForce = false, $extraConfig = [])
    {
        return QiniuOssService::init($isForce, $extraConfig);
    }

    public function initDb()
    {
        return new InitDbService();
    }

    /**
     * 商户service
     */
    public function merchant($uid): MerchantService
    {
        return New MerchantService($uid);
    }

    /**
     * @return ProviderService
     */
    public function provider(): ProviderService
    {
        return New ProviderService();
    }


}