整个项目中,关键节点的里程碑计划。
搜索
枚举获取添加项
路径不是search驼峰格式,用-
枚举值在一个表里面,表结构合理
1后端接口添加、删除都是
2获取筛选4个用一个接口
3酒店搜索接口
不用restful风格,接口名清楚
对表设计、接口
酒店列表数据库
自己定义document就是ES里面的
点击就有酒店ID,搜索酒店系统
给经纬度接口就行
附近:
不做3级里面详细东西(价格、星级)(筛选:不做)(医院、机场就行)
关注admin、search
API:用java操作search
不管MySQL,只管ES增删改查
中间件canal保证数据同步,BLOG文件变动后在ES里面,不通过程序保证同步
先改MySQL,中间件就不用调用ES接口了,最终数据以数据库为准
方案一:MySQL出错就不添加ES了,MySQL成功了,ES失败就错了,job同步一直扫描 再同步,程序很麻烦
canal部署麻烦
底层订阅了BLOG文件,操作的日志
主从同步,也是订阅的BLOG文件,涉及到
方案二:
Redis:主从、哨兵
MySQL:双机热备
api快速构建了restful风格请求,ES里面快速响应,API很方便
是java写的,看源码,看官方文档
1.设置非空验证
官网:http://hibernate.org/validator
例:
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 2, max = 14)
private String licensePlate;
@Min(2)
private int seatCount;
// ...
}
2.一些配置不要放在业务层
例:
@Configuration
public class DruidConfig {
@Bean
@ConditionalOnMissingBean
public ServletRegistrationBean druidStartViewServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 白名单
// servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// 黑名单
servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
// 登录查看信息的账密,用于登录Druid监控后台
servletRegistrationBean.addInitParameter("loginUsername", "druid");
servletRegistrationBean.addInitParameter("loginPassword", "druid");
// 是否能够重置数据
servletRegistrationBean.addInitParameter("resetEnable", "true");
return servletRegistrationBean;
}
3.不用try catch(影响可读性)
使用全局捕捉异常例GlobalExceptionHandler、ApiException直接引common模块使用。
4.if else问题
可以直接if return让代码简洁。
if{
...
}
return ...
5.日志打印问题
在主要流程打印日志,节约资源。
6.接口注释写好增加可读性。
7.if else特别多时用switch语句,让代码干净整洁些。
8.相应模块写在对应模块里,例如admin的写admin模块里。
9.使用mybatis-plus 例如Service直接继承Iservice的方法简洁代码
10.minio上传文件单独写一个service
11.字符串拼接问题
12.redis的使用要修改
13.mybatis-plus使用LambdaQueryWrapper通过方法引用的方式来使用实体字段名的操作
例:
LambdaQueryWrapperlambda3 = Wrappers. lambdaQuery(); lambda3.like(User::getName, "雨").lt(User::getAge, 40);
14.大小写问题例如DTO、VO
15.非空用hutool工具



