Refactoring_UUID to make unique order number
✅ Mid Feedback
Instead of using Random
to make unique order number, why not use UUID
?
✅ UUID
Universally Unique Identifier
128-bit long number in hex characters separated by “-“
example: e58ed763-928c-4155-bee9-fdbaaadc15f3
✔️ Before
Cart to Order service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Transactional
public ResponseDto cartToOrder(CustomUserDetails customUserDetails) {
//...make order code
//before implementing UUID
LocalDate orderAt = LocalDate.now();
Random random = new Random();
Integer randomNumber = random.nextInt(10000);
String ordersNumber = user.getUserId().toString() + orderAt.getYear() + ":" + randomNumber.toString();
OrderResponseDto orderResponseDto = OrderResponseDto.builder()
.userName(user.getName())
.phoneNumber(user.getPhoneNumber())
.address(user.getAddress())
.ordersNumber(ordersNumber) //save here
.ordersAt(orderAt)
.orderCouponList(makeOrderCouponsList(user))
.orderProductList(makeOrderProductsList(cartList))
.build();
return new ResponseDto(HttpStatus.OK.value(), "order page show success", orderResponseDto);
🔴 UUID was too long for my datatype
After changing the code as such, I got an 🔴Error🔴 saying
Data too long for column 'orders_number' at row 1
1
2
3
//UUID사용해서 고유한 주문번호 만들기
String ordersNumber = UUID.randomUUID().toString();
👍🏻 After implementing shortened UUID
🔵 Used substring
to make the UUID shorter
👍🏻 No worries that the order numbers will not be unique
1
2
3
//UUID사용해서 고유한 주문번호 만들기
String ordersNumber = UUID.randomUUID().toString().replace("-", "").substring(0, 16);
This post is licensed under CC BY 4.0 by the author.