Showing
7 changed files
with
75 additions
and
9 deletions
| 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.MenuDbDTO; | 5 | import com.infoloop.tianting.model.dto.MenuDbDTO; |
| 5 | import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsResponseDto; | 6 | import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsResponseDto; |
| ... | @@ -19,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestBody; | ... | @@ -19,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestBody; |
| 19 | import org.springframework.web.bind.annotation.ResponseStatus; | 20 | import org.springframework.web.bind.annotation.ResponseStatus; |
| 20 | import org.springframework.web.bind.annotation.RestController; | 21 | import org.springframework.web.bind.annotation.RestController; |
| 21 | 22 | ||
| 22 | -@Api(tags = "微信小程序发送付款通知接口") | 23 | +@Api(tags = "支付") |
| 23 | @ApiSupport(order = 0) | 24 | @ApiSupport(order = 0) |
| 24 | @Slf4j | 25 | @Slf4j |
| 25 | @Validated | 26 | @Validated |
| ... | @@ -28,13 +29,23 @@ import org.springframework.web.bind.annotation.RestController; | ... | @@ -28,13 +29,23 @@ import org.springframework.web.bind.annotation.RestController; |
| 28 | public class PayController { | 29 | public class PayController { |
| 29 | private final PayServiceClient payServiceClient; | 30 | private final PayServiceClient payServiceClient; |
| 30 | 31 | ||
| 32 | + @SaIgnore | ||
| 31 | @ApiOperation(value = "支付通知") | 33 | @ApiOperation(value = "支付通知") |
| 32 | @PostMapping("/pay/inform") | 34 | @PostMapping("/pay/inform") |
| 33 | @ResponseStatus(HttpStatus.OK) | 35 | @ResponseStatus(HttpStatus.OK) |
| 34 | - public PayResponseDto batchCreateMenuRefsByCustomerId( | 36 | + public PayResponseDto pay( |
| 35 | @Valid @RequestBody PayDTO.PayInformRequestDto payInformRequestDto | 37 | @Valid @RequestBody PayDTO.PayInformRequestDto payInformRequestDto |
| 36 | ){ | 38 | ){ |
| 37 | return payServiceClient.payInform(payInformRequestDto); | 39 | return payServiceClient.payInform(payInformRequestDto); |
| 38 | } | 40 | } |
| 39 | 41 | ||
| 42 | + | ||
| 43 | + @SaIgnore | ||
| 44 | + @ApiOperation(value = "支付通知") | ||
| 45 | + @PostMapping("/pay/inform/v2") | ||
| 46 | + @ResponseStatus(HttpStatus.OK) | ||
| 47 | + public void pay_v2(){ | ||
| 48 | + payServiceClient.WxCreateOrder(); | ||
| 49 | + } | ||
| 50 | + | ||
| 40 | } | 51 | } | ... | ... |
| ... | @@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty; | ... | @@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty; |
| 9 | import io.swagger.models.auth.In; | 9 | import io.swagger.models.auth.In; |
| 10 | import java.time.LocalDateTime; | 10 | import java.time.LocalDateTime; |
| 11 | import java.util.List; | 11 | import java.util.List; |
| 12 | +import java.util.Optional; | ||
| 12 | import javax.validation.Valid; | 13 | import javax.validation.Valid; |
| 13 | import jdk.jfr.StackTrace; | 14 | import jdk.jfr.StackTrace; |
| 14 | import lombok.Builder; | 15 | import lombok.Builder; |
| ... | @@ -260,7 +261,7 @@ public class OrderDbDTO { | ... | @@ -260,7 +261,7 @@ public class OrderDbDTO { |
| 260 | private String openId; | 261 | private String openId; |
| 261 | 262 | ||
| 262 | @ApiModelProperty(value = "状态订单;待备餐=1,备餐中=2,部分出餐=3,已出餐=4,已取消=5") | 263 | @ApiModelProperty(value = "状态订单;待备餐=1,备餐中=2,部分出餐=3,已出餐=4,已取消=5") |
| 263 | - private Integer status; | 264 | + private OrderStatusEnum status; |
| 264 | 265 | ||
| 265 | @ApiModelProperty(value = "餐单 id") | 266 | @ApiModelProperty(value = "餐单 id") |
| 266 | private Integer menuId; | 267 | private Integer menuId; |
| ... | @@ -337,10 +338,24 @@ public class OrderDbDTO { | ... | @@ -337,10 +338,24 @@ public class OrderDbDTO { |
| 337 | @ApiModelProperty(value = "截单类型") | 338 | @ApiModelProperty(value = "截单类型") |
| 338 | private Integer closeTimeType; | 339 | private Integer closeTimeType; |
| 339 | 340 | ||
| 341 | + @ApiModelProperty(value = "订单所属用户的信息") | ||
| 342 | + private CustomerDetailDto customer; | ||
| 343 | + | ||
| 340 | // @ApiModelProperty(value = "订单菜品详情列表") | 344 | // @ApiModelProperty(value = "订单菜品详情列表") |
| 341 | // private List<OrderDetailDto> orderDetailDtos; | 345 | // private List<OrderDetailDto> orderDetailDtos; |
| 342 | } | 346 | } |
| 343 | 347 | ||
| 348 | + @Data | ||
| 349 | + @Builder | ||
| 350 | + @ToString | ||
| 351 | + @ApiModel(description = "订单所属用户的信息") | ||
| 352 | + public static class CustomerDetailDto { | ||
| 353 | + @ApiModelProperty(value = "id") | ||
| 354 | + private Integer id; | ||
| 355 | + private String name; | ||
| 356 | + private String phone; | ||
| 357 | + } | ||
| 358 | + | ||
| 344 | 359 | ||
| 345 | @Data | 360 | @Data |
| 346 | @Builder | 361 | @Builder | ... | ... |
| ... | @@ -15,6 +15,8 @@ import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcR | ... | @@ -15,6 +15,8 @@ import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcR |
| 15 | import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcResponse; | 15 | import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcResponse; |
| 16 | import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordsByCustomerIdRpcRequest; | 16 | import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordsByCustomerIdRpcRequest; |
| 17 | import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordsByCustomerIdRpcResponse; | 17 | import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordsByCustomerIdRpcResponse; |
| 18 | +import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcRequest; | ||
| 19 | +import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcResponse; | ||
| 18 | import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcRequest; | 20 | import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcRequest; |
| 19 | import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcResponse; | 21 | import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcResponse; |
| 20 | import com.infoloop.tianting.model.dto.ClientLabelDTO.BatchCreateCustomerLabelRefDto; | 22 | import com.infoloop.tianting.model.dto.ClientLabelDTO.BatchCreateCustomerLabelRefDto; |
| ... | @@ -47,6 +49,14 @@ public class ClientCustomerServiceRpcClient { | ... | @@ -47,6 +49,14 @@ public class ClientCustomerServiceRpcClient { |
| 47 | return clientCustomerServiceRpcBlockingStub.getClientCustomerById(request); | 49 | return clientCustomerServiceRpcBlockingStub.getClientCustomerById(request); |
| 48 | } | 50 | } |
| 49 | 51 | ||
| 52 | + public GetClientCustomersByIdsRpcResponse getClientCustomersByIds( | ||
| 53 | + Integer enterpriseId, List<Integer> ids) { | ||
| 54 | + final var request = GetClientCustomersByIdsRpcRequest.newBuilder() | ||
| 55 | + .setEnterpriseId(enterpriseId).addAllIds(ids) | ||
| 56 | + .build(); | ||
| 57 | + return clientCustomerServiceRpcBlockingStub.getClientCustomersByIds(request); | ||
| 58 | + } | ||
| 59 | + | ||
| 50 | public GetClientCustomerByMobileRpcResponse getClientCustomerByMobile(String phone) { | 60 | public GetClientCustomerByMobileRpcResponse getClientCustomerByMobile(String phone) { |
| 51 | final var request = GetClientCustomerByMobileRpcRequest.newBuilder() | 61 | final var request = GetClientCustomerByMobileRpcRequest.newBuilder() |
| 52 | .setMobile(phone) | 62 | .setMobile(phone) | ... | ... |
| ... | @@ -8,6 +8,7 @@ import com.infoloop.tianting.model.dto.PayDTO.ThirdPartyPayInformRequestDto; | ... | @@ -8,6 +8,7 @@ import com.infoloop.tianting.model.dto.PayDTO.ThirdPartyPayInformRequestDto; |
| 8 | import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto; | 8 | import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto; |
| 9 | import com.infoloop.tianting.utils.DateUtil; | 9 | import com.infoloop.tianting.utils.DateUtil; |
| 10 | import com.infoloop.tianting.utils.EncryptionUtil; | 10 | import com.infoloop.tianting.utils.EncryptionUtil; |
| 11 | +import java.io.IOException; | ||
| 11 | import java.time.LocalDateTime; | 12 | import java.time.LocalDateTime; |
| 12 | import lombok.RequiredArgsConstructor; | 13 | import lombok.RequiredArgsConstructor; |
| 13 | import okhttp3.FormBody; | 14 | import okhttp3.FormBody; |
| ... | @@ -55,6 +56,10 @@ public class PayServiceClient { | ... | @@ -55,6 +56,10 @@ public class PayServiceClient { |
| 55 | .post(body) | 56 | .post(body) |
| 56 | .build(); | 57 | .build(); |
| 57 | Response payResponse = client.newCall(getPhoneRequest).execute(); | 58 | Response payResponse = client.newCall(getPhoneRequest).execute(); |
| 59 | + if(payResponse.code() != 200) { | ||
| 60 | + System.out.println(payResponse.message()); | ||
| 61 | + throw new IllegalArgumentException("支付通知失败"); | ||
| 62 | + } | ||
| 58 | String payJsonData = payResponse.body().string(); | 63 | String payJsonData = payResponse.body().string(); |
| 59 | System.out.println("pay json:"+payJsonData); | 64 | System.out.println("pay json:"+payJsonData); |
| 60 | objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); | 65 | objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); | ... | ... |
| ... | @@ -54,8 +54,6 @@ public class WxMiniProgramClient { | ... | @@ -54,8 +54,6 @@ public class WxMiniProgramClient { |
| 54 | .build(); | 54 | .build(); |
| 55 | Response getPhoneResponse = client.newCall(getPhoneRequest).execute(); | 55 | Response getPhoneResponse = client.newCall(getPhoneRequest).execute(); |
| 56 | String phoneJsonData = getPhoneResponse.body().string(); | 56 | String phoneJsonData = getPhoneResponse.body().string(); |
| 57 | - System.out.println("------------------------"); | ||
| 58 | - System.out.println("phone json:" + phoneJsonData); | ||
| 59 | WxUserPhoneResponseDto wxUserPhoneResponseDto = objectMapper.readValue(phoneJsonData, WxUserPhoneResponseDto.class); | 57 | WxUserPhoneResponseDto wxUserPhoneResponseDto = objectMapper.readValue(phoneJsonData, WxUserPhoneResponseDto.class); |
| 60 | return wxUserPhoneResponseDto; | 58 | return wxUserPhoneResponseDto; |
| 61 | 59 | ... | ... |
| 1 | package com.infoloop.tianting.service.impl; | 1 | package com.infoloop.tianting.service.impl; |
| 2 | 2 | ||
| 3 | +import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse; | ||
| 4 | +import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse; | ||
| 3 | import com.infoloop.tianting.model.common.PageResult; | 5 | import com.infoloop.tianting.model.common.PageResult; |
| 4 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; | 6 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; |
| 5 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; | 7 | import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; |
| 8 | +import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerDetailDto; | ||
| 6 | import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice; | 9 | import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice; |
| 7 | import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto; | 10 | import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto; |
| 8 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto; | 11 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto; |
| ... | @@ -10,11 +13,14 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto; | ... | @@ -10,11 +13,14 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto; |
| 10 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto; | 13 | import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto; |
| 11 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto; | 14 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto; |
| 12 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto; | 15 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto; |
| 16 | +import com.infoloop.tianting.service.ClientCustomerService; | ||
| 13 | import com.infoloop.tianting.service.OrderService; | 17 | import com.infoloop.tianting.service.OrderService; |
| 18 | +import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient; | ||
| 14 | import com.infoloop.tianting.service.client.OrderServiceRpcClient; | 19 | import com.infoloop.tianting.service.client.OrderServiceRpcClient; |
| 15 | import com.infoloop.tianting.utils.DateUtil; | 20 | import com.infoloop.tianting.utils.DateUtil; |
| 16 | import com.infoloop.tianting.utils.PageUtil; | 21 | import com.infoloop.tianting.utils.PageUtil; |
| 17 | import java.util.List; | 22 | import java.util.List; |
| 23 | +import java.util.Optional; | ||
| 18 | import java.util.stream.Collectors; | 24 | import java.util.stream.Collectors; |
| 19 | import lombok.RequiredArgsConstructor; | 25 | import lombok.RequiredArgsConstructor; |
| 20 | import lombok.extern.slf4j.Slf4j; | 26 | import lombok.extern.slf4j.Slf4j; |
| ... | @@ -26,6 +32,7 @@ import org.springframework.stereotype.Service; | ... | @@ -26,6 +32,7 @@ import org.springframework.stereotype.Service; |
| 26 | @RequiredArgsConstructor(onConstructor = @__(@Autowired)) | 32 | @RequiredArgsConstructor(onConstructor = @__(@Autowired)) |
| 27 | public class OrderServiceImpl implements OrderService { | 33 | public class OrderServiceImpl implements OrderService { |
| 28 | private final OrderServiceRpcClient orderServiceRpcClient; | 34 | private final OrderServiceRpcClient orderServiceRpcClient; |
| 35 | + private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient; | ||
| 29 | 36 | ||
| 30 | @Override | 37 | @Override |
| 31 | public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) { | 38 | public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) { |
| ... | @@ -87,7 +94,7 @@ public class OrderServiceImpl implements OrderService { | ... | @@ -87,7 +94,7 @@ public class OrderServiceImpl implements OrderService { |
| 87 | .pickupCode(r.getPickupCode()) | 94 | .pickupCode(r.getPickupCode()) |
| 88 | .tableCode(r.getTableCode()) | 95 | .tableCode(r.getTableCode()) |
| 89 | .roomNo(r.getRoomNo()) | 96 | .roomNo(r.getRoomNo()) |
| 90 | - .status(r.getStatus().getNumber()) | 97 | + .status(r.getStatus()) |
| 91 | .customerNoticeJson(CustomerNotice.builder() | 98 | .customerNoticeJson(CustomerNotice.builder() |
| 92 | .avoids(r.getCustomerNoticeJson().getAvoidsList()) | 99 | .avoids(r.getCustomerNoticeJson().getAvoidsList()) |
| 93 | .doctors(r.getCustomerNoticeJson().getDoctorsList()).build()) | 100 | .doctors(r.getCustomerNoticeJson().getDoctorsList()).build()) |
| ... | @@ -160,7 +167,7 @@ public class OrderServiceImpl implements OrderService { | ... | @@ -160,7 +167,7 @@ public class OrderServiceImpl implements OrderService { |
| 160 | .pickupCode(r.getPickupCode()) | 167 | .pickupCode(r.getPickupCode()) |
| 161 | .tableCode(r.getTableCode()) | 168 | .tableCode(r.getTableCode()) |
| 162 | .roomNo(r.getRoomNo()) | 169 | .roomNo(r.getRoomNo()) |
| 163 | - .status(r.getStatus().getNumber()) | 170 | + .status(r.getStatus()) |
| 164 | .customerNoticeJson(CustomerNotice.builder() | 171 | .customerNoticeJson(CustomerNotice.builder() |
| 165 | .avoids(r.getCustomerNoticeJson().getAvoidsList()) | 172 | .avoids(r.getCustomerNoticeJson().getAvoidsList()) |
| 166 | .doctors(r.getCustomerNoticeJson().getDoctorsList()).build()) | 173 | .doctors(r.getCustomerNoticeJson().getDoctorsList()).build()) |
| ... | @@ -220,6 +227,9 @@ public class OrderServiceImpl implements OrderService { | ... | @@ -220,6 +227,9 @@ public class OrderServiceImpl implements OrderService { |
| 220 | @Override | 227 | @Override |
| 221 | public PageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) { | 228 | public PageResult<OrderDto> getOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) { |
| 222 | final var response = orderServiceRpcClient.queryClientCustomerOrdersByPagination(queryOrderDto); | 229 | final var response = orderServiceRpcClient.queryClientCustomerOrdersByPagination(queryOrderDto); |
| 230 | + final var customerIds = response.getResponsesList().stream().map(SingleClientCustomerOrderRpcResponse::getCustomerId).collect(Collectors.toList()); | ||
| 231 | + final var customerResponse = clientCustomerServiceRpcClient.getClientCustomersByIds( | ||
| 232 | + queryOrderDto.getEnterpriseId(), customerIds); | ||
| 223 | final var results = response.getResponsesList().stream().map(r -> OrderDto.builder() | 233 | final var results = response.getResponsesList().stream().map(r -> OrderDto.builder() |
| 224 | .id(r.getId()) | 234 | .id(r.getId()) |
| 225 | .enterpriseId(r.getEnterpriseId()) | 235 | .enterpriseId(r.getEnterpriseId()) |
| ... | @@ -233,7 +243,7 @@ public class OrderServiceImpl implements OrderService { | ... | @@ -233,7 +243,7 @@ public class OrderServiceImpl implements OrderService { |
| 233 | .pickupCode(r.getPickupCode()) | 243 | .pickupCode(r.getPickupCode()) |
| 234 | .tableCode(r.getTableCode()) | 244 | .tableCode(r.getTableCode()) |
| 235 | .roomNo(r.getRoomNo()) | 245 | .roomNo(r.getRoomNo()) |
| 236 | - .status(r.getStatus().getNumber()) | 246 | + .status(r.getStatus()) |
| 237 | .customerNoticeJson(CustomerNotice.builder() | 247 | .customerNoticeJson(CustomerNotice.builder() |
| 238 | .avoids(r.getCustomerNoticeJson().getAvoidsList()) | 248 | .avoids(r.getCustomerNoticeJson().getAvoidsList()) |
| 239 | .doctors(r.getCustomerNoticeJson().getDoctorsList()).build()) | 249 | .doctors(r.getCustomerNoticeJson().getDoctorsList()).build()) |
| ... | @@ -254,8 +264,26 @@ public class OrderServiceImpl implements OrderService { | ... | @@ -254,8 +264,26 @@ public class OrderServiceImpl implements OrderService { |
| 254 | .updatedBy(r.getUpdatedBy()) | 264 | .updatedBy(r.getUpdatedBy()) |
| 255 | .closeTimeType(r.getCloseTimeTypeValue()) | 265 | .closeTimeType(r.getCloseTimeTypeValue()) |
| 256 | .totalNum(r.getTotalNum()) | 266 | .totalNum(r.getTotalNum()) |
| 267 | + .customer(getCustomerDetail(r.getCustomerId(), customerResponse.getResponsesList())) | ||
| 257 | .build()).collect(Collectors.toList()); | 268 | .build()).collect(Collectors.toList()); |
| 258 | return PageUtil.from(results, response.getTotal(), response.getPages(), | 269 | return PageUtil.from(results, response.getTotal(), response.getPages(), |
| 259 | queryOrderDto.getPn(), queryOrderDto.getPz()); | 270 | queryOrderDto.getPn(), queryOrderDto.getPz()); |
| 260 | } | 271 | } |
| 272 | + | ||
| 273 | + private CustomerDetailDto getCustomerDetail(Integer customerId, | ||
| 274 | + List<SingleClientCustomerRpcResponse> customers) { | ||
| 275 | + final var filterCustomers = customers.stream().filter(c -> c.getId() == customerId) | ||
| 276 | + .collect(Collectors.toList()); | ||
| 277 | + if (filterCustomers.isEmpty()) { | ||
| 278 | + return CustomerDetailDto.builder().build(); | ||
| 279 | + } else { | ||
| 280 | + final var resCustomer = filterCustomers.get(0); | ||
| 281 | + return CustomerDetailDto.builder() | ||
| 282 | + .id(resCustomer.getId()) | ||
| 283 | + .name(resCustomer.getName()) | ||
| 284 | + .phone(resCustomer.getMobile()) | ||
| 285 | + .build(); | ||
| 286 | + } | ||
| 287 | + | ||
| 288 | + } | ||
| 261 | } | 289 | } | ... | ... |
-
Please register or login to post a comment