Skip to content

开发手册

前言

本系统主要是针对个体户开发,小型门店系统。

主要用户对象为:比如不想使用第三方分账抽成,外卖抽成类用户,希望可以自主控制相关的功能,希望有自己的小程序等,用户可以查看相关的销售统计信息。

项目简介

本项目基于 uniapp 云开发(阿里云),主要由以下多端项目构成:

  1. web 端管理系统:门店、商品,订单,出入库,小程序配置等核心操作系统,收银台、统计数据查看等,其他端皆基于此系统运行。

  2. 手机/pda 移动 APP 管理系统:辅助 web 端系统如出入库,收银台,商品上下架等基础功能,可以查看统计数据。

  3. Pad 平板(安卓)收银端:仅收银和出入库。

  4. 微信小程序商城端:用于线上下单购买等功能,基于微信 getPhoneNumber 手机号注册+openid 静默登录,用户授权一次手机号,后续不在需要授权,根据 openid 静默登录,使用需开通微信支付。

  5. 微信小程序点餐端:简易版的点餐叫号/外卖小程序,可选门店点餐+查看历史订单,基于微信 openid 注册,用户无感,静默登录/注册,使用需开通微信支付。

敏感信息

其系统含微信支付快递 100相关的第三方 API 接口,涉及相关的商户号、key、secret、证书等敏感信息等

敏感信息文件路径为:/uniCloud-aliyun/cloudfunctions/common/config/index.js内,打开可查看相关信息

证书敏感信息位置:/uniCloud-aliyun/cloudfunctions/common/config/wxpay/,微信支付相关的正书有***_cert.p12***_cret.pem***_key.pem三个证书,具体看你用哪种。

前期准备

账号创建

  1. uniapp 账号创建,开通云服务空间

  2. 创建微信小程序账号,做好相关的配置,认证,备案等,若需要小程序的话

  3. 创建微信商户支付账号,做好相关的配置,认证等,获取微信支付相关的证书秘钥,并与第二步小程序绑定,否则小程序不能使用支付

  4. 注册快递 100 企业账号,认证等

  5. 天地图服务端 key,如果使用点餐外卖小程序必须

开发设备

  1. windowsPC

  2. 可选:手机/pda,pad(安卓),微信小程序开发者工具

  3. 可选:usb 小票打印机或网口打印机,本系统基于此两种开发

开发步骤

web 端、APP 端、pad 端基于云函数模式开发,自定义 token 及 permission 权限校验

小程序端基于云函数(涉及权限)与 unicloud-db 组件(仅列表/详情读取)混合开发

初始化项目步骤,无其他说明则主要以 web 端代码为主:

第一步

拿到代码,关联云服务空间

第二步

修改或补上/uniCloud-aliyun/cloudfunctions/common/config/index.js中相关的私密信息

第三步

上传/common/里面的公共模块,因为有相互依赖,建议从上到下一个一个点击上传,三端有共用公共模块。

第四步

上传完公共模块,然后选择/cloudfunctions/右键上传所有云函数,该替换替换该跳过跳过,其中 web、app、pad 是一套云函数,两个小程序是独立一套,需要上传各自的。

第五步

上传所有/database/数据库,三端共用一套数据库,上传 web 项目的即可

第六步

初始化数据库,只在 web 端初始化,其他两端没有初始化数据:

需要初始化的数据有:

B 端菜单数据:admin-menus.init_data.json

B 端角色数据:admin-roles.init_data.json

B 端用户数据:admin-users.init_data.json

B 端字典数据:dictionary.init_data.json

B 端商品利率配置数据:goods_rate_config.init_data.json

各端相关配置:other-config.init_data.json

微信小程序首页布局配置:wxapp-home-config.init_data.json

其中,web 端用户数据初始化主要是超级管理员账号,如需更改可改初始化数据后再提交服务空间初始化。

第七步

各端 npm 包安装。

云函数内的 npm 包在首次调用云函数时会安装,所以首次调用会失败,等待安装完后再调用就可以了。

此时可以试运行各端。

第八步

electron 桌面化处理,在/electron/文件夹下安装 npm 包,我这里设置了 web 的运行端口为9001,如果你要修改,那么该文件夹下相关的地方需要修改,具体配置参考后文electron 桌面化

第九步

web 端运行到浏览器,同时可以进入/electron/文件夹下执行命令:npm run start开启本地开发模式的桌面应用,具体配置参考后文electron 桌面化,也可以不用这一步,直接浏览器开发。

第十步

发布。发布前需确认:

  1. /uniCloud-aliyun/cloudfunctions/common/config/index.js中确认信息无误,

  2. 快递 100 地址需修改为正式地址

  3. 关联云空间正确

支付系统

小程序端:小程序端使用unipay2统一支付功能,支付后会查询支付状态和支付金额是否正确,然后才会发起订单状态修改。在 C-order 中使用 npm 包tenpay插件,接收到小程序发起的订单状态请求修改为已支付时,则在修改状态前,再次查询支付状态与金额是否正确,否则不予创建,前端报错“支付数据异常”。

B 端使用 npm 包tenpay插件,位置在B-order云函数下安装,主要用于退款发起与校验。

微信支付商家系统地址:微信支付,使用微信 V2 支付模式。

支付宝因为要门头照,开发时我没有,所以没有接入。。。

快递 100

对接的是商家下单接口,需要自行去快递 100API 开放平台注册企业账号,获取相关的数据。

开发时请使用kuaidiUrlMock沙箱地址测试,正式发布时需要切换为kuaidiUrl地址。

初始超级管理员

账号:13888888888

密码:@Admin888!!

数据库密码存储的是 MD5 数据,如需修改,请转 MD5 后存储

数据库

admin-menus:B 端左侧菜单系统

admin-roles:B 端用户角色

admin-users:B 端用户/门店/店员账号

dictionary:字典,枚举等

goods-cate:商品分类

goods-comments:商品评价

goods-records:商品出入库记录

goods:商品列表

goods_rate_config.schema:商品利率,代理率配置

grass:种草

orders:订单

other-config:系统相关配置

shopping-cart:购物车

store-stock:门店库存

user-address:小程序用户收货地址

user-coupon:小程序用户优惠券

user-scores:小程序用户积分

user:小程序用户表

banner:小程序首页 banner

wxapp-home-config:小程序首页布局配置

wxapp-home-menus:小程序首页导航栏配置

云函数

每一个云函数可以理解为一个服务模块,包含相关的查询,新增,修改,删除等操作。

云函数配置文件

/uniCloud-aliyun/cloudfunctions/common/config/index.js

相关的云函数全局配置,该配置文件 web 端、小程序端、APP 端、Pad 端都在使用,修改需同步其他端

公共模块

/uniCloud-aliyun/cloudfunctions/common

如果你新增一个菜单权限,需要对应在permission-config添加权限值,在你需要校验的云函数内调用,可参考其他云函数写法。

云函数列表

基于 nodejs16 开发,部分云函数有声明,如需修改,可全局替换。

公共

dictionary:字典云函数

web 端/App 端/PAD 端:

B-banner:banner 配置

B-coupon:优惠券

B-goods:商品配置

B-goods-cate:商品分类

B-goods-records:商品出入库

B-grass:种草

B-kuaidi:快递,仅声明这个函数,如果需要接受快递 100 的回调,可开发

B-order:订单

B-other-config:其他配置

B-store:库存

B-user:B 端查看 C 端用户数据

manageMenu:菜单

manageUser:B 端用户

manageRole:角色

sys-statistics:统计

微信小程序商城端

C-address:用户收货地址

C-order:用户订单相关

C-store:门店数据查询

C-image:用户头像云存储操作,一个用户的头像修改会删除原有的头像文件

C-shop-cart:购物车相关

home-config:小程序首页布局

user:用户

wxInfo:微信小程序相关的调用

微信小程序点餐端

F-goods:商品相关

F-order:用户订单相关

F-store:门店数据查询

F-user:用户

wxInfo:微信小程序相关的调用

定时任务

timing-order-apply:超出规定时间后,1. 修改订单状态为不可申请售后,2. 商户同意售后,未按时寄出售后商品则取消订单售后状态

timing-order-cancel:超出规定时间后,修改待支付订单状态为取消

timing-order-confirm-receipt:超出规定时间后,修改待收货订单状态为已确认收货

主色调

主色调设置均在 uni.scss 文件内

npm 包依赖

项目有依赖相关 npm 包,需要npm i安装

electron 桌面化

项目中集成了 window 桌面化功能,文件夹为/electron/

生成桌面端应用,可以省去创建域名、备案等一些列繁琐的操作和资金。

打印小票的功能基于 electron 开发,静默打印。

安装依赖

进入/electron/目录,执行npm i命令,安装所需依赖。

本地运行

一、HBuilderX 运行项目

HBuilderX 运行起项目后,注意运行 web 的域名端口号等,确保与/electron/main.js中配置的本地预览地址一致,不一致请自行修改。

二、执行 electron 本地运行命令

/electron/目录下运行  npm run start命令,开启本地运行 exe 桌面系统。

正式打包

一、HBuilderX 发行 web 代码

HBuilderX 发行 web 代码成功后,将/unpackage/dist/build/web文件夹拷贝到/electron/文件夹下。

二、打包 electron

/electron/目录下运行命令npm run build,打包正式 exe 桌面系统代码,执行完命令后,会在当前/electron/目录下生成一个/mosowe/文件夹,文件夹内即桌面端应用代码文件,双击mosowe.exe即启动应用。

修改"electron-packager ./ mosowe --plantform=win32 --arch=x64 --out=./mosowe --icon=./icon.ico --overwrite"命令内的 mosowe 可修改 exe 名称。

默认是打包 windows64 位的文件,有需要 32 位的自行修改编译类型--arch=ia32

进入调试模式

第一种:ctrl+shift+i
第二种:main.js 配置  win.webContents.openDevTools();

exe 系统图标配置

文件名称及类型:icon.ico,不可通过修改文件后缀名的方式生成,必须是 png 转 ico 文件,网上有相关图片转换工具可用。在线转换图标文件

文件尺寸:128*128

文件大小:100kb以内

替换/electron/文件夹下 icon.ico 文件。

APP 端说明

APP 端可运行在普通手机上,也可运行在 PAD 手持系统上,当运行在 PDA 上时,需要修改相关的扫码参数

文档版本 v1.0.1