开源一个golang小程序商城后台系统(moshopserver)

开源一个golang小程序商城后台(moshopserver)

golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一些资料,有些人说很容易上手,确实是这样,和C/C++比起来,少了很多乱七八糟的语法。学一门新的语言,最好的方法就是动手写一些东西,最近小程序也比较火,也想学一下,网络上搜索的一些开源项目,基本上没有golang实现的,大部分都是nodejs和java写的,那么我就来实现一个golang版的吧,一石二鸟。

开发小程序前后端都需要开发,自己的前端经验很少,搜索了一些开源代码,有一个小程序项目让人眼前一亮,Nideshop,界面做的不错,代码结构也清晰,而且前后端都实现了,自己的目标是学习golang和小程序,干脆用golang重写nideshop吧。

Web框架的选择

nodejs和java已经一些很成熟的框架了,比如nodejs的thinkjs,java的spring框架。golang最近几年才火起来,有一些web框架也比较新,有下面一些框架:

Beego:开源的高性能 Go 语言 Web 框架。

  • https://github.com/astaxie/beego
  • https://beego.me

Buffalo:使用 Go 语言快速构建 Web 应用。

  • https://github.com/gobuffalo/buffalo
  • https://gobuffalo.io

Echo:简约的高性能 Go 语言 Web 框架。

  • GitHub - labstack/echo: High performance, minimalist Go web framework
  • Echo - High performance, minimalist Go web framework

Gin:Go 语言编写的 Web 框架,以更好的性能实现类似 Martini 框架的 API。

  • https://github.com/gin-gonic/gin
  • https://gin-gonic.github.io/gin

Iris:全宇宙最快的 Go 语言 Web 框架。完备 MVC 支持,未来尽在掌握。

  • https://github.com/kataras/iris
  • Iris Web Framework

Revel:Go 语言的高效、全栈 Web 框架。

  • GitHub - revel/revel: A high productivity, full-stack web framework for the Go language.
  • Revel - Go Web Framework

Beego是国人写的框架,文档很全,例子也不少,用的人也多,最后决定用这个框架。

使用xorm生成数据库model

数据库采用的是mysql,使用golang读写mysql beego已经实现了orm框架。但是数据库表需要生成对应的struct,beego的orm貌似没有自动生成的功能。采用了一个开源库go-xorm/cmd,最后生成的数据库表像下面这样,奇怪的是没有json标签,而且这个xorm标签,最后golang不认报了错。还有一个问题是有些字段类型xorm生成错了。比如,数据库中的DECIMAL字段,xorm生成的结构体中的字段类型为string,这个显然是错误的。

type NideshopAd struct {
AdPositionId int    `xorm:"not null default 0 index SMALLINT(5)"`
Content      string `xorm:"not null default '' VARCHAR(255)"`
Enabled      int    `xorm:"not null default 1 index TINYINT(3)"`
EndTime      int    `xorm:"not null default 0 INT(11)"`
Id           int    `xorm:"not null pk autoincr SMALLINT(5)"`
ImageUrl     string `xorm:"not null TEXT"`
Link         string `xorm:"not null default '' VARCHAR(255)"`
MediaType    int    `xorm:"not null default 0 TINYINT(3)"`
Name         string `xorm:"not null default '' VARCHAR(60)"`
}

moshopserver框架结构

moshopserver的框架结构很清晰也很简单。

前端小程序发起HTTP请求到Router(router转发请求的各个阶段能做一些过滤,这个后面要说一下),router识别出请求链接,将其转发到相应的controller上面。还有三个底层的package:

  • models

    单纯和数据库打交道的接口都放在这个package下面。

  • services

    主要实现了三类功能,和微信交互的接口,快递查询接口和token生成,检测接口。

  • Utils

一些基本的功能函数放在这个package下面。

Token验证

token的生成验证使用了jwt-go这个第三方库,使用这个库通过token来解析出userID,创建和验证token是否过期,整个交互流程是下面这样子:

  1. 小程序打开的时候默认不登录,调用后台接口,因为没有token,解析不出来userid,返回小程序段提示用户登录。
  2. 小程序调用微信后台服务获取userinfo,调用moshopserver后台登录接口。
  3. 后台接口调用微信后台,解密userInfo中的相关字段,生成一条用户信息插入moshopserver数据库中。然后从数据库中取出userid,生成带过期时间的token。返回给小程序。
  4. 小程序调用微信后台接口,将token存储到微信服务端。接下来每次调用moshopserver后台,都要从微信后台取出token,然后传递到moshopsever后台。
  5. 如果token过期或者无效,后端解析不出userid,返回给小程序,让其再次登录。生成新的token。如此反复。

Router过滤器

Nideshop中做了一些设计,有些接口即使token过期也能访问,不需要提示用户再次登录。moshopserver中也实现了这个功能。采用了beego中的过滤器:

    beego.InsertFilter("/api/*", beego.BeforeExec, services.FilterFunc, true, true)

使用的是BeforeExec参数,这个阶段Router已经识别出了Controller和Action的具体类型,我们可以自己加判断,到底哪些Controller和Action需要用户登录权限,这些Controller和action放在了配置文件api.conf中:

[controller]
publicController= {'index','catalog','topic','auth','goods','brand','search','region'}
[action]
publicAction={'comment/list','comment/count','cart/index','cart/add','cart/checked','cart/update','cart/delete','cart/goodscount','pay/notify'}

如果HTTP请求链接的Controller和Action都不在配置文件中,则跳过接口调用,直接返回小程序提示其进行重新登录。

问题

moshopserver还是有一些bug,因为测试不够充分,应该也还存在一些未知的bug,以后慢慢修复。

已经问题:

  • 订单列表中商品信息不显示。
  • 用户登录后没有显示登录(头像和用户名不显示)

欢迎Star,欢迎提问题。

GitHub - harlanc/moshopserver: 小程序商城golang后台API(基于Beego)

客户端小程序界面截图

最后附几张截图

posted @ 2019-06-09 22:50 HarlanC 阅读(...) 评论(...) 编辑 收藏

开源一个golang小程序商城后台系统(moshopserver)相关推荐

  1. 遵义微科技小程序商城直播系统,线下零售行业发展新趋势!

    直播卖货是今年零售业新风口.受肺炎疫情影响,截止到现阶段,大部分城市的线下零售业遭遇店面房租.产品库存量.员工薪水等多种压力的商家,竞相开始转型发展网上打起"增长保卫战",直播更是 ...

  2. 【微信小程序控制硬件15 】 开源一个微信小程序,支持蓝牙快速配网+WiFi双控制ESP32-C3应用示范;(附带Demo)

    文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...

  3. 小程序商城后台技术选型

    需求分析 我们这个小程序商城,主要面向的客户是实体店,由我们公司完成一套小程序商城的模板,推广给实体店,为他们进行运行维护升级,商城的业务模型也不大,主要分为如下几个功能,商品模块.优惠券模块.订单模 ...

  4. 一款开源的微信小程序商城项目,接外包直接拿去改改,就能用(附源码)。。。...

    大家好,今天,推荐一个小程序商城项目. 上次是谁要小程序商城项目啊,猿哥帮你找到了. 这是我目前见过的最好的小程序商城项目.功能完整,代码结构清晰.值得推荐. 后端部分虽然是PHP的,但是建议有研究精 ...

  5. 做一个微信小程序商城需要多少钱?

    这几年,微信小程序特别火,因为易用易传播的特性,很多企业也都都在搭建小程序商城进行宣传拓客.这也催生了网络上提供小程序服务的公司也是铺天盖地,有免费的,几十元的,卖模板的,开店的,倒卖源码的,盗版的, ...

  6. 做一个微信小程序商城需要多少钱

    这几年,微信小程序特别火,因为易用易传播的特性,很多企业也都都在搭建小程序商城进行宣传拓客.这也催生了网络上提供小程序服务的公司也是铺天盖地,有免费的,几十元的,卖模板的,开店的,倒卖源码的,盗版的, ...

  7. 微信小程序商城 (后台JAVA)

    微信小程序商城(Java版) 技术选型 1 后端使用技术 1.1 springframework4.3.7.RELEASE 1.2 mybatis3.4.1 1.3 shiro1.3.2 1.4 se ...

  8. 开源智慧党建小程序源码系统+搭建教程

    分享一款完全开源的智慧党建小程序源码系统,功能强大,非常给力!有完整搭建教程. 后台演示: 源码下载地址:春哥技术博客 获取

  9. 手把手教你调试构建一个Vue/小程序商城项目源码

    下面将详细的介绍weiphp5.0商城项目的调试打包上线的流程: 安装NodeJs/NPM 安装CNPM(可忽略) 运行项目 打包上线项目 1. 安装NodeJs 推荐到NodeJS的官网下载安装包 ...

最新文章

  1. 机器学习驱动技术是生物学进步的下一个突破
  2. centos6.7 安装redis
  3. POJ 2421 Constructing Roads MST kruskal
  4. 使用web3j构建以太坊钱包
  5. mac安装win10_mac制作win10启动盘教程
  6. mysql解压包安装linuex_CentOS下安装Apache,php,Mysql
  7. Office 2003 主 Interop 程序集的安装和使用
  8. git 修改默认分支为main_Git:基本操作
  9. python算法有多少个_Python算法比较两个排序的列表并计算多少个...
  10. 机器学习之K-means算法:深入浅出K-Means算法
  11. web服务器和数据库服务器不在同一台机器上,如何连接?
  12. 电熨斗IEC测试流程及周期
  13. KETTLE教程-初探
  14. [云原生专题-59]:Kubesphere云治理-操作-分步部署Web业务平台RuoYi Cloud项目 - 手工上云部署实际过程全部操作步骤
  15. Linux--解决vi报错:E37: No write since last change E162: No write since last change for buffer
  16. 麦吉尔大学计算机科学,麦吉尔大学计算机专业
  17. 实操:WDS安装win系统
  18. 7.2 Python 实例11-自动轨迹绘制
  19. 自定义ListVIew添加上下更多项
  20. centos查看显卡型号时出现 NVIDIA Corporation

热门文章

  1. 重拳出击!再见了,骚扰电话(短信)!
  2. 2021年全球陀螺测斜仪收入大约6百万美元,预计2028年达到7百万美元
  3. Nginx官方文档(三十四)【ngx_http_ssl_module】
  4. 计算机毕设(附源码)JAVA-SSM交通违章举报平台
  5. JS 中国象棋程序(0):界面设计
  6. 用HTML5实现的在线编辑工具
  7. element UI-文字提示(el-tooltip)
  8. 大地坐标与空间直角坐标转换
  9. 混淆包含SlidingMenu、gson等Android代码的proguard写法
  10. 计算机显示器上有条纹,电脑屏幕出现条纹有哪些原因