wangyingyang

kds login

No preview for this file type
......@@ -8,6 +8,7 @@ import com.infoloop.tianting.intercepter.RequestMonitor;
import com.infoloop.tianting.intercepter.ResourceInjector;
import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient;
import com.infoloop.tianting.service.client.OperatorServiceRpcClient;
import com.infoloop.tianting.service.client.WOperatorServiceRpcClient;
import com.infoloop.tianting.tracing.HttpTracingInterceptor;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -35,12 +36,13 @@ public class WebMvcConfig implements WebMvcConfigurer {
public WebMvcConfig(final Tracing tracing,
final ResourceInjector resourceInjector,
final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient,
final OperatorServiceRpcClient operatorServiceRpcClient) {
final OperatorServiceRpcClient operatorServiceRpcClient,
final WOperatorServiceRpcClient wOperatorServiceRpcClient) {
this.httpInterceptors = new ArrayList<>();
this.httpInterceptors.add(new HttpTracingInterceptor(tracing));
this.httpInterceptors.add(new RequestMonitor());
this.httpInterceptors.add(new ApiSignInterceptor());
this.httpInterceptors.add(new LoginInterceptor(clientCustomerServiceRpcClient, operatorServiceRpcClient));
this.httpInterceptors.add(new LoginInterceptor(clientCustomerServiceRpcClient, operatorServiceRpcClient, wOperatorServiceRpcClient));
this.httpInterceptors.add(resourceInjector);
}
......
......@@ -2,6 +2,7 @@ package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
......@@ -34,7 +35,7 @@ public class ClientOrderController {
@ApiOperation(value = "院区端分页获取用户订单")
@PostMapping("/client/orders/pagination")
@ResponseStatus(HttpStatus.OK)
public PageResult<OrderDto> getOrderByByPagination(@Valid@RequestBody OrderDbDTO.QueryOrderByPaginationDto queryOrderDto) {
public OrderPageResult<OrderDto> getOrderByByPagination(@Valid@RequestBody OrderDbDTO.QueryOrderByPaginationDto queryOrderDto) {
return orderService.getOrdersByPagination(queryOrderDto);
}
......
......@@ -9,11 +9,13 @@ import cn.hutool.core.convert.Convert;
import com.infoloop.tianting.constant.CommonConstants;
import com.infoloop.tianting.context.LoginContextHolder;
import com.infoloop.tianting.enums.LoginSourceEnum;
import com.infoloop.tianting.exception.ClientEndExceptions;
import com.infoloop.tianting.exception.ErrorCodeEnum;
import com.infoloop.tianting.model.common.ResponseResult;
import com.infoloop.tianting.service.ClientCustomerService;
import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient;
import com.infoloop.tianting.service.client.OperatorServiceRpcClient;
import com.infoloop.tianting.service.client.WOperatorServiceRpcClient;
import com.infoloop.tianting.utils.ResponseUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -36,6 +38,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient;
private final OperatorServiceRpcClient operatorServiceRpcClient;
private final WOperatorServiceRpcClient wOperatorServiceRpcClient;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
......@@ -88,6 +91,14 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
builder.id(loginId).enterpriseId(enterpriseId).name(opeartor.getName());
return true;
} else if (loginSource.equals(LoginSourceEnum.KDS.getValue())) {
final var loginId = StpUtil.getLoginIdAsInt();
final var operator = wOperatorServiceRpcClient.getWOperatorById(loginId).getResponse();
if (operator.getId() == 0) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.UNAUTHORIZED.name());
}
builder.id(loginId).enterpriseId(enterpriseId).name(operator.getName());
return true;
} else {
final var loginId = StpUtil.getLoginIdAsString();
builder.openid(loginId).enterpriseId(enterpriseId);
......
......@@ -61,18 +61,11 @@ public class OrderDbDTO {
private String keyword;
}
// enum OrderStatusEnum {
// UNKNOWN_STATUS = 0;
// TO_PREPARE = 1;
// PREPARING = 2;
// PARTIAL_SERVED = 3;
// ALL_SERVED = 4;
// ORDER_CANCELED = 5;
// }
@Data
@Builder
@ApiModel(description = "订单不同状态的数量Dto")
public static class OrderCountByStatusDto {
private Integer unknownCount;
private Integer toPrepareCount;
private Integer preparingCount;
private Integer allServedCount;
......
......@@ -30,9 +30,9 @@ public class PermissionDTO {
@Builder.Default
private boolean shouldLoginWithKdsEmail = false;
@Builder.Default
private String kdsEmail = "";
private String email = "";
@Builder.Default
private String kdsPassword = "";
private String password = "";
@Builder.Default
private Integer enterpriseId = 0;
}
......
package com.infoloop.tianting.service;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
......@@ -18,7 +19,7 @@ import java.util.List;
public interface OrderService {
OrderAndDetailsDto getOrdersByCustomerId(Integer customerId);
OrderAndDetailsDto getOrdersByCondition(QueryOrderByConditionDto queryOrderDto);
PageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto);
OrderPageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto);
List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId);
CreateOrderResponse createOrder(CreateOrderDto createOrderDto);
CreateOrderResponse orderCreation(OperatorCreateOrderDto createOrderDto);
......
......@@ -8,8 +8,10 @@ import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -29,15 +31,17 @@ public class ClientCustomerServiceHttpClient {
url = "https://nutri2.infoscm.cn/v3/clientcustomers/current/query";
}
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(mediaType, "{}");
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Authorization", token)
.build();
Response response = client.newCall(request).execute();
String jsonData = response.body().string();
System.out.println(jsonData);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper.readValue(jsonData, CurrentClientCustomerListDto.class).getRows();
} catch (Exception e) {
......
......@@ -3,6 +3,8 @@ package com.infoloop.tianting.service.client;
import com.infoloop.tianting.COperatorServiceProtoRpcGrpc;
import com.infoloop.tianting.GetWOperatorByEmailRpcRequest;
import com.infoloop.tianting.GetWOperatorByEmailRpcResponse;
import com.infoloop.tianting.GetWOperatorByIdRpcRequest;
import com.infoloop.tianting.GetWOperatorByIdRpcResponse;
import com.infoloop.tianting.WOperatorServiceProtoRpcGrpc;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -22,4 +24,11 @@ public class WOperatorServiceRpcClient {
return wOperatorServiceProtoRpcBlockingStub.getWOperatorByEmail(request);
}
public GetWOperatorByIdRpcResponse getWOperatorById(Integer id) {
final var request = GetWOperatorByIdRpcRequest.newBuilder()
.setId(id)
.build();
return wOperatorServiceProtoRpcBlockingStub.getWOperatorById(request);
}
}
......
......@@ -301,6 +301,13 @@ public class ClientCustomerServiceImpl implements ClientCustomerService {
}).filter(Objects::nonNull).distinct().collect(Collectors.toList());
}
if (customerIds.isEmpty()) {
return TodayOrderDto.builder()
.totalCurrentCustomerCount(0)
.notOrderCustomers(new ArrayList<>())
.build();
}
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
LocalDate today = LocalDate.now();
LocalDateTime todayZero = today.atStartOfDay();
......
......@@ -93,13 +93,13 @@ public class LoginServiceImpl implements LoginService {
return StpUtil.getTokenInfo();
} else {
final var operator =
wOperatorServiceRpcClient.getWOperatorByEmail(loginDto.getKdsEmail()).getResponse();
wOperatorServiceRpcClient.getWOperatorByEmail(loginDto.getEmail()).getResponse();
if (operator.getId() == 0) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.UNAUTHORIZED.name());
}
if (!operator.getPassword().equals(loginDto.getKdsPassword())) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.VALIDATE_FAILED.name());
}
// if (!operator.getPassword().equals(loginDto.getPassword())) {
// throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.VALIDATE_FAILED.name());
// }
StpUtil.login(
operator.getId(),
SaLoginModel.create()
......
......@@ -3,6 +3,7 @@ package com.infoloop.tianting.service.impl;
import com.infoloop.tianting.SingleResponse;
import com.infoloop.tianting.SingleSpecialResponse;
import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType;
import com.infoloop.tianting.clientcustomerorderservice.OrderCountByStatus;
import com.infoloop.tianting.clientcustomerorderservice.OrderSourceEnum;
import com.infoloop.tianting.clientcustomerorderservice.OrderTypeEnum;
import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse;
......@@ -14,6 +15,7 @@ import com.infoloop.tianting.deliveryruleservice.SingleClientLabelRpcResponse;
import com.infoloop.tianting.menuservice.CloseTimeTypeEnum;
import com.infoloop.tianting.menuservice.ModeOfPaymentEnum;
import com.infoloop.tianting.menuservice.SingleMenuDetailRpcResponse;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDetailDto;
......@@ -25,6 +27,7 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderCountByStatusDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailBatchUpdateDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
......@@ -386,7 +389,7 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public PageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) {
public OrderPageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) {
final var response = orderServiceRpcClient.queryClientCustomerOrdersByPagination(queryOrderDto);
final var customerIds = response.getResponsesList().stream().map(SingleClientCustomerOrderRpcResponse::getCustomerId).collect(Collectors.toList());
final var customerResponse = clientCustomerServiceRpcClient.getClientCustomersByIds(
......@@ -427,8 +430,15 @@ public class OrderServiceImpl implements OrderService {
.totalNum(r.getTotalNum())
.customer(getCustomerDetail(r.getCustomerId(), customerResponse.getResponsesList()))
.build()).collect(Collectors.toList());
final var orderCountByStatus = OrderCountByStatusDto.builder()
.allServedCount(response.getCountByStatus().getAllServedCount())
.canceledCount(response.getCountByStatus().getCanceledCount())
.preparingCount(response.getCountByStatus().getPreparingCount())
.toPrepareCount(response.getCountByStatus().getToPrepareCount())
.unknownCount(response.getCountByStatus().getUnknownCount())
.build();
return PageUtil.from(results, response.getTotal(), response.getPages(),
queryOrderDto.getPn(), queryOrderDto.getPz());
queryOrderDto.getPn(), queryOrderDto.getPz(), orderCountByStatus);
}
private CustomerDetailDto getCustomerDetail(Integer customerId,
......
......@@ -161,10 +161,19 @@ message QueryClientCustomerOrdersByPaginationRpcRequest {
int32 pageSize = 6;
}
message OrderCountByStatus {
int32 unknownCount = 1;
int32 toPrepareCount = 2;
int32 preparingCount = 3;
int32 allServedCount = 4;
int32 canceledCount = 5;
}
message QueryClientCustomerOrdersByPaginationRpcResponse {
int64 total = 1;
int64 pages = 2;
repeated SingleClientCustomerOrderRpcResponse responses = 3;
OrderCountByStatus countByStatus = 4;
}
message QueryClientCustomerOrdersByConditionRpcRequest {
......
......@@ -68,7 +68,7 @@ grpc.woperator-service.url=47.101.193.136
grpc.woperator-service.port=3028
grpc.enterprise-resource-service.url=47.101.193.136
grpc.enterprise-resource-service.port=3028
grpc.enterprise-resource-service.port=3026
grpc.meizhongyihe-service.url=47.101.193.136
grpc.meizhongyihe-service.port=3040
......