Files
fdesk/app/crmAdmin/controller/CustomerController.php
T
2025-08-18 16:54:24 +08:00

234 lines
6.9 KiB
PHP

<?php
namespace app\crmAdmin\controller;
use app\common\model\Corp;
use app\crm\model\Customer;
use app\crmAdmin\service\CustomerService;
use support\Request;
class CustomerController extends BaseController
{
/**
* 不需要头信息的方法
*/
protected $noNeedHeader = [];
protected $noNeedHeaderData = ['export'];
protected $noNeedLogin = ['export'];
/**
* 客户列表
* @param Request $request
* @return \support\Response
*/
public function list(Request $request)
{
try {
$param = $request->all();
$corp = Corp::where(['abbr' => $request->basic_data['corp_abbr']])->first();
$param['corp_abbr'] = $corp->id;
// $param['corp_abbr'] = $request->basic_data['corp_abbr'];
$result = (new CustomerService())->list($param);
return $this->success($this->page($result));
} catch (\Throwable $e) {
return $this->error($e->getMessage().$e->getFile().$e->getLine().$e->getTraceAsString());
}
}
/**
* 客户导出
* @param Request $request
* @return \support\Response
*/
public function export(Request $request)
{
try {
$param = $request->all();
// $corp = Corp::where(['abbr' => $request->basic_data['corp_abbr']])->first();
// $param['corp_abbr'] = $corp->id;
$result = (new CustomerService())->export($param);
$excelContent = file_get_contents($result['filepath']);
// 生成文件名
$filename = '客户数据_' . date('Y-m-d_H-i-s') . '.xlsx';
return response()
->withHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
->withHeader('Content-Disposition', 'attachment; filename="'.$filename.'"')
->withBody($excelContent);
/*$result = (new CustomerService())->export($param);
// 检查文件是否存在
if (!file_exists($result['filepath'])) {
return $this->error('导出文件生成失败');
}
// 获取文件信息
$fileSize = filesize($result['filepath']);
$filename = $result['filename'];
// 设置响应头
$response = response()->file($result['filepath']);
$response->header('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$response->header('Content-Disposition', 'attachment; filename="' . $filename . '"');
$response->header('Content-Length', $fileSize);
$response->header('Cache-Control', 'no-cache, must-revalidate');
$response->header('Pragma', 'no-cache');
return $response;*/
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 审核客户
* @param Request $request
* @return \support\Response
*/
public function audit(Request $request)
{
try {
$param = $request->all();
if (empty($param['id'])) {
return $this->error('ID'.trans('not_null'));
}
if (!in_array($param['scene'],['delete','report'])) {
return $this->error('scene 不合法');
}
$result = (new CustomerService())->audit($param);
return $this->success($result);
} catch (\Throwable $e) {
return $this->error($e->getMessage().$e->getFile().$e->getLine().$e->getTraceAsString());
}
}
/**
* 批量转让
* @param Request $request
* @return \support\Response
*/
public function transfer(Request $request)
{
try {
$param = $request->all();
if (empty($param['customer_id'])) {
return $this->error('customer_id'.trans('not_null'));
}
if (empty($param['user_id'])) {
return $this->error('user_id'.trans('not_null'));
}
$result = (new CustomerService())->transfer($param);
return $this->success($result);
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
/**
* 移除
* @param Request $request
* @return \support\Response
*/
public function delete(Request $request)
{
try {
$param = $request->all();
if (empty($param['customer_id'])) {
return $this->error('customer_id'.trans('not_null'));
}
$where = [
'id' => $param['customer_id'],
];
$customer = Customer::where($where)->withTrashed()->first();
if(empty($customer)){
return $this->error( trans('fail'));
}
//软删除
$customer->status = 3;
$res = $customer->save();
$customer->delete();
return $this->success($res);
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
/**
* 客户详情
* @param Request $request
* @return \support\Response
*/
public function detail(Request $request)
{
try {
$param = $request->all();
if (empty($param['id'])) {
return $this->error('id'.trans('not_null'));
}
$result = (new CustomerService())->detail($param);
return $this->success($result);
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
/**
* 客户详情
* @param Request $request
* @return \support\Response
*/
public function follow(Request $request)
{
try {
$param = $request->all();
if (empty($param['id'])) {
return $this->error('id'.trans('not_null'));
}
$result = (new CustomerService())->follow($param);
return $this->success($result);
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
/**
* 离职员工客户分配
* @param Request $request
* @return \support\Response
*/
public function allocation(Request $request)
{
try {
$param = $request->all();
if (empty($param['corp_id'])) {
return $this->error('corp_id'.trans('not_null'));
}
if (empty($param['user_id'])) {
return $this->error('user_id'.trans('not_null'));
}
$result = (new CustomerService())->allocation($param);
return $this->success($result,'成功分配'.$result['userCount'].'位离职用户的'.$result['customerCount'].'位客户');
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
}