wangyingyang

update order

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()
......