Files
2026-05-11 17:49:38 +08:00

245 lines
7.4 KiB
PHP
Executable File

<?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,
];
}
}