Appearance
开发手册
前言
本系统主要是针对个体户开发,小型门店系统。
主要用户对象为:比如不想使用第三方分账抽成,外卖抽成类用户,希望可以自主控制相关的功能,希望有自己的小程序等,用户可以查看相关的销售统计信息。
项目简介
本项目基于 uniapp 云开发(阿里云),主要由以下多端项目构成:
web 端管理系统:门店、商品,订单,出入库,小程序配置等核心操作系统,收银台、统计数据查看等,其他端皆基于此系统运行。
手机/pda 移动 APP 管理系统:辅助 web 端系统如出入库,收银台,商品上下架等基础功能,可以查看统计数据。
Pad 平板(安卓)收银端:仅收银和出入库。
微信小程序商城端:用于线上下单购买等功能,基于微信 getPhoneNumber 手机号注册+openid 静默登录,用户授权一次手机号,后续不在需要授权,根据 openid 静默登录,使用需开通微信支付。
微信小程序点餐端:简易版的点餐叫号/外卖小程序,可选门店点餐+查看历史订单,基于微信 openid 注册,用户无感,静默登录/注册,使用需开通微信支付。
敏感信息
其系统含微信支付,快递 100相关的第三方 API 接口,涉及相关的商户号、key、secret、证书等敏感信息等
敏感信息文件路径为:/uniCloud-aliyun/cloudfunctions/common/config/index.js
内,打开可查看相关信息
证书敏感信息位置:/uniCloud-aliyun/cloudfunctions/common/config/wxpay/
,微信支付相关的正书有***_cert.p12
、***_cret.pem
、***_key.pem
三个证书,具体看你用哪种。
前期准备
账号创建
uniapp 账号创建,开通云服务空间
创建微信小程序账号,做好相关的配置,认证,备案等,若需要小程序的话
创建微信商户支付账号,做好相关的配置,认证等,获取微信支付相关的证书秘钥,并与第二步小程序绑定,否则小程序不能使用支付
注册快递 100 企业账号,认证等
天地图服务端 key,如果使用点餐外卖小程序必须
开发设备
windowsPC
可选:手机/pda,pad(安卓),微信小程序开发者工具
可选: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 桌面化,也可以不用这一步,直接浏览器开发。
第十步
发布。发布前需确认:
/uniCloud-aliyun/cloudfunctions/common/config/index.js
中确认信息无误,快递 100 地址需修改为正式地址
关联云空间正确
支付系统
小程序端:小程序端使用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 上时,需要修改相关的扫码参数