Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
d566edc4
Commit
d566edc4
authored
Mar 27, 2018
by
Junling Bu
Browse files
更新文档。
parent
254cfb55
Changes
2
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
d566edc4
...
...
@@ -52,15 +52,31 @@ litemall

*
会员管理
*
商场管理
*
会员管理
*
收货地址管理
*
会员收藏
*
会员足迹
*
搜索历史
*
购物车
*
商城管理
*
区域配置
*
品牌制造商
*
订单管理
*
商品类目
*
通用问题
*
关键词
*
商品管理
*
商品管理
*
商品参数
*
商品规格
*
货品管理
*
用户评论
*
推广管理
*
广告列表
*
专题管理
*
系统管理
*
管理员
*
对象存储
云演示
==
...
...
@@ -124,4 +140,15 @@ litemall
用户有问题或者好的建议可以用Issues反馈交流,请给出详细信息,本人会尽可能解决。
*
如果问题是共性问题(如代码bug或文档不全),本人会及时解决。
*
如果问题是个人问题(如用户了解不深入或者没有相关技术),请见谅(本人也是百度和谷歌)。
\ No newline at end of file
*
如果问题是个人问题(如用户了解不深入或者没有相关技术),请见谅(本人也是百度和谷歌)。
贡献
==
任何形式的贡献都欢迎,包括:
*
Issue里面报告的BUG
*
Issue里面对业务或技术的讨论
*
Pull Request
*
对文档的意见或补充
*
其他任何有意义本项目的行为
\ No newline at end of file
doc/3.md
View file @
d566edc4
...
...
@@ -45,3 +45,114 @@
注意
> 目前litemall-wx项目代码基于nideshop-mini-program的commit版本[acbf6276eb27abc6a48887cddd223d7261f0088e](https://github.com/tumobi/nideshop-mini-program/commit/acbf6276eb27abc6a48887cddd223d7261f0088e)。由于改动变化较大,因此之后litemall-wx将独立开发,nideshop-mini-program的跟新不一定会合并到litemall-wx中。
### 3.2.1 业务API切换
业务API存放在
`config/api.js`
。
但是可以发现这样的代码:
```
// 本机开发时使用
var WxApiRoot = 'http://localhost:8082/wx/';
// 局域网测试使用
// var WxApiRoot = 'http://192.168.0.101:8082/wx/';
// 云平台部署时使用
// var WxApiRoot = 'http://122.152.206.172:8082/wx/';
```
也就是说这里存在三种类型的API服务地址,这里是考虑到开发存在三种情况:
1.
本机开发时,localhost是当前开发机的地址;
2.
手机预览时,192.168.0.101是开发机的IP地址;
3.
当后台部署在云主机中时,122.152.206.172是云主机的IP地址;
4.
此外,更最重要的是,如果小程序正式部署时,这里的地址必须是域名,
而不能是IP地址。
因此,开发阶段用户可以按照具体情况切换1,2或3的选项。
### 3.2.2 登陆
按照官方文档,开发者采用
`wx.login`
方法即可实现登陆操作;
然而,由于
`wx.login`
只能返回临时登陆凭证
`code`
,从服务器也只能返回对应的sessionId,
因此虽然已经可以视作登陆,但是在小程序中不能显示有意义的登陆状态,
因此实际很多小程序是继续采用
`wx.getUserInfo`
来进一步请求用户信息。
因此本模块中,用户的登陆状态也是由
`wx.login`
和
`wx.getUserInfo`
组成。
#### 3.2.2.1 登陆检测
用户可以采用
`user.checkLogin`
来检查是否
`已登陆`
,而其检测逻辑是:
1.
可以从storage获取
`userInfo`
和
`token`
2.
同时
`wx.checkSession`
也成功。
#### 3.2.2.2 登陆时机
登陆请求用户信息的时机存在两种设计:
1.
一种是小程序加载时,即申请用户信息,这种实现较简单;
2.
另外一种是小程序加载时不需要,但是小程序用户需要真正用户信息时才申请用户信息,
而这种实现较复杂。
目前采用第二张实现,可以分成两种情况:
*
用户主动登陆
用户主动登陆,指的是
`我的`
页面中用户没有登陆显示
`点击登陆`
的效果。
*
用户被动登陆
用户被动登陆,指的是用户想购买商品或者需要用户登陆才能操作的行为,
此时因为向服务器请求时token没有设置,因此服务器拒绝用户的请求,同时返回
`401`
业务代码。
目前需要检测用户登陆的页面有:
*
购物车
*
我的主页
讨论:
> 对于第二张情况,原nideshop-mini-program项目是采取一种自动登陆的方式。
> 这里则采用跳转登录页面的方式。
#### 3.2.2.3 登陆操作
如前面讨论,这里的登陆操作实际包含两个操作
`wx.login`
和
`wx.getUserInfo`
。
用户可以采用
`user.loginByWeixin`
来进行登陆操作。
按照官网文档,用户登陆前应该检测以下,来避免频繁无意义的登陆操作,
因此较合适的做法如下所示:
```
user.checkLogin().catch(() => {
user.loginByWeixin().then(res => {
this.setData({
userInfo: res.data.userInfo,
});
}).catch((err) => {
util.showErrorToast('登陆失败');
});
});
```
#### 3.2.2.4 登陆拒绝授权
还存在一个问题,当用户登陆时,会出现"微信授权"的对话框。
如果用户选择”拒绝“,那么之后用户的登陆操作总是失败的。
目前的做法是,用户拒绝授权后,如果用户登陆失败,则返回信息框,
提醒用户“请退出,左滑删除小程序,然后重新进入进行授权”。
### 3.2.3 立即购买和放入购物车
### 3.2.3
### 3.2.4 storage使用
本模块中采用storage来存储一些数据,以及组件间进行通信。
#### 3.2.4.1 userInfo和token
#### 3.2.4.2
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment