代码地址如下:
http://www.demodashi.com/demo/13867.html

1 概述

笔者做的一个后端基于spring-boot的社区社交微信小程序,可以作为开发的脚手架,开发速度快,灵活,前后端分离,很适合二次开发。数据主要存储在MySQL上,笔者封装了一个MysqlGenerator.java工具类,结合spring jdbc,做数据库操作很方便。另外提供了一个文档系统,后端人员产出接口直接写出markdown文件就行,和前端沟通很方便。

2 详细

笔者所在的小区有很多居民,我觉得可以提供一个平台给大家,方便进行信息共享、闲置买卖等,也提供一些常用便民工具,例如电话查询,交通信息查询,另外一些商家也可以发布自己的服务让更多人知晓,例如汽车年审,废品回收,特产,搬家服务等。

笔者做的这个后端,是基于spring-boot的,主要特点如下:

  1. 方便开发部署,支持一键发布,配置好git之后发送一个http请求,就执行一个脚本,自动拉取最新代码并发布,脚本都在工程根目录。
  2. 自建文档系统,直接写markdown文件丢进指定文件夹即可,方便给前端人员查阅(暂未做登录验证,请注意保护文档地址url不泄露)。
  3. 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开发者工具(用于调试小程序代码)-> 微信小程序开发文档

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()方法

5 功能说明

5-1 工具类MysqlGenerator.java的使用

5-1-1 开发前准备

5-1-1-0 建表

在MySQL数据库中建好表,例如一个cuser表,有id,login_name,nickname字段。

5-1-1-0 编写2种Java Bean

一种是普通的bean,用于返回结果或其他一般用途,另一种是特殊的bean,用于接收请求参数,配合MysqlGenerator工具类生产sql语句。

特殊bean主要是putter方法特殊,举例如下

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,nicknameprivate static final long serialVersionUID = 1L;private int id;private String login_name;private String nickname;//getterpublic int getId() { return id;}public String getLogin_name() { return login_name;}public String getNickname() { return nickname;}//setterpublic 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;}@Overridepublic 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种新增的方式,请查阅例子

@Autowiredprivate 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 cmLEFT JOIN c_user AS cu ON (cu.`openid` = cm.`from_openid`)WHERE 1=1AND cm.to_post_id = :to_post_id AND cm.to_comment_id = 0ORDER 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,每个小区有一个idAUSER_ID: 1,// 小程序码的链接MPCODE_URL: 'http://wx2.sinaimg.cn/mw690/8f8f5f45gy1fr5xyj7im8j2076076q43.jpg',// 小程序web-view URL业务域名BUSINESS_DOMAIN: 'xxx.com',//这里配置为你的url,本地就localhostURL_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的社区社交微信小程序,适合做脚手架、二次开发

代码地址如下:
http://www.demodashi.com/demo/13867.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

基于spring-boot的社区社交微信小程序,适合做脚手架、二次开发相关推荐

  1. 基于Spring Boot的点餐微信小程序设计与实现

    摘 要 近年来,国民收入的提高各个行业都得到了长足发展,其中也带动着互联网行业飞速发展,许多传统行业开始与互联网结合并通过数字化的改造.转型与升级创造出新的发展生态.尤其在国人最关注的"吃& ...

  2. Spring Boot后端+Vue前端+微信小程序,完整的开源解决方案!

    项目简介 一个小商场系统,包括: 后端:Spring Boot 管理员前端:Vue 用户前端:微信小程序 功能介绍 1.小商城 首页 专题列表.专题详情 分类列表.分类详情 品牌列表.品牌详情 新品首 ...

  3. 基于springboot的短视频社交微信小程序

    前言 项目可包部署(无需担心部署问题) Q 1115487855 交流群:758350964 一 项目介绍 随着微信的普及,小视频的流行,我们设计一款基于微信小程序端的视频社交软件 + 后台管理系统作 ...

  4. 微信小程序学习笔记(二)-- 开发之框架

    一.小程序框架介绍(了解) 小程序框架包含小程序的配置.框架接口.场景值.WXML 和 WXS 等 二.小程序的配置(精通) 小程序的配置分为全局配置.页面配置以及sitemap 配置 1.全局配置 ...

  5. 仿知乎论坛社区社交微信小程序

    微信公众号:创享日记 发送:仿知乎 获取完整源码(静态数据),导入微信开发者工具即可 说明:源码主要是前端,后端可自行开发 1.首页 问题列表 话题列表 触底加载刷新 2.问题列表及回答 3.发现页面 ...

  6. 基于Spring Boot的社区论坛开发

    基于Spring Boot的社区论坛开发 第一章:框架基本介绍+前端页面+环境搭建 1.介绍 所有框架: SSM开发框架:Spring(一套JAVA框架).Spring MVC(处理浏览器请求).My ...

  7. 基于java springboot的小说阅读微信小程序含后台管理系统源码

    系统运行环境 开发工具 eclipse(idea),mysql5.7(大于5.5),navicat,小程序开发工具 硬件要求 windows操作系统 cpu:2.4GHz 内存:4G 硬盘:100G ...

  8. 基于云开发的微信小程序实战教程(二)

    基于云开发的微信小程序实战教程(二) 上篇文章中,简单介绍了下小程序云开发的概念,还有开发工具的安装和配置,云开发环境已经搭建完毕. 本章主要内容:微信开发者工具如何使用,小程序云开发的基础目录结构 ...

  9. 修复登录接口社区论坛微信小程序源码下载-支持多种发帖模式超强社区

    这是一款社区论坛小程序源码 内涵强大的功能 支持多种多样的发帖模式 比如发图文,发语音,发涂鸦,发视频等 另外也可以设置为只能会员才可以发 另外还拥有礼物功能,可以对发帖人打赏,礼物等都可以自定义 另 ...

最新文章

  1. keras 使用多GPU
  2. 润乾报表实现组内排序报表及改进
  3. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善...
  4. when will the ABindings be filled for json.JSONModel in SAP UI5
  5. 选择Windows CE wince嵌入式操作系统 的十大理由
  6. 流量管理系统产品选型常见问答(FAQ)
  7. UI设计优秀可临摹素材|网页设计头部技巧
  8. 如何 sizing 一台物理机上可以承载多少 VMware 虚拟机? 分享 Vsphere HA 几个实用知识点
  9. Python常用的字符串操作
  10. Tensorlayer深度强化学习之Tensorlayer安装
  11. 【老兵不朽】时隔1年,jQuery 发布新版 3.4.0
  12. access 链接mysql数据库教程_ACCESS实例教程(数据库的编程)
  13. Css实现雷达扫描动画效果
  14. 如何修改电驴服务器地址,emule设置连接服务器地址
  15. 老陕解读:陕西10大泡馍的品尝诀窍
  16. 《艺多不压身 艺多不养家》反思
  17. SATA硬盘的数据和电源接口定义
  18. 专升本管理学知识点总结——目标管理
  19. vi编辑器中的常用命令
  20. 不加班,最高20天全薪年假在微软做程序员究竟有多爽?

热门文章

  1. 3. GD32F103C8T6 GPIO的位带操作
  2. STM32F427 主频超过140M 死机
  3. 写一个楼房盘类java语言编写_Java开发每日复盘2018_0514
  4. layui图片上传按钮按着没反应_关于layui动态生成文件上传按钮后点击无效的解决办法...
  5. java做类似于qq空间动态加载_实现类似微博、QQ空间等的动态加载
  6. java老年代_Java新生代老年代的划分及回收算法
  7. c语言读入图片matlab,将数据从matlab文件读入C语言
  8. 【数据库】第一章 数据库的分类、SQL、数据库、表和表记录的常用操作
  9. [转] Agile Software Development 敏捷软件开发
  10. [.Net 4.0]泛型的协变,以及高阶函数对泛型的影响 Part 1