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

article/2025/11/9 14:48:27

开源一个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 阅读(...) 评论(...) 编辑 收藏

http://chatgpt.dhexx.cn/article/EfeYHWfx.shtml

相关文章

效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码 微信小程序开源了

⭐零、教程概述 效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码,有数据库和关卡。 我写的程序是指 卡牌堆叠游戏 ,效果与羊了个羊一致。本教程有已有两个版本。 本来是想着Fork多一点的时候再开源的,没有想到一个F…

WordPress小程序搭建之免费开源小程序

2021了如果你还没有小程序,不要着急小编带你从零到1搭建一个属于自己的小程序,用了大家都在用的全球博客开源框架WordPress据说这个系统搭建的网站占有全球网站的30%,这是个什么概念。 关于WordPress的搭建教程前面的课程已经讲到了&#xff…

推荐几个微信小程序开源项目

小程序上线后,改版了很多次,包括一些 Api 接口也有改动。如果你学习一个很久之前的小程序项目是没有意义的,本文推荐的小程序都是最近有更新的。相信在你学习、部署的过程中,不会遇到很多问题。 1,WordPress 版微信小…

【微信小程序】多多房产小程序V2.5.81全开源安装包+小程序前端,一款专属于您的置业顾问小程序源码

最近房产小程序比较火爆,笔者特意收集了一些,经过比较,发现这款小程序不错,功能强大,分享给大家。 多多房产小程序提供给中介公司发布推广、二手房在小程序里面每天分享房源,房产中介小程序专注做售楼部、…

派单o2o全开源版 v11.6.0 全新UI版小程序模块

简介: 自动发单,挑选服务人员或商家,根据用户实际情况可选上门预约或到店服务。在线预约技师,灵活匹配合适技师。购物模块,可选择商品规格、方式,实时查看物流状态,评论商品。 功能介绍 自动发…

推荐一个商业级saas开源小程序电商java项目

使用Java开发,SpringBoot框架、MyBatis-plus持久层框架、Redis作为缓存、MySql作为数据库。 前端vuejs作为开发语言,使用uniapp编码,同时支持微信小程序、安卓App、苹果App。 支持集群部署,单机部署。 unimall 针对中小商户、企业和个人学习者…

简易上手的开源校园小程序源码

介绍: 基于云开发的校园服务项目,简单易上手的wx校园服务小程序,服务广大大学生练手项目,完全开源 软件架构: 前端应用wx原生的weui组件库 后台基于云开发技术生成可视化管理后台 安装教程: 源码下载后…

小程序开源框架选型及原理介绍

目前比较流行的小程序开源框架有京东的Taro、dclound的uni-app(集成mpvue)、美团的mpvue和腾讯的wepy。下面我们就从各方面对比这4个框架。 选型 社区生态 以下数据通过 Github Statistics 获得 维护状态 可以看到uni-app和taro近期还有更新&#xff…

微信小程序云开发开源项目:在线捐赠功德箱

环境说明 开发工具:微信开发者工具 调试基础库:2.19.2 目录说明 Project ├─cloudfunctions 云函数文件夹 │ ├─payCallback 微信支付回调函数 │ ├─quickstartFunctions │ │ ├─createCollection │ │ ├─get…

开源微信共享记账小程序

开源微信共享记账小程序 jizhang介绍先体验一下?为什么又是一个记账小程序?功能介绍软件架构使用门槛安装教程部分截图项目地址 jizhang 云雀记账 介绍 一款简单的微信共享记账小程序,后端使用的是PHP。 先体验一下? 为什么又…

功能全面的开源小程序商城-CRMEB

前言 在一个月黑风高的搜索小程序开源商城的下午,突然三个火的标志领入眼帘, 没错,就是它, 打开了我对开源小程序,而且功能这么全面的开源小程序商城的认知,我们来认识一下它吧! 功能全面 话…

外卖扫码点餐全开源小程序源码

介绍: 本系统应用场景是小店或外卖店使用,如快餐店,奶茶店,外卖店等 系统特点: 扫码点餐:常见扫码点餐,吧台扫码,店内餐桌扫码 小票打印:对接三方小票机,打印…

开源小程序商城推荐-支持所有小程序平台

线下商家都在努力的寻求转型,特别是在经过了这段"特殊时期"之后,大家都意识到完成线上线下的连接有多么重要。现在很多电商平台是饱和状态,到处都是红海品类。走线上,获取私域流量非常重要。小程序商城是获取私域流量的…

外卖扫码点餐独立全开源小程序源码+VUE前端

本系统应用场景是小店或外卖店使用,如快餐店,奶茶店,外卖店等 系统特点:扫码点餐:常见扫码点餐,吧台扫,店内餐桌扫吗 小票打印:对接三方小票机,打印小票语音播报 自定…

Github上优秀的开源小程序汇总

Github上优秀的开源小程序汇总 有什么小程序适合个人开发? 工具类的小程序非常适合个人开发,用云开发模式开发成本很低,能够快速上线,唯一的缺点是个人无法接入支付,变现渠道受限,目前只能通过流量主变现。…

分享12个优秀的微信小程序开源项目

欢迎搜索个人微信公众号:楠哥毕设帮 提供个人二开项目源码、部署讲解、论文指导~ 全文概览: wechat-app-mall:微信小程序商城;Vant Weapp:小程序 UI 组件库;iView Weapp:小程序 UI 组件库&…

推荐 4 个开源小程序

Hi~~大家下午好~~ 一个好消息:还有几个小时就要下班了!!!哦耶~ 预祝大家周末愉快~~ 回归正题~本文推荐几个开源微信小程序,这个开源的小程序都是 Recently updated,下载下来部署就能使用的。 本期推荐开源项…

html如何导入css和js文件

html如何导入css和js文件 1.导入js文件 <script type"text/javascript" src"js文件路径"></script>加入上述代码&#xff0c;即可导入js路径指向的js文件 2.导入css文件 在html的head体里加入下面这行代码即可导入css文件 <link rel&q…

页面引入JS的四种方式

最常用的是前面的三种. 行内引入: 内部引入: 需要一个标签<script></script>引入js 注意事项: 外部引入: 创建一个独立的外部 js 文件, 用 <script></> 标签引入. 使用他的src 属性引用对应的Js文件 script标签可以引入多次. 在一个Html 中可以有…

html中的JavaScript

JavaScript ——简介 JavaScript 是目前最流行脚本语言&#xff0c;简称 JS。JavaScript 编写在 HTML 页面中&#xff0c;由浏览器负责解释和执行&#xff0c;JavaScript 通常用来给 HTML 页面增加交互能力。 JS可以给html带来的功能&#xff1a; 为页面增加动画效果 验证表单输…