基於spring-boot的社區社交微信小程序,適合作腳手架、二次開發html
代碼地址以下:<br>http://www.demodashi.com/demo/13867.html前端
1 概述
筆者作的一個後端基於spring-boot的社區社交微信小程序,能夠做爲開發的腳手架,開發速度快,靈活,先後端分離,很適合二次開發。數據主要存儲在MySQL上,筆者封裝了一個MysqlGenerator.java工具類,結合spring jdbc,作數據庫操做很方便。另外提供了一個文檔系統,後端人員產出接口直接寫出markdown文件就行,和前端溝通很方便。java
2 詳細
筆者所在的小區有不少居民,我以爲能夠提供一個平臺給你們,方便進行信息共享、閒置買賣等,也提供一些經常使用便民工具,例如電話查詢,交通訊息查詢,另一些商家也能夠發佈本身的服務讓更多人知曉,例如汽車年審,廢品回收,特產,搬家服務等。mysql
筆者作的這個後端,是基於spring-boot的,主要特色以下:git
- 方便開發部署,支持一鍵發佈,配置好git以後發送一個http請求,就執行一個腳本,自動拉取最新代碼併發布,腳本都在工程根目錄。
- 自建文檔系統,直接寫markdown文件丟進指定文件夾便可,方便給前端人員查閱(暫未作登陸驗證,請注意保護文檔地址url不泄露)。
- spring jdbc封裝,數據庫操做便捷,會寫sql就能作後端業務,方便修改排查問題,速度快,方便性能調優(工具類MysqlGenerator.java源碼也簡單,能夠根據本身業務狀況作修改)。
3 配置說明
3-1 環境、物料準備
1.微信小程序帳號 2.騰訊COS平臺帳號(咱們圖片存在這裏,50G免費) 3.Java8,maven 3.5+,Git,MySQL 5.6+,Redis 3.2+ 4.微信Web開發者工具(用於調試小程序代碼)-> 微信小程序開發文檔github
3-2 工程目錄
4 配置
4-1 帳號配置
4-2 一鍵部署配置
首先要配置好Git,把代碼上傳到你的倉庫,並切換到分支dev,而後請求http接口http://host:port/common/shell/pullrun
,會自動運行腳本pullrun.sh,該腳本會拉取最新代碼並從新部署,具體原理請查閱pullrun.sh內容及src/main/java/com/shop/modules/apicommon/controller/CommonController.runScript()
方法web
5 功能說明
5-1 工具類MysqlGenerator.java的使用
5-1-1 開發前準備
5-1-1-0 建表
在MySQL數據庫中建好表,例如一個cuser表,有id,login_name,nickname字段。spring
5-1-1-0 編寫2種Java Bean
一種是普通的bean,用於返回結果或其餘通常用途,另外一種是特殊的bean,用於接收請求參數,配合MysqlGenerator工具類生產sql語句。sql
特殊bean主要是putter方法特殊,舉例以下shell
package com.shop.beans.param; import java.io.Serializable; import com.shop.beans.basic.MyParams; public class ParamCUser extends MyParams implements Serializable { // id,login_name,nickname private static final long serialVersionUID = 1L; private int id; private String login_name; private String nickname; //getter public int getId() { return id; } public String getLogin_name() { return login_name; } public String getNickname() { return nickname; } //setter public void setId(int id) { put("id",id); this.id = id; } public void setLogin_name(String login_name) { put("login_name",login_name); this.login_name = login_name; } public void setNickname(String nickname) { put("nickname",nickname); this.nickname = nickname; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(getClass().getSimpleName()); sb.append(" ["); sb.append("Hash = ").append(hashCode()); sb.append(", id=").append(id); sb.append(", login_name=").append(login_name); sb.append(", nickname=").append(nickname); sb.append(", serialVersionUID=").append(serialVersionUID); sb.append("]"); return sb.toString(); } }
這種特殊的bean,能夠手寫,也可使用這個工具,能夠根據mysql表直接生成,很是方便,具體請查看開源項目:JavaBeanGenerator
5-1-2 增
有了特殊的bean,從Controller中接收了參數以後,就能夠開始開發了,有3種新增的方式,請查閱例子
@Autowired private UserDao dao; /** * * @param cuser 特殊bean * @return */ public JsonBase addCUser(ParamCUser cuser){ cuser.setCreate_time(DateUtil.getCurrentTimestamp());//特殊bean能夠像普通bean那樣set值 cuser.setLast_login_time(DateUtil.getCurrentTimestamp()); // allFieldsInsertSQL,全部字段都會插入 String sql = MysqlGenerator.allFieldsInsertSQL(cuser, TableName.C_USER); // 除去指定字段插入,第三個參數指定便可,多個字段能夠用英文逗號隔開 String sql2 = MysqlGenerator.exceptFieldsInsertSQL(cuser, TableName.C_USER, "id,login_name"); // 指定字段插入,第三個參數指定便可,多個能夠用英文逗號隔開 String sql3 = MysqlGenerator.specificFieldsInsertSQL(cuser, TableName.C_USER, "id,login_name,nickname"); Debugger.so(sql); Debugger.so(sql2); Debugger.so(sql3); int reInt = dao.insert(sql, cuser.getParams()); return reInt > 0 ? CM.getReturnInfo("新增成功") : CM.getFailInfo(CS.UNCONFIRM_ERROR, "新增失敗"); }
5-1-3 刪
根據id去刪,不怕把整個表都刪了,支持根據多個字段刪除,具體原理能夠直接看源碼,很容易理解。
/** * * @param paramPostLike 特殊bean * @return */ public JsonBase remove_like(ParamPostLike paramPostLike) { String sql = MysqlGenerator.deleteSQL(TableName.POST_LIKE, "openid,post_id"); int ret = dao.delete(sql, paramPostLike.getParams()); return ret > 0 ? CM.getReturnInfo("unlike ok") : CM.getFailInfo(CS.UNCONFIRM_ERROR, "unlike 失敗"); }
5-1-4 改
具體參數和用法能夠直接看方法源碼,很容易理解
//因此字段都更新 MysqlGenerator.allFieldsUpdateSQL() //指定字段更新 MysqlGenerator.specificFieldsUpdateSQL() //出去某字段,其他都更新 MysqlGenerator.exceptFieldsUpdateSQL()
5-1-5 查
咱們查詢主要靠手寫,能夠在Navicat或者相似工具上編寫好,複製到代碼裏,若是不想寫太多字符串拼接,能夠用@Multiline
註解,這樣就能夠在註釋裏使用多行文本了
/** SELECT cm.*, cu.`nickname`, cu.`avatar` FROM post_comment AS cm LEFT JOIN c_user AS cu ON (cu.`openid` = cm.`from_openid`) WHERE 1=1 AND cm.to_post_id = :to_post_id AND cm.to_comment_id = 0 ORDER BY cm.create_time DESC */ @Multiline private String GET_COMMENTS_BY_ID;
編寫好查詢sql以後,直接調用spring-jdbc的方法就能夠查詢了。
微信小程序配置
工程名shop-mp
,若是須要發佈小程序,須要有https證書,就須要配置好服務器域名,登陸小程序帳號以後,在【設置】-【開發設置】下找到。須要配置模板消息的話,還要本身申請一下模塊消息。預覽的話能夠直接使用微信的【微信Web開發者工具】打開便可,主要須要配置好請求的地址url,在小程序/shop-mp/config/global_config.js裏配置。
// 開發狀態 const isDebug = false; // const localhost = '127.0.0.1'; const localhost = '192.168.1.161'; module.exports = { isDebug: isDebug, //版本號。 VERSION_CODE: 44, //簽名的字符串 SIGN_KEY: 'foobar', // A用戶(小區)id,每一個小區有一個id AUSER_ID: 1, // 小程序碼的連接 MPCODE_URL: 'http://wx2.sinaimg.cn/mw690/8f8f5f45gy1fr5xyj7im8j2076076q43.jpg', // 小程序web-view URL業務域名 BUSINESS_DOMAIN: 'xxx.com', //這裏配置爲你的url,本地就localhost URL_BASE: isDebug ? 'http://' + localhost +':8000' : 'https://xxxxxxxx' }
5-2 文檔系統的使用
把編寫好的markdown文件丟進apidoc/md裏面就好了,工程部署以後能夠在http://host:port/apidoc/yourdocname.html
查看,支持子文件夾,記得修改文檔的名稱,防止url泄露。有時間也能夠作一個驗證。
6 項目展現
6-1 順碧小圈-微信小程序
6-2 文檔模塊效果圖
7 聯繫做者
基於spring-boot的社區社交微信小程序,適合作腳手架、二次開發
代碼地址以下:<br>http://www.demodashi.com/demo/13867.html
注:本文著做權歸做者,由demo大師代發,拒絕轉載,轉載須要做者受權