huwhois 2 роки тому
батько
коміт
f5804d9257

+ 16 - 0
app/common/model/Article.php

@@ -178,15 +178,31 @@ class Article extends Base
             'status','sort','hits','content_type','userid','username'])->save($data);
 
         FileManager::saveInfoid($article->id, $data['cjid']);
+
+        $keys = explode(',', $data['keywords']);
+
+        Tag::saveTags($keys, $article->id);
     }
 
     public static function updateOne($data)
     {
         $article = self::find($data['id']);
+        
+        $oldkeys = explode(',', $article->keywords);
 
         $article->allowField(['cid','title','writer','source','titlepic','keywords','summary','content',
             'status','sort','hits','content_type','userid','username'])->save($data);
 
         FileManager::saveInfoid($article->id, $data['cjid']);
+
+        $newkeys = explode(',', $data['keywords']);
+
+        $keys = array_diff($newkeys, $oldkeys);
+
+        $dec  = array_diff($oldkeys, $newkeys);
+
+        Tag::saveTags($keys, $article->id);
+
+        Tag::decNums($dec, $article->id);
     }
 }

+ 51 - 0
app/common/model/Tag.php

@@ -0,0 +1,51 @@
+<?php
+declare(strict_types=1);
+
+namespace app\common\model;
+
+use app\common\model\Base;
+
+class Tag extends Base
+{
+    protected $pk = 'tagid';
+
+    protected $schema = [
+        "tagid"       => "int",
+        "tagname"     => "varchar",
+        "nums"        => "int",
+        "create_time" => "int",
+        "update_time" => "int"
+    ];
+
+    public static function queryList($tagname)
+    {
+        return self::where('tagname','LIKE', '%'.$tagname.'%')->field('tagid, tagname')->select();
+    }
+
+    public static function saveTags(array $tags, int $infoid=0)
+    {
+        foreach ($tags as  $tagname) {
+            $tag = self::where('tagname', $tagname)->find();
+
+            if ($tag == null) {
+                $tag = new static;
+                $tag->tagname = $tagname;
+            }
+            $tag->nums += 1;
+            $tag->save();
+        }
+    }
+
+    public static function decNums(array $tags, int $infoid=0)
+    {
+        foreach ($tags as  $tagname) {
+            $tag = self::where('tagname', $tagname)->find();
+
+            if ($tag != null) {
+                $tag->nums = $tag->nums - 1;
+                
+                $tag->save();
+            }
+        }
+    }
+}

+ 19 - 0
app/index/controller/Article.php

@@ -147,6 +147,25 @@ class Article extends Base
         return View::fetch();
     }
 
+    /**
+     * 标签列表
+     */
+    public function tag($name = null)
+    {
+        if (!$name) {
+            throw new HttpException(404, '标签不可为空');
+        }
+
+        // $list = ArticleTagsModel::tagsList($name);
+
+        View::assign([
+            'list' => [],
+            'tag'  => $name
+        ]);
+
+        return View::fetch('tags');
+    }
+
     /**
      * 归档页面(时间)
      */

+ 1 - 0
app/index/route/app.php

@@ -30,6 +30,7 @@ Route::get('/guest_book', 'index/index/guestBook');
 Route::post('/save_guest_book', 'index/index/saveGuestBook');
 
 Route::get('/tags/:name', 'index/article/tags');
+Route::get('/tag/:name', 'index/article/tag');
 Route::get('/all-<page?>', 'index/article/index')->append(['cid' => 0]);
 Route::post('/dolike', 'index/article/dolike');
 Route::get('/:year/<month>-<day>/:id', 'index/article/read');

+ 1 - 1
app/sys/controller/Article.php

@@ -63,7 +63,7 @@ class Article extends Base
                 $params['content'] = $this->saveRomteImage($params['content'],(int)$params['id'],(int) $params['cjid'], $username);
             }
 
-            $params['keywords'] = str_replace(' ', '', $params['keywords']);
+            $params['keywords'] = trim($params['keywords']);
 
             try {
                 if ($params['id'] != 0) {