| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 |
- <?php
- namespace addons\CloudStockTwo\backend\controllers;
- use addons\Agent\common\models\Agent;
- use addons\CloudStockTwo\common\enums\CloudStockTwoEnum;
- use addons\CloudStockTwo\common\models\CloudStockTwoAgent;
- use addons\CloudStockTwo\common\models\CloudStockTwoAgentGoods;
- use addons\CloudStockTwo\common\models\CloudStockTwoDeductionDetail;
- use addons\CloudStockTwo\common\models\CloudStockTwoGoodsStockLog;
- use addons\CloudStockTwo\common\models\CloudStockTwoIncreaseDetail;
- use addons\CloudStockTwo\common\models\CloudStockTwoLevel;
- use common\enums\AddonsEnum;
- use common\enums\DownloadEnum;
- use common\enums\StatusEnum;
- use common\enums\UserWalletEnum;
- use common\helpers\csv\CsvExportHelper;
- use common\models\common\CapitalLog;
- use common\models\common\CapitalStatistics;
- use common\models\common\CommissionLog;
- use common\models\goods\Goods;
- use common\models\user\User;
- use services\common\UserWalletService;
- use addons\SalesCompany\common\models\SalesCompany;
- use Yii;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\CloudStockTwo\backend\controllers
- */
- class DefaultController extends BaseController
- {
- public $enableCsrfValidation = false;
- public function actionIndex()
- {
- if (\Yii::$app->request->isAjax) {
- $params = Yii::$app->request->get();
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
- if (!empty($params['keyword'])) {
- $user_list = User::find()->where(['or',
- ['id' => $params['keyword']],
- ['mobile' => $params['keyword']],
- ['nickname' => $params['keyword']]])->select('id')->asArray()->all();
- $user_id_arr = array_column($user_list, 'id');
- $where[] = ['user_id' => $user_id_arr];
- }
- if (!empty($params['level'])) $where[] = ['level' => $params['level']];
- if (!empty($params['start'])) $where[] = ['>=', 'created_at', strtotime($params['start'] . ' 00:00:00')];
- if (!empty($params['end'])) $where[] = ['>=', 'created_at', strtotime($params['end'] . ' 00:00:00')];
- $params['where'] = $where;
- $params['order'] = 'id desc';
- $params['with'] = ['user'];
- $page_data = CloudStockTwoAgent::listPage($params, false);
- if (!empty($page_data['list'])) {
- $level_arr = array_column($page_data['list'], 'level');
- $parent_id_arr = [];
- $supplier_id_arr = [];
- foreach ($page_data['list'] as $val) {
- $parent_id_arr[] = $val['user']['parent_id'];
- $parent_agent = CloudStockTwoAgent::getUserParentAgent($val['user_id'], $val['level']);
- if (!empty($parent_agent)) {
- $supplier_id_arr[$val['user_id']] = $parent_agent['user_id'];
- }
- }
- $parent_arr = User::lists(['where' => [['id' => $parent_id_arr]], 'index' => 'id', 'select' => 'id,nickname,avatar_url,mobile,parent_id']);
- $before_level_arr = array_column($page_data['list'], 'before_level');
- $level_list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['level' => $level_arr],['status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]], 'index' => 'level']);
- $before_level_arr_list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['level' => $before_level_arr],['status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]], 'index' => 'level']);
- $user_ids = array_column($page_data['list'], 'user_id');
- $agent_goods_arr = CloudStockTwoAgentGoods::lists(['where' => [['user_id' => $user_ids]], 'select' => 'sum(num) num,user_id', 'group' => 'user_id', 'index' => 'user_id']);
- foreach ($page_data['list'] as &$item) {
- $item['level_name'] = $level_list[$item['level']]['name'] ?? '';
- $item['before_level_name'] = $before_level_arr_list[$item['before_level']]['name'] ?? '';
- $item['goods_stock'] = $agent_goods_arr[$item['user_id']]['num'] ?? 0;
- $item['parent_name'] = '平台';
- if (isset($parent_arr[$item['user']['parent_id']])) {
- $item['parent_name'] = $parent_arr[$item['user']['parent_id']]['nickname'] ? $parent_arr[$item['user']['parent_id']]['nickname'] : $item['user']['parent_id'];
- }
- $item['supplier_name'] = '平台';
- if (isset($supplier_id_arr[$item['user_id']])) {
- $supplier_id = $supplier_id_arr[$item['user_id']];
- $item['supplier_name'] = !empty($parent_arr[$supplier_id]['nickname']) ? $parent_arr[$supplier_id]['nickname'] : '供货商:' . $supplier_id;
- }
- }
- }
- return $this->success('操作成功', $page_data);
- }
- return $this->render('index', [
- ]);
- }
- public function actionEdit()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isGet) {
- $id = Yii::$app->request->get('id', '');
- $setting = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO, 'basic');
- $data = CloudStockTwoLevel::getOne([['id' => $id], ['mall_id' => $this->mall_id], ['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]], true);
- $configs['setting'] = $setting;
- if (!empty($data)) {
- $data['checked_condition_values'] = json_decode($data['checked_condition_values'], true);
- $data['checked_condition_keys'] = json_decode($data['checked_condition_keys'], true);
- $data['give_quota'] = json_decode($data['give_quota'], true);
- }
- return $this->success('操作成功', $data);
- }
- if ($request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['level', 'user_id'], 'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['upgrade_status'] = CloudStockTwoEnum::UPGRADE_STATUS_MANUAL;
- $params['upgrade_at'] = time();
- $res = CloudStockTwoAgent::getOne([['mall_id' => $this->mall_id], ['user_id' => $params['user_id']], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]]);
- if ($res) return $this->error('该会员已是代理商');
- $res = CloudStockTwoAgent::setData($params);
- if ($res === false) return $this->error(CloudStockTwoAgent::getStaticError());
- return $this->success('操作成功');
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- return $this->render('edit');
- }
- public function actionRemarksEdit()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $params = \Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id'], 'required'],
- [['remarks'], 'safe']
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $res = CloudStockTwoAgent::setData($params);
- if ($res === false) return $this->error(CloudStockTwoAgent::getStaticError());
- return $this->success('操作成功');
- }
- }
- return $this->error();
- }
- public function actionDelete()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $params = \Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id'], 'required'],
- [['id'], 'integer']
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['status'] = StatusEnum::DELETE;
- $res = CloudStockTwoAgent::setData($params);
- if ($res === false) return $this->error(CloudStockTwoAgent::getStaticError());
- return $this->success('操作成功');
- }
- }
- return $this->error();
- }
- public function actionLevelChange()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $params = \Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id', 'level'], 'required'],
- [['level'], 'integer']
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['upgrade_status'] = CloudStockTwoEnum::UPGRADE_STATUS_MANUAL;
- $res = CloudStockTwoAgent::setData($params);
- if ($res === false) return $this->error(CloudStockTwoAgent::getStaticError());
- return $this->success('操作成功');
- }
- }
- return $this->error();
- }
- //不用验证权限
- public function actionGetLevelList()
- {
- $list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]],'order'=>'level asc']);
- return $this->success('操作成功', $list);
- }
- //不用验证权限
- public function actionSearchUser()
- {
- if (\Yii::$app->request->isAjax) {
- $keyword = \Yii::$app->request->get('keyword', '');
- $list['list'] = User::searchUser(['keyword' => $keyword, 'mall_id' => $this->mall_id]);
- return $this->success('操作成功', $list);
- }
- return $this->error();
- }
- public function actionStock()
- {
- if (\Yii::$app->request->isAjax) {
- $params = Yii::$app->request->get();
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
- if (!empty($params['keyword'])) {
- $user_list = User::find()->where(['or',
- ['id' => $params['keyword']],
- ['like', 'mobile', $params['keyword']],
- ['like', 'nickname', $params['keyword']]])->select('id')->asArray()->all();
- $user_id_arr = array_column($user_list, 'id');
- $where[] = ['user_id' => $user_id_arr];
- }
- if (!empty($params['level'])) $where[] = ['level' => $params['level']];
- if (!empty($params['start'])) $where[] = ['>=', 'created_at', strtotime($params['start'] . ' 00:00:00')];
- if (!empty($params['end'])) $where[] = ['>=', 'created_at', strtotime($params['end'] . ' 00:00:00')];
- $params['where'] = $where;
- $params['order'] = 'level desc';
- $params['with'] = 'user';
- $page_data = CloudStockTwoAgent::listPage($params, false);
- if (!empty($page_data['list'])) {
- $level_arr = array_column($page_data['list'], 'level');
- $user_ids = array_column($page_data['list'], 'user_id');
- $where = [['in', 'user_id', $user_ids]];
- $level_list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['level' => $level_arr], ['status' => StatusEnum::ENABLED]], 'index' => 'level']);
- $agent_goods_list = CloudStockTwoAgentGoods::lists(['where' => [['user_id' => $user_ids]], 'select' => 'sum(num) num ,user_id', 'group' => 'user_id', 'index' => 'user_id']);
- foreach ($page_data['list'] as &$item) {
- $item['level_name'] = $level_list[$item['level']]['name'] ?? '';
- $item['total_stock_num'] = 0;
- if (isset($agent_goods_list[$item['user_id']])) $item['total_stock_num'] = $agent_goods_list[$item['user_id']]['num'];
- }
- }
- return $this->success('操作成功', $page_data);
- }
- return $this->render('stock');
- }
- public function actionStockLog()
- {
- if (\Yii::$app->request->isAjax) {
- $params = Yii::$app->request->get();
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- if (!empty($params['keyword'])) {
- $user_list = User::find()->where(['or',
- ['id' => $params['keyword']],
- ['like', 'mobile', $params['keyword']],
- ['like', 'nickname', $params['keyword']]])->select('id')->asArray()->all();
- $user_id_arr = array_column($user_list, 'id');
- // $where[] = ['user_id' => $user_id_arr];
- $company_list = SalesCompany::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['user_id' => $params['keyword']],
- ['like', 'name', $params['keyword']],
- ]]]);
- $company_id_arr = array_column($company_list, 'id');
- $where[] = [
- 'or',
- ['user_id' => $user_id_arr],
- ['company_id' => $company_id_arr],
- ];
- } else {
- if ($params['keyword'] != '') {
- $where[] = ['user_id' => 0];
- }
- }
- if (!empty($params['goods_name'])) {
- $goods_list = Goods::find()->where([
- 'like', 'goods_name', $params['goods_name']])->select('id')->asArray()->all();
- $goods_list_arr = array_column($goods_list, 'id');
- $where[] = ['goods_id' => $goods_list_arr];
- }
- if (!empty($params['order_id'])) $where[] = ['order_id' => $params['order_id']];
- if (!empty($params['changes_type'])) $where[] = ['changes_type' => $params['changes_type']];
- if (!empty($params['start'])) $where[] = ['>=', 'created_at', strtotime($params['start'] . ' 00:00:00')];
- if (!empty($params['end'])) $where[] = ['>=', 'created_at', strtotime($params['end'] . ' 00:00:00')];
- if(isset($params['order_type']) && !empty($params['order_type'])){
- $where[] = ['order_type' => $params['order_type']];
- }
- $params['order'] = 'id desc';
- $params['with'] = ['goods', 'user'];
- $params['where'] = $where;
- if ($params['log_type'] == 'add') {
- $page_data = CloudStockTwoIncreaseDetail::listPage($params, false);
- } else {
- $page_data = CloudStockTwoDeductionDetail::listPage($params, false);
- }
- if (!empty($page_data['list'])) {
- foreach ($page_data['list'] as &$item) {
- if (isset($item['user']['id'])) {
- $item['agent_user_id'] = $item['user']['id'];
- $item['agent_user_avatar_url'] = $item['user']['avatar_url'];
- $item['agent_user_nickname'] = $item['user']['nickname'];
- } else {
- $item['agent_user_id'] = $item['user_id'];
- $item['agent_user_avatar_url'] = '';
- if($item['is_sales'] && $item['company_id']){
- $salesCompany = SalesCompany::findOne(['id'=>$item['company_id']]);
- $item['agent_user_id'] = $salesCompany ? $salesCompany->user_id : 0;
- $item['agent_user_nickname'] = $salesCompany ? $salesCompany->name : '';
- }else{
- $item['agent_user_nickname'] = '平台';
- }
- }
- }
- }
- return $this->success('操作成功', $page_data);
- }
- return $this->render('stock-log');
- }
- //不用验证权限
- public function actionGetChangesTypeList()
- {
- $data = [
- [
- 'increase' => [
- ['value' => 100, 'desc' => '向上级补货',],
- ['value' => 101, 'desc' => '上级给自己配货',],
- ['value' => 102, 'desc' => '退货退库存',],
- ['value' => 103, 'desc' => '系统添加',],
- ['value' => 104, 'desc' => '平台补货赠送',],
- ['value' => 105, 'desc' => '购买礼包赠送',]
- ],
- 'deduction' => [
- ['value' => 200, 'desc' => '会员买货',],
- ['value' => 201, 'desc' => '给下级配货',],
- ['value' => 202, 'desc' => '下级向自己补货',],
- ['value' => 203, 'desc' => '自提货到线下',],
- ['value' => 204, 'desc' => '系统扣减',]
- ]
- ]
- ];
- return $this->success('success', $data);
- }
- public function actionPriceLog()
- {
- CapitalLog::$capitalType = 'commission';
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $filename = '佣金列表-' . date('YmdHis') . '_' . rand(10000, 99999);
- $data = \Yii::$app->request->post();
- $data['table'] = 'commission';
- $data['mall_id'] = $this->mall_id;
- $data['from_type'] = CloudStockTwoEnum::ADDONS_NAME;
- $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_ASSETS, CapitalLog::class, 'exportAssets', $data);
- if ($res === false) return $this->error('加入导出任务失败' . CsvExportHelper::getStaticError());
- return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
- }
- $page = \Yii::$app->request->get('page') ?? 1;
- $limit = \Yii::$app->request->get('page_size') ?? $this->pageSize;
- $get = \Yii::$app->request->get();
- $params[] = ['log.mall_id' => $this->mall_id];
- if ($get['status'] == 0) {
- //查询冻结表,未结算数据
- $params[] = ['in', 'log.status', [-1, 0]];
- CapitalLog::$capitalType = 'commission_frozen';
- }
- if (!empty($get['capital_type'])) $params[] = ['log.capital_type' => $get['capital_type']];
- if (!empty($get['remark'])) $params[] = ['like', 'log.desc', $get['remark']];
- if (!empty($get['keyword'])){
- $user_list = User::lists([
- 'where'=>[
- ['or',
- ['like', 'nickname', $get['keyword']],
- ['like', 'mobile', $get['keyword']]
- ]
- ],
- 'select'=>'id',
- ]);
- $user_ids = array_column($user_list,'id');
- }
- if(isset($user_ids)) $params[] = ['log.user_id' => $user_ids];
- if (!empty($get['user_id'])) $params[] = ['log.user_id' => $get['user_id']];
- $date = 0;
- if (!empty($get['date'])) {
- $start = strtotime(date($get['date'] . '-01'));
- $end = strtotime(date($get['date'] . '-t'));
- $params[] = ['>=', 'log.created_at', $start];
- $params[] = ['<=', 'log.created_at', $end];
- if (isset($params['end']) && $params['end'] != '') {
- $where[] = ['<', 'pl.created_at', strtotime($params['end'])];
- }
- }
- $params[] = ['log.from_type' => CloudStockTwoEnum::ADDONS_NAME];
- $params = [
- 'alias' => 'log',
- 'select' => 'log.id,log.created_at,log.mall_id,log.user_id,log.change_type,log.change_num,log.current_num,log.desc,log.from_type,
- log.capital_type,log.created_at',
- 'where' => $params,
- 'order' => 'id desc',
- 'page' => $page,
- 'limit' => $limit,
- ];
- $list = CapitalLog::listPage($params, false, true);
- $commission_map = UserWalletEnum::getCommissionMap();
- $list['date'] = '';
- $capital_type_map = UserWalletEnum::getCapitalTypeMapByCommission();
- if (!empty($list['list'])) {
- $user_id_arr = array_column($list['list'],'user_id');
- $user_arr = User::lists([
- 'where'=>[
- ['id'=>$user_id_arr]
- ],
- 'index'=>'id',
- ]);
- foreach ($list['list'] as &$lv) {
- $lv['source_text'] = ($commission_map[$lv['from_type']] ?? '') . ($capital_type_map[$lv['capital_type']] ? '-' . $capital_type_map[$lv['capital_type']] : '');
- $lv['created_at'] = date('Y-m-d H:i:s', $lv['created_at']);
- $lv['nickname'] = '';
- $lv['avatar_url'] = '';
- $lv['mobile'] = '';
- $lv['username'] = '';
- if(isset($user_arr[$lv['user_id']])){
- $lv['nickname'] = $user_arr[$lv['user_id']]['nickname'];
- $lv['avatar_url'] = $user_arr[$lv['user_id']]['avatar_url'];
- $lv['mobile'] = $user_arr[$lv['user_id']]['mobile'];
- $lv['username'] = $user_arr[$lv['user_id']]['username'];
- }
- }
- }
- // 业务类型
- $list['commissionFromTypeList'] = $commission_map;//来源类型
- $list['incomeCapitalTypeList'] = $capital_type_map;//佣金类型
- // 导出字段列表
- $list['export_list'] = CommissionLog::EXPORT_FIELD_LIST;
- CapitalLog::$capitalType = 'commission_frozen';
- $frozen_capital_total = CapitalLog::find()->where(['mall_id' => $this->mall_id, 'from_type' => CloudStockTwoEnum::ADDONS_NAME, 'status' => 0])->sum('change_num');
- $statistics_data['frozen_capital_total'] = 0;
- $statistics_data['commission_total'] = 0;
- if (!empty($frozen_capital_total)) $statistics_data['frozen_capital_total'] = bcsub($frozen_capital_total,1,2);
- CapitalLog::$capitalType = 'commission';
- $commission_total = CapitalLog::find()->where(['mall_id' => $this->mall_id, 'from_type' => CloudStockTwoEnum::ADDONS_NAME,'change_type'=>'add'])->sum('change_num');
- if(!empty($commission_total)) $statistics_data['commission_total'] = $commission_total;
- $statistics_data['commission_total']+=$statistics_data['frozen_capital_total'];
- $list['statistics_data'] = $statistics_data;
- $list['export_list'] = CapitalLog::exportFieldsList();
- return $this->success('操作成功', $list);
- } else {
- $flag = \Yii::$app->request->post('flag');
- if (empty($flag)) {
- return $this->render('price-log');
- } else {
- // 导出数据
- }
- }
- return $this->render('price-log');
- }
- public function actionSettlement()
- {
- $wallet_type = 'commission';
- CapitalLog::$capitalType = "{$wallet_type}_frozen";
- $res = false;
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $params = \Yii::$app->request->post();
- $res = UserWalletService::unfrozen($params['id'], $wallet_type);
- }
- }
- return $this->success('成功', $res);
- }
- public function actionChangeGoodsStock()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $params = \Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['user_id', 'changes_dir', 'goods_id', 'num'], 'required'],
- [['remark'], 'safe'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- if ($params['changes_dir'] == CloudStockTwoEnum::STOCK_CHANGE_ADD) {
- $changes_dir = CloudStockTwoEnum::CHANGE_TYPE_INCREASE_PLATFORM;
- } elseif ($params['changes_dir'] == CloudStockTwoEnum::STOCK_CHANGE_SUB) {
- $changes_dir = CloudStockTwoEnum::CHANGE_TYPE_DEDUTION_PLATFORM;
- } else {
- return $this->error("changes_dir错误");
- }
- if ($params['num'] < 1) {
- return $this->error('操作数量最小值为0');
- }
- $stock_params = [
- 'goods_id' => $params['goods_id'],
- 'number' => $params['num'],
- 'user_id' => $params['user_id'],
- 'order_id' => 0,
- 'remark' => $params['remark'],
- ];
- $res_handle_stock = CloudStockTwoGoodsStockLog::stockHandle($this->mall_id, $stock_params, $changes_dir);
- if (false === $res_handle_stock) return $this->error(CloudStockTwoGoodsStockLog::getStaticError());
- return $this->success('操作成功', $res_handle_stock);
- }
- }
- return $this->error();
- }
- }
|