# 前言
本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点:
[《创建 HelloWorld 项目》](https://www.yuque.com/apifm/doc/hezlrm)
[《使用 “apifm-wxapi” 快速开发小程序》](https://www.yuque.com/apifm/doc/mdldsd)
[《免费注册开通后台,获得专属域名》](https://www.yuque.com/apifm/doc/qr6l4m)
本案例中,部分功能,需要用户登录后才能操作,也就是说需要 token 授权,请先了解:
[《微信小程序登录获取openid及三方token》](https://www.yuque.com/apifm/doc/kaygbw)
# 需要启用的模块
登录 “第一步” 注册的后台,左侧菜单 --> 工厂设置 --> 模块管理
找到并启用下述模块,然后 F5 刷新一下后台界面,你将可以看到本案例所需的所有功能菜单:
1. 门店管理
2. 商品分类
3. 商品管理
# 后台发布数据
根据你的实际需要,设置并维护好门店、商品分配、商品、物流模板、规格尺寸等数据
**设置会员折扣**
_如果有需要,可以针对不同会员设置不同的折扣,用户在购买商品时候将自动享受该折扣_
**每日定价**
_针对酒店、客房预订类、票务、门票类商品,价格和库存每天都会有变化,这个时候,你可以通过该功能对商品进行每日定价_
**商品限购**
_可设置不同的会员等级,在约定的时间段范围内只能采购指定数量的商品_
---
## 门店管理
### 读取所有的门店列表
```plain
WXAPI.fetchShops(Object object)
```
> 参数详见接口文档
>
> 支持根据当前用户所在地进行从近到远排序展示
>
### 门店详情
```javascript
WXAPI.shopSubdetail(id)
```
> id 参数为门店列表返回数据中的 id 字段
>
> 该方法可以读取到门店后台设置的扩展属性信息
>
## 商品分类
```plain
WXAPI.goodsCategory()
```
> 读取后台设置的所有分类数据,分类之间的上下级关系请使用 level 和 pid 进行管理
>
> level = 1 表示 1级类目;2 表示 2级类目,以此类推
>
> pid 代表该类目的上级类目ID(一级类目的 pid = 0)
>
_分类的目录树,可以根据上述2个字段,采用 js 在本地实现_
## 商品管理
### 获取商品列表
```javascript
WXAPI.goods(Object object)
```
> 读取所有的商品数据,以分页的形式展示,支持按照多种方式进行排序
>
> 具体参数的说明,请查阅接口文档
>
### 获取商品详情信息
```javascript
WXAPI.goodsDetail(id)
```
> id 参数为上面商品列表方法返回数据里的 id 字段
>
> 访问该方法会增加商品的浏览量
>
> 该方法获取商品基础信息、商品图文详细介绍、商品图片、可选的规格尺寸、所属分类、快递物流设置信息、商品扩展属性
>
### 获取商品的限购设置
```javascript
WXAPI.goodsLimitations(goodsId, priceId)
```
> 如果商品(列表、详情)信息中 **limitation** 字段为 **true**,说明该商品开启了限购,只有设置中的会员等级用户才可以在约定时间内购买不超过指定数量
>
> 该方法接收2个参数,**goodsId** 参数是必填的,代表商品id; **priceId** 参数非必填,只有在用户购买时候选择了指定的规格尺寸时候才需要传
>
> 你可以根据当前登录用户的会员等级,在商品详情页面进行相应的交互展示
>
### 获取商品价格「一般用在选择不同规格尺寸后需要实时显示售价」
```javascript
WXAPI.goodsPrice(goodsId, propertyChildIds)
```
> goodsId 为商品id
>
> **propertyChildIds** 参数为用户选择的规格尺寸数据,多个规格尺寸数据用因为逗号分隔,该参数的格式为: 规格id:子属性id,比如: 4:15,2:10 (分别对应了 颜色:红色,内存:256G)
>
### 获取商品的每日价格&每日库存「适用酒店预订、票务预订类」
```javascript
WXAPI.goodsPriceDaily(goodsId, priceId)
```
> goodsId 为商品id
>
> priceId 为选择的商品规格尺寸记录id,无规格尺寸的商品,无需传该参数
>
### 计算物流/快递模板费用计算方法
```javascript
WXAPI.goodsPriceFreight(Object object)
```
> 具体参数请查阅接口文档
>
> 提供快递地址,本方法可计算出本次会计的计费方式
>
_比如: a 件(重量)内 x 元,之后每增加 b 件(重量)额外加收 y 元_
### 拉取当前会员可以显示的折扣信息
```javascript
WXAPI.goodsRebate(token, goodsId)
```
> token 为当前登录用户的登录 token
>
> goodsId 为商品id
>
### 获取商品的评价
```javascript
WXAPI.goodsReputation(Object object)
```
> 读取当前商品用户的所有评价数据
>
> 具体参数说明请查阅接口文档
>
## 商品收藏
### 收藏某个商品
```javascript
WXAPI.goodsFavPut(token, goodsId)
```
### 检测当前商品是否已被收藏
```javascript
WXAPI.goodsFavCheck(token, goodsId)
```
### 获取收藏的商品
```javascript
WXAPI.goodsFavList(Object object)
```
> 具体参数说明请查阅接口文档
>
> 支持分页读取、关键词搜索商品
>
### 删除收藏的某个商品
```javascript
WXAPI.goodsFavDelete(token, id, goodsId)
```
> id 参数为收藏列表数据中的记录id
>
> goodsId 为商品id
>
> 以上2个参数至少要填写1个
>
**关于更加详细的参数使用,以及更加高级的进阶使用方法,可以参考api接口文档说明:**
[《api接口文档》](https://api.it120.cc/doc.html)
_关于 apifm-wxapi 更多的使用方法:_
[《apifm-wxapi使用说明》](https://github.com/gooking/apifm-wxapi/blob/master/instructions.md)
_本案例Demo代码下载:_
[《apifm-wxapi使用Demo程序》](https://github.com/gooking/apifm-wxapi-demo)
期待你的进步!
感谢!