Files
orico-official-website/app/admin/controller/v1/BulkPurchaseInquiry.php
2025-04-02 16:39:45 +08:00

122 lines
3.6 KiB
PHP

<?php
declare (strict_types = 1);
namespace app\admin\controller\v1;
use app\admin\model\v1\BulkPurchaseInquiryModel;
use app\admin\model\v1\LanguageModel;
use app\admin\model\v1\SysConfigModel;
/**
* 批量采购询盘控制器
*/
class BulkPurchaseInquiry
{
// 采购可选品类
public function interested()
{
$config_name = 'bulk_purchase_inquiry_interested';
$lang = LanguageModel::bypk(request()->lang_id)->find();
if (empty($lang)) {
return error('当前选定语言出错');
}
$config = SysConfigModel::byName($lang->code . '_' . $config_name)->find();
if (empty($config)) {
return error('当前选定语言的采购可选品类配置出错');
}
return success('获取成功', explode(',', preg_replace('/\r?\n/', ',', $config->value)));
}
// 分页
public function index()
{
$param = request()->param([
'corp_name',
'interested',
'created_at',
'page/d' => 1,
'size/d' => 10
]);
$msgs = BulkPurchaseInquiryModel::field([
'id',
'ip',
'corp_name',
'first_name',
'last_name',
'email',
'phone',
'interested',
'message',
'created_at'
])
->withSearch(['corp_name', 'interested', 'created_at'], [
'corp_name' => $param['corp_name'] ?? null,
'interested' => $param['interested'] ?? null,
'created_at' => !empty($param['created_at']) ? explode(',', $param['created_at']) : null
])
->language(request()->lang_id)
->order(['id' => 'desc'])
->paginate([
'list_rows' => $param['size'],
'page' => $param['page'],
]);
return success('获取成功', $msgs);
}
// 导出
public function export()
{
$schema = [
'id' => 'ID',
'created_at' => '提交时间',
'ip' => 'IP',
'corp_name' => '公司名称',
'username' => '姓名',
'email' => '邮箱',
'phone' => '手机号码',
'interested' => '想采购的产品',
'message' => '询问内容',
];
// 获取要导出的采购询盘数据
$data = $this->getExportData();
// 导出
return xlsx_writer($data, $schema, '批量购买询盘列表' . date('YmdHis'));
}
// 获取要导出的采购询盘数据
private function getExportData()
{
$param = request()->param([
'corp_name',
'interested',
'created_at',
]);
return BulkPurchaseInquiryModel::field([
'id',
'ip',
'corp_name',
'CONCAT(first_name, last_name)' => 'username',
'last_name',
'email',
'phone',
'interested',
'message',
'created_at'
])
->withSearch(['corp_name', 'interested', 'created_at'], [
'corp_name' => $param['corp_name'] ?? null,
'interested' => $param['interested'] ?? null,
'created_at' => !empty($param['created_at']) ? explode(',', $param['created_at']) : null
])
->language(request()->lang_id)
->order(['id' => 'desc'])
->select();
}
}