文档中的登陆同一调整成登录。
This commit is contained in:
39
README.md
39
README.md
@@ -88,7 +88,7 @@ litemall
|
||||
1. 微信开发工具导入litemall-wx项目;
|
||||
2. 项目配置,启用“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”
|
||||
3. 点击“编译”,即可在微信开发工具预览效果;
|
||||
4. 也可以点击“预览”,然后手机扫描登陆。
|
||||
4. 也可以点击“预览”,然后手机扫描登录。
|
||||
|
||||

|
||||
|
||||
@@ -107,7 +107,38 @@ litemall
|
||||
5. [商场子系统](doc/5.md)
|
||||
6. [下一步计划](doc/6.md)
|
||||
|
||||
更新
|
||||
开发计划
|
||||
====
|
||||
|
||||
目前项目开发中,存在诸多不足,以下是目前规划的开发计划。
|
||||
|
||||
V 1.0.0 完成以下目标:
|
||||
1. 除了部分功能(如支付和优惠券等),小商城的优化和改进基本结束;
|
||||
2. 管理后台基本实现所有表的CRUD操作;
|
||||
3. 后台服务能够对参数进行检验。
|
||||
|
||||
V 2.0.0 完成以下目标:
|
||||
1. 小商城能够完成基本的业务功能;
|
||||
2. 管理后台实现较好的业务操作和交互效果,而不是简单的CRUD;
|
||||
3. 管理后台实现统计功能、日志功能
|
||||
|
||||
V 3.0.0 完成以下目标:
|
||||
1. 管理后台一些辅助功能
|
||||
2. 后台服务加强安全功能、事务功能
|
||||
3. 项目代码重构和清理
|
||||
4. 其他配套服务,如代码文档、war部署支持
|
||||
|
||||
项目结束,已经是一个真正可工作的项目,此时进入维护阶段。
|
||||
|
||||
如果真的坚持到维护阶段,那么存在三种可能性:
|
||||
1. 或者开发 V 4.0.0,实现web商场子系统;
|
||||
2. 或者重新开发一个新的独立项目,引入企业级功能,如缓存、权限、对象存储云服务等;
|
||||
3. 或者结束,不再开发,仅仅维护。
|
||||
|
||||
警告:
|
||||
> ** 以上仅仅是个人规划的开发计划,实际可能出现任何情况,例如能力有限而放弃开发。**
|
||||
|
||||
开发进度更新
|
||||
==
|
||||
|
||||
* V 0.1.0,项目架构基本完成。
|
||||
@@ -151,4 +182,6 @@ litemall
|
||||
* Issue里面对业务或技术的讨论
|
||||
* Pull Request
|
||||
* 对文档的意见或补充
|
||||
* 其他任何有意义本项目的行为
|
||||
* 其他任何有意义本项目的行为
|
||||
|
||||
个人能力有限,欢迎一起开发。
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中
|
||||
|
||||
3. 使用PuTTY登陆云主机
|
||||
3. 使用PuTTY登录云主机
|
||||
|
||||
4. 运行脚本部署运行
|
||||
|
||||
|
||||
16
doc/1.md
16
doc/1.md
@@ -205,8 +205,8 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
cnpm run dev
|
||||
```
|
||||
然后,打开浏览器,输入`http://localhost:9527`。
|
||||
如果出现管理后台登陆页面,则表明管理后台的前端运行正常;
|
||||
6. 请确定litemall-admin-api模块已经运行,然后点击`登陆`,如果能够成功登陆,则表明管理后台的前端和后端对接成功,运行正常。
|
||||
如果出现管理后台登录页面,则表明管理后台的前端运行正常;
|
||||
6. 请确定litemall-admin-api模块已经运行,然后点击`登录`,如果能够成功登录,则表明管理后台的前端和后端对接成功,运行正常。
|
||||
|
||||
## 1.5 部署方案
|
||||
|
||||
@@ -300,11 +300,11 @@ http://localhost:8083/admin/index/index
|
||||
|
||||
4. 设置SSH密钥(可选)
|
||||
|
||||
建议用户设置SSH密钥,可以免密码登陆云主机,以及用于脚本自动上传应用。
|
||||
建议用户设置SSH密钥,可以免密码登录云主机,以及用于脚本自动上传应用。
|
||||
|
||||
5. 使用PuTTY远程登陆云主机
|
||||
5. 使用PuTTY远程登录云主机
|
||||
|
||||
如果用户设置SSH密钥,可以采用免密码登陆;否则采用账号和密码登陆。
|
||||
如果用户设置SSH密钥,可以采用免密码登录;否则采用账号和密码登录。
|
||||
|
||||
#### 1.5.3.2 JDK8
|
||||
|
||||
@@ -350,7 +350,7 @@ sudo apt-get install mysql-client
|
||||
FLUSH PRIVILEGES;
|
||||
quit;
|
||||
```
|
||||
3. 登陆腾讯云,设置云主机的`安全组`,允许`3306`端口访问,然后重启云主机,使得这些配置生效。
|
||||
3. 登录腾讯云,设置云主机的`安全组`,允许`3306`端口访问,然后重启云主机,使得这些配置生效。
|
||||
|
||||
警告
|
||||
> 1. 因为安全的原因,MySQL不应该设置远程访问,
|
||||
@@ -365,7 +365,7 @@ sudo apt-get install mysql-client
|
||||
* 命令行导入
|
||||
|
||||
1. 采用FileZilla把本项目的litemall.sql上传到云主机
|
||||
2. 使用PuTTY登陆云主机
|
||||
2. 使用PuTTY登录云主机
|
||||
3. 进入MySQL,输入上节所设置的MySQL的root密码
|
||||
4. 创建数据库、 创建用户并分配访问权限
|
||||
5. 导入数据
|
||||
@@ -456,7 +456,7 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep
|
||||
|
||||
2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中
|
||||
|
||||
3. 使用PuTTY登陆云主机
|
||||
3. 使用PuTTY登录云主机
|
||||
|
||||
4. 运行脚本部署运行
|
||||
|
||||
|
||||
2
doc/2.md
2
doc/2.md
@@ -95,7 +95,7 @@ litemall数据库基于nideshop中的[nideshop.sql](https://github.com/tumobi/ni
|
||||
|
||||
### 2.1.2 用户和微信用户设计
|
||||
|
||||
目前准备支持用户普通账号登陆和微信登陆两种方式,两种登陆方式仅仅采用一个litemall-user表可能不是很合适。此外,如果进一步支持其他多种第三方登陆,那么这里需要重新设计。
|
||||
目前准备支持用户普通账号登录和微信登录两种方式,两种登录方式仅仅采用一个litemall-user表可能不是很合适。此外,如果进一步支持其他多种第三方登录,那么这里需要重新设计。
|
||||
|
||||
### 2.1.3 行政区域设计
|
||||
|
||||
|
||||
50
doc/3.md
50
doc/3.md
@@ -19,7 +19,7 @@
|
||||
* 进一步区分商品和货品的关系
|
||||
* 地址优化,目前每一次点击都会请求后台,应该缓存已有的数据
|
||||
* 商品数量和规格中,如果货品数量不足,则显示不能点击的效果
|
||||
* 登陆逻辑重新设计,如果用户没有登陆,则相关页面显示登陆的效果
|
||||
* 登录逻辑重新设计,如果用户没有登录,则相关页面显示登录的效果
|
||||
|
||||
## 3.1 litemall-wx-api
|
||||
|
||||
@@ -71,25 +71,25 @@ var WxApiRoot = 'http://localhost:8082/wx/';
|
||||
|
||||
因此,开发阶段用户可以按照具体情况切换1,2或3的选项。
|
||||
|
||||
### 3.2.2 登陆
|
||||
### 3.2.2 登录
|
||||
|
||||
按照官方文档,开发者采用`wx.login`方法即可实现登陆操作;
|
||||
然而,由于`wx.login`只能返回临时登陆凭证`code`,从服务器也只能返回对应的sessionId,
|
||||
因此虽然已经可以视作登陆,但是在小程序中不能显示有意义的登陆状态,
|
||||
按照官方文档,开发者采用`wx.login`方法即可实现登录操作;
|
||||
然而,由于`wx.login`只能返回临时登录凭证`code`,从服务器也只能返回对应的sessionId,
|
||||
因此虽然已经可以视作登录,但是在小程序中不能显示有意义的登录状态,
|
||||
因此实际很多小程序是继续采用`wx.getUserInfo`来进一步请求用户信息。
|
||||
|
||||
因此本模块中,用户的登陆状态也是由`wx.login`和`wx.getUserInfo`组成。
|
||||
因此本模块中,用户的登录状态也是由`wx.login`和`wx.getUserInfo`组成。
|
||||
|
||||
#### 3.2.2.1 登陆检测
|
||||
#### 3.2.2.1 登录检测
|
||||
|
||||
用户可以采用`user.checkLogin`来检查是否`已登陆`,而其检测逻辑是:
|
||||
用户可以采用`user.checkLogin`来检查是否`已登录`,而其检测逻辑是:
|
||||
|
||||
1. 可以从storage获取`userInfo`和`token`
|
||||
2. 同时`wx.checkSession`也成功。
|
||||
|
||||
#### 3.2.2.2 登陆时机
|
||||
#### 3.2.2.2 登录时机
|
||||
|
||||
登陆请求用户信息的时机存在两种设计:
|
||||
登录请求用户信息的时机存在两种设计:
|
||||
|
||||
1. 一种是小程序加载时,即申请用户信息,这种实现较简单;
|
||||
2. 另外一种是小程序加载时不需要,但是小程序用户需要真正用户信息时才申请用户信息,
|
||||
@@ -97,30 +97,30 @@ var WxApiRoot = 'http://localhost:8082/wx/';
|
||||
|
||||
目前采用第二张实现,可以分成两种情况:
|
||||
|
||||
* 用户主动登陆
|
||||
* 用户主动登录
|
||||
|
||||
用户主动登陆,指的是`我的`页面中用户没有登陆显示`点击登陆`的效果。
|
||||
用户主动登录,指的是`我的`页面中用户没有登录显示`点击登录`的效果。
|
||||
|
||||
* 用户被动登陆
|
||||
* 用户被动登录
|
||||
|
||||
用户被动登陆,指的是用户想购买商品或者需要用户登陆才能操作的行为,
|
||||
用户被动登录,指的是用户想购买商品或者需要用户登录才能操作的行为,
|
||||
此时因为向服务器请求时token没有设置,因此服务器拒绝用户的请求,同时返回`401`业务代码。
|
||||
|
||||
目前需要检测用户登陆的页面有:
|
||||
目前需要检测用户登录的页面有:
|
||||
|
||||
* 购物车
|
||||
* 我的主页
|
||||
|
||||
讨论:
|
||||
> 对于第二张情况,原nideshop-mini-program项目是采取一种自动登陆的方式。
|
||||
> 对于第二张情况,原nideshop-mini-program项目是采取一种自动登录的方式。
|
||||
> 这里则采用跳转登录页面的方式。
|
||||
|
||||
#### 3.2.2.3 登陆操作
|
||||
#### 3.2.2.3 登录操作
|
||||
|
||||
如前面讨论,这里的登陆操作实际包含两个操作`wx.login`和`wx.getUserInfo`。
|
||||
用户可以采用`user.loginByWeixin`来进行登陆操作。
|
||||
如前面讨论,这里的登录操作实际包含两个操作`wx.login`和`wx.getUserInfo`。
|
||||
用户可以采用`user.loginByWeixin`来进行登录操作。
|
||||
|
||||
按照官网文档,用户登陆前应该检测以下,来避免频繁无意义的登陆操作,
|
||||
按照官网文档,用户登录前应该检测以下,来避免频繁无意义的登录操作,
|
||||
因此较合适的做法如下所示:
|
||||
|
||||
```
|
||||
@@ -131,18 +131,18 @@ var WxApiRoot = 'http://localhost:8082/wx/';
|
||||
userInfo: res.data.userInfo,
|
||||
});
|
||||
}).catch((err) => {
|
||||
util.showErrorToast('登陆失败');
|
||||
util.showErrorToast('登录失败');
|
||||
});
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
#### 3.2.2.4 登陆拒绝授权
|
||||
#### 3.2.2.4 登录拒绝授权
|
||||
|
||||
还存在一个问题,当用户登陆时,会出现"微信授权"的对话框。
|
||||
如果用户选择”拒绝“,那么之后用户的登陆操作总是失败的。
|
||||
还存在一个问题,当用户登录时,会出现"微信授权"的对话框。
|
||||
如果用户选择”拒绝“,那么之后用户的登录操作总是失败的。
|
||||
|
||||
目前的做法是,用户拒绝授权后,如果用户登陆失败,则返回信息框,
|
||||
目前的做法是,用户拒绝授权后,如果用户登录失败,则返回信息框,
|
||||
提醒用户“请退出,左滑删除小程序,然后重新进入进行授权”。
|
||||
|
||||
### 3.2.3 立即购买和放入购物车
|
||||
|
||||
4
doc/6.md
4
doc/6.md
@@ -36,9 +36,9 @@ public class Application {
|
||||
|
||||
目前没有事务管理,因此如果直接把项目用于正式运行中,可能会存在数据不一致等问题。
|
||||
|
||||
### 6.1.6 小程序登陆设计
|
||||
### 6.1.6 小程序登录设计
|
||||
|
||||
个人觉得目前nideshop-mini-program里的登陆设计内部实现不是很合理。
|
||||
个人觉得目前nideshop-mini-program里的登录设计内部实现不是很合理。
|
||||
|
||||
### 6.1.n 代码重构
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public class ResponseUtil {
|
||||
}
|
||||
|
||||
public static final Object fail401() {
|
||||
return fail(401, "请登陆");
|
||||
return fail(401, "请登录");
|
||||
}
|
||||
|
||||
public static final Object unlogin(){
|
||||
|
||||
@@ -41,7 +41,7 @@ public class WxCartController {
|
||||
@RequestMapping("index")
|
||||
public Object index(@LoginUser Integer userId) {
|
||||
if(userId == null){
|
||||
return ResponseUtil.fail(401, "请登陆");
|
||||
return ResponseUtil.fail(401, "请登录");
|
||||
}
|
||||
|
||||
List<LitemallCart> cartList = cartService.queryByUid(userId);
|
||||
@@ -312,7 +312,7 @@ public class WxCartController {
|
||||
|
||||
/*
|
||||
* 获取购物车商品的总件件数
|
||||
* 用户也是可选登陆,如果没有登陆,则返回空数据
|
||||
* 用户也是可选登录,如果没有登录,则返回空数据
|
||||
*/
|
||||
@RequestMapping("goodscount")
|
||||
public Object goodscount(@LoginUser Integer userId) {
|
||||
|
||||
@@ -55,7 +55,7 @@ public class WxGoodsController {
|
||||
|
||||
/**
|
||||
* 商品详情页数据
|
||||
* 用户也是可选登陆,如果登陆了,则查询是否收藏,以及记录用户的足迹
|
||||
* 用户也是可选登录,如果登录了,则查询是否收藏,以及记录用户的足迹
|
||||
*/
|
||||
@RequestMapping("detail")
|
||||
public Object detail(@LoginUser Integer userId, Integer id) {
|
||||
@@ -160,7 +160,7 @@ public class WxGoodsController {
|
||||
/**
|
||||
* 获取商品列表
|
||||
* 1. 这里的前五个参数都是可选的,甚至都是空
|
||||
* 2. 用户也是可选登陆,如果登陆了,则记录用户的搜索关键字
|
||||
* 2. 用户也是可选登录,如果登录了,则记录用户的搜索关键字
|
||||
*
|
||||
*/
|
||||
@RequestMapping("list")
|
||||
|
||||
@@ -24,7 +24,7 @@ public class WxSearchController {
|
||||
|
||||
/**
|
||||
* index
|
||||
* 用户登陆是可选的,如果用户登陆,则记录用户的搜索数据
|
||||
* 用户登录是可选的,如果用户登录,则记录用户的搜索数据
|
||||
*/
|
||||
@RequestMapping("index")
|
||||
public Object index(@LoginUser Integer userId) {
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
},
|
||||
{
|
||||
"id": -1,
|
||||
"name": "登陆",
|
||||
"name": "登录",
|
||||
"pathName": "pages/auth/login/login",
|
||||
"query": ""
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user