|
|
@@ -0,0 +1,198 @@
|
|
|
+package shop.alien.store.controller.dining;
|
|
|
+
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import io.swagger.annotations.ApiParam;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import shop.alien.entity.result.R;
|
|
|
+import shop.alien.entity.store.vo.*;
|
|
|
+import shop.alien.store.feign.DiningServiceFeign;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 与 alien-dining 一致的路径前缀 {@code /store/generic-dining},透传通用价目点餐(store_price、type=2 桌)。
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Api(tags = {"APP/统一网关-通用价目点餐(与小程序路径一致)"})
|
|
|
+@CrossOrigin
|
|
|
+@RestController
|
|
|
+@RequestMapping("/store/generic-dining")
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class StoreGenericDiningPathProxyController {
|
|
|
+
|
|
|
+ private final DiningServiceFeign diningServiceFeign;
|
|
|
+
|
|
|
+ private String auth(HttpServletRequest request) {
|
|
|
+ String h = request.getHeader("Authorization");
|
|
|
+ if (h == null || h.isEmpty()) {
|
|
|
+ h = request.getHeader("authorization");
|
|
|
+ }
|
|
|
+ return h;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "获取点餐页面信息", notes = "透传 alien-dining /store/generic-dining/page-info;仅通用桌 type=2。")
|
|
|
+ @GetMapping("/page-info")
|
|
|
+ public R<DiningPageInfoVO> getDiningPageInfo(
|
|
|
+ HttpServletRequest request,
|
|
|
+ @ApiParam(value = "桌号ID", required = true) @RequestParam Integer tableId,
|
|
|
+ @ApiParam(value = "就餐人数") @RequestParam(required = false) Integer dinerCount) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.getGenericDiningPageInfo(auth(request), tableId, dinerCount);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic getDiningPageInfo: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("搜索价目(store_price)")
|
|
|
+ @GetMapping("/search")
|
|
|
+ public R<List<CuisineListVO>> search(
|
|
|
+ HttpServletRequest request,
|
|
|
+ @RequestParam Integer storeId,
|
|
|
+ @RequestParam(required = false) String keyword,
|
|
|
+ @RequestParam Integer tableId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.genericSearchCuisines(auth(request), storeId, keyword, tableId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic search: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("价目分页列表")
|
|
|
+ @GetMapping("/cuisines")
|
|
|
+ public R<List<CuisineListVO>> cuisines(
|
|
|
+ HttpServletRequest request,
|
|
|
+ @RequestParam Integer storeId,
|
|
|
+ @RequestParam(required = false) Integer categoryId,
|
|
|
+ @RequestParam Integer tableId,
|
|
|
+ @RequestParam(defaultValue = "1") Integer page,
|
|
|
+ @RequestParam(defaultValue = "12") Integer size) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.getGenericCuisinesByCategory(auth(request), storeId, categoryId, tableId, page, size);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic cuisines: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("价目详情(priceItemId 为 store_price.id)")
|
|
|
+ @GetMapping("/cuisine/{priceItemId}")
|
|
|
+ public R<CuisineDetailVO> detail(
|
|
|
+ HttpServletRequest request,
|
|
|
+ @PathVariable Integer priceItemId,
|
|
|
+ @RequestParam Integer tableId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.getGenericPriceItemDetail(auth(request), priceItemId, tableId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic cuisine detail: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("订单确认页")
|
|
|
+ @GetMapping("/order/confirm")
|
|
|
+ public R<OrderConfirmVO> orderConfirm(
|
|
|
+ HttpServletRequest request,
|
|
|
+ @RequestParam Integer tableId,
|
|
|
+ @RequestParam Integer dinerCount) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.getGenericOrderConfirmInfo(auth(request), tableId, dinerCount);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic orderConfirm: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("可领取优惠券")
|
|
|
+ @GetMapping("/coupons/available")
|
|
|
+ public R<List<AvailableCouponVO>> availableCoupons(HttpServletRequest request, @RequestParam Integer storeId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.getGenericAvailableCoupons(auth(request), storeId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic availableCoupons: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("领取优惠券")
|
|
|
+ @PostMapping("/coupon/receive")
|
|
|
+ public R<Boolean> receiveCoupon(HttpServletRequest request, @RequestParam Integer couponId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.receiveGenericCoupon(auth(request), couponId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic receiveCoupon: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("锁定订单")
|
|
|
+ @PostMapping("/order/lock")
|
|
|
+ public R<Boolean> lockOrder(HttpServletRequest request, @RequestParam Integer tableId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.lockGenericOrder(auth(request), tableId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic lockOrder: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("解锁订单")
|
|
|
+ @PostMapping("/order/unlock")
|
|
|
+ public R<Boolean> unlockOrder(HttpServletRequest request, @RequestParam Integer tableId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.unlockGenericOrder(auth(request), tableId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic unlockOrder: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("查询订单锁")
|
|
|
+ @GetMapping("/order/check-lock")
|
|
|
+ public R<Integer> checkLock(HttpServletRequest request, @RequestParam Integer tableId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.checkGenericOrderLock(auth(request), tableId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic checkLock: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("结算页信息")
|
|
|
+ @GetMapping("/order/settlement")
|
|
|
+ public R<OrderSettlementVO> settlement(HttpServletRequest request, @RequestParam Integer orderId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.getGenericOrderSettlementInfo(auth(request), orderId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic settlement: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("锁定结算")
|
|
|
+ @PostMapping("/order/settlement/lock")
|
|
|
+ public R<Boolean> lockSettlement(HttpServletRequest request, @RequestParam Integer orderId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.lockGenericSettlement(auth(request), orderId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic lockSettlement: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("解锁结算")
|
|
|
+ @PostMapping("/order/settlement/unlock")
|
|
|
+ public R<Boolean> unlockSettlement(HttpServletRequest request, @RequestParam Integer orderId) {
|
|
|
+ try {
|
|
|
+ return diningServiceFeign.unlockGenericSettlement(auth(request), orderId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("generic unlockSettlement: {}", e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|