first
This commit is contained in:
123
modules/Cms/Models/Article.php
Normal file
123
modules/Cms/Models/Article.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Models;
|
||||
|
||||
use App\Models\Model;
|
||||
use App\Traits\HasClicks;
|
||||
use App\Traits\HasCovers;
|
||||
use App\Traits\HasStatus;
|
||||
use App\Traits\OrderByIdDesc;
|
||||
use Encore\Admin\Traits\Resizable;
|
||||
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Modules\Cms\Traits\HasTags;
|
||||
use Modules\Task\Facades\TaskFacade;
|
||||
use Modules\Task\Models\Task;
|
||||
use Overtrue\LaravelFavorite\Traits\Favoriteable;
|
||||
use Overtrue\LaravelSubscribe\Traits\Subscribable;
|
||||
use Overtrue\LaravelVersionable\Versionable;
|
||||
|
||||
class Article extends Model
|
||||
{
|
||||
|
||||
use Cachable,
|
||||
HasClicks,
|
||||
HasCovers,
|
||||
HasTags,
|
||||
Subscribable,
|
||||
Favoriteable,
|
||||
HasStatus,
|
||||
OrderByIdDesc,
|
||||
Resizable,
|
||||
Versionable,
|
||||
SoftDeletes;
|
||||
|
||||
protected $table = 'cms_articles';
|
||||
|
||||
protected $casts = [
|
||||
'pictures' => 'json',
|
||||
'attachments' => 'json',
|
||||
];
|
||||
|
||||
/**
|
||||
* 不参与版本记录的字段
|
||||
*
|
||||
* @var array|string[]
|
||||
*/
|
||||
protected array $dontVersionable = ['clicks', 'updated_at'];
|
||||
|
||||
/**
|
||||
* Notes: 阅读记录
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/10/20 9:57
|
||||
* @return HasMany
|
||||
*/
|
||||
public function logs(): HasMany
|
||||
{
|
||||
return $this->hasMany(Log::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes: 阅读
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/10/20 9:57
|
||||
* @param int $user_id
|
||||
*/
|
||||
public function read($user_id = '')
|
||||
{
|
||||
$this->incrementClicks();
|
||||
if ($user_id) {
|
||||
$this->logs()->create([
|
||||
'user_id' => $user_id
|
||||
]);
|
||||
|
||||
if (Task::query()->shown()->where('key', 'tour_article')->first()) {
|
||||
# todo 阅读得水滴
|
||||
TaskFacade::do('tour_article', $user_id);
|
||||
}
|
||||
|
||||
if (Task::query()->shown()->where('key',
|
||||
'read_article')->first() && $this->categories()->Health()->first()) {
|
||||
# todo 阅读100次得水滴
|
||||
TaskFacade::do('read_article', $user_id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 文章所属分类
|
||||
*
|
||||
* @Date : 2021/4/15 12:44 下午
|
||||
* @Author : < Jason.C >
|
||||
* @return BelongsToMany
|
||||
*/
|
||||
public function categories(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Category::class, 'cms_article_category')
|
||||
->using(ArticleCategory::class)
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 获取附件的下载地址
|
||||
*
|
||||
* @Date : 2021/4/16 12:01 下午
|
||||
* @Author : < Jason.C >
|
||||
* @return Collection
|
||||
*/
|
||||
public function getAttachmentsUrlAttribute(): Collection
|
||||
{
|
||||
return collect($this->attachments)->map(function ($item) {
|
||||
return Storage::url($item);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user