订单新增的入口在前台用户系统。可以先新建表,自己先预先插入几条数据。
修改订单的规格和数量,基本是不符合业务场景需求的。
修改订单只实现修改订单状态即可。
订单删除逻辑:可以选择物理删除(从表中实实在在删除该条记录)、或者逻辑删除(设置一个状态位,让用户觉得删除了该订单,其实只是对其不可见罢了)。
订单其实可以暴露一个人很多信息。用户行为画像、人物画像。 推荐算法。
订单表如何创建?
本商城在设计接口的时候,其实是没有购物车表,意味着加入购物车里面的商品其实是相当于在订单表中下了一个未付款的订单。
一个订单中永远只有一个商品。
意味着本系统在设计订单表的时候不需要去设计订单详情页,所以,需求还简单了一些。
收货地址信息以及订单中的商品信息应该在订单表中存入完整的信息。
你在购物某商品时,使用的是某个地址,后面你把改地址给改了,那么会出现在配送过程中,突然地址发生变化的场景吗?
你在10年前买了一台iphone4,你去查看该订单,是否还在?订单里面的商品信息是否还在?通过订单进入该商品,发现商品不在了
订单其实是某个时刻行为的一个记录。618大促 买了手机,比平时贵了100块钱,活动结束之后 ,看订单,金额是多少呢?
id
nickname
receiver
address
phone
product
productId
spec
specId
number
amount
stateId
createtime
updatetime
hasComment
JavaBean:
对象。成员变量private、提供public的get和set方法。无参构造函数。
框架在封装数据到对象中,都会去调用无参构造函数来实例化一个对象,紧接着调用set方法来完成赋值
package com.cskaoyan.mall.controller;
import com.alibaba.druid.util.StringUtils;
import com.cskaoyan.mall.model.Result;
import com.cskaoyan.mall.model.bo.OrdersByPageBO;
import com.cskaoyan.mall.model.vo.OrdersByPageVO;
import com.cskaoyan.mall.service.OrderService;
import com.cskaoyan.mall.service.OrderServiceImpl;
import com.cskaoyan.mall.utils.HttpUtils;
import com.google.gson.Gson;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/api/admin/order
private static boolean isValid(String input) {
if(StringUtils.isEmpty(input)){
return false;
}
if(input.length() != 6){
return false;
}
try {
Integer.parseInt(input);
return true;
}catch (Exception e){
}
return false;
}
}
package com.cskaoyan.mall;
import com.alibaba.druid.util.StringUtils;
import java.util.Scanner;
public class RegTest {
public static void main(String[] args) {
//判断用户输入的是否是6位数字
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
//boolean result = isValid(input);
boolean result = isValidByReg(input);
System.out.println(result);
}
private static boolean isValidByReg(String input) {
//return input.matches("\d{6}");
//正则表达式最简单的用法就是用来判断和给定字符一模一样的字符串
//return input.matches("123456");
//次数限定符只作用于最邻近的一个字符 z zo zoo zooooo....
// return input.matches("zo*");
//如果想匹配zozo,应该怎么做?
// return input.matches("(zo)*");
// return input.matches("go{2,}gle");
//匹配z或者food,如果想匹配zood或者food,需要将(z|f)
// return input.matches("z|food");
// return input.matches("(z|f)ood");
//1.只能匹配一位 2.这一位必须是abcd中的一个
// return input.matches("[abcd]");
//匹配26个字母呢
// return input.matches("[a-z]");
//1. 只能匹配一位 2.这一位不能是abcd中的任意一个
// return input.matches("[^abcd]");
// ^如果在[]里面,表示的是取反,如果不在[]里面,表示的是匹配开始的位置
// return input.matches("^hello$");
// return input.matches("\d{6}");
//想匹配一个网址 www.baidu.com
//在正则中.表示的是匹配任意一位字符,如果想匹配.,那么需要对其进行转义 \(java)
return input.matches("www\.baidu\.com");
}
private static boolean isValid(String input) {
if(StringUtils.isEmpty(input)){
return false;
}
if(input.length() != 6){
return false;
}
try {
Integer.parseInt(input);
return true;
}catch (Exception e){
}
return false;
}
}
前台的filter也是需要拦截一些东西的。
个人主页的信息。如果用户没有登录,那么直接访问用户的个人主页应当是不予展示的,加入购物车、下单等接口。
前台针对的是用户的操作(如果用户没有登录,那么和用户信息相关的内容应当是不能显示的)
后台针对的是admin的操作(因为后台管理系统所有的接口都必须要求admin管理员登录了之后才可以操作)



