feat: manage group buy order readiness

This commit is contained in:
王鹏
2026-07-07 17:45:31 +08:00
parent 09217c4821
commit 4658b35aaf
5 changed files with 161 additions and 4 deletions

View File

@@ -77,6 +77,18 @@ public class GroupBuyController {
return ApiResponse.ok(orderService.listByGroupBuy(id));
}
@PutMapping("/api/admin/group-buy-orders/{id}/confirm")
@RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN", "MERCHANT"})
public ApiResponse<GroupBuyOrderResponse> confirmOrder(@PathVariable Long id) {
return ApiResponse.ok(orderService.confirm(id));
}
@PutMapping("/api/admin/group-buy-orders/{id}/ready")
@RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN", "MERCHANT"})
public ApiResponse<GroupBuyOrderResponse> markOrderReady(@PathVariable Long id) {
return ApiResponse.ok(orderService.markReady(id));
}
@GetMapping("/api/mini/group-buys")
public ApiResponse<List<GroupBuyResponse>> listMini() {
CurrentUser user = authService.currentUser();

View File

@@ -0,0 +1,60 @@
package com.linhelp.groupbuy;
import com.linhelp.common.enums.DeliveryMethod;
import com.linhelp.common.enums.GroupBuyOrderStatus;
import com.linhelp.common.security.AuthService;
import com.linhelp.common.security.CurrentUser;
import org.junit.jupiter.api.Test;
import java.time.LocalDateTime;
import static org.assertj.core.api.Assertions.assertThat;
class GroupBuyControllerTests {
@Test
void adminCanConfirmAndMarkGroupBuyOrderReady() {
GroupBuyService groupBuyService = new GroupBuyService();
GroupBuyOrderService orderService = new GroupBuyOrderService(groupBuyService);
GroupBuyController controller = new GroupBuyController(groupBuyService, orderService, new StubAuthService());
GroupBuyResponse groupBuy = groupBuyService.create(groupBuyRequest());
groupBuyService.start(groupBuy.getId());
GroupBuyOrderResponse order = orderService.create(1000L, orderRequest(groupBuy.getId()));
GroupBuyOrderResponse confirmed = controller.confirmOrder(order.getId()).getData();
GroupBuyOrderResponse ready = controller.markOrderReady(order.getId()).getData();
assertThat(confirmed.getStatus()).isEqualTo(GroupBuyOrderStatus.CONFIRMED);
assertThat(ready.getStatus()).isEqualTo(GroupBuyOrderStatus.PENDING_DELIVERY);
}
private GroupBuyRequest groupBuyRequest() {
GroupBuyRequest request = new GroupBuyRequest();
request.setTenantId(1L);
request.setCommunityId(1L);
request.setTitle("Today eggs");
request.setPriceCent(2990);
request.setStock(100);
request.setStartTime(LocalDateTime.now().minusHours(1));
request.setEndTime(LocalDateTime.now().plusDays(1));
request.setPickupAddress("North gate");
return request;
}
private GroupBuyOrderRequest orderRequest(Long groupBuyId) {
GroupBuyOrderRequest request = new GroupBuyOrderRequest();
request.setTenantId(1L);
request.setCommunityId(1L);
request.setGroupBuyId(groupBuyId);
request.setAddressId(1L);
request.setQuantity(2);
request.setDeliveryMethod(DeliveryMethod.IMMEDIATE);
return request;
}
private static class StubAuthService extends AuthService {
@Override
public CurrentUser currentUser() {
return new CurrentUser(1L, 1L, 1L, "COMMUNITY_ADMIN");
}
}
}