From 413b4cfa19b37eeee8a3f05f570066cb2d31f8cc Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Sun, 28 Jun 2026 15:05:02 +0800 Subject: [PATCH] feat: add PaoPao-ce app (#4360) --- apps/paopao-ce/README.md | 66 +++ apps/paopao-ce/data.yml | 29 ++ apps/paopao-ce/latest/.env.sample | 8 + apps/paopao-ce/latest/data.yml | 121 +++++ apps/paopao-ce/latest/data/.gitkeep | 0 apps/paopao-ce/latest/data/paopao-mysql.sql | 516 ++++++++++++++++++++ apps/paopao-ce/latest/docker-compose.yml | 211 ++++++++ apps/paopao-ce/latest/scripts/.gitkeep | 0 apps/paopao-ce/latest/scripts/init.sh | 18 + apps/paopao-ce/latest/scripts/uninstall.sh | 2 + apps/paopao-ce/latest/scripts/upgrade.sh | 3 + apps/paopao-ce/logo.png | Bin 0 -> 12307 bytes apps/paopao-ce/source-evidence.json | 15 + 13 files changed, 989 insertions(+) create mode 100644 apps/paopao-ce/README.md create mode 100644 apps/paopao-ce/data.yml create mode 100644 apps/paopao-ce/latest/.env.sample create mode 100644 apps/paopao-ce/latest/data.yml create mode 100644 apps/paopao-ce/latest/data/.gitkeep create mode 100644 apps/paopao-ce/latest/data/paopao-mysql.sql create mode 100644 apps/paopao-ce/latest/docker-compose.yml create mode 100644 apps/paopao-ce/latest/scripts/.gitkeep create mode 100755 apps/paopao-ce/latest/scripts/init.sh create mode 100755 apps/paopao-ce/latest/scripts/uninstall.sh create mode 100755 apps/paopao-ce/latest/scripts/upgrade.sh create mode 100644 apps/paopao-ce/logo.png create mode 100644 apps/paopao-ce/source-evidence.json diff --git a/apps/paopao-ce/README.md b/apps/paopao-ce/README.md new file mode 100644 index 000000000..e7dd22441 --- /dev/null +++ b/apps/paopao-ce/README.md @@ -0,0 +1,66 @@ +# PaoPao-ce + +## 产品介绍 +PaoPao-ce 是一个基于 Go 和 Vue 的开源微社区平台,适合自托管社区、轻量社交和产品讨论场景。 + +## 主要功能 +- 发布动态、评论和互动 +- 内嵌 Web 前端 +- 使用 MySQL、Redis Stack 和 Meilisearch 提供数据、缓存和搜索能力 +- 支持本地附件存储 + +## 访问说明 +安装后通过 `http://<服务器 IP>:18088` 访问,实际端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。 + +首次安装不会创建默认管理员账号,请打开页面后按界面流程注册首个账号,并及时在应用内完成站点设置。 + +## Introduction +PaoPao-ce is an open source micro-community platform built with Go and Vue for self-hosted communities, social timelines and product discussions. + +## Features +- Posts, comments and social interactions +- Embedded web frontend +- MySQL, Redis Stack and Meilisearch for storage, cache and search +- Local attachment storage + +## 部署说明 +- 本应用使用官方多服务 Docker Compose 拓扑:PaoPao-ce Backend、MySQL、Redis Stack、Meilisearch。 +- 后端镜像固定为 `bitbus/paopao-ce:v0.6.0-alpha.2`。Docker Hub 当前没有发布 `v0.6.0-alpha.3` 后端镜像,且官方 compose 默认的 `0.6-alpha` tag 不存在。 +- 当前仅声明 amd64 架构,因为 `bitbus/paopao-ce` 已发布后端镜像为 amd64 单架构。 +- 不使用 all-in-one 镜像;该镜像在测试中出现缺少 `groupmod`、`usermod`、`gosu` 且 HTTP 服务未正常启动的问题。 +- `crossVersionUpdate` 已关闭,后续升级需要人工确认镜像 tag、数据库兼容性和真实升级测试。 + +## 端口 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| PANEL_APP_PORT_HTTP | Web 访问端口 | 18088 | 是 | + +## 数据持久化 +| 路径 | 说明 | +| --- | --- | +| APP_DATA_DIR/custom | PaoPao 配置、附件和日志 | +| APP_DATA_DIR/mysql | MySQL 数据 | +| APP_DATA_DIR/redis | Redis Stack 数据 | +| APP_DATA_DIR/meili | Meilisearch 数据 | +| APP_DATA_DIR/initdb | MySQL 首次初始化 SQL | + +升级或迁移前,请先在 1Panel 中备份上述数据目录。 + +## 参数说明 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| PUBLIC_DOMAIN | 本地附件公开访问主机,通常为 `服务器 IP:端口` 或反代域名 | 127.0.0.1:18088 | 是 | +| MYSQL_PASSWORD | MySQL 数据库密码 | 随机生成 | 是 | +| JWT_SECRET | JWT 签名密钥 | 随机生成 | 是 | +| MEILI_MASTER_KEY | Meilisearch 主密钥 | 随机生成 | 是 | + +## 使用说明 +- 后端容器首次启动时只在 `APP_DATA_DIR/custom/config.yaml` 不存在时生成配置文件,不会覆盖用户后续修改。 +- MySQL 初始化 SQL 会复制到 `APP_DATA_DIR/initdb/paopao.sql`,仅在 MySQL 数据目录首次初始化时执行。 +- 仅暴露 PaoPao Web 端口;MySQL、Redis Stack 和 Meilisearch 不对外暴露。 +- 如果通过反向代理或域名访问,请将 `PUBLIC_DOMAIN` 设置为最终访问主机,不要包含 `http://` 或 `https://`。 + +## 参考资料 +- 项目仓库: +- 官方 compose: +- 安装文档: diff --git a/apps/paopao-ce/data.yml b/apps/paopao-ce/data.yml new file mode 100644 index 000000000..238c6dedb --- /dev/null +++ b/apps/paopao-ce/data.yml @@ -0,0 +1,29 @@ +name: PaoPao-ce +tags: + - Website +title: 开源微社区平台 +description: 开源微社区平台 +additionalProperties: + key: paopao-ce + name: PaoPao-ce + tags: + - Website + shortDescZh: 开源微社区平台 + shortDescEn: Open source micro-community platform + description: + en: A self-hosted micro-community platform built with Go and Vue, with embedded web UI, local storage and search support. + zh: 基于 Go 和 Vue 的自托管微社区平台,内置 Web 前端、本地存储和搜索能力。 + zh-Hant: 基於 Go 和 Vue 的自託管微社群平台,內建 Web 前端、本地儲存和搜尋能力。 + ja: Go と Vue で構築されたセルフホスト向けマイクロコミュニティ平台で、組み込み Web UI、ローカルストレージ、検索を備えています。 + ko: Go와 Vue로 구축된 셀프 호스팅 마이크로 커뮤니티 플랫폼으로 내장 Web UI, 로컬 스토리지 및 검색을 제공합니다. + ru: Самостоятельно размещаемая микросоциальная платформа на Go и Vue со встроенным Web UI, локальным хранилищем и поиском. + ms: Platform mikro-komuniti hos sendiri berasaskan Go dan Vue dengan Web UI terbina, storan tempatan dan carian. + pt-br: Plataforma de microcomunidade auto-hospedada em Go e Vue, com Web UI embutida, armazenamento local e busca. + type: website + crossVersionUpdate: false + limit: 0 + website: https://github.com/rocboss/paopao-ce + github: https://github.com/rocboss/paopao-ce + document: https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml + architectures: + - amd64 diff --git a/apps/paopao-ce/latest/.env.sample b/apps/paopao-ce/latest/.env.sample new file mode 100644 index 000000000..406489b01 --- /dev/null +++ b/apps/paopao-ce/latest/.env.sample @@ -0,0 +1,8 @@ +PANEL_APP_PORT_HTTP=18088 +TZ=Asia/Shanghai +APP_DATA_DIR=./data +PUBLIC_DOMAIN=127.0.0.1:18088 +MYSQL_PASSWORD=paopao_mysql_password +JWT_SECRET=paopao_jwt_secret +MEILI_MASTER_KEY=paopao_meili_master_key +CONTAINER_NAME=paopao-ce diff --git a/apps/paopao-ce/latest/data.yml b/apps/paopao-ce/latest/data.yml new file mode 100644 index 000000000..d6a13068b --- /dev/null +++ b/apps/paopao-ce/latest/data.yml @@ -0,0 +1,121 @@ +additionalProperties: + formFields: + - default: 18088 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + label: + en: HTTP Port + zh: HTTP 端口 + zh-Hant: HTTP 埠 + ja: HTTP ポート + ko: HTTP 포트 + ru: HTTP-порт + ms: Port HTTP + pt-br: Porta HTTP + required: true + rule: paramPort + type: number + - default: Asia/Shanghai + edit: true + envKey: TZ + labelEn: Timezone + labelZh: 时区 + label: + en: Timezone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon waktu + pt-br: Fuso horario + required: true + type: text + - default: ./data + edit: true + envKey: APP_DATA_DIR + labelEn: Data Directory + labelZh: 数据目录 + label: + en: Data Directory + zh: 数据目录 + zh-Hant: 資料目錄 + ja: データディレクトリ + ko: 데이터 디렉터리 + ru: Каталог данных + ms: Direktori data + pt-br: Diretorio de dados + required: true + type: text + - default: 127.0.0.1:18088 + edit: true + envKey: PUBLIC_DOMAIN + labelEn: Public Host + labelZh: 公开访问主机 + label: + en: Public Host + zh: 公开访问主机 + zh-Hant: 公開存取主機 + ja: 公開アクセスホスト + ko: 공개 접속 호스트 + ru: Публичный хост + ms: Hos awam + pt-br: Host publico + required: true + type: text + - default: paopao_mysql_password + edit: true + envKey: MYSQL_PASSWORD + labelEn: MySQL Password + labelZh: MySQL 密码 + label: + en: MySQL Password + zh: MySQL 密码 + zh-Hant: MySQL 密碼 + ja: MySQL パスワード + ko: MySQL 비밀번호 + ru: Пароль MySQL + ms: Kata laluan MySQL + pt-br: Senha do MySQL + random: true + required: true + rule: paramComplexity + type: password + - default: paopao_jwt_secret + edit: true + envKey: JWT_SECRET + labelEn: JWT Secret + labelZh: JWT 密钥 + label: + en: JWT Secret + zh: JWT 密钥 + zh-Hant: JWT 金鑰 + ja: JWT シークレット + ko: JWT 비밀키 + ru: Секрет JWT + ms: Rahsia JWT + pt-br: Segredo JWT + random: true + required: true + rule: paramComplexity + type: password + - default: paopao_meili_master_key + edit: true + envKey: MEILI_MASTER_KEY + labelEn: Meilisearch Master Key + labelZh: Meilisearch 主密钥 + label: + en: Meilisearch Master Key + zh: Meilisearch 主密钥 + zh-Hant: Meilisearch 主金鑰 + ja: Meilisearch マスターキー + ko: Meilisearch 마스터 키 + ru: Главный ключ Meilisearch + ms: Kunci induk Meilisearch + pt-br: Chave mestra do Meilisearch + random: true + required: true + rule: paramComplexity + type: password diff --git a/apps/paopao-ce/latest/data/.gitkeep b/apps/paopao-ce/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/paopao-ce/latest/data/paopao-mysql.sql b/apps/paopao-ce/latest/data/paopao-mysql.sql new file mode 100644 index 000000000..6866c9130 --- /dev/null +++ b/apps/paopao-ce/latest/data/paopao-mysql.sql @@ -0,0 +1,516 @@ +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for p_attachment +-- ---------------------------- +DROP TABLE IF EXISTS `p_attachment`; +CREATE TABLE `p_attachment` ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `user_id` BIGINT NOT NULL DEFAULT '0', + `file_size` BIGINT NOT NULL, + `img_width` BIGINT NOT NULL DEFAULT '0', + `img_height` BIGINT NOT NULL DEFAULT '0', + `type` tinyint NOT NULL DEFAULT '1' COMMENT '1图片,2视频,3其他附件', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_attachment_user` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100041 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='附件'; + +-- ---------------------------- +-- Table structure for p_captcha +-- ---------------------------- +DROP TABLE IF EXISTS `p_captcha`; +CREATE TABLE `p_captcha` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '验证码ID', + `phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号', + `captcha` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '验证码', + `use_times` int NOT NULL DEFAULT '0' COMMENT '使用次数', + `expired_on` BIGINT NOT NULL DEFAULT '0' COMMENT '过期时间', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_captcha_phone` (`phone`) USING BTREE, + KEY `idx_captcha_expired_on` (`expired_on`) USING BTREE, + KEY `idx_captcha_use_times` (`use_times`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1021 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='手机验证码'; + +-- ---------------------------- +-- Table structure for p_comment +-- ---------------------------- +DROP TABLE IF EXISTS `p_comment`; +CREATE TABLE `p_comment` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '评论ID', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP地址', + `ip_loc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP城市地址', + `is_essence` tinyint NOT NULL DEFAULT 0 COMMENT '是否精选', + `reply_count` int NOT NULL DEFAULT 0 COMMENT '回复数', + `thumbs_up_count` int NOT NULL DEFAULT 0 COMMENT '点赞数', + `thumbs_down_count` int NOT NULL DEFAULT 0 COMMENT '点踩数', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_comment_post_id` (`post_id`) USING BTREE, + KEY `idx_comment_user_id` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=6001736 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论'; + +-- ---------------------------- +-- Table structure for p_comment_content +-- ---------------------------- +DROP TABLE IF EXISTS `p_comment_content`; +CREATE TABLE `p_comment_content` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '内容ID', + `comment_id` BIGINT NOT NULL DEFAULT '0' COMMENT '评论ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '内容', + `type` tinyint NOT NULL DEFAULT '2' COMMENT '类型,1标题,2文字段落,3图片地址,4视频地址,5语音地址,6链接地址', + `sort` BIGINT NOT NULL DEFAULT '100' COMMENT '排序,越小越靠前', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_comment_content_comment_id` (`comment_id`) USING BTREE, + KEY `idx_comment_content_user_id` (`user_id`) USING BTREE, + KEY `idx_comment_content_type` (`type`) USING BTREE, + KEY `idx_comment_content_sort` (`sort`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=11001738 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论内容'; + +-- ---------------------------- +-- Table structure for p_comment_reply +-- ---------------------------- +DROP TABLE IF EXISTS `p_comment_reply`; +CREATE TABLE `p_comment_reply` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '回复ID', + `comment_id` BIGINT NOT NULL DEFAULT '0' COMMENT '评论ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `at_user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '@用户ID', + `content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '内容', + `ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP地址', + `ip_loc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP城市地址', + `thumbs_up_count` int NOT NULL DEFAULT '0' COMMENT '点赞数', + `thumbs_down_count` int NOT NULL DEFAULT '0' COMMENT '点踩数', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_comment_reply_comment_id` (`comment_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=12000015 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论回复'; + +-- ---------------------------- +-- Table structure for p_comment_metric +-- ---------------------------- +DROP TABLE IF EXISTS `p_comment_metric`; +CREATE TABLE `p_comment_metric` ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `comment_id` BIGINT NOT NULL, + `rank_score` BIGINT NOT NULL DEFAULT 0, + `incentive_score` int NOT NULL DEFAULT 0, + `decay_factor` int NOT NULL DEFAULT 0, + `motivation_factor` int NOT NULL DEFAULT 0, + `is_del` tinyint NOT NULL DEFAULT 0, + `created_on` BIGINT NOT NULL DEFAULT 0, + `modified_on` BIGINT NOT NULL DEFAULT 0, + `deleted_on` BIGINT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_comment_metric_comment_id_rank_score` (`comment_id`, `rank_score`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for p_tweet_comment_thumbs +-- ---------------------------- +DROP TABLE IF EXISTS `p_tweet_comment_thumbs`; +CREATE TABLE `p_tweet_comment_thumbs` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'thumbs ID', + `user_id` BIGINT NOT NULL, + `tweet_id` BIGINT NOT NULL COMMENT '推文ID', + `comment_id` BIGINT NOT NULL COMMENT '评论ID', + `reply_id` BIGINT COMMENT '评论回复ID', + `comment_type` TINYINT NOT NULL DEFAULT '0' COMMENT '评论类型 0为推文评论、1为评论回复', + `is_thumbs_up` TINYINT NOT NULL DEFAULT '0' COMMENT '是否点赞', + `is_thumbs_down` TINYINT NOT NULL DEFAULT '0' COMMENT '是否点踩', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` TINYINT NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_tweet_comment_thumbs_uid_tid` (`user_id`, `tweet_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='推文评论点赞'; + +-- ---------------------------- +-- Table structure for p_message +-- ---------------------------- +DROP TABLE IF EXISTS `p_message`; +CREATE TABLE `p_message` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息通知ID', + `sender_user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '发送方用户ID', + `receiver_user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '接收方用户ID', + `type` tinyint NOT NULL DEFAULT '1' COMMENT '通知类型,1动态,2评论,3回复,4私信,99系统通知', + `brief` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '摘要说明', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '详细内容', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT '动态ID', + `comment_id` BIGINT NOT NULL DEFAULT '0' COMMENT '评论ID', + `reply_id` BIGINT NOT NULL DEFAULT '0' COMMENT '回复ID', + `is_read` tinyint NOT NULL DEFAULT '0' COMMENT '是否已读', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_message_receiver_user_id` (`receiver_user_id`) USING BTREE, + KEY `idx_message_is_read` (`is_read`) USING BTREE, + KEY `idx_message_type` (`type`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=16000033 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='消息通知'; + +-- ---------------------------- +-- Table structure for p_post +-- ---------------------------- +DROP TABLE IF EXISTS `p_post`; +CREATE TABLE `p_post` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主题ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `comment_count` BIGINT NOT NULL DEFAULT '0' COMMENT '评论数', + `collection_count` BIGINT NOT NULL DEFAULT '0' COMMENT '收藏数', + `upvote_count` BIGINT NOT NULL DEFAULT '0' COMMENT '点赞数', + `share_count` BIGINT NOT NULL DEFAULT '0' COMMENT '分享数', + `visibility` tinyint NOT NULL DEFAULT '0' COMMENT '可见性: 0私密 10充电可见 20订阅可见 30保留 40保留 50好友可见 60关注可见 70保留 80保留 90公开', + `is_top` tinyint NOT NULL DEFAULT '0' COMMENT '是否置顶', + `is_essence` tinyint NOT NULL DEFAULT '0' COMMENT '是否精华', + `is_lock` tinyint NOT NULL DEFAULT '0' COMMENT '是否锁定', + `latest_replied_on` BIGINT NOT NULL DEFAULT '0' COMMENT '最新回复时间', + `tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标签', + `attachment_price` BIGINT NOT NULL DEFAULT '0' COMMENT '附件价格(分)', + `ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP地址', + `ip_loc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP城市地址', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_post_user_id` (`user_id`) USING BTREE, + KEY `idx_post_visibility` (`visibility`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1080017989 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章'; + +-- ---------------------------- +-- Table structure for p_post_metric +-- ---------------------------- +DROP TABLE IF EXISTS `p_post_metric`; +CREATE TABLE `p_post_metric` ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `post_id` BIGINT NOT NULL, + `rank_score` BIGINT NOT NULL DEFAULT 0, + `incentive_score` int NOT NULL DEFAULT 0, + `decay_factor` int NOT NULL DEFAULT 0, + `motivation_factor` int NOT NULL DEFAULT 0, + `is_del` tinyint NOT NULL DEFAULT 0, -- 是否删除, 0否, 1是 + `created_on` BIGINT NOT NULL DEFAULT '0', + `modified_on` BIGINT NOT NULL DEFAULT '0', + `deleted_on` BIGINT NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_post_metric_post_id_rank_score` (`post_id`,`rank_score`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for p_post_attachment_bill +-- ---------------------------- +DROP TABLE IF EXISTS `p_post_attachment_bill`; +CREATE TABLE `p_post_attachment_bill` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '购买记录ID', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `paid_amount` BIGINT NOT NULL DEFAULT '0' COMMENT '支付金额', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_post_attachment_bill_post_id` (`post_id`) USING BTREE, + KEY `idx_post_attachment_bill_user_id` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=5000002 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章附件账单'; + +-- ---------------------------- +-- Table structure for p_post_collection +-- ---------------------------- +DROP TABLE IF EXISTS `p_post_collection`; +CREATE TABLE `p_post_collection` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '收藏ID', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_post_collection_post_id` (`post_id`) USING BTREE, + KEY `idx_post_collection_user_id` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=6000012 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章收藏'; + +-- ---------------------------- +-- Table structure for p_post_content +-- ---------------------------- +DROP TABLE IF EXISTS `p_post_content`; +CREATE TABLE `p_post_content` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '内容ID', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '内容', + `type` tinyint NOT NULL DEFAULT '2' COMMENT '类型,1标题,2文字段落,3图片地址,4视频地址,5语音地址,6链接地址,7附件资源,8收费资源', + `sort` int NOT NULL DEFAULT '100' COMMENT '排序,越小越靠前', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_post_content_post_id` (`post_id`) USING BTREE, + KEY `idx_post_content_user_id` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=180022546 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章内容'; + +-- ---------------------------- +-- Table structure for p_post_star +-- ---------------------------- +DROP TABLE IF EXISTS `p_post_star`; +CREATE TABLE `p_post_star` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '收藏ID', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_post_star_post_id` (`post_id`) USING BTREE, + KEY `idx_post_star_user_id` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=6000028 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章点赞'; + +-- ---------------------------- +-- Table structure for p_tag +-- ---------------------------- +DROP TABLE IF EXISTS `p_tag`; +CREATE TABLE `p_tag` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '标签ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '创建者ID', + `tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签名', + `quote_num` BIGINT NOT NULL DEFAULT '0' COMMENT '引用数', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `idx_tag_tag` (`tag`) USING BTREE, + KEY `idx_tag_user_id` (`user_id`) USING BTREE, + KEY `idx_tag_quote_num` (`quote_num`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=9000065 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签'; + +-- ---------------------------- +-- Table structure for p_topic_user +-- ---------------------------- +DROP TABLE IF EXISTS `p_topic_user`; +CREATE TABLE `p_topic_user` ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `topic_id` BIGINT NOT NULL COMMENT '标签ID', + `user_id` BIGINT NOT NULL COMMENT '创建者ID', + `alias_name` VARCHAR ( 255 ) COMMENT '别名', + `remark` VARCHAR ( 512 ) COMMENT '备注', + `quote_num` BIGINT COMMENT '引用数', + `is_top` TINYINT NOT NULL DEFAULT '0' COMMENT '是否置顶 0 为未置顶、1 为已置顶', + `is_pin` TINYINT NOT NULL DEFAULT '0' COMMENT '是否钉住 0 为未钉住、1 为已钉住', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` TINYINT NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + `reserve_a` VARCHAR ( 255 ) COMMENT '保留字段a', + `reserve_b` VARCHAR ( 255 ) COMMENT '保留字段b', + PRIMARY KEY ( `id` ) USING BTREE, + UNIQUE KEY `idx_topic_user_uid_tid` ( `topic_id`, `user_id` ) USING BTREE, + KEY `idx_topic_user_uid_ispin` ( `user_id`, `is_pin`) USING BTREE +) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户话题'; + +-- ---------------------------- +-- Table structure for p_user +-- ---------------------------- +DROP TABLE IF EXISTS `p_user`; +CREATE TABLE `p_user` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '昵称', + `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名', + `phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号', + `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'MD5密码', + `salt` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '盐值', + `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态,1正常,2停用', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户头像', + `balance` BIGINT NOT NULL COMMENT '用户余额(分)', + `is_admin` tinyint NOT NULL DEFAULT '0' COMMENT '是否管理员', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `idx_user_username` (`username`) USING BTREE, + KEY `idx_user_phone` (`phone`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100058 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户'; + +-- ---------------------------- +-- Table structure for p_user_metric +-- ---------------------------- +DROP TABLE IF EXISTS `p_user_metric`; +CREATE TABLE `p_user_metric` ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, + `tweets_count` int NOT NULL DEFAULT 0, + `latest_trends_on` BIGINT NOT NULL DEFAULT 0 COMMENT '最新动态时间', + `is_del` tinyint NOT NULL DEFAULT 0, + `created_on` BIGINT NOT NULL DEFAULT 0, + `modified_on` BIGINT NOT NULL DEFAULT 0, + `deleted_on` BIGINT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_user_metric_user_id_tweets_count_trends` (`user_id`, `tweets_count`, `latest_trends_on`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for p_following +-- ---------------------------- +DROP TABLE IF EXISTS `p_following`; +CREATE TABLE `p_following` ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, + `follow_id` BIGINT NOT NULL, + `is_del` tinyint NOT NULL DEFAULT 0, -- 是否删除, 0否, 1是 + `created_on` BIGINT NOT NULL DEFAULT '0', + `modified_on` BIGINT NOT NULL DEFAULT '0', + `deleted_on` BIGINT NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_following_user_follow` (`user_id`,`follow_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for p_contact +-- ---------------------------- +DROP TABLE IF EXISTS `p_contact`; +CREATE TABLE `p_contact` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '联系人ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `friend_id` BIGINT NOT NULL COMMENT '好友ID', + `group_id` BIGINT NOT NULL DEFAULT '0' COMMENT '好友分组ID:默认为0无分组', + `remark` varchar(32) NOT NULL DEFAULT '' COMMENT '好友备注', + `status` tinyint NOT NULL DEFAULT '0' COMMENT '好友状态: 1请求好友, 2已好友, 3拒绝好友, 4已删好友', + `is_top` tinyint NOT NULL DEFAULT '0' COMMENT '是否置顶, 0否, 1是', + `is_black` tinyint NOT NULL DEFAULT '0' COMMENT '是否为黑名单, 0否, 1是', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除好友, 0否, 1是', + `notice_enable` tinyint NOT NULL DEFAULT '0' COMMENT '是否有消息提醒, 0否, 1是', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `idx_contact_user_friend` (`user_id`,`friend_id`) USING BTREE, + KEY `idx_contact_user_friend_status` (`user_id`, `friend_id`, `status`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='联系人'; + +-- ---------------------------- +-- Table structure for p_contact_group +-- ---------------------------- +DROP TABLE IF EXISTS `p_contact_group`; +CREATE TABLE `p_contact_group` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '联系人ID', + `user_id` int NOT NULL DEFAULT '0' COMMENT '用户id', + `name` varchar(32) NOT NULL DEFAULT '' COMMENT '分组名称', + `is_del` tinyint NOT NULL DEFAULT '1' COMMENT '是否删除, 0否, 1是', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='联系人分组'; + +-- ---------------------------- +-- Table structure for p_wallet_recharge +-- ---------------------------- +DROP TABLE IF EXISTS `p_wallet_recharge`; +CREATE TABLE `p_wallet_recharge` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '充值ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `amount` BIGINT NOT NULL DEFAULT '0' COMMENT '充值金额', + `trade_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '支付宝订单号', + `trade_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '交易状态', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_wallet_recharge_user_id` (`user_id`) USING BTREE, + KEY `idx_wallet_recharge_trade_no` (`trade_no`) USING BTREE, + KEY `idx_wallet_recharge_trade_status` (`trade_status`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=10023 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='钱包流水'; + +-- ---------------------------- +-- Table structure for p_wallet_statement +-- ---------------------------- +DROP TABLE IF EXISTS `p_wallet_statement`; +CREATE TABLE `p_wallet_statement` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '账单ID', + `user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID', + `change_amount` BIGINT NOT NULL DEFAULT '0' COMMENT '变动金额', + `balance_snapshot` BIGINT NOT NULL DEFAULT '0' COMMENT '资金快照', + `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变动原因', + `post_id` BIGINT NOT NULL DEFAULT '0' COMMENT '关联动态', + `created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间', + `modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间', + `deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间', + `is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_wallet_statement_user_id` (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=10010 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='钱包流水'; + +DROP VIEW IF EXISTS p_post_by_media; +CREATE VIEW p_post_by_media AS +SELECT post.* +FROM + ( SELECT DISTINCT post_id FROM p_post_content WHERE ( TYPE = 3 OR TYPE = 4 OR TYPE = 7 OR TYPE = 8 ) AND is_del = 0 ) media + JOIN p_post post ON media.post_id = post.ID +WHERE + post.is_del = 0; + +DROP VIEW IF EXISTS p_post_by_comment; +CREATE VIEW p_post_by_comment AS +SELECT P.*, C.user_id comment_user_id +FROM + ( + SELECT + post_id, + user_id + FROM + p_comment + WHERE + is_del = 0 UNION + SELECT + post_id, + reply.user_id user_id + FROM + p_comment_reply reply + JOIN p_comment COMMENT ON reply.comment_id = COMMENT.ID + WHERE + reply.is_del = 0 + AND COMMENT.is_del = 0 + ) + C JOIN p_post P ON C.post_id = P.ID +WHERE + P.is_del = 0; + +DROP VIEW IF EXISTS p_user_relation; +CREATE VIEW p_user_relation AS +SELECT user_id, friend_id he_uid, 5 AS style +FROM p_contact WHERE status=2 AND is_del=0 +UNION +SELECT user_id, follow_id he_uid, 10 AS style +FROM p_following WHERE is_del=0; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/apps/paopao-ce/latest/docker-compose.yml b/apps/paopao-ce/latest/docker-compose.yml new file mode 100644 index 000000000..d5c352080 --- /dev/null +++ b/apps/paopao-ce/latest/docker-compose.yml @@ -0,0 +1,211 @@ +services: + paopao-ce: + image: "bitbus/paopao-ce:v0.6.0-alpha.2" + container_name: ${CONTAINER_NAME} + restart: always + depends_on: + paopao-ce-db: + condition: service_healthy + paopao-ce-redis: + condition: service_healthy + paopao-ce-meili: + condition: service_healthy + networks: + - 1panel-network + - paopao-ce-network + ports: + - "${PANEL_APP_PORT_HTTP}:8008" + entrypoint: + - /bin/sh + - -c + command: + - | + set -e + yaml_quote() { + value="$$1" + printf '"' + printf '%s' "$$value" | sed 's/\\/\\\\/g; s/"/\\"/g' + printf '"' + } + mkdir -p /app/paopao-ce/custom/data/paopao-ce/oss /app/paopao-ce/custom/data/paopao-ce/logs + if [ ! -f /app/paopao-ce/custom/config.yaml ]; then + MYSQL_PASSWORD_FALLBACK="$${MYSQL_PASSWORD}" + if [ -z "$$MYSQL_PASSWORD_FALLBACK" ]; then + MYSQL_PASSWORD_FALLBACK="paopao" + fi + JWT_SECRET_FALLBACK="$${JWT_SECRET}" + if [ -z "$$JWT_SECRET_FALLBACK" ]; then + JWT_SECRET_FALLBACK="18a6413dc4fe394c66345ebe501b2f26" + fi + MEILI_MASTER_KEY_FALLBACK="$${MEILI_MASTER_KEY}" + if [ -z "$$MEILI_MASTER_KEY_FALLBACK" ]; then + MEILI_MASTER_KEY_FALLBACK="paopao-meilisearch" + fi + PUBLIC_DOMAIN_FALLBACK="$${PUBLIC_DOMAIN}" + if [ -z "$$PUBLIC_DOMAIN_FALLBACK" ]; then + PANEL_APP_PORT_HTTP_FALLBACK="$${PANEL_APP_PORT_HTTP}" + if [ -z "$$PANEL_APP_PORT_HTTP_FALLBACK" ]; then + PANEL_APP_PORT_HTTP_FALLBACK="8008" + fi + PUBLIC_DOMAIN_FALLBACK="127.0.0.1:$$PANEL_APP_PORT_HTTP_FALLBACK" + fi + MYSQL_PASSWORD_VALUE="$$(yaml_quote "$$MYSQL_PASSWORD_FALLBACK")" + JWT_SECRET_VALUE="$$(yaml_quote "$$JWT_SECRET_FALLBACK")" + MEILI_MASTER_KEY_VALUE="$$(yaml_quote "$$MEILI_MASTER_KEY_FALLBACK")" + PUBLIC_DOMAIN_VALUE="$$(yaml_quote "$$PUBLIC_DOMAIN_FALLBACK")" + cat > /app/paopao-ce/custom/config.yaml </dev/null"] + interval: 10s + timeout: 5s + retries: 30 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + paopao-ce-network: + driver: bridge diff --git a/apps/paopao-ce/latest/scripts/.gitkeep b/apps/paopao-ce/latest/scripts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/paopao-ce/latest/scripts/init.sh b/apps/paopao-ce/latest/scripts/init.sh new file mode 100755 index 000000000..09c0b9807 --- /dev/null +++ b/apps/paopao-ce/latest/scripts/init.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -euo pipefail + +DATA_DIR="${APP_DATA_DIR:-./data}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SOURCE_SQL="${SCRIPT_DIR}/../data/paopao-mysql.sql" + +mkdir -p \ + "${DATA_DIR}/custom/data/paopao-ce/oss" \ + "${DATA_DIR}/custom/data/paopao-ce/logs" \ + "${DATA_DIR}/initdb" \ + "${DATA_DIR}/meili" \ + "${DATA_DIR}/mysql" \ + "${DATA_DIR}/redis" + +if [ ! -f "${DATA_DIR}/initdb/paopao.sql" ]; then + cp "${SOURCE_SQL}" "${DATA_DIR}/initdb/paopao.sql" +fi diff --git a/apps/paopao-ce/latest/scripts/uninstall.sh b/apps/paopao-ce/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/paopao-ce/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/paopao-ce/latest/scripts/upgrade.sh b/apps/paopao-ce/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/paopao-ce/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/paopao-ce/logo.png b/apps/paopao-ce/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7054b5bdc9830332a59faface8548054f37c22f9 GIT binary patch literal 12307 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 literal 0 HcmV?d00001 diff --git a/apps/paopao-ce/source-evidence.json b/apps/paopao-ce/source-evidence.json new file mode 100644 index 000000000..f48adcd88 --- /dev/null +++ b/apps/paopao-ce/source-evidence.json @@ -0,0 +1,15 @@ +{ + "repository": "https://github.com/rocboss/paopao-ce", + "dockerDocs": "https://github.com/rocboss/paopao-ce/blob/main/INSTALL_ZH.md", + "composeFile": "https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml", + "officialCompose": "https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml", + "officialConfig": "https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/internal/conf/config.yaml", + "officialInstallDocs": "https://github.com/rocboss/paopao-ce/blob/main/INSTALL_ZH.md", + "notes": [ + "Issue request: https://github.com/okxlin/appstore/issues/2435", + "The all-in-one image was not used because runtime testing showed missing groupmod/usermod/gosu and no working HTTP service.", + "The app uses the official multi-service topology: MySQL, Redis Stack, Meilisearch and PaoPao backend with embedded web UI.", + "The backend image is pinned to bitbus/paopao-ce:v0.6.0-alpha.2 because Docker Hub does not publish a backend image for the newer v0.6.0-alpha.3 release and the official compose default tag 0.6-alpha is missing.", + "Only amd64 is declared because bitbus/paopao-ce tags are single-architecture amd64 images." + ] +}