Skip to content

Godfunc/paopao

Repository files navigation

简介

paopao 是一个使用Java开发的开源的微信消息通知服务。支持一对对消息推送和一对多消息推送。

build release downloads license

开发环境

  • JDK1.8
  • MySql
  • Gradle

使用的框架

  • SpringBoot
  • MyBatis-Plus(数据库操作)
  • Thymeleaf(HTML模版引擎)
  • Websocket(用来做微信扫码登陆)

API接口(示例,无法访问)

快速开始

下载代码到本地

执行命令git clone https://github.com/Godfunc/paopao.git

微信公众号信息配置

  1. 前往 微信公众平台接口测试平台 获取appIDappsecret
  2. 修改JS接口安全域名为你的服务所在域名(开发环境可以使用局域网IP,不支持带端口)。
  3. 获取测试号二维码图片中的链接(可以使用在线二维码识别获取)。
  4. 模板消息接口新增测试模板模板标题消息通知模板内容消息: {{msg.DATA}},提交或获取到模板ID
  5. 修改网页授权获取用户基本信息中的授权回调页面域名为你服务所在域名。

项目配置文件配置application-{dev}.yml

  1. 使用上面获取到的appidappsecret配置 wx.mp.app-idwx.mp.secret
  2. 将服务所有域名配置在host上。
  3. 将识别出来的测试号二维码配置在mpQrCode上。
  4. 将新增的模板ID配置在templateId上。

配置数据库(这里使用的是MySql)

  1. 创建一个名为paopao的数据库。
  2. 执行项目下db/mysql.sql创建表。
  3. 在配置文件中设置spring.datasource.urlspring.datasource.usernamespring.datasource.password

设置生效的配置文件

  1. 修改application.yml中的spring.profiles.active为你刚配置的配置文件。以dev为例,如果你刚才的配置信息写到application-dev.yml中,那么spring.profiles.active就是应该写dev

打包

  1. cd paopao
  2. ./gradlew build
  3. jar包在 build/libs/paopao-{version}.jar

项目启动

  1. nohup java -jar paopao-{version}.jar >> app.log &

使用releases中的jar包

下载项目

  1. 前往 releases 下载最新的jar包(paopao-{version}.jar)。

项目启动

  1. 修改配置信息,删除换行,最后得到一条命令
nohup java -jar paopao-{version}.jar 
    --spring.datasource.url="jdbc:mysql://localhost:3306/paopao?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai" 
    --spring.datasource.username="paopao" 
    --spring.datasource.password="123456" 
    --mpQrCode="http://mpqrxx.com" 
    --templateId="3XMYYC4jpz3nSWWVRehUK0oLBo7WN4A_6L56FlDVIUM" 
    --wx.mp.app-id="wx1234" 
    --wx.mp.secret="123455" 
>>app.log &
  1. 最终得到的应该是一条这样的命令 nohup java -jar paopao-{version}.jar --spring.datasource.url="jdbc:mysql://localhost:3306/paopao?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai" --spring.datasource.username="paopao" --spring.datasource.password="123456" --host="https://xxx.com" --mpQrCode="https://mpqr.com" --templateId="3XMYYC4jpz3nSWWVRehUK0oLBo7WN4A_6L56FlDVIUM" --wx.mp.app-id="wx1234" --wx.mp.secret="123455" >> app.log &

  2. nginx配置

server {
    listen       80;
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  paopao.godfunc.fun;
    root         /usr/share/nginx/html;

    ssl_certificate "/xx/fullchain.pem";
    ssl_certificate_key "/xx/privkey.pem";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    location / {
        proxy_pass http://127.0.0.1:9899;
	    proxy_set_header Host $host;
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Real-IP $remote_addr; 
	    proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}