wangyingyang

bug fix

package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.MenuDbDTO;
import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsResponseDto;
......@@ -19,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "微信小程序发送付款通知接口")
@Api(tags = "支付")
@ApiSupport(order = 0)
@Slf4j
@Validated
......@@ -28,13 +29,23 @@ import org.springframework.web.bind.annotation.RestController;
public class PayController {
private final PayServiceClient payServiceClient;
@SaIgnore
@ApiOperation(value = "支付通知")
@PostMapping("/pay/inform")
@ResponseStatus(HttpStatus.OK)
public PayResponseDto batchCreateMenuRefsByCustomerId(
public PayResponseDto pay(
@Valid @RequestBody PayDTO.PayInformRequestDto payInformRequestDto
){
return payServiceClient.payInform(payInformRequestDto);
}
@SaIgnore
@ApiOperation(value = "支付通知")
@PostMapping("/pay/inform/v2")
@ResponseStatus(HttpStatus.OK)
public void pay_v2(){
payServiceClient.WxCreateOrder();
}
}
......
......@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import javax.validation.Valid;
import jdk.jfr.StackTrace;
import lombok.Builder;
......@@ -260,7 +261,7 @@ public class OrderDbDTO {
private String openId;
@ApiModelProperty(value = "状态订单;待备餐=1,备餐中=2,部分出餐=3,已出餐=4,已取消=5")
private Integer status;
private OrderStatusEnum status;
@ApiModelProperty(value = "餐单 id")
private Integer menuId;
......@@ -337,10 +338,24 @@ public class OrderDbDTO {
@ApiModelProperty(value = "截单类型")
private Integer closeTimeType;
@ApiModelProperty(value = "订单所属用户的信息")
private CustomerDetailDto customer;
// @ApiModelProperty(value = "订单菜品详情列表")
// private List<OrderDetailDto> orderDetailDtos;
}
@Data
@Builder
@ToString
@ApiModel(description = "订单所属用户的信息")
public static class CustomerDetailDto {
@ApiModelProperty(value = "id")
private Integer id;
private String name;
private String phone;
}
@Data
@Builder
......
......@@ -81,5 +81,4 @@ public class PayDTO {
private String TradeDesc;
private String Sign;
}
}
......
......@@ -15,6 +15,8 @@ import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcR
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordsByCustomerIdRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordsByCustomerIdRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcResponse;
import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcRequest;
import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcResponse;
import com.infoloop.tianting.model.dto.ClientLabelDTO.BatchCreateCustomerLabelRefDto;
......@@ -47,6 +49,14 @@ public class ClientCustomerServiceRpcClient {
return clientCustomerServiceRpcBlockingStub.getClientCustomerById(request);
}
public GetClientCustomersByIdsRpcResponse getClientCustomersByIds(
Integer enterpriseId, List<Integer> ids) {
final var request = GetClientCustomersByIdsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId).addAllIds(ids)
.build();
return clientCustomerServiceRpcBlockingStub.getClientCustomersByIds(request);
}
public GetClientCustomerByMobileRpcResponse getClientCustomerByMobile(String phone) {
final var request = GetClientCustomerByMobileRpcRequest.newBuilder()
.setMobile(phone)
......
......@@ -8,6 +8,7 @@ import com.infoloop.tianting.model.dto.PayDTO.ThirdPartyPayInformRequestDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto;
import com.infoloop.tianting.utils.DateUtil;
import com.infoloop.tianting.utils.EncryptionUtil;
import java.io.IOException;
import java.time.LocalDateTime;
import lombok.RequiredArgsConstructor;
import okhttp3.FormBody;
......@@ -55,6 +56,10 @@ public class PayServiceClient {
.post(body)
.build();
Response payResponse = client.newCall(getPhoneRequest).execute();
if(payResponse.code() != 200) {
System.out.println(payResponse.message());
throw new IllegalArgumentException("支付通知失败");
}
String payJsonData = payResponse.body().string();
System.out.println("pay json:"+payJsonData);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
......
......@@ -54,8 +54,6 @@ public class WxMiniProgramClient {
.build();
Response getPhoneResponse = client.newCall(getPhoneRequest).execute();
String phoneJsonData = getPhoneResponse.body().string();
System.out.println("------------------------");
System.out.println("phone json:" + phoneJsonData);
WxUserPhoneResponseDto wxUserPhoneResponseDto = objectMapper.readValue(phoneJsonData, WxUserPhoneResponseDto.class);
return wxUserPhoneResponseDto;
......
package com.infoloop.tianting.service.impl;
import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse;
import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice;
import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto;
......@@ -10,11 +13,14 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto;
import com.infoloop.tianting.service.ClientCustomerService;
import com.infoloop.tianting.service.OrderService;
import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient;
import com.infoloop.tianting.service.client.OrderServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import com.infoloop.tianting.utils.PageUtil;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -26,6 +32,7 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderServiceImpl implements OrderService {
private final OrderServiceRpcClient orderServiceRpcClient;
private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient;
@Override
public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) {
......@@ -87,7 +94,7 @@ public class OrderServiceImpl implements OrderService {
.pickupCode(r.getPickupCode())
.tableCode(r.getTableCode())
.roomNo(r.getRoomNo())
.status(r.getStatus().getNumber())
.status(r.getStatus())
.customerNoticeJson(CustomerNotice.builder()
.avoids(r.getCustomerNoticeJson().getAvoidsList())
.doctors(r.getCustomerNoticeJson().getDoctorsList()).build())
......@@ -160,7 +167,7 @@ public class OrderServiceImpl implements OrderService {
.pickupCode(r.getPickupCode())
.tableCode(r.getTableCode())
.roomNo(r.getRoomNo())
.status(r.getStatus().getNumber())
.status(r.getStatus())
.customerNoticeJson(CustomerNotice.builder()
.avoids(r.getCustomerNoticeJson().getAvoidsList())
.doctors(r.getCustomerNoticeJson().getDoctorsList()).build())
......@@ -220,6 +227,9 @@ public class OrderServiceImpl implements OrderService {
@Override
public PageResult<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(
queryOrderDto.getEnterpriseId(), customerIds);
final var results = response.getResponsesList().stream().map(r -> OrderDto.builder()
.id(r.getId())
.enterpriseId(r.getEnterpriseId())
......@@ -233,7 +243,7 @@ public class OrderServiceImpl implements OrderService {
.pickupCode(r.getPickupCode())
.tableCode(r.getTableCode())
.roomNo(r.getRoomNo())
.status(r.getStatus().getNumber())
.status(r.getStatus())
.customerNoticeJson(CustomerNotice.builder()
.avoids(r.getCustomerNoticeJson().getAvoidsList())
.doctors(r.getCustomerNoticeJson().getDoctorsList()).build())
......@@ -254,8 +264,26 @@ public class OrderServiceImpl implements OrderService {
.updatedBy(r.getUpdatedBy())
.closeTimeType(r.getCloseTimeTypeValue())
.totalNum(r.getTotalNum())
.customer(getCustomerDetail(r.getCustomerId(), customerResponse.getResponsesList()))
.build()).collect(Collectors.toList());
return PageUtil.from(results, response.getTotal(), response.getPages(),
queryOrderDto.getPn(), queryOrderDto.getPz());
}
private CustomerDetailDto getCustomerDetail(Integer customerId,
List<SingleClientCustomerRpcResponse> customers) {
final var filterCustomers = customers.stream().filter(c -> c.getId() == customerId)
.collect(Collectors.toList());
if (filterCustomers.isEmpty()) {
return CustomerDetailDto.builder().build();
} else {
final var resCustomer = filterCustomers.get(0);
return CustomerDetailDto.builder()
.id(resCustomer.getId())
.name(resCustomer.getName())
.phone(resCustomer.getMobile())
.build();
}
}
}
......