Showing
9 changed files
with
282 additions
and
27 deletions
No preview for this file type
No preview for this file type
| ... | @@ -49,6 +49,7 @@ public class InventoryController { | ... | @@ -49,6 +49,7 @@ public class InventoryController { |
| 49 | return inventoryService.getStallsByClientId(enterpriseId, clientId); | 49 | return inventoryService.getStallsByClientId(enterpriseId, clientId); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | + @SaIgnore | ||
| 52 | @ApiOperation(value = "获取桌号") | 53 | @ApiOperation(value = "获取桌号") |
| 53 | @PostMapping("/tableCodes") | 54 | @PostMapping("/tableCodes") |
| 54 | @ResponseStatus(HttpStatus.OK) | 55 | @ResponseStatus(HttpStatus.OK) | ... | ... |
| 1 | package com.infoloop.tianting.controller; | 1 | package com.infoloop.tianting.controller; |
| 2 | 2 | ||
| 3 | +import cn.dev33.satoken.annotation.SaIgnore; | ||
| 3 | import com.github.xiaoymin.knife4j.annotations.ApiSupport; | 4 | import com.github.xiaoymin.knife4j.annotations.ApiSupport; |
| 4 | import com.infoloop.tianting.model.dto.OrderDbDTO; | 5 | import com.infoloop.tianting.model.dto.OrderDbDTO; |
| 5 | import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; | 6 | import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; |
| ... | @@ -71,6 +72,15 @@ public class OrderController { | ... | @@ -71,6 +72,15 @@ public class OrderController { |
| 71 | return orderService.createOrder(createOrderDto); | 72 | return orderService.createOrder(createOrderDto); |
| 72 | } | 73 | } |
| 73 | 74 | ||
| 75 | + @ApiOperation(value = "创建订单") | ||
| 76 | + @PostMapping("/operator/orders") | ||
| 77 | + @ResponseStatus(HttpStatus.OK) | ||
| 78 | + public CreateOrderResponse createOrderByOperator( | ||
| 79 | + @Valid @RequestBody OrderDbDTO.OperatorCreateOrderDto createOrderDto) { | ||
| 80 | + return orderService.orderCreation(createOrderDto); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | +// @SaIgnore | ||
| 74 | @ApiOperation(value = "修改订单") | 84 | @ApiOperation(value = "修改订单") |
| 75 | @PatchMapping("/orders/modification") | 85 | @PatchMapping("/orders/modification") |
| 76 | @ResponseStatus(HttpStatus.OK) | 86 | @ResponseStatus(HttpStatus.OK) |
| ... | @@ -78,6 +88,7 @@ public class OrderController { | ... | @@ -78,6 +88,7 @@ public class OrderController { |
| 78 | return orderService.updateOrder(updateOrderDto); | 88 | return orderService.updateOrder(updateOrderDto); |
| 79 | } | 89 | } |
| 80 | 90 | ||
| 91 | +// @SaIgnore | ||
| 81 | @ApiOperation(value = "批量修改订单详情") | 92 | @ApiOperation(value = "批量修改订单详情") |
| 82 | @PatchMapping("/order_details/modification") | 93 | @PatchMapping("/order_details/modification") |
| 83 | @ResponseStatus(HttpStatus.OK) | 94 | @ResponseStatus(HttpStatus.OK) | ... | ... |
| ... | @@ -13,8 +13,10 @@ import java.util.List; | ... | @@ -13,8 +13,10 @@ import java.util.List; |
| 13 | import java.util.Optional; | 13 | import java.util.Optional; |
| 14 | import javax.validation.Valid; | 14 | import javax.validation.Valid; |
| 15 | import jdk.jfr.StackTrace; | 15 | import jdk.jfr.StackTrace; |
| 16 | +import lombok.AllArgsConstructor; | ||
| 16 | import lombok.Builder; | 17 | import lombok.Builder; |
| 17 | import lombok.Data; | 18 | import lombok.Data; |
| 19 | +import lombok.NoArgsConstructor; | ||
| 18 | import lombok.ToString; | 20 | import lombok.ToString; |
| 19 | 21 | ||
| 20 | @Data | 22 | @Data |
| ... | @@ -144,9 +146,35 @@ public class OrderDbDTO { | ... | @@ -144,9 +146,35 @@ public class OrderDbDTO { |
| 144 | private List<String> doctors; | 146 | private List<String> doctors; |
| 145 | } | 147 | } |
| 146 | 148 | ||
| 149 | + | ||
| 147 | @Data | 150 | @Data |
| 148 | @Builder | 151 | @Builder |
| 149 | @ApiModel(description = "创建订单视图") | 152 | @ApiModel(description = "创建订单视图") |
| 153 | + public static class OperatorCreateOrderDto { | ||
| 154 | + @ApiModelProperty(value = "档口 ID") | ||
| 155 | + private Integer stallId; | ||
| 156 | + | ||
| 157 | + @ApiModelProperty(value = "客户 ID") | ||
| 158 | + private Integer customerId; | ||
| 159 | + | ||
| 160 | + @ApiModelProperty(value = "餐单 id") | ||
| 161 | + private Integer menuId; | ||
| 162 | + | ||
| 163 | + @ApiModelProperty(value = "用餐日期") | ||
| 164 | + private LocalDateTime mealTime; | ||
| 165 | + | ||
| 166 | + @ApiModelProperty(value = "备注") | ||
| 167 | + private String remark; | ||
| 168 | + | ||
| 169 | + @ApiModelProperty(value = "订单菜品详情列表") | ||
| 170 | + private List<OperatorCreateOrderDetailDto> orderDetailDtos; | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | + @Data | ||
| 174 | + @Builder | ||
| 175 | + @NoArgsConstructor | ||
| 176 | + @AllArgsConstructor | ||
| 177 | + @ApiModel(description = "创建订单视图") | ||
| 150 | public static class CreateOrderDto { | 178 | public static class CreateOrderDto { |
| 151 | @ApiModelProperty(value = "企业 ID") | 179 | @ApiModelProperty(value = "企业 ID") |
| 152 | private Integer enterpriseId; | 180 | private Integer enterpriseId; |
| ... | @@ -158,7 +186,7 @@ public class OrderDbDTO { | ... | @@ -158,7 +186,7 @@ public class OrderDbDTO { |
| 158 | private Integer stallId; | 186 | private Integer stallId; |
| 159 | 187 | ||
| 160 | @ApiModelProperty(value = "需要创建客户 ID") | 188 | @ApiModelProperty(value = "需要创建客户 ID") |
| 161 | - public Boolean shouldCreateCustomerId; | 189 | + private Boolean shouldCreateCustomerId; |
| 162 | 190 | ||
| 163 | @ApiModelProperty(value = "客户 ID") | 191 | @ApiModelProperty(value = "客户 ID") |
| 164 | private Integer customerId; | 192 | private Integer customerId; |
| ... | @@ -440,6 +468,18 @@ public class OrderDbDTO { | ... | @@ -440,6 +468,18 @@ public class OrderDbDTO { |
| 440 | @Builder | 468 | @Builder |
| 441 | @ToString | 469 | @ToString |
| 442 | @ApiModel(description = "订单详情信息,即菜品细节") | 470 | @ApiModel(description = "订单详情信息,即菜品细节") |
| 471 | + public static class OperatorCreateOrderDetailDto { | ||
| 472 | + @ApiModelProperty(value = "餐单详情 id,即菜品") | ||
| 473 | + private Integer menuDetailId; | ||
| 474 | + | ||
| 475 | + @ApiModelProperty(value = "菜品所点份数") | ||
| 476 | + private Integer count; | ||
| 477 | + } | ||
| 478 | + | ||
| 479 | + @Data | ||
| 480 | + @Builder | ||
| 481 | + @ToString | ||
| 482 | + @ApiModel(description = "订单详情信息,即菜品细节") | ||
| 443 | public static class CreateOrderDetailDto { | 483 | public static class CreateOrderDetailDto { |
| 444 | @ApiModelProperty(value = "餐单详情 id,即菜品") | 484 | @ApiModelProperty(value = "餐单详情 id,即菜品") |
| 445 | private Integer menuDetailId; | 485 | private Integer menuDetailId; | ... | ... |
| ... | @@ -4,6 +4,7 @@ import com.infoloop.tianting.model.common.PageResult; | ... | @@ -4,6 +4,7 @@ import com.infoloop.tianting.model.common.PageResult; |
| 4 | import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; | 4 | import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; |
| 5 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; | 5 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; |
| 6 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; | 6 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; |
| 7 | +import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDto; | ||
| 7 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto; | 8 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto; |
| 8 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailBatchUpdateDto; | 9 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailBatchUpdateDto; |
| 9 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto; | 10 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto; |
| ... | @@ -20,6 +21,7 @@ public interface OrderService { | ... | @@ -20,6 +21,7 @@ public interface OrderService { |
| 20 | PageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto); | 21 | PageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto); |
| 21 | List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId); | 22 | List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId); |
| 22 | CreateOrderResponse createOrder(CreateOrderDto createOrderDto); | 23 | CreateOrderResponse createOrder(CreateOrderDto createOrderDto); |
| 24 | + CreateOrderResponse orderCreation(OperatorCreateOrderDto createOrderDto); | ||
| 23 | UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto); | 25 | UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto); |
| 24 | BatchUpdateOrderDetailResponse batchUpdateOrderDetails(OrderDetailBatchUpdateDto batchUpdateDto); | 26 | BatchUpdateOrderDetailResponse batchUpdateOrderDetails(OrderDetailBatchUpdateDto batchUpdateDto); |
| 25 | } | 27 | } | ... | ... |
| 1 | package com.infoloop.tianting.service.client; | 1 | package com.infoloop.tianting.service.client; |
| 2 | 2 | ||
| 3 | import com.infoloop.tianting.deliveryruleservice.ClientLabelTypeEnum; | 3 | import com.infoloop.tianting.deliveryruleservice.ClientLabelTypeEnum; |
| 4 | +import com.infoloop.tianting.deliveryruleservice.GetClientLabelsByIdsRpcRequest; | ||
| 5 | +import com.infoloop.tianting.deliveryruleservice.GetClientLabelsByIdsRpcResponse; | ||
| 4 | import com.infoloop.tianting.deliveryruleservice.QueryClientLabelsByConditionRpcRequest; | 6 | import com.infoloop.tianting.deliveryruleservice.QueryClientLabelsByConditionRpcRequest; |
| 5 | import com.infoloop.tianting.deliveryruleservice.QueryClientLabelsByConditionRpcResponse; | 7 | import com.infoloop.tianting.deliveryruleservice.QueryClientLabelsByConditionRpcResponse; |
| 6 | import com.infoloop.tianting.deliveryruleservice.TiantingDeliveryRuleServiceRpcGrpc; | 8 | import com.infoloop.tianting.deliveryruleservice.TiantingDeliveryRuleServiceRpcGrpc; |
| 7 | import com.infoloop.tianting.model.dto.ClientLabelDTO.QueryLabelsDto; | 9 | import com.infoloop.tianting.model.dto.ClientLabelDTO.QueryLabelsDto; |
| 10 | +import java.util.List; | ||
| 8 | import lombok.RequiredArgsConstructor; | 11 | import lombok.RequiredArgsConstructor; |
| 9 | import org.springframework.beans.factory.annotation.Autowired; | 12 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
| ... | @@ -26,4 +29,16 @@ public class DeliveryRuleServiceRpcClient { | ... | @@ -26,4 +29,16 @@ public class DeliveryRuleServiceRpcClient { |
| 26 | return deliveryRuleServiceRpcBlockingStub.queryClientLabelsByCondition(request); | 29 | return deliveryRuleServiceRpcBlockingStub.queryClientLabelsByCondition(request); |
| 27 | 30 | ||
| 28 | } | 31 | } |
| 32 | + | ||
| 33 | + public GetClientLabelsByIdsRpcResponse GetClientLabelsByIds(Integer enterpriseId, List<Integer> ids) { | ||
| 34 | + final var request = GetClientLabelsByIdsRpcRequest | ||
| 35 | + .newBuilder() | ||
| 36 | + .setEnterpriseId(enterpriseId) | ||
| 37 | + .setIncludeDeleted(false) | ||
| 38 | + .addAllIds(ids) | ||
| 39 | + .build(); | ||
| 40 | + return deliveryRuleServiceRpcBlockingStub.getClientLabelsByIds(request); | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + | ||
| 29 | } | 44 | } | ... | ... |
| ... | @@ -39,7 +39,6 @@ import io.swagger.models.auth.In; | ... | @@ -39,7 +39,6 @@ import io.swagger.models.auth.In; |
| 39 | import java.time.ZoneOffset; | 39 | import java.time.ZoneOffset; |
| 40 | import java.util.ArrayList; | 40 | import java.util.ArrayList; |
| 41 | import java.util.List; | 41 | import java.util.List; |
| 42 | -import java.util.stream.Collector; | ||
| 43 | import java.util.stream.Collectors; | 42 | import java.util.stream.Collectors; |
| 44 | import lombok.RequiredArgsConstructor; | 43 | import lombok.RequiredArgsConstructor; |
| 45 | import org.springframework.beans.factory.annotation.Autowired; | 44 | import org.springframework.beans.factory.annotation.Autowired; |
| ... | @@ -67,12 +66,26 @@ public class OrderServiceRpcClient { | ... | @@ -67,12 +66,26 @@ public class OrderServiceRpcClient { |
| 67 | 66 | ||
| 68 | public UpdateClientCustomerOrderRpcResponse updateClientCustomerOrder( | 67 | public UpdateClientCustomerOrderRpcResponse updateClientCustomerOrder( |
| 69 | UpdateOrderDto updateOrderDto) { | 68 | UpdateOrderDto updateOrderDto) { |
| 69 | + OrderStatusEnum status = OrderStatusEnum.UNKNOWN_STATUS; | ||
| 70 | + if (updateOrderDto.isShouldUpdateStatus()) { | ||
| 71 | + status = updateOrderDto.getStatus(); | ||
| 72 | + } | ||
| 73 | + String roomNo = ""; | ||
| 74 | + if (updateOrderDto.isShouldUpdateRoomNo()) { | ||
| 75 | + roomNo = updateOrderDto.getRoomNo(); | ||
| 76 | + } | ||
| 77 | + String tableCode = ""; | ||
| 78 | + if (updateOrderDto.isShouldUpdateTableCode()) { | ||
| 79 | + tableCode = updateOrderDto.getTableCode(); | ||
| 80 | + } | ||
| 70 | final var modification = ClientCustomerOrderModification.newBuilder() | 81 | final var modification = ClientCustomerOrderModification.newBuilder() |
| 71 | .setId(updateOrderDto.getId()) | 82 | .setId(updateOrderDto.getId()) |
| 72 | .setShouldUpdateStatus(updateOrderDto.isShouldUpdateStatus()) | 83 | .setShouldUpdateStatus(updateOrderDto.isShouldUpdateStatus()) |
| 73 | - .setStatus(updateOrderDto.getStatus()) | 84 | + .setStatus(status) |
| 74 | .setShouldUpdateTableCode(updateOrderDto.isShouldUpdateTableCode()) | 85 | .setShouldUpdateTableCode(updateOrderDto.isShouldUpdateTableCode()) |
| 75 | - .setTableCode(updateOrderDto.getTableCode()) | 86 | + .setTableCode(tableCode) |
| 87 | + .setShouldUpdateRoomNo(updateOrderDto.isShouldUpdateRoomNo()) | ||
| 88 | + .setRoomNo(roomNo) | ||
| 76 | .build(); | 89 | .build(); |
| 77 | final var request = UpdateClientCustomerOrderRpcRequest.newBuilder() | 90 | final var request = UpdateClientCustomerOrderRpcRequest.newBuilder() |
| 78 | .setEnterpriseId(updateOrderDto.getEnterpriseId()) | 91 | .setEnterpriseId(updateOrderDto.getEnterpriseId()) |
| ... | @@ -86,38 +99,74 @@ public class OrderServiceRpcClient { | ... | @@ -86,38 +99,74 @@ public class OrderServiceRpcClient { |
| 86 | 99 | ||
| 87 | public BatchUpdateClientCustomerOrderDetailsRpcResponse batchUpdateClientCustomerOrderDetails( | 100 | public BatchUpdateClientCustomerOrderDetailsRpcResponse batchUpdateClientCustomerOrderDetails( |
| 88 | OrderDetailBatchUpdateDto orderDetailBatchUpdateDto) { | 101 | OrderDetailBatchUpdateDto orderDetailBatchUpdateDto) { |
| 89 | - final var modifications = orderDetailBatchUpdateDto.getDetails().stream().map( d-> | 102 | + final var modifications = orderDetailBatchUpdateDto.getDetails().stream().map( d-> { |
| 90 | - ClientCustomerOrderDetailModification.newBuilder() | 103 | + MealDetail mealDetail; |
| 104 | + if(d.getShouldUpdateMealDetailJson()) { | ||
| 105 | + mealDetail = MealDetail.newBuilder() | ||
| 106 | + .setBasicMaterials(d.getMealDetailJson().getBasicMaterials()) | ||
| 107 | + .addAllTastes(d.getMealDetailJson().getTastes()) | ||
| 108 | + .addAllEfficacies(d.getMealDetailJson().getEfficacies()) | ||
| 109 | + .addAllDockers(d.getMealDetailJson().getDockers()) | ||
| 110 | + .setEnergy(d.getMealDetailJson().getEnergy()) | ||
| 111 | + .setFat(d.getMealDetailJson().getFat()) | ||
| 112 | + .setProtein(d.getMealDetailJson().getProtein()) | ||
| 113 | + .setCarbohydrate(d.getMealDetailJson().getCarbohydrate()) | ||
| 114 | + .addAllAllergies(d.getMealDetailJson().getAllergies()) | ||
| 115 | + .addAllAvoids(d.getMealDetailJson().getAvoids()) | ||
| 116 | + .addAllSkus(d.getMealDetailJson().getSkus()) | ||
| 117 | + .build(); | ||
| 118 | + } else { | ||
| 119 | + mealDetail = MealDetail.newBuilder().build(); | ||
| 120 | + } | ||
| 121 | + Integer menuDetailId = 0; | ||
| 122 | + if (d.getShouldUpdateMenuDetailId()) { | ||
| 123 | + menuDetailId = d.getMenuDetailId(); | ||
| 124 | + } | ||
| 125 | + Integer count = 0; | ||
| 126 | + if (d.getShouldUpdateCount()) { | ||
| 127 | + count = d.getCount(); | ||
| 128 | + } | ||
| 129 | + Integer mealId = 0; | ||
| 130 | + if (d.getShouldUpdateMealId()) { | ||
| 131 | + mealId = d.getMealId(); | ||
| 132 | + } | ||
| 133 | + Integer categoryId = 0; | ||
| 134 | + if (d.getShouldUpdateCategoryId()) { | ||
| 135 | + categoryId = d.getCategoryId(); | ||
| 136 | + } | ||
| 137 | + Integer skuId = 0; | ||
| 138 | + if (d.getShouldUpdateSkuId()) { | ||
| 139 | + skuId = d.getSkuId(); | ||
| 140 | + } | ||
| 141 | + String showName = ""; | ||
| 142 | + if (d.getShouldUpdateShowName()) { | ||
| 143 | + showName = d.getShowName(); | ||
| 144 | + } | ||
| 145 | + Boolean notServe = false; | ||
| 146 | + if (d.getShouldUpdateNotServe()) { | ||
| 147 | + notServe = true; | ||
| 148 | + } | ||
| 149 | + final var detail = ClientCustomerOrderDetailModification.newBuilder() | ||
| 91 | .setId(d.getId()) | 150 | .setId(d.getId()) |
| 92 | .setShouldUpdateMenuDetailId(d.getShouldUpdateMenuDetailId()) | 151 | .setShouldUpdateMenuDetailId(d.getShouldUpdateMenuDetailId()) |
| 93 | - .setMenuDetailId(d.getMenuDetailId()) | 152 | + .setMenuDetailId(menuDetailId) |
| 94 | .setShouldUpdateCount(d.getShouldUpdateCount()) | 153 | .setShouldUpdateCount(d.getShouldUpdateCount()) |
| 95 | - .setCount(d.getCount()) | 154 | + .setCount(count) |
| 96 | .setShouldUpdateMealId(d.getShouldUpdateMealId()) | 155 | .setShouldUpdateMealId(d.getShouldUpdateMealId()) |
| 97 | - .setMealId(d.getMealId()) | 156 | + .setMealId(mealId) |
| 98 | .setShouldUpdateCategoryId(d.getShouldUpdateCategoryId()) | 157 | .setShouldUpdateCategoryId(d.getShouldUpdateCategoryId()) |
| 99 | - .setCategoryId(d.getCategoryId()) | 158 | + .setCategoryId(categoryId) |
| 100 | .setShouldUpdateSkuId(d.getShouldUpdateSkuId()) | 159 | .setShouldUpdateSkuId(d.getShouldUpdateSkuId()) |
| 101 | - .setSkuId(d.getSkuId()) | 160 | + .setSkuId(skuId) |
| 102 | .setShouldUpdateShowName(d.getShouldUpdateShowName()) | 161 | .setShouldUpdateShowName(d.getShouldUpdateShowName()) |
| 103 | - .setShowName(d.getShowName()) | 162 | + .setShowName(showName) |
| 104 | .setShouldUpdateNotServe(d.getShouldUpdateNotServe()) | 163 | .setShouldUpdateNotServe(d.getShouldUpdateNotServe()) |
| 105 | - .setNotServe(d.getNotServe()) | 164 | + .setNotServe(notServe) |
| 106 | .setShouldUpdateMealDetailJson(d.getShouldUpdateMealDetailJson()) | 165 | .setShouldUpdateMealDetailJson(d.getShouldUpdateMealDetailJson()) |
| 107 | - .setMealDetailJson(MealDetail.newBuilder() | 166 | + .setMealDetailJson(mealDetail) |
| 108 | - .setBasicMaterials(d.getMealDetailJson().getBasicMaterials()) | 167 | + .build(); |
| 109 | - .addAllTastes(d.getMealDetailJson().getTastes()) | 168 | + return detail; |
| 110 | - .addAllEfficacies(d.getMealDetailJson().getEfficacies()) | 169 | + } |
| 111 | - .addAllDockers(d.getMealDetailJson().getDockers()) | ||
| 112 | - .setEnergy(d.getMealDetailJson().getEnergy()) | ||
| 113 | - .setFat(d.getMealDetailJson().getFat()) | ||
| 114 | - .setProtein(d.getMealDetailJson().getProtein()) | ||
| 115 | - .setCarbohydrate(d.getMealDetailJson().getCarbohydrate()) | ||
| 116 | - .addAllAllergies(d.getMealDetailJson().getAllergies()) | ||
| 117 | - .addAllAvoids(d.getMealDetailJson().getAvoids()) | ||
| 118 | - .addAllSkus(d.getMealDetailJson().getSkus()) | ||
| 119 | - .build()) | ||
| 120 | - .build() | ||
| 121 | ).collect(Collectors.toList()); | 170 | ).collect(Collectors.toList()); |
| 122 | final var request = BatchUpdateClientCustomerOrderDetailsRpcRequest.newBuilder() | 171 | final var request = BatchUpdateClientCustomerOrderDetailsRpcRequest.newBuilder() |
| 123 | .setEnterpriseId(orderDetailBatchUpdateDto.getEnterpriseId()) | 172 | .setEnterpriseId(orderDetailBatchUpdateDto.getEnterpriseId()) | ... | ... |
| 1 | package com.infoloop.tianting.service.impl; | 1 | package com.infoloop.tianting.service.impl; |
| 2 | 2 | ||
| 3 | +import com.infoloop.tianting.SingleResponse; | ||
| 4 | +import com.infoloop.tianting.SingleSpecialResponse; | ||
| 5 | +import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType; | ||
| 6 | +import com.infoloop.tianting.clientcustomerorderservice.OrderSourceEnum; | ||
| 7 | +import com.infoloop.tianting.clientcustomerorderservice.OrderTypeEnum; | ||
| 3 | import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse; | 8 | import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse; |
| 9 | +import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerLabelRefRpcResponse; | ||
| 4 | import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse; | 10 | import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse; |
| 11 | +import com.infoloop.tianting.context.LoginContextHolder; | ||
| 12 | +import com.infoloop.tianting.deliveryruleservice.ClientLabelTypeEnum; | ||
| 13 | +import com.infoloop.tianting.deliveryruleservice.SingleClientLabelRpcResponse; | ||
| 14 | +import com.infoloop.tianting.menuservice.CloseTimeTypeEnum; | ||
| 15 | +import com.infoloop.tianting.menuservice.ModeOfPaymentEnum; | ||
| 16 | +import com.infoloop.tianting.menuservice.SingleMenuDetailRpcResponse; | ||
| 5 | import com.infoloop.tianting.model.common.PageResult; | 17 | import com.infoloop.tianting.model.common.PageResult; |
| 6 | import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; | 18 | import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; |
| 19 | +import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDetailDto; | ||
| 7 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; | 20 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; |
| 8 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; | 21 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; |
| 9 | import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerDetailDto; | 22 | import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerDetailDto; |
| 10 | import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice; | 23 | import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice; |
| 11 | import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto; | 24 | import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto; |
| 25 | +import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDto; | ||
| 12 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto; | 26 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto; |
| 13 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailBatchUpdateDto; | 27 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailBatchUpdateDto; |
| 14 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto; | 28 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto; |
| ... | @@ -20,9 +34,14 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderResponse; | ... | @@ -20,9 +34,14 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderResponse; |
| 20 | import com.infoloop.tianting.service.ClientCustomerService; | 34 | import com.infoloop.tianting.service.ClientCustomerService; |
| 21 | import com.infoloop.tianting.service.OrderService; | 35 | import com.infoloop.tianting.service.OrderService; |
| 22 | import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient; | 36 | import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient; |
| 37 | +import com.infoloop.tianting.service.client.DeliveryRuleServiceRpcClient; | ||
| 38 | +import com.infoloop.tianting.service.client.MenuServiceRpcClient; | ||
| 39 | +import com.infoloop.tianting.service.client.OperatorServiceRpcClient; | ||
| 23 | import com.infoloop.tianting.service.client.OrderServiceRpcClient; | 40 | import com.infoloop.tianting.service.client.OrderServiceRpcClient; |
| 41 | +import com.infoloop.tianting.service.client.SkuServiceRpcClient; | ||
| 24 | import com.infoloop.tianting.utils.DateUtil; | 42 | import com.infoloop.tianting.utils.DateUtil; |
| 25 | import com.infoloop.tianting.utils.PageUtil; | 43 | import com.infoloop.tianting.utils.PageUtil; |
| 44 | +import java.util.ArrayList; | ||
| 26 | import java.util.List; | 45 | import java.util.List; |
| 27 | import java.util.Optional; | 46 | import java.util.Optional; |
| 28 | import java.util.stream.Collectors; | 47 | import java.util.stream.Collectors; |
| ... | @@ -37,6 +56,10 @@ import org.springframework.stereotype.Service; | ... | @@ -37,6 +56,10 @@ import org.springframework.stereotype.Service; |
| 37 | public class OrderServiceImpl implements OrderService { | 56 | public class OrderServiceImpl implements OrderService { |
| 38 | private final OrderServiceRpcClient orderServiceRpcClient; | 57 | private final OrderServiceRpcClient orderServiceRpcClient; |
| 39 | private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient; | 58 | private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient; |
| 59 | + private final OperatorServiceRpcClient operatorServiceRpcClient; | ||
| 60 | + private final MenuServiceRpcClient menuServiceRpcClient; | ||
| 61 | + private final SkuServiceRpcClient skuServiceRpcClient; | ||
| 62 | + private final DeliveryRuleServiceRpcClient deliveryRuleServiceRpcClient; | ||
| 40 | 63 | ||
| 41 | @Override | 64 | @Override |
| 42 | public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) { | 65 | public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) { |
| ... | @@ -44,6 +67,120 @@ public class OrderServiceImpl implements OrderService { | ... | @@ -44,6 +67,120 @@ public class OrderServiceImpl implements OrderService { |
| 44 | } | 67 | } |
| 45 | 68 | ||
| 46 | @Override | 69 | @Override |
| 70 | + public CreateOrderResponse orderCreation(OperatorCreateOrderDto operatorCreateOrderDto) { | ||
| 71 | + final var operatorLoginInfo = LoginContextHolder.getLoginInfo(); | ||
| 72 | + final var operator = operatorServiceRpcClient.getCOperatorById(operatorLoginInfo.getId()); | ||
| 73 | + final var customer = clientCustomerServiceRpcClient.getClientCustomerById(operatorCreateOrderDto.getCustomerId()).getResponse(); | ||
| 74 | + final var record = clientCustomerServiceRpcClient.getClientCustomerHospitalRecordsByCustomerId(customer.getEnterpriseId(), customer.getId()).getResponse(); | ||
| 75 | + CreateOrderDto createOrderDto = new CreateOrderDto(); | ||
| 76 | + createOrderDto.setCustomerId(operatorCreateOrderDto.getCustomerId()); | ||
| 77 | + createOrderDto.setStallId(operatorCreateOrderDto.getStallId()); | ||
| 78 | + createOrderDto.setMenuId(operatorCreateOrderDto.getMenuId()); | ||
| 79 | + createOrderDto.setMealTime(operatorCreateOrderDto.getMealTime()); | ||
| 80 | + createOrderDto.setRemark(operatorCreateOrderDto.getRemark()); | ||
| 81 | + createOrderDto.setCreatedBy(operatorLoginInfo.getId()); | ||
| 82 | + createOrderDto.setClientId(customer.getClientId()); | ||
| 83 | + createOrderDto.setAddress(record.getDepartmentName() + record.getRoomNo()); | ||
| 84 | + final var menu = menuServiceRpcClient.getMenuById(operator.getEnterpriseId(), | ||
| 85 | + createOrderDto.getMenuId()).getResponse(); | ||
| 86 | + createOrderDto.setCloseTimeType( | ||
| 87 | + CloseTimeType.forNumber(menu.getOrderRuleJson().getCloseTimeType().getNumber())); | ||
| 88 | + createOrderDto.setRoomNo(record.getRoomNo()); | ||
| 89 | + createOrderDto.setClientId(customer.getClientId()); | ||
| 90 | + createOrderDto.setCreationSource(OrderSourceEnum.STALL.getNumber()); | ||
| 91 | + createOrderDto.setEnterpriseId(operatorLoginInfo.getEnterpriseId()); | ||
| 92 | +// createOrderDto.setStallId(); | ||
| 93 | + var onlinePay = false; | ||
| 94 | + if(menu.getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) { | ||
| 95 | + onlinePay = true; | ||
| 96 | + } | ||
| 97 | + createOrderDto.setOnlinePay(onlinePay); | ||
| 98 | + OrderTypeEnum orderType; | ||
| 99 | + if (menu.getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.RESERVATION) { | ||
| 100 | + orderType = OrderTypeEnum.DELIVERY; | ||
| 101 | + } else { | ||
| 102 | + orderType = OrderTypeEnum.DINE_IN; | ||
| 103 | + } | ||
| 104 | + createOrderDto.setOrderType(orderType.getNumber()); | ||
| 105 | + createOrderDto.setShouldCreateCustomerId(true); | ||
| 106 | + createOrderDto.setShouldCreateOpenId(false); | ||
| 107 | + | ||
| 108 | + final var labelRefs = clientCustomerServiceRpcClient.getCustomerLabelsByCustomerId(customer.getEnterpriseId(), customer.getId()).getResponsesList(); | ||
| 109 | + final var labelIds = labelRefs.stream().map(SingleClientCustomerLabelRefRpcResponse::getLabelId).collect(Collectors.toList()); | ||
| 110 | + final var labels = deliveryRuleServiceRpcClient.GetClientLabelsByIds(customer.getEnterpriseId(), labelIds).getResponsesList(); | ||
| 111 | + final var avoids = labels.stream().filter(l -> l.getType() == ClientLabelTypeEnum.CLIENT_LABEL_TYPE_AVOID).map( | ||
| 112 | + SingleClientLabelRpcResponse::getName).collect(Collectors.toList()); | ||
| 113 | + final var doctors = labels.stream().filter(l -> l.getType() == ClientLabelTypeEnum.CLIENT_LABEL_TYPE_DOCTOR).map( | ||
| 114 | + SingleClientLabelRpcResponse::getName).collect(Collectors.toList()); | ||
| 115 | + final var customerNotice = CustomerNotice.builder() | ||
| 116 | + .avoids(avoids) | ||
| 117 | + .doctors(doctors) | ||
| 118 | + .build(); | ||
| 119 | + createOrderDto.setCustomerNoticeJson(customerNotice); | ||
| 120 | + | ||
| 121 | + createOrderDto.setTableCode(""); | ||
| 122 | + createOrderDto.setUpdatedBy(operatorLoginInfo.getId()); | ||
| 123 | + createOrderDto.setUpdateSource(OrderSourceEnum.STALL.getNumber()); | ||
| 124 | + List<CreateOrderDetailDto> orderDetailDtoList = new ArrayList<>(); | ||
| 125 | + final var menuDetails = menuServiceRpcClient.queryMenuDetailsByMenuId(menu.getEnterpriseId(), operatorCreateOrderDto.getMenuId()).getResponsesList(); | ||
| 126 | + final var skuIds = | ||
| 127 | + menuDetails.stream() | ||
| 128 | + .map(SingleMenuDetailRpcResponse::getSkuId) | ||
| 129 | + .collect(Collectors.toList()); | ||
| 130 | + final var rpcSkus = skuServiceRpcClient.getDishSkusByIds(skuIds).getResponseList(); | ||
| 131 | + Integer totalSkuCount = 0; | ||
| 132 | + for (CreateOrderDetailDto orderDetail: createOrderDto.getOrderDetailDtos()) { | ||
| 133 | + totalSkuCount += orderDetail.getCount(); | ||
| 134 | + final var optionalTargetMenuDetail = menuDetails.stream().filter(detail -> detail.getId() == orderDetail.getMenuDetailId()).findFirst(); | ||
| 135 | + if(optionalTargetMenuDetail.isEmpty()) { | ||
| 136 | + continue; | ||
| 137 | + } | ||
| 138 | + final var optionalSku = rpcSkus.stream().filter(sku -> sku.getId() == optionalTargetMenuDetail.get().getSkuId()).findFirst(); | ||
| 139 | + if (optionalSku.isEmpty()) { | ||
| 140 | + continue; | ||
| 141 | + } | ||
| 142 | + final var skus = optionalSku.get().getSkusList().stream().map(SingleResponse::getName).collect(Collectors.toList()); | ||
| 143 | + final var skuAvoids = optionalSku.get().getAvoidsList().stream().map(SingleResponse::getName).collect(Collectors.toList()); | ||
| 144 | + final var tastes = optionalSku.get().getTastesList().stream().map(SingleResponse::getName).collect(Collectors.toList()); | ||
| 145 | + final var efficacies = optionalSku.get().getEfficaciesList().stream().map(SingleResponse::getName).collect(Collectors.toList()); | ||
| 146 | + final var allergies = optionalSku.get().getAllergiesList().stream().map( | ||
| 147 | + SingleSpecialResponse::getName).collect(Collectors.toList()); | ||
| 148 | + final var skuDoctors = optionalSku.get().getDoctorsList().stream().map(SingleSpecialResponse::getName).collect(Collectors.toList()); | ||
| 149 | + final var mealDetail = MealDetailDto | ||
| 150 | + .builder() | ||
| 151 | + .skus(skus) | ||
| 152 | + .basicMaterials(optionalSku.get().getBasicMaterials()) | ||
| 153 | + .energy(optionalSku.get().getEnergy()) | ||
| 154 | + .protein(optionalSku.get().getProtein()) | ||
| 155 | + .avoids(skuAvoids) | ||
| 156 | + .carbohydrate(optionalSku.get().getCarbohydrate()) | ||
| 157 | + .fat(optionalSku.get().getFat()) | ||
| 158 | + .tastes(tastes) | ||
| 159 | + .efficacies(efficacies) | ||
| 160 | + .allergies(allergies) | ||
| 161 | + .dockers(skuDoctors) | ||
| 162 | + .build(); | ||
| 163 | + final var createOrderDetail = CreateOrderDetailDto | ||
| 164 | + .builder() | ||
| 165 | + .count(orderDetail.getCount()) | ||
| 166 | + .notServe(false) | ||
| 167 | + .menuDetailId(orderDetail.getMenuDetailId()) | ||
| 168 | + .categoryId(optionalTargetMenuDetail.get().getCategoryId()) | ||
| 169 | + .mealId(optionalTargetMenuDetail.get().getMealId()) | ||
| 170 | + .price(optionalTargetMenuDetail.get().getPrice()) | ||
| 171 | + .showName(optionalTargetMenuDetail.get().getShowName()) | ||
| 172 | + .skuId(optionalTargetMenuDetail.get().getSkuId()) | ||
| 173 | + .mealDetailJson(mealDetail) | ||
| 174 | + .build(); | ||
| 175 | + orderDetailDtoList.add(createOrderDetail); | ||
| 176 | + } | ||
| 177 | + createOrderDto.setOrderDetailDtos(orderDetailDtoList); | ||
| 178 | + createOrderDto.setTotalNum(totalSkuCount); | ||
| 179 | + // createOrderDto.setPayPrice(); | ||
| 180 | + return orderServiceRpcClient.createOrder(createOrderDto); | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + @Override | ||
| 47 | public UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto) { | 184 | public UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto) { |
| 48 | final var response = orderServiceRpcClient.updateClientCustomerOrder(updateOrderDto); | 185 | final var response = orderServiceRpcClient.updateClientCustomerOrder(updateOrderDto); |
| 49 | return UpdateOrderResponse.builder() | 186 | return UpdateOrderResponse.builder() | ... | ... |
-
Please register or login to post a comment