
# 4 litemall管理后台

这里的后台管理业务参考了[platform](https://gitee.com/fuyang_lipengjun/platform).

目前管理后台的设计存在一个关键问题：

* 是允许管理员拥有最大权限，直接对数据库内的数据进行任何CRUD操作；
  
  好处是：
  * 管理员可以伪造一些数据、篡改一些数据。。。
  * 维护成本低，不会因为业务调整而需要调整管理后台代码
  * 开发快，不需要设计具体的后台操作业务。
  
  坏处是：
  * 安全低，万一管理员密码泄露，用户可以得到所有数据。
  * 管理员操作数据，需要对数据关系有一定的了解。
    如果操作不当，可能造成数据关系混乱，甚至系统崩溃。
  
* 还是仅允许管理员按照所设计的业务只能操作部分数据。

  好处是：
  * 安全高，用户在设计好的业务下不会破坏后台数据。
    如果密码泄露，带来的损失相对前者较小。
  * 操作性好，
  坏处是：
  
 

当然从项目本身来说后者应该更实际，但是对于小型用户来说，
前者的好处也是存在的。

目前本项目开发方案是第一种，在后面开发阶段（例如v2.0.0)应该会切换到第二种。


项目技术架构：

* 后台管理前端，即litemall-admin模块
  * vue
  * vuex
  * vue-router
  * axios
  * element-ui
  * vue-element-admin
  * 其他，见package.json
* 后台管理后端, 即litemall-admin-api模块
  * Spring Boot 1.5.10
  * Spring MVC

目前存在的问题：

* `严重`富文本编辑器
* `严重`业务功能重新设计，例如即使是管理员也不能删除修改用户的相关数据
* `严重`进一步区分商品和货品的关系
* `严重`商品和货品管理，特别是添加一个商品
* `缺失`支持微信登录
* `缺失`后台采用事务
* `缺失`用户密码加盐存储
* `缺失`首页中实现一些小组件，同时点击能够跳转相应页面
* `缺失`商品评价中管理员回复功能
* `改善`大部分页面仅仅是一个表CRUD的效果，交互性一般。
  例如，显示商品的时候，只是简单显示表中保存的类目ID和品牌商ID，
  更好的效果可能是显示对应的类目名称和品牌商名称，
  同时能够显示更详细的类目信息和品牌商信息。
* `改善`页面中图片数据目前是显示地址，更好地做法应该是显示小图片，
  同时支持点击放大的效果
* `改善`地址优化，目前每一次点击都会请求后台，应该缓存已有的数据
* `改善`查询时排序功能
* `改善`vue和vue-element-admin等及时更新
* `功能`系统角色和权限
* `功能`系统日志功能
* `功能`系统数据字典功能
* `功能`系统栏目管理功能
* `功能`支持国际化???
* `功能`支持数据库备份


## 4.1 litemall-admin-api


### 4.1.1 业务

### 4.1.2 安全配置

### 4.1.3 CROS配置

## 4.2 litemall-admin

litemall-admin模块的代码基于[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)

### 4.2.1

### 4.2.2

### 4.2.3

### 4.2.4

### 4.2.5

### 4.2.6

### 4.2.7

### 4.2.8

### 4.2.9

### 4.2.10 系统基础功能

#### 4.2.10.1 数据字典

#### 4.2.10.2 角色权限

#### 4.2.10.3 国际化

#### 4.2.10.4 菜单

#### 4.2.10.5 日志


## 4.3 开发新组件

这里介绍开发一个新的组件的流程。