From 37638ad38f4cc472b5d96099a19bf710f8e342e9 Mon Sep 17 00:00:00 2001 From: Chenx221 Date: Sun, 7 Apr 2024 14:34:43 +0800 Subject: [PATCH] =?UTF-8?q?Share=20Model=E6=B7=BB=E5=8A=A0=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=AC=A1=E6=95=B0=E5=AD=97=E6=AE=B5=20=E7=8E=B0?= =?UTF-8?q?=E5=9C=A8=E6=94=AF=E6=8C=81=E5=AF=B9=E5=88=86=E4=BA=AB=E7=9A=84?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=AC=A1=E6=95=B0=E8=BF=9B=E8=A1=8C=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/ShareController.php | 2 ++ models/Share.php | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/controllers/ShareController.php b/controllers/ShareController.php index c25a9b8..650fccc 100644 --- a/controllers/ShareController.php +++ b/controllers/ShareController.php @@ -271,6 +271,8 @@ class ShareController extends Controller $model = $this->findModel($share_id, true); DownloadLogs::addLog(Yii::$app->user->id, $model->share_id, Yii::$app->request->userIP, Yii::$app->request->userAgent); // logging for access(DL) + // add download count + $model->setDlCountPlus1(); $absolutePath = Yii::getAlias(Yii::$app->params['dataDirectory']) . '/' . $model->sharer_id . '/' . $model->file_relative_path; if (is_file($absolutePath)) { return Yii::$app->response->sendFile($absolutePath); diff --git a/models/Share.php b/models/Share.php index d00615d..be08b69 100644 --- a/models/Share.php +++ b/models/Share.php @@ -14,12 +14,15 @@ use yii\db\ActiveRecord; * @property string $access_code 分享密钥 * @property string $creation_date 分享创建日期 * @property int|null $status 分享是否启用 + * @property int|null $dl_count 下载次数 * - * @property User $sharer + * @property DownloadLogs[] $downloadLogs + * * @property User $sharer */ class Share extends ActiveRecord { const string SCENARIO_UPDATE = 'update'; + /** * {@inheritdoc} */ @@ -35,7 +38,7 @@ class Share extends ActiveRecord { return [ [['file_relative_path', 'access_code'], 'required'], - [['sharer_id', 'status'], 'integer'], + [['sharer_id', 'status', 'dl_count'], 'integer'], [['creation_date'], 'safe'], [['file_relative_path'], 'string', 'max' => 255], [['access_code'], 'string', 'max' => 4], @@ -56,6 +59,8 @@ class Share extends ActiveRecord 'access_code' => '访问密码', 'creation_date' => '分享创建日期', 'status' => 'Status', + 'dl_count' => '下载次数', + ]; } @@ -68,8 +73,32 @@ class Share extends ActiveRecord { return $this->hasOne(User::class, ['id' => 'sharer_id']); } + + /** + * Gets query for [[DownloadLogs]]. + * + * @return ActiveQuery + */ + public function getDownloadLogs(): ActiveQuery + { + return $this->hasMany(DownloadLogs::class, ['share_id' => 'share_id']); + } + + /** + * @return string|null + */ public function getSharerUsername(): ?string { return $this->sharer->username; } + + /** + * @return void + */ + public function setDlCountPlus1(): void + { + $this->dl_count += 1; + $this->save(true, ['dl_count']); + + } }