• mynote release
  • 2019-5-22 发布
  • es elasticsearch init
  • 2019-11-10 发布:nuxt version
  • 2020-10-03
  • r2.1.0
  • 主要修改
  • sql
  • user id 预留(optional)
  • docs/username -> docs/id
  • 批量插入 webhooks:注意直接访问接口,不要通过 nginx-nuxt 中转
  • 更新 es 数据
  • 其他更新
  • r2.1.1
  • 2021-2-7 r2.2
  • 2021-2-8 r2.2.1
  • mynote release
    r190227

    2019-5-22 发布

    r190522
    SHA-1: 6ceeadd865c1da77a70fa089659dc4e987eca788
    * 【更新】- 没有更多内容不要再展示加载更多按钮(更多作者页面)
    部署项目:
    SHA-1: d70dface130d00ca2e11158f1f162368e5a53f8c
    * Gogs/es/sms configs
    fastadmin:
    SHA-1: efb4346bbb22c78276572c2b0ef35503018123f1
    * give exe auth to *.sh
    停服、备份、部署、启动、测试
    es 部署
    短信、邮件
    UI2.0
    编辑器升级
    标签系统
    重构
    composer
    config
    -- 分类标签表
    DROP TABLE IF EXISTS `artag_classify`;
    CREATE TABLE IF NOT EXISTS `artag_classify`(
        `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
        `tag` VARCHAR(128) NOT NULL COMMENT '分类标签名',
        `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        `status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '状态(单选):0=不显示,1=显示',
        PRIMARY KEY(`id`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章分类标签表管理';
    INSERT INTO `artag_classify` (`id`, `tag`, `status`) VALUES ('1', '阅读', '1');
    -- 文章标签表
    DROP TABLE IF EXISTS `artag`;
    CREATE TABLE IF NOT EXISTS `artag`(
        `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
        `tag` VARCHAR(128) NOT NULL COMMENT '标签',
        `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        `status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '状态(单选):0=不显示,1=显示',
        PRIMARY KEY(`id`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章标签表管理';
    -- 用户常用标签表
    DROP TABLE IF EXISTS `artag_user`;
    CREATE TABLE IF NOT EXISTS `artag_user`(
        `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
        `tag` VARCHAR(128) NOT NULL COMMENT '标签',
        `uid` INT UNSIGNED NOT NULL COMMENT '用户ID',
        `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        `status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '状态(单选):0=不显示,1=显示',
        PRIMARY KEY(`id`),
        KEY `uid` (`uid`),
        KEY `tag` (`tag`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章标签表管理';
    -- 文章标签关系表
    DROP TABLE IF EXISTS `artag_user_relation`;
    CREATE TABLE IF NOT EXISTS `artag_user_relation`(
        `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
        `aid` INT UNSIGNED NOT NULL COMMENT '文章ID',
        `tagid` INT UNSIGNED NOT NULL COMMENT '标签ID',
        `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        `status` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '状态(单选):0=文章标签,1=用户常用标签',
        PRIMARY KEY(`id`),
        KEY `aid` (`aid`),
        KEY `tagid` (`tagid`),
        UNIQUE KEY `aid_tagid_status` (`aid`, `tagid`,`status`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章标签表管理';
    -- 文章分类关系表
    DROP TABLE IF EXISTS `artag_classify_relation`;
    CREATE TABLE IF NOT EXISTS `artag_classify_relation`(
        `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
        `aid` INT UNSIGNED NOT NULL COMMENT '文章ID',
        `artag_classify_id` INT UNSIGNED NOT NULL COMMENT '分类标签ID',
        `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        `status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '状态(单选):0=不显示,1=显示',
        PRIMARY KEY(`id`),
        KEY `aid` (`aid`),
        KEY `artag_classify_id` (`artag_classify_id`),
        UNIQUE KEY `aid_artag_classify_id` (`aid`, `artag_classify_id`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章分类关系表管理';
    run as www user in /home/www/fastadmin
    php think crud -t artag -c mynote/artag -m artag --force=true
    php think menu -c mynote/artag --force=true
    php think crud -t artag_classify -c mynote/artagclassify -m artagclassify --force=true
    php think menu -c mynote/artagclassify --force=true
    lv1= lv2= type=

    es elasticsearch init

    1 删除index(如果有)
    DELETE /mynote
    2 建立mapping
    PUT /mynote
    {
        "settings": {
            "analysis": {
                "analyzer": {
                    "ik_pinyin_analyzer": {
                        "type":"custom",
                        "tokenizer": "ik_smart",
                        "filter": ["my_pinyin","word_delimiter"]
                    }
                },
                "filter": {
                    "my_pinyin": {
                      "keep_joined_full_pinyin": "true",
                      "keep_none_chinese_in_first_letter": "false",
                      "lowercase": "true",
                      "keep_original": "false",
                      "keep_first_letter": "false",
                      "trim_whitespace": "true",
                      "type": "pinyin",
                      "keep_none_chinese": "false",
                      "limit_first_letter_length": "16",
                      "keep_full_pinyin": "false"
                    }
                }
            }
        },
        "mappings":{
            "article":{
                "properties":{
                    "abstract":{
                        "type":"text",
                        "analyzer":"ik_max_word"
                    },
                    "article_id":{
                        "type":"keyword"
                    },
                    "content":{
                        "type":"text",
                        "fields":{
                            "pinyin":{
                                "type":"text",
                                "analyzer":"ik_pinyin_analyzer"
                            }
                        },
                        "analyzer":"ik_max_word"
                    },
                    "id":{
                        "type":"long"
                    },
                    "recommend":{
                        "type":"byte"
                    },
                    "sort":{
                        "type":"long"
                    },
                    "status":{
                        "type":"byte"
                    },
                    "tag":{
                        "type":"keyword"
                    },
                    "thum":{
                        "type":"text"
                    },
                    "time":{
                        "type":"date"
                    },
                    "title":{
                        "type":"text",
                        "fields":{
                            "keyword":{
                                "type":"keyword"
                            },
                            "pinyin":{
                                "type":"text",
                                "analyzer":"ik_pinyin_analyzer"
                            }
                        },
                        "analyzer":"ik_max_word"
                    },
                    "updata_time":{
                        "type":"date"
                    },
                    "username":{
                        "type":"text",
                        "fields":{
                            "keyword":{
                                "type":"keyword"
                            },
                            "pinyin":{
                                "type":"text",
                                "analyzer":"ik_pinyin_analyzer"
                            }
                        },
                        "analyzer":"ik_max_word"
                    }
                }
            }
        }
    }
    3 访问此链接,建立文章索引
    http://uninote.com.cn/api/synes
    4 搜索测试,查询条件替换红色部分,注意中文搜索测试
    GET /mynote/article/_search
    {
                "query": {
                    "dis_max": {
                        "tie_breaker": 0.7,
                        "boost": 1.2,
                        "queries": [
                            {
                                "bool": {
                                    "should": [
                                        {
                                            "multi_match": {
                                                "query": "日志",
                                                "fields": ["content", "content.pinyin", "username", "username.pinyin", "title","title.pinyin"],
                                                "analyzer":"ik_max_word"
                                            }
                                        },
                                        {
                                            "term": {
                                                "tag": {
                                                    "value": "日志"
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                },
                "highlight": {
                    "fields": [
                        {"tag" :{}},
                        {"title" :{}},
                        {"content" :{}},
                        {"username" :{}},
                        {"title.pinyin" :{}},
                        {"content.pinyin" :{}},
                        {"username.pinyin" :{}}
                    ]
                },
                "size": 10,
                "from": 0,
                "_source":[
                    "highlight", "title", "article_id", "title", "abstract", "thum", "id"
                ]
            }
    lv1= lv2= type=

    2019-11-10 发布:nuxt version

    mynote online 服务器迁移 
    SHA-1: 8bc45df17ba43523caa8b76d8e20a81d3fa5463d
    * update std log

    2020-10-03

    后台小更新

    r2.1.0

    2020-10-19 r2.1.* 
    init:
    SHA-1: bc07823f6fc2770c75868d3743ca8472411d22dc
    * rc2.1.0
    增量版本发布 
    chromedriver ok e4bfe7982abdc4fa16c3231ee57d3d73ab64d761
    rc2.1.2
    commit 61ebc41857fd27eb7b4ba5b56d8a1e986c18d3b1
        轮播图长度限制改为 1024
    rc2.1.3
    r2.1
    SHA-1: 31630e4d57948a3a4afb638072669ba2616ee8ec
    * username 兼容,重定向到 uid

    主要修改

    重构 for 外部更新共用 外部修改更新 
    消息不再发送,以前是屏蔽
    mynote-init 更新,转向 docker 部署
    --user note:
    路径替换(username -> id),并兼容(用 username 访问,重定向到 id)
    禁止匿名评论
    标题修改更新
    搜索中文
    webhooks + 手动触发

    sql

    alter table article add column uid INT UNSIGNED after id;
    # username 改为 uid 关联:
    update article set uid = (select DISTINCT id from user where username = article.username);
    # 去掉 ./ 打头 -- 备用工具
    # update article set article_id = SUBSTR(article_id FROM 3) where SUBSTR(article_id, 1, 2) = './';
    alter table article add UNIQUE KEY uid_path(uid, article_id);
    # 弃用 nickname:
    ALTER table `comment` modify COLUMN nickname varchar(32);
    # 弃用 username:
    ALTER table `article` modify COLUMN username varchar(32);
    ALTER table `user` modify COLUMN username varchar(32);
    ALTER table `user` drop index `name`;
    # addi
    ALTER TABLE `mynote_log`
      MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
      MODIFY `class` varchar(256) DEFAULT NULL,
      MODIFY `filename` varchar(256) DEFAULT NULL;
    # 轮播图长度限制
    ALTER TABLE autoplayimg MODIFY COLUMN imgsrc VARCHAR(1024) NOT NULL DEFAULT '';
    ALTER TABLE autoplayimg MODIFY COLUMN href VARCHAR(1024) NOT NULL DEFAULT '';
    lv1= lv2= type=

    user id 预留(optional)

    set @inc=1000;
    UPDATE `user` set id=id+@inc;
    update artag_user set uid=uid+@inc;
    update article set uid	=uid	+@inc;
    update artlike set uid=uid+@inc;
    update artpv set uid=uid+@inc;
    update comlike set uid=uid+@inc;
    update mynote_login set uid	=uid	+@inc;
    update report set uid=uid+@inc;
    update comment set user_id=user_id+@inc;
    update userfollow set fuid=fuid+@inc;
    update userfollow set uid=uid+@inc;
    update usercollect set uid=uid+@inc;
    update userhistory set uid=uid+@inc;

    docs/username -> docs/id

    # 拿到数据
    select username,id from user
    http://a.misc.my/StringFormat/StringFormat.html
    模板:
    mv %1 %2
    cd /home/www/mynote/basic/web/docs/
    do mv...
    # 移除index
    alter table article drop index article_id;
    # 修正路径 ./docs/常用/新环境部署.md => 常用/新环境部署.md
    update article set article_id = SUBSTR(article_id FROM 19);

    批量插入 webhooks:注意直接访问接口,不要通过 nginx-nuxt 中转

    http://a.misc.my/StringFormat/StringFormat.html
    INSERT INTO `gogs`.`webhook` (`repo_id`, `org_id`, `url`, `content_type`, `secret`, `events`, `is_ssl`, `is_active`, `hook_task_type`, `meta`, `last_status`, `created_unix`, `updated_unix`) VALUES ('%1', '0', 'http://%2/api/markdown/repo-update', '2', '', '{\"push_only\":true,\"send_everything\":false,\"choose_events\":false,\"events\":{\"create\":false,\"delete\":false,\"fork\":false,\"push\":false,\"issues\":false,\"pull_request\":false,\"issue_comment\":false,\"release\":false}}', '0', '1', '1', '', '1', '1603115033', '1603119428');
    # 批量数据选择:
    set @host='127.0.0.1:85';
    SELECT r.id, @host
    from gogs.repository r
    LEFT JOIN gogs.webhook w on r.id = w.repo_id
    where w.id is null
    # 替换host:
    # update webhook set url = replace(url, '127.0.0.1/', '127.0.0.1:85/')

    更新 es 数据

    其他更新

    clear site data,再刷新页面
    nuxt.conf 需要更新?避免 127.0.0.1 重定向?webhooks 排错记录 
    gogs 编码更改,重启服务
     CHARSET=utf8

    r2.1.1

    username 造成的统计失效

    2021-2-7 r2.2

    2021-1-28 2.2 

    2021-2-8 r2.2.1

    SHA-1: 81c5f00ffc4a1d0ce630eb2b1b6e9ab86e8f0edb
    * fix: 误删的验证码字体