마이페이지
비로그인 | 유저 로그인 | 관리자 로그인 |
---|---|---|
user 테이블에 role(권한) 추가하여 권한에 따른 화면 분리
CustomException을 ENUM으로 처리 ⏬
@Getter
@AllArgsConstructor
public enum ResponseEnum {
PRINCIPAL_DOSE_NOT_EXIST("로그인을 먼저 해 주세요.", HttpStatus.BAD_REQUEST),
ADMIN_LOGIN_FAIL("관리자 로그인을 먼저 해 주세요.", HttpStatus.FORBIDDEN),
ADMIN_DELETE_USER_FAIL("유저 삭제에 실패했습니다.", HttpStatus.BAD_REQUEST),
ADMIN_CHECK_ROLE("접근 권한이 없습니다.", HttpStatus.FORBIDDEN),
USER_USERNAME_EMPTY("유저 이름을 입력해 주세요.", HttpStatus.BAD_REQUEST),
USER_PASSWORD_EMPTY("비밀번호를 입력해 주세요.", HttpStatus.BAD_REQUEST),
USER_EMAIL_EMPTY("이메일을 입력해 주세요.", HttpStatus.BAD_REQUEST),
USER_LOGIN_INFO_DOSE_NOT_MATCH("유저 이름과 비밀번호를 확인해 주세요.", HttpStatus.BAD_REQUEST),
USER_JOIN_SAME_USERNAME("이미 가입된 username 입니다.", HttpStatus.BAD_REQUEST),
USER_JOIN_SAME_EMAIL("이미 가입된 email 입니다.", HttpStatus.BAD_REQUEST),
PRODUCT_NAME_ALREADY_SAVED("이미 등록한 상품입니다.", HttpStatus.BAD_REQUEST),
PRODUCT_QTY_NO_MORE_THAN_ZERO("상품 갯수가 0개 이하일 수 없습니다.", HttpStatus.BAD_REQUEST),
PRODUCT_SAVE_FAIL("상품 등록을 실패했습니다.", HttpStatus.BAD_REQUEST),
PRODUCT_UPDATE_FAIL("상품 업데이트를 실패했습니다.", HttpStatus.BAD_REQUEST),
PRODUCT_DELETE_FAIL("상품 삭제를 실패했습니다.", HttpStatus.BAD_REQUEST),
PRODUCT_NAME_EMPTY("상품 이름을 입력해 주세요.", HttpStatus.BAD_REQUEST),
PRODUCT_PRICE_EMPTY("상품 가격을 입력해 주세요.", HttpStatus.BAD_REQUEST),
PRODUCT_QTY_EMPTY("상품 재고를 입력해 주세요.", HttpStatus.BAD_REQUEST),
PRODUCT_PRICE_QTY_ZERO("상품 가격과 재고를 입력해 주세요.", HttpStatus.BAD_REQUEST),
NO_ACCESS_TO_ORDERSLIST("구매목록을 볼 권한이 없습니다.", HttpStatus.FORBIDDEN),
NO_MORE_THAN_PRODUCT_QTY("재고보다 더 많은 수량을 구매할 수 없습니다.", HttpStatus.BAD_REQUEST);
private final String msg;
private final HttpStatus status;
}
유저 강제 삭제 (삭제된 유저 로그인 불가)
주문 취소 시 재고 업데이트
CREATE TABLE user_tb(
user_id INT PRIMARY KEY auto_increment,
user_name VARCHAR(20) NOT null,
user_password VARCHAR(20) NOT null,
user_email VARCHAR(20) NOT null,
role VARCHAR(20) NOT null,
created_at TIMESTAMP NOT null
);
CREATE TABLE product_tb(
product_id INT PRIMARY KEY auto_increment,
product_name VARCHAR(20) NOT null,
product_price INT NOT null,
product_qty INT NOT null,
created_at TIMESTAMP NOT null
);
CREATE TABLE orders_tb(
orders_id INT PRIMARY KEY auto_increment,
orders_name varchar(20) NOT null,
orders_price INT NOT null,
orders_qty INT NOT null,
product_id INT NOT null,
user_id INT NOT null,
created_at TIMESTAMP
);
INSERT INTO user_tb(user_name, user_password, user_email, role, created_at) VALUES ('ssar', '1234', 'ssar@nate.com','USER', NOW());
INSERT INTO user_tb(user_name, user_password, user_email, role, created_at) VALUES ('cos', '1234', 'cos@nate.com', 'USER', NOW());
INSERT INTO user_tb(user_name, user_password, user_email, role, created_at) VALUES ('admin', '1234', 'admin@nate.com', 'ADMIN', NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('바나나', 3000, 98, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('딸기', 2000, 100, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('키위', 4000, 85, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('오렌지', 3500, 50, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('사과', 1000, 200, NOW());
INSERT INTO orders_tb(orders_name, orders_price, orders_qty, product_id, user_id, created_at) VALUES ('바나나', 3000, 2, 1, 1, NOW());
INSERT INTO orders_tb(orders_name, orders_price, orders_qty, product_id, user_id, created_at) VALUES ('딸기', 2000, 5, 2, 2, NOW());