245 lines
7.4 KiB
PHP
245 lines
7.4 KiB
PHP
<?php
|
|
|
|
namespace app\adminapi\logic;
|
|
|
|
use app\common\logic\BaseLogic;
|
|
use app\common\model\Fan;
|
|
use app\common\model\FanVisitRecord;
|
|
use think\facade\Db;
|
|
|
|
class FanLogic extends BaseLogic
|
|
{
|
|
/**
|
|
* @notes 添加粉丝
|
|
* @param array $params
|
|
* @return int|bool
|
|
*/
|
|
public static function add(array $params)
|
|
{
|
|
try {
|
|
if (!empty($params['phone'])) {
|
|
$exists = Fan::where('phone', $params['phone'])
|
|
->where('delete_time', null)
|
|
->find();
|
|
if ($exists) {
|
|
self::setError('该手机号已存在');
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!empty($params['id_card'])) {
|
|
$exists = Fan::where('id_card', $params['id_card'])
|
|
->where('delete_time', null)
|
|
->find();
|
|
if ($exists) {
|
|
self::setError('该身份证号已存在');
|
|
return false;
|
|
}
|
|
}
|
|
|
|
$fan = Fan::create([
|
|
'name' => $params['name'],
|
|
'phone' => $params['phone'] ?? '',
|
|
'id_card' => $params['id_card'] ?? '',
|
|
'age' => $params['age'] ?? 0,
|
|
'gender' => $params['gender'] ?? 0,
|
|
'remark' => $params['remark'] ?? '',
|
|
'creator_id' => $params['creator_id'] ?? 0,
|
|
'creator_name' => $params['creator_name'] ?? '',
|
|
'status' => $params['status'] ?? 1,
|
|
]);
|
|
|
|
return $fan->id;
|
|
} catch (\Exception $e) {
|
|
self::setError($e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @notes 编辑粉丝
|
|
* @param array $params
|
|
* @return bool
|
|
*/
|
|
public static function edit(array $params)
|
|
{
|
|
try {
|
|
if (!empty($params['phone'])) {
|
|
$exists = Fan::where('phone', $params['phone'])
|
|
->where('id', '<>', $params['id'])
|
|
->where('delete_time', null)
|
|
->find();
|
|
if ($exists) {
|
|
self::setError('该手机号已存在');
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!empty($params['id_card'])) {
|
|
$exists = Fan::where('id_card', $params['id_card'])
|
|
->where('id', '<>', $params['id'])
|
|
->where('delete_time', null)
|
|
->find();
|
|
if ($exists) {
|
|
self::setError('该身份证号已存在');
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Fan::update([
|
|
'id' => $params['id'],
|
|
'name' => $params['name'],
|
|
'phone' => $params['phone'] ?? '',
|
|
'id_card' => $params['id_card'] ?? '',
|
|
'age' => $params['age'] ?? 0,
|
|
'gender' => $params['gender'] ?? 0,
|
|
'remark' => $params['remark'] ?? '',
|
|
'status' => $params['status'] ?? 1,
|
|
]);
|
|
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
self::setError($e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @notes 删除粉丝
|
|
* @param array $params
|
|
* @return bool
|
|
*/
|
|
public static function delete(array $params)
|
|
{
|
|
try {
|
|
Fan::destroy($params['id']);
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
self::setError($e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @notes 粉丝详情
|
|
* @param array $params
|
|
* @return array
|
|
*/
|
|
public static function detail(array $params)
|
|
{
|
|
$fan = Fan::findOrEmpty($params['id']);
|
|
if ($fan->isEmpty()) {
|
|
return [];
|
|
}
|
|
$data = $fan->append(['gender_desc', 'status_desc'])->toArray();
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* @notes 添加回访记录
|
|
* @param array $params
|
|
* @return int|bool
|
|
*/
|
|
public static function addVisitRecord(array $params)
|
|
{
|
|
try {
|
|
$fan = Fan::findOrEmpty($params['fan_id']);
|
|
if ($fan->isEmpty()) {
|
|
self::setError('粉丝不存在');
|
|
return false;
|
|
}
|
|
|
|
$record = FanVisitRecord::create([
|
|
'fan_id' => $params['fan_id'],
|
|
'visit_type' => $params['visit_type'] ?? 1,
|
|
'visit_time' => !empty($params['visit_time']) ? strtotime($params['visit_time']) : time(),
|
|
'content' => $params['content'] ?? '',
|
|
'result' => $params['result'] ?? '',
|
|
'next_visit_time' => !empty($params['next_visit_time']) ? strtotime($params['next_visit_time']) : null,
|
|
'operator_id' => $params['operator_id'] ?? 0,
|
|
'operator_name' => $params['operator_name'] ?? '',
|
|
]);
|
|
|
|
return $record->id;
|
|
} catch (\Exception $e) {
|
|
self::setError($e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @notes 编辑回访记录
|
|
* @param array $params
|
|
* @return bool
|
|
*/
|
|
public static function editVisitRecord(array $params)
|
|
{
|
|
try {
|
|
FanVisitRecord::update([
|
|
'id' => $params['id'],
|
|
'visit_type' => $params['visit_type'] ?? 1,
|
|
'visit_time' => !empty($params['visit_time']) ? strtotime($params['visit_time']) : time(),
|
|
'content' => $params['content'] ?? '',
|
|
'result' => $params['result'] ?? '',
|
|
'next_visit_time' => !empty($params['next_visit_time']) ? strtotime($params['next_visit_time']) : null,
|
|
]);
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
self::setError($e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @notes 删除回访记录
|
|
* @param array $params
|
|
* @return bool
|
|
*/
|
|
public static function deleteVisitRecord(array $params)
|
|
{
|
|
try {
|
|
FanVisitRecord::destroy($params['id']);
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
self::setError($e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @notes 回访记录列表
|
|
* @param array $params
|
|
* @return array
|
|
*/
|
|
public static function visitRecordLists(array $params)
|
|
{
|
|
$where = [];
|
|
if (!empty($params['fan_id'])) {
|
|
$where[] = ['fan_id', '=', $params['fan_id']];
|
|
}
|
|
|
|
$pageNo = $params['page_no'] ?? 1;
|
|
$pageSize = $params['page_size'] ?? 15;
|
|
|
|
$count = FanVisitRecord::where($where)->count();
|
|
$lists = FanVisitRecord::where($where)
|
|
->append(['visit_type_desc'])
|
|
->order('id', 'desc')
|
|
->page($pageNo, $pageSize)
|
|
->select()
|
|
->toArray();
|
|
|
|
foreach ($lists as &$item) {
|
|
$item['visit_time_text'] = $item['visit_time'] ? date('Y-m-d H:i', $item['visit_time']) : '';
|
|
$item['next_visit_time_text'] = $item['next_visit_time'] ? date('Y-m-d H:i', $item['next_visit_time']) : '';
|
|
}
|
|
|
|
return [
|
|
'count' => $count,
|
|
'lists' => $lists,
|
|
'page_no' => $pageNo,
|
|
'page_size' => $pageSize,
|
|
];
|
|
}
|
|
}
|