CRM/webman/app/controller/CustomerController.php
2025-03-14 14:27:33 +08:00

167 lines
4.7 KiB
PHP

<?php
namespace app\controller;
use app\model\Customer;
use app\util\Util;
use config\constants\Constants;
use support\Log;
use support\Request;
class CustomerController
{
/**
* 客户分级
* @param Request $request
* @return \support\Response
*/
public function getGrade(Request $request)
{
$grade = [];
foreach (Constants::GRADE as $key => $value) {
$grade[] = [
'status' => $key,
'text' => $value,
];
}
return json($grade);
}
/**
* 客户偏好
* @param Request $request
* @return \support\Response
*/
public function getCarType(Request $request)
{
$grade = [];
foreach (Constants::GRADE as $key => $value) {
$grade[] = [
'status' => $key,
'text' => $value,
];
}
return json($grade);
}
/**
* 客户列表
* @param Request $request
* @return \support\Response
*/
public function list(Request $request)
{
$page = $request->input('page', 1);
$perPage = $request->input('per_page', 10);
$where = [];
$userId = $request->user['id'];
if (Util::isEmpty($userId)) {
return Util::fail(['user_id' => $userId], trans('user_none'));
}
if ($request->user['role'] != 1) {
$where['user_id'] = $userId;
}
// 执行分页查询
$data = Customer::where($where)
->orderBy('id', 'desc')
->paginate($perPage, ['*'], 'page', $page);
foreach ($data->items() as &$value) {
$value = Customer::getCustomer($value);
}
return Util::page($data);
}
/**
* 客户详情
* @param Request $request
* @return \support\Response
*/
public function detail(Request $request)
{
$id = Util::getParam($request, 'id');
if (Util::isEmpty($id)) {
return Util::fail([], 'id' . trans('not_null'));
}
$res = Customer::select('id', 'user_id', 'grade', 'channel_id','car_type_id', 'country_id', 'magnitude', 'email', 'phone', 'WhatsApp', 'contacts', 'describe')
->where('id', $id)
->first();
if ($res) {
$res->toArray();
} else {
return Util::fail([], '记录不存在');
}
$res = Customer::getCustomer($res);
return Util::success($res);
}
/**
* 客户录入
* @param Request $request
* @return \support\Response
*/
public function save(Request $request)
{
$id = Util::getParam($request, 'id');
$channel_id = Util::getParam($request, 'channel_id');
if (Util::isEmpty($channel_id)) {
return Util::fail([], 'channel_id' . trans('not_null'));
}
$country_id = Util::getParam($request, 'country_id');
if (Util::isEmpty($country_id)) {
// return Util::fail([],'country_id'.trans('not_null'));
}
$car_type_id = Util::getParam($request, 'car_type_id');
if (Util::isEmpty($car_type_id)) {
return Util::fail([], 'car_type_id' . trans('not_null'));
}
$contacts = Util::getParam($request, 'contacts');
$email = Util::getParam($request, 'email');
$phone = Util::getParam($request, 'phone');
if (Util::isEmpty($contacts) && Util::isEmpty($email) && Util::isEmpty($phone)) {
return Util::fail([], 'country_id' . trans('not_null'));
}
$data = [
'user_id' => $request->user['id'],
'grade' => Util::getParam($request, 'grade', 0),
'channel_id' => $channel_id,
'country_id' => $country_id,
'car_type_id' => $car_type_id,
'magnitude' => Util::getParam($request, 'magnitude', 0),
'email' => $email,
'phone' => $phone,
'WhatsApp' => Util::getParam($request, 'WhatsApp',''),
'contacts' => $contacts,
'describe' => Util::getParam($request, 'describe'),
'lat' => Util::getParam($request, 'lat',0),
'lng' => Util::getParam($request, 'lng',0),
'address' => Util::getParam($request, 'address',''),
];
if (Util::isEmpty($id)) {
$res = Customer::create($data);
} else {
$res = Customer::where('id', $id)
->update($data);
// Log::info('update', ['res' => $res]);
(!$res)?: $res=Customer::find($id)->toArray();
}
if ($res) {
return Util::success($res);
} else {
return Util::fail($res);
}
}
}