chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
+118
View File
@@ -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)
];
}
}