feat: 添加批量采购询盘分页/导出接口

This commit is contained in:
2025-03-13 16:23:37 +08:00
parent 23032ee36d
commit 401e1de33f
5 changed files with 202 additions and 5 deletions

View File

@@ -0,0 +1,102 @@
<?php
declare (strict_types = 1);
namespace app\admin\controller\v1;
use app\admin\model\v1\BulkPurchaseInquiryModel;
/**
* 批量采购询盘控制器
*/
class BulkPurchaseInquiry
{
// 分页
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',
'ip' => 'IP',
'corp_name' => '公司名称',
'username' => '姓名',
'email' => '邮箱',
'phone' => '手机号友',
'interested' => '想采购的产品',
'message' => '询问内容',
'created_at' => '提交时间',
];
// 获取要导出的采购询盘数据
$data = $this->getExportData();
// 导出
return xlsx_writer($data, $schema);
}
// 获取要导出的采购询盘数据
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();
}
}

View File

@@ -0,0 +1,46 @@
<?php
declare (strict_types = 1);
namespace app\admin\model\v1;
use app\common\model\BulkPurchaseInquiryBaseModel;
/**
* 批量采购询盘模型
* @mixin \think\Model
*/
class BulkPurchaseInquiryModel extends BulkPurchaseInquiryBaseModel
{
// 按语言查询
public function scopeLanguage($query, $value)
{
$query->where('language_id', '=', $value);
}
// 公司名称搜索
public function searchCorpNameAttr($query, $value)
{
if (is_null($value)) return;
$query->where('corp_name', 'like', "%{$value}%");
}
// 兴趣(感兴趣的产品分类)
public function searchInterestedAttr($query, $value)
{
if (is_null($value)) return;
$query->where('interested', 'like', "%{$value}%");
}
// 添加时间搜索
public function searchCreatedAtAttr($query, $value)
{
if (is_null($value)) return;
if (is_array($value)) {
if (count($value) > 1) {
$query->whereBetweenTime('created_at', $value[0], $value[1]);
} else {
$query->whereTime('created_at', $value[0]);
}
}
}
}

View File

@@ -528,6 +528,15 @@ Route::group('v1', function () {
Route::get('export', 'LeaveMessage/export'); Route::get('export', 'LeaveMessage/export');
}); });
// 反馈管理 - 批量采购底盘列表
Route::group('bp/inquiry', function() {
// 批量采购底盘列表分页
Route::get('index', 'BulkPurchaseInquiry/index');
// 批量采购底盘列表导出
Route::get('export', 'BulkPurchaseInquiry/export');
});
// 配置项列表 // 配置项列表
Route::group('config', function() { Route::group('config', function() {
// 配置分组 // 配置分组

View File

@@ -0,0 +1,38 @@
<?php
declare (strict_types = 1);
namespace app\common\model;
/**
* 批量采购询盘模型
* @mixin \think\Model
*/
class BulkPurchaseInquiryBaseModel extends BaseModel
{
// 表名
protected $name = 'bulk_purchase_inquiry';
// 主键
protected $pk = 'id';
// 字段信息
protected $schema = [
'id' => 'int',
'language_id' => 'int',
'corp_name' => 'string',
'first_name' => 'string',
'last_name' => 'string',
'email' => 'string',
'phone' => 'string',
'province' => 'string',
'city' => 'string',
'district' => 'string',
'street' => 'string',
'interested' => 'string',
'url' => 'string',
'referer_url' => 'string',
'message' => 'string',
'ip' => 'string',
'created_at' => 'datetime'
];
}

View File

@@ -34,11 +34,13 @@ class CreateBulkPurchaseInquiry extends Migrator
->addColumn('last_name', 'string', ['limit' => 64, 'null' => false, 'comment' => '名']) ->addColumn('last_name', 'string', ['limit' => 64, 'null' => false, 'comment' => '名'])
->addColumn('email', 'string', ['limit' => 128, 'null' => false, 'comment' => '邮箱']) ->addColumn('email', 'string', ['limit' => 128, 'null' => false, 'comment' => '邮箱'])
->addColumn('phone', 'string', ['limit' => 32, 'null' => false, 'comment' => '电话']) ->addColumn('phone', 'string', ['limit' => 32, 'null' => false, 'comment' => '电话'])
->addColumn('province', 'string', ['limit' => 64, 'null' => false, 'comment' => '省']) ->addColumn('province', 'string', ['limit' => 64, 'null' => true, 'comment' => '省'])
->addColumn('city', 'string', ['limit' => 64, 'null' => false, 'comment' => '市']) ->addColumn('city', 'string', ['limit' => 64, 'null' => true, 'comment' => '市'])
->addColumn('district', 'string', ['limit' => 64, 'null' => false, 'comment' => '区']) ->addColumn('district', 'string', ['limit' => 64, 'null' => true, 'comment' => '区'])
->addColumn('address', 'string', ['limit' => 255, 'null' => false, 'comment' => '地址']) ->addColumn('address', 'string', ['limit' => 255, 'null' => true, 'comment' => '地址'])
->addColumn('interest', 'string', ['limit' => 255, 'null' => false, 'comment' => '兴趣(感兴趣的产品品类)']) ->addColumn('interested', 'string', ['limit' => 255, 'null' => false, 'comment' => '兴趣(感兴趣的产品品类)'])
->addColumn('url', 'string', ['limit' => 255, 'null' => true, 'comment' => '感兴趣产品所在官网URL'])
->addColumn('referer_url', 'string', ['limit' => 255, 'null' => true, 'comment' => '来源URL'])
->addColumn('message', 'text', ['null' => false, 'comment' => '留言内容']) ->addColumn('message', 'text', ['null' => false, 'comment' => '留言内容'])
->addColumn('ip', 'string', ['limit' => 64, 'null' => false, 'comment' => 'IP']) ->addColumn('ip', 'string', ['limit' => 64, 'null' => false, 'comment' => 'IP'])
->addColumn('created_at', 'timestamp', ['null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => '创建时间']) ->addColumn('created_at', 'timestamp', ['null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => '创建时间'])