0%

2018年5月17日 下午2:58

总结:

  1. 对数据表的分析让我认识了一个道理:数据表的数据大部分都是通过前台顾客在购物的过程中添加的,而后台的管理员更多的就是一个数据查询的功能。
    1. 这个结论虽然看似很简单,但却给了我思考问题的方向顺序,能让我更快的分析如何添加新的功能。
    2. 从数据表中数据的来源,也可以分析出程序是如何写的。
  2. 表结构字段介绍
  3. 表关系说明
  4. 重要的知识点
  5. 关于字段冗余:目的是减少对数据库的连表查询,这不是业务上的需求。

表结构字段介绍









表关系说明

  1. 天蓝色的说明存在索引或者组合索引。
  2. 我们从业务流程的角度来分析一下整个表之间的关系。
  3. 首先。用户可以在user表中先注册,然后登陆的时候是读取user表的数据进行登录。
  4. 当用户搜寻的CategoryId比较高时,我们会依次通过递归向下查询,将所有这个类下的所有子类产品全部列出来。
  5. 然后购物车cart表中的userID是user表中获取,productId是从product表中获取,checke和quality是根据用户点击来直接设置的。
  6. 在购物车页面可以设置shipping表的内容,shipping表的userId使用前面的表中获取。当用户点击订单提交之后,就用到了order和orderItem表。
  7. 其中的orderNo,userId,shippingid是从前表获取的,其他的字段是默认的或者是自己当前算出来的。
  8. orderItem表中的userId,orderno,productid是从前表获取的,而productname,productimage,current_unit_price相当于快照一样。
  9. 当支付宝进行回调之后填写payinfo表,然后修改order表的paymenttime字段。

知识点说明



2018年5月12日 下午8:41

在解决问题的同时也明白了@Param()的作用;:只要是实体类中的属性,我们就必须加上@Param()。不用管它为啥

报错:There is no getter for property named ‘sponsorId’ in ‘class java.lang.Integer’

参考Mybatis找不到参数错误:There is no getter for property named ‘categoryId’ in ‘class java.lang.Integer’。 - CSDN博客

2018年5月10日 下午3:59

  1. vo主要围绕在cart、order、product这三进行再加工,而有一些pay_info、user、category却没有对应的Vo
  2. 这是根据我们的需求接口业务需求决定的。
  3. 最直观的理解就是vo直接对应于我们视觉上的页面,秒懂没!
    1. cartVo —-> 购物车页面
    2. orderVo —>订单页面
    3. productDetailVo —-> 商品详情页
    4. productListVo ——> 商品列表
    5. 这几个都是前后台都有

概述:

  1. pojo和vo之间的对比
  2. Vo之间存在组合关系
  3. 同一个类型创造出两套vo使用

pojo和vo之间的对比

OrderItem — OrderItemVo

Shipping — ShipingVo

Order — OrderVo

Cart — CartVo:

CartProductVo

Vo之间存在组合关系

订单模块组合关系

购物车模块组合关系

同一个类型创造出两套vo使用

原因是要满足不同的请求需要

两个产品product的vo对比

ProductListVo 和 productDetailVo 的对比

两个订单order的vo对比

  1. 订单确认页和订单查询页都要调用this.getCartOrderItem(userId,cartList,sponsorId);方法,目的:根据cartList,检查并重组orderItem。

  2. 到达确认页以后,可能同时又很多用户同时操作。当我们真正的提交订单时,可能库存已经不够了,所有要调用进行第二次的检查

  3. orderProductVo服务的请求是:get_order_cart_product.do

    1. 用于订单确认页
  4. OrderVo服务的请求是:list.do

    1. 用于已下单的查询页
  5. 这两个都服务于OrderController.java

2018年5月10日 下午2:38

概述:

  1. 一句话解释:前端就像是个姑娘,当给姑娘你的礼物🎁之前,当然需要包装店包装一下,显得整洁干净,留一个好的印象。ServerResponse就是包装店,让前端觉得更加清晰、统一格式
    1. 这个包装店有大量的构造方法(包装方法),这是为了能够满足各个用户打包的需求。
  2. 这里的是一个泛型泛型:以responseService为例子
  3. @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
    1. 保证序列化json的时候,如果是null的对象,key也会消失
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
@JsonSerialize(include =  JsonSerialize.Inclusion.NON_NULL)
//保证序列化json的时候,如果是null的对象,key也会消失
public class ServerResponse<T> implements Serializable {

private int status;
private String msg;
private T data;

private ServerResponse(int status){
this.status = status;
}
private ServerResponse(int status,T data){
this.status = status;
this.data = data;
}

private ServerResponse(int status,String msg,T data){
this.status = status;
this.msg = msg;
this.data = data;
}

private ServerResponse(int status,String msg){
this.status = status;
this.msg = msg;
}

@JsonIgnore
//使之不在json序列化结果当中
public boolean isSuccess(){
return this.status == ResponseCode.SUCCESS.getCode();
}

public int getStatus(){
return status;
}
public T getData(){
return data;
}
public String getMsg(){
return msg;
}


public static <T> ServerResponse<T> createBySuccess(){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode());
}

public static <T> ServerResponse<T> createBySuccessMessage(String msg){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg);
}

public static <T> ServerResponse<T> createBySuccess(T data){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data);
}

public static <T> ServerResponse<T> createBySuccess(String msg,T data){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data);
}


public static <T> ServerResponse<T> createByError(){
return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc());
}


public static <T> ServerResponse<T> createByErrorMessage(String errorMessage){
return new ServerResponse<T>(ResponseCode.ERROR.getCode(),errorMessage);
}

public static <T> ServerResponse<T> createByErrorCodeMessage(int errorCode,String errorMessage){
return new ServerResponse<T>(errorCode,errorMessage);
}
}