Files
huangjingfen/pro_v3.5.1/app/services/community/CommunityRecordServices.php
panchengyong 7acbf45ff7 new files
2026-03-07 22:29:07 +08:00

110 lines
3.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\services\community;
use app\dao\community\CommunityRecordDao;
use app\services\BaseServices;
use think\annotation\Inject;
/**
* 社区记录
* Class CommunityRecordServices
* @package app\services\community
* @mixin CommunityRecordDao
*/
class CommunityRecordServices extends BaseServices
{
/**
* @var CommunityRecordDao
*/
#[Inject]
protected CommunityRecordDao $dao;
//点赞
const SET_TYPE_LIKE = 1;
//评论
const SET_TYPE_COMMENT = 2;
//关注
const SET_TYPE_FOLLOW = 3;
/**
* 获取社区记录列表
* @param array $where 查询条件
* @param string $field 查询字段
* @param int $page 页码
* @param int $limit 每页数量
* @return array
*/
public function getList(array $where, string $field = '*', int $page = 0, int $limit = 0)
{
if (!$limit) {
[$page, $limit] = $this->getPageValue();
}
$list = $this->dao->search($where)
->when($limit && $page, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})
->when($limit && !$page, function ($query) use ($limit) {
$query->limit($limit);
})
->field($field)
->order('add_time DESC')
->select()
->toArray();
$comment_ids = array_unique(array_column($list, 'link_id'));
$communityServices = app()->make(CommunityServices::class);
$communityUserServices = app()->make(CommunityUserServices::class);
$comment_list = $communityServices->getColumn(['id' => $comment_ids], 'image,content_type', 'id', true);
foreach ($list as &$item) {
$item['image'] = $comment_list[$item['link_id']]['image'] ?? '';
$item['content_type'] = $comment_list[$item['link_id']]['content_type'] ?? '';
$userFormat = $communityUserServices->getUserFormat($item['relation_id'] ? 2 : 0, $item['relation_id']);
$item['relation_author'] = $userFormat['author'];
$item['relation_author_image'] = $userFormat['author_image'];
$item['time_text'] = timeConverter($item['add_time']);
}
return $list;
}
/**
* 点赞评论关注是否查看
* @param $uid
* @return bool[]
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* User: liusl
* DateTime: 2025/1/2 上午11:46
*/
public function isViewed($uid)
{
$where = [
'uid' => $uid,
'is_viewed' => 0
];
$likeViewed = $this->dao->get($where + ['type' => self::SET_TYPE_LIKE]);
$commentViewed = $this->dao->get($where + ['type' => self::SET_TYPE_COMMENT]);
$followViewed = $this->dao->get($where + ['type' => self::SET_TYPE_FOLLOW]);
return [
'like' => $likeViewed ? 1 : 0,
'comment' => $commentViewed ? 1 : 0,
'follow' => $followViewed ? 1 : 0
];
}
}