文件
xionggeshop/addons/shopro/notifications/RegionalAgent.php

93 行
3.0 KiB
PHP

<?php
namespace addons\shopro\notifications;
use think\queue\ShouldQueue;
use addons\shopro\model\User;
/**
* 区域代理审核结果通知
*/
class RegionalAgent extends Notification implements ShouldQueue
{
public $delay = 0;
public $event = '';
public $data = [];
public static $returnField = [
'regional_agent_apply' => [
'name' => '区域公司审核结果',
'fields' => [
['name' => '申请用户', 'field' => 'nickname'],
['name' => '公司区域', 'field' => 'area_name'],
['name' => '区域层级', 'field' => 'area_level_text'],
['name' => '审核状态', 'field' => 'status'],
['name' => '申请时间', 'field' => 'create_date'],
['name' => '处理时间', 'field' => 'update_date'],
]
]
];
public function __construct($data = [])
{
$this->data = $data;
$this->event = $data['event'] ?? 'regional_agent_apply';
$this->initConfig();
}
public function toDatabase($notifiable)
{
$params = ['agent' => $this->data['agent'] ?? []];
$this->paramsData($params, $notifiable);
return $params;
}
public function toWxMiniProgram($notifiable)
{
$params = [];
if ($oauth = $this->getWxOauth($notifiable, 'wxMiniProgram')) {
$path = $this->getMiniDomainUrl('/pages/app/regional-agent/index');
$params['openid'] = $oauth->openid;
$params['page'] = $path;
$this->paramsData($params, $notifiable);
}
return $this->formatParams($params, 'wxMiniProgram');
}
private function paramsData(&$params, $notifiable)
{
$params['data'] = [];
if ($this->event === 'regional_agent_apply') {
$params['data'] = $this->applyData($notifiable);
}
}
private function applyData($notifiable)
{
$agent = $this->data['agent'] ?? [];
$levelName = '';
if (!empty($agent['level'])) {
$levelRow = \addons\shopro\model\regional_agent\Level::where('level', $agent['level'])->find();
$levelName = $levelRow ? $levelRow['name'] : '';
}
if (!$levelName) {
$levelMap = [1 => '省级', 2 => '市级', 3 => '区县'];
$levelName = $levelMap[$agent['area_level'] ?? 0] ?? '';
}
$statusMap = [
'normal' => '审核通过',
'forbidden' => '已禁用',
'reject' => '审核驳回',
];
return [
'template' => self::$returnField[$this->event]['name'],
'nickname' => $notifiable['nickname'] ?? '',
'area_name' => $agent['area_name'] ?? '',
'area_level_text' => $levelName,
'status' => $statusMap[$this->data['action'] ?? ''] ?? ($agent['status'] ?? ''),
'create_date' => !empty($agent['createtime']) ? date('Y-m-d H:i:s', $agent['createtime']) : '',
'update_date' => date('Y-m-d H:i:s'),
];
}
}