Рубрики
Uncategorized

Анализ необходимости и тематическое исследование уровня обслуживания

Автор оригинала: David Wong.

Предисловие

Ранее я видел вопрос типа “Необходимо ли разделять уровень обслуживания в рамках Yii2?” Из ответов других людей я также собрал ответы, но я думаю, что все еще существует потребность в живом просе, чтобы иметь более четкое и мощное убеждение. Если вас интересует мой реальный боевой опыт, вы также можете нажать на рекомендацию и коллекцию. Прежде чем поднимать просо, позвольте мне сначала поговорить о сервисе. Каков эффект? Чтобы кто-нибудь еще не запутался. 1. Что такое сервис? В системах, ориентированных на OO, служба является менеджером бизнеса, а в системах, ориентированных на процессы, – ее сценарием. 2. Какую роль играет сервис? Роль уровня обслуживания заключается в инкапсуляции этой сложной бизнес-логики, для участия в которой требуется несколько моделей. Эти модели больше не полагаются непосредственно друг на друга, а взаимодействуют для завершения логики на уровне обслуживания. Первая цель уровня обслуживания на самом деле состоит в том, чтобы отделить слой модели.

анализ требований

1. Установите уровень обслуживания в структуре Yii2 для работы с общей и сложной бизнес-логикой.

Эскизный проект

1. Установите уровень обслуживания в разделе общие.

2. Некоторая общая логика обработки данных (основная обработка данных написана здесь).

анализ кода

1. Напишите ответвление службы ключей. PHP-файл в общей службе. Класс обслуживания филиала Clues наследует Chance, основной класс модели этого модуля. Все, что касается публичной бизнес-логики Chance, записано в этом файле.

namespace common\service;

use Yii;
use api\modules\v1\models\Sales;
use api\modules\v1\chance\models\Chance;

/**
 *// Common Data Processing Logic for Subordinate Cables
 */
class CluesBranchService extends Chance
{   
    // A list of clues for subordinates
    public static function getIndex()
    {    
        $SalesModel = new Sales(); 
        $uids = $SalesModel->sevenChild(Yii::$app->user->id);
        if(count($uids)){
            $query = Chance::find()->where(['in','owner_id',$uids]);
        }else{
            $query = Chance::find()->where(['owner_id'=>'-1']);
        }
       return $query;
    }
}

2. Вызовите контролеров.

use common\service\CluesBranchService;

$query = CluesBranchService::getIndex();

Примечание: Здесь возвращено значение $query, а не результаты запроса. Все, кто пользовался Yii2, знают, что список разбит на страницы с помощью ActiveDataProvider, и нет необходимости выяснять результаты. Чтобы унифицировать, мы возвращаем $query непосредственно здесь. Если есть особая необходимость добавить, где и где, или для получения результатов данных, $query – > где ([‘условие’]); $query – > все ().

Анализ и резюме

Выше приведена простая реализация уровня обслуживания с бизнес-логикой. Некоторые люди могут задаться вопросом, следует ли разделять уровень обслуживания или нет. В общем резюме, если вам нужно использовать несколько моделей для бизнес-логики, поместите ее на уровень обслуживания. Если это просто собственный бизнес модели, он не имеет ничего общего с другими моделями, просто поместите его в модель. Если ваша система невелика, ваша бизнес-логика очень проста, и нет необходимости в долгосрочных эволюционных итерациях, вы можете написать ее так, как вам нравится.

Сопутствующая информация

Необходимо ли разделять уровень обслуживания в рамках Yii2? Https://segmentfault.com/q/1010000003849810