Toggle navigation
Toggle navigation
This project
Loading...
Sign in
jiujian
/
client-customer-order-api
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
wangyingyang
2024-11-11 20:55:29 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
99dd1d5b5760e11a33de7ce65fb3edd188dcfebb
99dd1d5b
1 parent
0029e475
bug fix
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
75 additions
and
9 deletions
src/main/java/com/infoloop/tianting/controller/PayController.java
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
src/main/java/com/infoloop/tianting/model/dto/PayDTO.java
src/main/java/com/infoloop/tianting/service/client/ClientCustomerServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/client/PayServiceClient.java
src/main/java/com/infoloop/tianting/service/client/WxMiniProgramClient.java
src/main/java/com/infoloop/tianting/service/impl/OrderServiceImpl.java
src/main/java/com/infoloop/tianting/controller/PayController.java
View file @
99dd1d5
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
();
}
}
...
...
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
View file @
99dd1d5
...
...
@@ -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
...
...
src/main/java/com/infoloop/tianting/model/dto/PayDTO.java
View file @
99dd1d5
...
...
@@ -81,5 +81,4 @@ public class PayDTO {
private
String
TradeDesc
;
private
String
Sign
;
}
}
...
...
src/main/java/com/infoloop/tianting/service/client/ClientCustomerServiceRpcClient.java
View file @
99dd1d5
...
...
@@ -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
)
...
...
src/main/java/com/infoloop/tianting/service/client/PayServiceClient.java
View file @
99dd1d5
...
...
@@ -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
);
...
...
src/main/java/com/infoloop/tianting/service/client/WxMiniProgramClient.java
View file @
99dd1d5
...
...
@@ -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
;
...
...
src/main/java/com/infoloop/tianting/service/impl/OrderServiceImpl.java
View file @
99dd1d5
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
();
}
}
}
...
...
Please
register
or
login
to post a comment