Skip to content

Commit 72ff18e

Browse files
committed
update order
1 parent 7c7c9ce commit 72ff18e

File tree

8 files changed

+68
-44
lines changed

8 files changed

+68
-44
lines changed

domain-driven-design/java-web/src/main/java/com/javaweborder/application/services/OrderService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
import com.javaweborder.infrastructure.message.MessageQueueService;
77

88
import java.util.List;
9+
import java.util.Optional;
910
import java.util.concurrent.ThreadLocalRandom;
11+
import java.util.stream.Collectors;
1012

1113
public class OrderService {
1214

@@ -64,7 +66,6 @@ public void cancelOrder(long id) throws Exception {
6466
public OrderDTO getOrder(long id) throws Exception {
6567
Order order = orderRepository.findById(id)
6668
.orElseThrow(() -> new Exception("订单未找到"));
67-
6869
// 返回订单 DTO
6970
return new OrderDTO(order.getId(), order.getCustomerName(), order.getAmount());
7071
}
@@ -81,7 +82,7 @@ public OrderDTO updateOrder(long id, String customerName, double amount) throws
8182

8283
// 保存更新后的订单
8384
orderRepository.save(order);
84-
85+
System.out.println(id + " " + customerName + " " + amount + " " + order.getCustomerName() + " " + order.getAmount());
8586
// 发送消息
8687
String message = String.format("Order updated: ID=%d, Customer=%s, Amount=%.2f",
8788
order.getId(), order.getCustomerName(), order.getAmount());
@@ -106,8 +107,13 @@ public void deleteOrder(long id) throws Exception {
106107
}
107108

108109
// 列出全部订单[此处应该分页]
109-
public List<Order> listOrder() throws Exception {
110+
public List<OrderDTO> listOrder() throws Exception {
111+
List<Order> orders = orderRepository.findAll();
112+
List<OrderDTO> orderDTOs;
113+
orderDTOs = orders.stream()
114+
.map(order -> new OrderDTO(order.getId(), order.getCustomerName(), order.getAmount()))
115+
.collect(Collectors.toList());
110116
// 返回订单列表
111-
return orderRepository.findAll();
117+
return orderDTOs;
112118
}
113119
}

domain-driven-design/java-web/src/main/java/com/javaweborder/infrastructure/repository/OrderRepositoryImpl.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,22 @@
88
import java.util.concurrent.ConcurrentHashMap;
99

1010
public class OrderRepositoryImpl implements OrderRepository {
11-
12-
private final Map<Long, Order> orders = new ConcurrentHashMap<>(); // 线程安全的 HashMap
11+
12+
private final static Map<Long, Order> orders = new ConcurrentHashMap<>(); // 线程安全的 HashMap
1313

1414
@Override
1515
public void save(Order order) {
16-
if (orders.containsKey(order.getId())) {
17-
throw new NoSuchElementException("订单 ID " + order.getId() + " 已存在");
18-
}
1916
orders.put(order.getId(), order);
2017
}
2118

22-
2319
@Override
2420
public Optional<Order> findById(long id) {
25-
if (!orders.containsKey(id)) {
21+
Order order = orders.get(id);
22+
if (order == null) {
2623
throw new NoSuchElementException("订单 ID " + id + " 未找到");
2724
}
28-
return Optional.ofNullable(orders.get(id));
25+
System.out.println("查询ID: " + id + ", 结果: " + order.getId());
26+
return Optional.of(order);
2927
}
3028

3129
@Override

domain-driven-design/java-web/src/main/java/com/javaweborder/interfaces/controllers/OrderController.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ public void createOrder(HttpServletRequest request, HttpServletResponse response
2929
// 解析请求体
3030
body = BodyParserUtils.parseRequestBody(request, OrderRequest.class);
3131
} catch (Exception e) {
32-
ResponseUtils.sendJsonError(response, 500, "请求错误:请检查参数", null);
32+
ResponseUtils.sendJsonError(response, 500, "请求错误:" + e.getMessage(), null);
3333
}
3434

3535
try {
3636
String customerName = body.getCustomerName();
3737
// 将订单金额转换为数字,校验是否有效
3838
double amount = parseAmount(body.getAmount());
3939
OrderDTO order = orderService.createOrder(customerName, amount);
40-
ResponseUtils.sendJsonResponse(response, 201, order, null);
40+
ResponseUtils.sendJsonResponse(response, 201,"创建成功", order, null);
4141
} catch (IllegalArgumentException e) {
4242
ResponseUtils.sendJsonError(response, 400, e.getMessage(), null);
4343
} catch (Exception e) {
44-
ResponseUtils.sendJsonError(response, 500, "内部错误:订单保存失败", null);
44+
ResponseUtils.sendJsonError(response, 500, "内部错误:" + e.getMessage(), null);
4545
}
4646
}
4747

@@ -51,11 +51,11 @@ public void getOrder(HttpServletRequest request, HttpServletResponse response) t
5151
String idParam = extractId(request);
5252
long orderId = parseId(idParam);
5353
OrderDTO order = orderService.getOrder(orderId);
54-
ResponseUtils.sendJsonResponse(response, 200, order, null);
54+
ResponseUtils.sendJsonResponse(response, 200, "获取成功", order, null);
5555
} catch (IllegalArgumentException e) {
5656
ResponseUtils.sendJsonError(response, 400, e.getMessage(), null);
5757
} catch (Exception e) {
58-
ResponseUtils.sendJsonError(response, 500, "内部错误:订单未找到", null);
58+
ResponseUtils.sendJsonError(response, 500, "内部错误:" + e.getMessage(), null);
5959
}
6060
}
6161

@@ -69,11 +69,11 @@ public void updateOrder(HttpServletRequest request, HttpServletResponse response
6969
double amount = parseAmount(body.getAmount());
7070

7171
OrderDTO order = orderService.updateOrder(orderId, body.getCustomerName(), amount);
72-
ResponseUtils.sendJsonResponse(response, 200, order, null);
72+
ResponseUtils.sendJsonResponse(response, 200,"更新成功", order, null);
7373
} catch (IllegalArgumentException e) {
7474
ResponseUtils.sendJsonError(response, 400, e.getMessage(), null);
7575
} catch (Exception e) {
76-
ResponseUtils.sendJsonError(response, 500, "内部错误:订单未找到", null);
76+
ResponseUtils.sendJsonError(response, 500, "内部错误:" + e.getMessage(), null);
7777
}
7878
}
7979

@@ -87,19 +87,19 @@ public void deleteOrder(HttpServletRequest request, HttpServletResponse response
8787
} catch (IllegalArgumentException e) {
8888
ResponseUtils.sendJsonError(response, 400, e.getMessage(), null);
8989
} catch (Exception e) {
90-
ResponseUtils.sendJsonError(response, 500, "服务器内部错误", null);
90+
ResponseUtils.sendJsonError(response, 500, "内部错误:" + e.getMessage(), null);
9191
}
9292
}
9393

9494
// 获取订单:对应 GET /orders
9595
public void listOrder(HttpServletRequest request, HttpServletResponse response) throws IOException {
9696
try {
97-
List<Order> orders = orderService.listOrder();
98-
ResponseUtils.sendJsonResponse(response, 200, orders, null);
97+
List<OrderDTO> orders = orderService.listOrder();
98+
ResponseUtils.sendJsonResponse(response, 200,"查询成功", orders, null);
9999
} catch (IllegalArgumentException e) {
100100
ResponseUtils.sendJsonError(response, 400, e.getMessage(), null);
101101
} catch (Exception e) {
102-
ResponseUtils.sendJsonError(response, 500, "内部错误:订单查找失败", null);
102+
ResponseUtils.sendJsonError(response, 500, "内部错误:" + e.getMessage(), null);
103103
}
104104
}
105105

domain-driven-design/java-web/src/main/java/com/javaweborder/interfaces/response/ResponseBody.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
public class ResponseBody {
44
private final int status;
5-
private final Object message;
5+
private final String message;
6+
private Object data;
67

7-
public ResponseBody(int status, Object message) {
8+
public ResponseBody(int status, String message) {
89
this.status = status;
910
this.message = message;
1011
}
@@ -16,4 +17,12 @@ public int getStatus() {
1617
public Object getMessage() {
1718
return message;
1819
}
20+
21+
public void setData(Object data) {
22+
this.data = data;
23+
}
24+
25+
public Object getData() {
26+
return data;
27+
}
1928
}

domain-driven-design/java-web/src/main/java/com/javaweborder/middleware/AuthorizationFilter.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import javax.servlet.http.HttpServletRequest;
99
import javax.servlet.http.HttpServletResponse;
1010
import java.io.IOException;
11+
import java.io.PrintWriter;
1112
import java.util.Arrays;
1213
import java.util.HashSet;
1314
import java.util.Set;
@@ -35,10 +36,10 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
3536
String path = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
3637

3738
// 白名单路径直接放行,根据需要设置
38-
// if (isAllowed(path)) {
39-
// chain.doFilter(request, response);
40-
// return;
41-
// }
39+
if (isAllowed(path)) {
40+
chain.doFilter(request, response);
41+
return;
42+
}
4243

4344
try {
4445
// 1. 验证用户是否登录(示例:检查Token)
@@ -70,7 +71,8 @@ public void destroy() {
7071

7172
// 判断是否为公开路径
7273
private boolean isAllowed(String path) {
73-
return ALLOWED_PATHS.contains(path);
74+
return true; // 全部放行
75+
// return ALLOWED_PATHS.contains(path);
7476
}
7577

7678
// 模拟Token验证逻辑(替换为实际验证逻辑)
@@ -88,9 +90,15 @@ private boolean hasPermission(String token, String requiredRole) {
8890

8991
// 返回JSON格式错误响应
9092
private void sendError(HttpServletResponse response, int status, String message) throws IOException {
93+
// 检查响应是否已提交,避免重复写入
94+
if (response.isCommitted()) {
95+
return; // 响应已经提交,跳过处理
96+
}
9197
response.setStatus(status);
9298
response.setContentType("application/json;charset=UTF-8");
99+
PrintWriter writer = response.getWriter();
93100
ResponseBody errorResponse = new ResponseBody(status, message);
94-
objectMapper.writeValue(response.getWriter(), errorResponse);
101+
objectMapper.writeValue(writer, errorResponse);
102+
writer.flush();
95103
}
96104
}

domain-driven-design/java-web/src/main/java/com/javaweborder/middleware/GlobalExceptionFilter.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.servlet.annotation.WebFilter;
88
import javax.servlet.http.HttpServletResponse;
99
import java.io.IOException;
10+
import java.io.PrintWriter;
1011

1112
// 在过滤器的 doFilter 方法中,自定义包装器来响应对象,并针对状态码进行不同处理,以返回自定义错误页面
1213
@WebFilter("/*")
@@ -60,11 +61,16 @@ private String getErrorMessage(int status) {
6061
}
6162

6263
private void handleException(HttpServletResponse response, int status, String message) throws IOException {
63-
response.reset(); // 重置响应,确保自定义内容可写入
64-
response.setStatus(status);
65-
response.setContentType("application/json;charset=UTF-8");
66-
ResponseBody errorResponse = new ResponseBody(status, message);
67-
objectMapper.writeValue(response.getWriter(), errorResponse);
64+
// 只有在响应没有提交时才进行 reset()
65+
if (!response.isCommitted()) {
66+
response.reset();
67+
response.setContentType("application/json");
68+
response.setCharacterEncoding("UTF-8");
69+
PrintWriter writer = response.getWriter();
70+
ResponseBody errorResponse = new ResponseBody(status, message);
71+
objectMapper.writeValue(writer, errorResponse);
72+
writer.flush();
73+
}
6874
}
6975

7076
@Override

domain-driven-design/java-web/src/main/java/com/javaweborder/middleware/LoggingFilter.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
3131

3232
// 转换为HttpServletRequest和HttpServletResponse,以便使用HTTP相关方法
3333
HttpServletRequest httpRequest = (HttpServletRequest) request;
34-
// HttpServletResponse httpResponse = (HttpServletResponse) response;
35-
36-
// 记录请求的日志(开始时间)
37-
// LogUtils.logRequest(httpRequest, startTime);
3834

3935
// 调用下一个过滤器或目标资源(如 Controller)
4036
chain.doFilter(request, response);

domain-driven-design/java-web/src/main/java/com/javaweborder/utils/ResponseUtils.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ public class ResponseUtils {
2424

2525
// 发送JSON响应(支持中文)
2626
public static void sendJsonResponse(HttpServletResponse response, int statusCode,
27-
Object data, Map<String, String> headers) throws IOException {
28-
sendResponse(response, statusCode, data, "application/json;charset=UTF-8", headers);
27+
String message, Object data, Map<String, String> headers) throws IOException {
28+
sendResponse(response, statusCode, message, data, "application/json;charset=UTF-8", headers);
2929
}
3030

3131
// 发送JSON错误响应(支持中文)
@@ -36,7 +36,7 @@ public static void sendJsonError(HttpServletResponse response, int statusCode,
3636

3737
// 核心响应方法
3838
private static void sendResponse(HttpServletResponse response, int statusCode,
39-
Object data, String contentType, Map<String, String> headers) throws IOException {
39+
String message, Object data, String contentType, Map<String, String> headers) throws IOException {
4040
// 设置基础响应头
4141
response.setStatus(statusCode);
4242
response.setContentType(contentType != null ? contentType : "application/json;charset=UTF-8");
@@ -48,7 +48,8 @@ private static void sendResponse(HttpServletResponse response, int statusCode,
4848
}
4949

5050
// 生成JSON字符串
51-
ResponseBody responseBody = new ResponseBody(statusCode, data);
51+
ResponseBody responseBody = new ResponseBody(statusCode, message);
52+
responseBody.setData(data);
5253
String json = objectMapper.writeValueAsString(responseBody);
5354
System.out.println("[DEBUG] 响应JSON: " + json); // 打印中文日志
5455

0 commit comments

Comments
 (0)