chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: ywxapp<admin@ywxapp.cn>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace addon\wxchat\model;
|
||||
|
||||
use ywxapp\model\BaseModel;
|
||||
use ywxapp\model\MemberUser as UserModel;
|
||||
|
||||
|
||||
class WxchatMoment extends BaseModel
|
||||
{
|
||||
|
||||
// 遗留完整表名(无 wxapp_ 前缀,须用 $table 显式声明,不能用 $name)
|
||||
protected $table = 'dynamics';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
protected $createTime = 'create_at';
|
||||
protected $updateTime = 'update_at';
|
||||
|
||||
// 关联:发布用户
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(UserModel::class, 'uid');
|
||||
}
|
||||
|
||||
// 关联:媒体文件
|
||||
|
||||
public function media()
|
||||
{
|
||||
return $this->hasMany(WxchatMomentMedia::class, 'mid');
|
||||
}
|
||||
|
||||
// 关联:评论
|
||||
|
||||
public function comments()
|
||||
{
|
||||
return $this->hasMany(WxchatMomentComment::class, 'mid');
|
||||
}
|
||||
|
||||
// 关联:点赞用户
|
||||
|
||||
public function likeUsers()
|
||||
{
|
||||
return $this->belongsToMany(UserModel::class, WxchatMomentLike::class, 'uid', 'mid');
|
||||
}
|
||||
|
||||
// 关联:收藏用户
|
||||
|
||||
public function collectUsers()
|
||||
{
|
||||
return $this->belongsToMany(UserModel::class, WxchatMomentCollect::class, 'uid', 'mid');
|
||||
}
|
||||
|
||||
// 关联:话题标签
|
||||
|
||||
public function hashtags()
|
||||
{
|
||||
return $this->belongsToMany(WxchatMomentHashtag::class, WxchatMomentHashtagAb::class, 'hid', 'mid');
|
||||
}
|
||||
|
||||
// 获取动态列表(带分页)
|
||||
|
||||
public static function getList($page = 1, $limit = 20, $userId = 0)
|
||||
{
|
||||
$query = self::with([
|
||||
'member' =>
|
||||
function($query) {
|
||||
$query->field('id,username,nickname,avatar');
|
||||
},
|
||||
'media' =>
|
||||
function($query) {
|
||||
$query->field('id,dynamic_id,type,url,thumbnail_url')
|
||||
->order('sort_order', 'asc')
|
||||
->limit(9); // 最多显示9张
|
||||
}
|
||||
])->where('status', 1)
|
||||
->order('create_at', 'desc');
|
||||
|
||||
$total = $query->count();
|
||||
$moments = $query->page($page, $limit)->select();
|
||||
|
||||
// 格式化数据
|
||||
$formattedDynamics = [];
|
||||
foreach ($moments as $moment) {
|
||||
$formattedDynamic = $moment->toArray();
|
||||
|
||||
// 添加互动状态
|
||||
if ($userId) {
|
||||
$formattedDynamic['liked'] = WxchatMomentLike::where('mid', $moment->id)
|
||||
->where('uid', $userId)
|
||||
->exists();
|
||||
$formattedDynamic['collected'] = WxchatMomentCollect::where('mid', $moment->id)
|
||||
->where('uid', $userId)
|
||||
->exists();
|
||||
} else {
|
||||
$formattedDynamic['liked'] = false;
|
||||
$formattedDynamic['collected'] = false;
|
||||
}
|
||||
|
||||
$formattedDynamics[] = $formattedDynamic;
|
||||
}
|
||||
|
||||
return [
|
||||
'list' => $formattedDynamics,
|
||||
'total' => $total,
|
||||
'pages' => ceil($total / $limit)
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user