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