# 6 下一步计划

6.1节涉及到技术层面需要改进的部分，而6.2节则是业务方面未实现的部分，这两个部分的代码都会在本项目中实现。而6.3节会进一步完善本项目的安全和性能，但是不一定会在本项目中实现，因为会增加相当大的复杂性。

## 6.1 技术

### 6.1.1 ENUM
数据库中涉及到枚举类型的字段，目前设置成VARCHAR。
下一步应该设计不同的业务enum类型，然后mybatis自定义BaseTypeHandler来处理不同的枚举类型。

### 6.1.2 litemall-db AutoConig
目前，litemall-os-api、litemall-admin-api和litemall-wx-api引入litemall-db的时候，需要在Application类中显式注解查找包和MapperScan来对litemall-db中的mapper查找，此外需要在application.properties配置文件中完成对数据库、数据池等配置。
例如
```
@SpringBootApplication(scanBasePackages={"org.linlinjava.litemall.admin","org.linlinjava.litemall.db"})
@MapperScan("org.linlinjava.litemall.db.dao")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
```
下一步，应该自动部署，即引入litemall-db则会自动引入对mapper的查找，
同时自动部署对数据库、PageHelper和Druid的配置。

### 6.1.3 统一对日期时间域的处理
目前，数据库的日期时间域有的采用DATE,有的是DATETIME，而对应Java用LocalDate和LocalDateTime。
下一步应该根据具体业务功能采用合适的。

### 6.1.4 vue-element-admin跟新
目前的vue-element-admin基于element 2.0.8, 因此element的很多修复没有跟新。

### 6.1.5 事务管理

目前没有事务管理，因此如果直接把项目用于正式运行中，可能会存在数据不一致等问题。

### 6.1.6 小程序登陆设计

个人觉得目前nideshop-mini-program里的登陆设计内部实现不是很合理。

### 6.1.n 代码重构

技术不断迭代开发中，应该在业务基本完成和功能基本完善以后，
重新审视代码架构和技术，或者重构代码，或者采用更为合理的技术。

## 6.2 业务
 
### 6.2.1 支付模块

目前微信支付模块因缺乏支付权限而不能开发。

### 6.2.2 任务日程模块

部分业务需要引入任务管理服务，例如订单下单以后一个小时未支付则自动失效关闭。

### 6.2.3 监控管理

项目运行的整个运行过程应该需要监控管理

### 6.2.4 权限管理

目前安全实现非常粗糙，仅仅依赖管理员的用户名和密码。
更好的做法是引入角色权限机制。

## 6.3 企业级

### 6.3.1 安全（必须）

尽在系统所有业务功能完整实现以后。

### 6.3.2 性能（建议）

仅在系统所有业务功能完整实现以后。

性能的提升存在多种方案。

目前考虑到的技术方案：

* 采用内存数据库，如redis，缓存一些改动较少的数据，例如行政区域数据。
* 数据库方面可以引入冗余，例如首页的数据可以先从其他表更新到一个独立的表。

### 6.3.3 对象存储云服务（建议）

仅在系统所有业务功能完整实现以后。

对象存储云服务不一定是必须的：

* 局域网中只能采用内部对象存储服务
* 对象存储云服务也是一笔开销
* 引入对象存储云服务也增加了一定的复杂性
* 导致对具体云平台的耦合

当然，对象存储云服务的益处也是毋庸置疑的，因此建议部署使用。

### 6.3.4 云数据库（必须）

同上，如果仅在局域网中部署项目，那么数据库的部署也只能是在局域网中，但是在互联网中部署应用，数据的重要性和优先级是最高的，采用云数据库可以方便带来其提供的安全和性能服务。

### 6.3.5 短信服务（必须）

真正的项目里面肯定需要短信功能。

### 6.3.6 推荐系统（可选）

目前的关键字是管理员设置，然后用户的搜索时匹配关键字，因此需要专业的推荐系统。

### 6.3.6 Spring Boot 2.0迁移（可选）