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
zhuyifan
2025-03-07 15:38:30 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ba64223ee2100260a122e09c2a2a10e3a56fcd7f
ba64223e
1 parent
daa57b77
同步房间号
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
420 additions
and
71 deletions
src/main/java/com/infoloop/tianting/config/GrpcConfig.java
src/main/java/com/infoloop/tianting/constant/ConfigConstants.java
src/main/java/com/infoloop/tianting/context/LoginContextHolder.java
src/main/java/com/infoloop/tianting/controller/ClientCustomerController.java
src/main/java/com/infoloop/tianting/intercepter/LoginInterceptor.java
src/main/java/com/infoloop/tianting/intercepter/WebSocketHandshakeInterceptor.java
src/main/java/com/infoloop/tianting/logic/async/HisCustomerRoomNoTask.java
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
src/main/java/com/infoloop/tianting/server/WebSocketServer.java
src/main/java/com/infoloop/tianting/server/message/MessageTypeEnum.java
src/main/java/com/infoloop/tianting/server/message/NoticeTypeEnum.java
src/main/java/com/infoloop/tianting/server/message/data/CustomerAlterRoomNoData.java
src/main/java/com/infoloop/tianting/service/ClientCustomerService.java
src/main/java/com/infoloop/tianting/service/client/ClientCustomerServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/client/ClientResourceTagServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/client/MeiZhongYiHeServiceClient.java
src/main/java/com/infoloop/tianting/service/client/OperatorServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/impl/ClientCustomerServiceImpl.java
src/main/proto/ClientCustomerOrderService.proto
src/main/proto/ClientCustomerService.proto
src/main/resources/application.properties
src/main/java/com/infoloop/tianting/config/GrpcConfig.java
View file @
ba64223
...
...
@@ -8,6 +8,7 @@ import com.infoloop.tianting.WOperatorServiceProtoRpcGrpc;
import
com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderServiceRpcGrpc
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerServiceRpcGrpc
;
import
com.infoloop.tianting.clientinventoryservice.TiantingClientInventoryServiceRpcGrpc
;
import
com.infoloop.tianting.clientresourcetagservice.ClientResourceTagServiceRpcGrpc
;
import
com.infoloop.tianting.deliveryruleservice.TiantingDeliveryRuleServiceRpcGrpc
;
import
com.infoloop.tianting.enterpriseresourcetagservice.EnterpriseResourceTagServiceRpcGrpc
;
import
com.infoloop.tianting.menuservice.MenuServiceRpcGrpc
;
...
...
@@ -32,6 +33,9 @@ import static com.infoloop.tianting.constant.ConfigConstants.CLIENT_CUSTOMER_SER
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
CLIENT_INVENTORY_SERVICE_CHANNEL
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
CLIENT_INVENTORY_SERVICE_RPC_PORT
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
CLIENT_INVENTORY_SERVICE_RPC_URL
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
CLIENT_RESOURCE_SERVICE_CHANNEL
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
CLIENT_RESOURCE_SERVICE_RPC_PORT
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
CLIENT_RESOURCE_SERVICE_RPC_URL
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
DELIVERY_SERVICE_CHANNEL
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
DELIVERY_SERVICE_RPC_PORT
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
DELIVERY_SERVICE_RPC_URL
;
...
...
@@ -268,4 +272,21 @@ public class GrpcConfig {
public
MeiZhongYiHeServiceRpcGrpc
.
MeiZhongYiHeServiceRpcBlockingStub
meiZhongYiHeServiceRpcBlockingStub
(
@Autowired
@Qualifier
(
MEIZHONGYIHE_SERVICE_CHANNEL
)
final
ManagedChannel
channel
)
{
return
MeiZhongYiHeServiceRpcGrpc
.
newBlockingStub
(
channel
);
}
@Bean
(
CLIENT_RESOURCE_SERVICE_CHANNEL
)
public
ManagedChannel
clientResourceServiceChannel
(
@Value
(
CLIENT_RESOURCE_SERVICE_RPC_URL
)
final
String
url
,
@Value
(
CLIENT_RESOURCE_SERVICE_RPC_PORT
)
final
int
port
,
@Autowired
final
ClientInterceptor
clientInterceptor
)
{
return
NettyChannelBuilder
.
forAddress
(
url
,
port
)
.
idleTimeout
(
DEFAULT_TIMEOUT_DAYS
,
TimeUnit
.
DAYS
)
.
intercept
(
clientInterceptor
)
.
usePlaintext
()
.
maxInboundMessageSize
(
Integer
.
MAX_VALUE
)
.
build
();
}
@Bean
public
ClientResourceTagServiceRpcGrpc
.
ClientResourceTagServiceRpcBlockingStub
clientResourceTagServiceRpcBlockingStub
(
@Autowired
@Qualifier
(
CLIENT_RESOURCE_SERVICE_CHANNEL
)
final
ManagedChannel
channel
)
{
return
ClientResourceTagServiceRpcGrpc
.
newBlockingStub
(
channel
);
}
}
...
...
src/main/java/com/infoloop/tianting/constant/ConfigConstants.java
View file @
ba64223
...
...
@@ -76,6 +76,10 @@ public interface ConfigConstants {
String
MEIZHONGYIHE_SERVICE_RPC_PORT
=
"${grpc.meizhongyihe-service.port}"
;
String
MEIZHONGYIHE_SERVICE_CHANNEL
=
"meizhongyihe-service-channel"
;
String
CLIENT_RESOURCE_SERVICE_RPC_URL
=
"${grpc.client-resource-service.url}"
;
String
CLIENT_RESOURCE_SERVICE_RPC_PORT
=
"${grpc.client-resource-service.port}"
;
String
CLIENT_RESOURCE_SERVICE_CHANNEL
=
"client-resource-tag-service-channel"
;
String
ASYNC_EXECUTOR
=
"asyncExecutor"
;
String
SCHEDULED_TASK_EXECUTOR
=
"scheduledTaskExecutor"
;
...
...
src/main/java/com/infoloop/tianting/context/LoginContextHolder.java
View file @
ba64223
package
com
.
infoloop
.
tianting
.
context
;
import
com.infoloop.tianting.enums.LoginSourceEnum
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
...
...
@@ -61,6 +62,8 @@ public class LoginContextHolder {
@Builder
.
Default
private
String
openId
=
""
;
private
LoginSourceEnum
loginSource
;
}
}
...
...
src/main/java/com/infoloop/tianting/controller/ClientCustomerController.java
View file @
ba64223
...
...
@@ -14,10 +14,12 @@ import org.springframework.http.HttpStatus;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.io.IOException
;
import
java.util.List
;
@Api
(
tags
=
"ClientCustomer"
)
...
...
@@ -28,57 +30,64 @@ import java.util.List;
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
public
class
ClientCustomerController
{
private
final
ClientCustomerService
clientCustomerService
;
private
final
ClientCustomerService
clientCustomerService
;
@ApiOperation
(
value
=
"根据hisCustomerId获取ClientCustomer"
)
@GetMapping
(
"/customers/his/{hisCustomerId}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByHISCustomerId
(
@PathVariable
String
hisCustomerId
)
{
return
clientCustomerService
.
getClientCustomerByHISCustomerId
(
hisCustomerId
);
}
@ApiOperation
(
value
=
"根据hisCustomerId获取ClientCustomer"
)
@GetMapping
(
"/customers/his/{hisCustomerId}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByHISCustomerId
(
@PathVariable
String
hisCustomerId
)
{
return
clientCustomerService
.
getClientCustomerByHISCustomerId
(
hisCustomerId
);
}
@ApiOperation
(
value
=
"根据hisCustomerNo获取ClientCustomer"
)
@GetMapping
(
"/his/customer/{hisCustomerNo}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByHISCustomerNo
(
@PathVariable
String
hisCustomerNo
)
{
return
clientCustomerService
.
getClientCustomerByHISCustomerNo
(
hisCustomerNo
);
}
@ApiOperation
(
value
=
"根据hisCustomerNo获取ClientCustomer"
)
@GetMapping
(
"/his/customer/{hisCustomerNo}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByHISCustomerNo
(
@PathVariable
String
hisCustomerNo
)
{
return
clientCustomerService
.
getClientCustomerByHISCustomerNo
(
hisCustomerNo
);
}
@ApiOperation
(
value
=
"根据customerId获取ClientCustomer"
)
@GetMapping
(
"/customers/{customerId}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByCustomerId
(
@PathVariable
Integer
customerId
)
{
return
clientCustomerService
.
getClientCustomerByCustomerId
(
customerId
);
}
@ApiOperation
(
value
=
"根据customerId获取ClientCustomer"
)
@GetMapping
(
"/customers/{customerId}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByCustomerId
(
@PathVariable
Integer
customerId
)
{
return
clientCustomerService
.
getClientCustomerByCustomerId
(
customerId
);
}
@ApiOperation
(
value
=
"根据phone获取ClientCustomer"
)
@GetMapping
(
"/customers/phone/{phone}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByPhone
(
@PathVariable
String
phone
)
{
return
clientCustomerService
.
getClientCustomerByPhone
(
phone
);
}
@ApiOperation
(
value
=
"根据phone获取ClientCustomer"
)
@GetMapping
(
"/customers/phone/{phone}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ClientCustomerDto
getClientCustomerByPhone
(
@PathVariable
String
phone
)
{
return
clientCustomerService
.
getClientCustomerByPhone
(
phone
);
}
@ApiOperation
(
value
=
"根据customerId获取住院记录"
)
@GetMapping
(
"/enterprise/{enterpriseId}/hospitalRecords/customers/{customerId}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
List
<
HospitalRecordDto
>
getHospitalRecords
(
@PathVariable
Integer
enterpriseId
,
@PathVariable
Integer
customerId
)
{
return
clientCustomerService
.
getClientCustomerHospitalRecordsByCustomerId
(
enterpriseId
,
customerId
);
}
@ApiOperation
(
value
=
"根据customerId获取住院记录"
)
@GetMapping
(
"/enterprise/{enterpriseId}/hospitalRecords/customers/{customerId}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
List
<
HospitalRecordDto
>
getHospitalRecords
(
@PathVariable
Integer
enterpriseId
,
@PathVariable
Integer
customerId
)
{
return
clientCustomerService
.
getClientCustomerHospitalRecordsByCustomerId
(
enterpriseId
,
customerId
);
}
@ApiOperation
(
value
=
"获取今日在住"
)
@GetMapping
(
"/clientCustomers/today/statistic"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
TodayOrderDto
getClientCustomerTodayOrderStatistic
(
@RequestParam
String
customerToken
)
{
return
clientCustomerService
.
getTodayOrderStatistic
(
customerToken
);
}
@ApiOperation
(
value
=
"获取今日在住"
)
@GetMapping
(
"/clientCustomers/today/statistic"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
TodayOrderDto
getClientCustomerTodayOrderStatistic
(
@RequestParam
String
customerToken
)
{
return
clientCustomerService
.
getTodayOrderStatistic
(
customerToken
);
}
@ApiOperation
(
value
=
"获取his今日在住"
)
@GetMapping
(
"/hisClientCustomers/today/statistic"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
TodayOrderDto
getHisClientCustomerTodayOrderStatistic
(
@RequestParam
String
customerToken
)
{
return
clientCustomerService
.
getTodayOrderStatisticForHis
(
customerToken
);
}
@ApiOperation
(
value
=
"获取his今日在住"
)
@GetMapping
(
"/hisClientCustomers/today/statistic"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
TodayOrderDto
getHisClientCustomerTodayOrderStatistic
(
@RequestParam
String
customerToken
)
{
return
clientCustomerService
.
getTodayOrderStatisticForHis
(
customerToken
);
}
@ApiOperation
(
value
=
"同步his客户信息"
)
@PostMapping
(
"/hisclientcustomers/synchronization"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
void
synchronizationHisClientCustomer
()
throws
IOException
{
clientCustomerService
.
synchronizationHisClientCustomer
();
}
}
...
...
src/main/java/com/infoloop/tianting/intercepter/LoginInterceptor.java
View file @
ba64223
...
...
@@ -67,7 +67,6 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
StpUtil
.
checkLogin
();
final
var
enterpriseId
=
Convert
.
toInt
(
StpUtil
.
getExtra
(
CommonConstants
.
ENTERPRISE_ID
));
final
var
loginSource
=
Convert
.
toInt
(
StpUtil
.
getExtra
(
CommonConstants
.
LOGIN_SOURCE
));
log
.
info
(
"Login success, enterpriseId: {}, loginSource: {}"
,
enterpriseId
,
loginSource
);
if
(
loginSource
.
equals
(
LoginSourceEnum
.
CUSTOMER
.
getValue
()))
{
final
var
openId
=
Convert
.
toStr
(
StpUtil
.
getExtra
(
CommonConstants
.
OPEN_ID
));
final
var
loginId
=
StpUtil
.
getLoginIdAsInt
();
...
...
@@ -77,8 +76,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
VALIDATE_FAILED
));
return
false
;
}
log
.
info
(
"Customer login success, customerId: {}, enterpriseId: {}, openId:{}"
,
loginId
,
enterpriseId
,
openId
);
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
customer
.
getResponse
().
getName
()).
openId
(
openId
);
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
customer
.
getResponse
().
getName
()).
openId
(
openId
).
loginSource
(
LoginSourceEnum
.
CUSTOMER
);
return
true
;
}
else
if
(
loginSource
.
equals
(
LoginSourceEnum
.
OPERATOR
.
getValue
())){
final
var
loginId
=
StpUtil
.
getLoginIdAsInt
();
...
...
@@ -88,20 +86,19 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
VALIDATE_FAILED
));
return
false
;
}
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
opeartor
.
getName
());
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
opeartor
.
getName
())
.
loginSource
(
LoginSourceEnum
.
OPERATOR
)
;
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
());
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
operator
.
getName
())
.
loginSource
(
LoginSourceEnum
.
KDS
)
;
return
true
;
}
else
{
final
var
loginId
=
StpUtil
.
getLoginIdAsString
();
builder
.
openId
(
loginId
).
enterpriseId
(
enterpriseId
);
builder
.
openId
(
loginId
).
enterpriseId
(
enterpriseId
)
.
loginSource
(
LoginSourceEnum
.
MINI_PROGRAM
)
;
return
true
;
}
}
...
...
src/main/java/com/infoloop/tianting/intercepter/WebSocketHandshakeInterceptor.java
View file @
ba64223
package
com
.
infoloop
.
tianting
.
intercepter
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.hutool.core.convert.Convert
;
import
com.infoloop.tianting.constant.CommonConstants
;
import
com.infoloop.tianting.enums.LoginSourceEnum
;
import
org.springframework.http.server.ServerHttpRequest
;
import
org.springframework.http.server.ServerHttpResponse
;
import
org.springframework.
util.StringUtils
;
import
org.springframework.
http.server.ServletServerHttpRequest
;
import
org.springframework.web.socket.WebSocketHandler
;
import
org.springframework.web.socket.server.HandshakeInterceptor
;
...
...
@@ -17,15 +14,15 @@ public class WebSocketHandshakeInterceptor implements HandshakeInterceptor {
@Override
public
boolean
beforeHandshake
(
ServerHttpRequest
request
,
ServerHttpResponse
response
,
WebSocketHandler
wsHandler
,
Map
<
String
,
Object
>
attributes
)
{
final
var
authorization
=
request
.
getHeaders
().
getFirst
(
CommonConstants
.
AUTHORIZATION
);
if
(
StringUtils
.
isEmpty
(
authorization
))
{
return
false
;
if
(
request
instanceof
ServletServerHttpRequest
)
{
ServletServerHttpRequest
servletRequest
=
(
ServletServerHttpRequest
)
request
;
String
userType
=
servletRequest
.
getServletRequest
().
getParameter
(
CommonConstants
.
USER_TYPE
);
String
userId
=
servletRequest
.
getServletRequest
().
getParameter
(
CommonConstants
.
USER_ID
);
attributes
.
put
(
CommonConstants
.
USER_TYPE
,
userType
);
attributes
.
put
(
CommonConstants
.
USER_ID
,
userId
);
return
true
;
}
final
var
loginSource
=
Convert
.
toInt
(
StpUtil
.
getExtra
(
CommonConstants
.
LOGIN_SOURCE
));
final
var
loginSourceEnum
=
LoginSourceEnum
.
getByValue
(
loginSource
);
attributes
.
put
(
CommonConstants
.
USER_TYPE
,
loginSourceEnum
.
getUserType
().
name
());
attributes
.
put
(
CommonConstants
.
USER_ID
,
StpUtil
.
getLoginIdAsString
());
return
true
;
return
false
;
}
@Override
...
...
src/main/java/com/infoloop/tianting/logic/async/HisCustomerRoomNoTask.java
0 → 100644
View file @
ba64223
package
com
.
infoloop
.
tianting
.
logic
.
async
;
import
com.infoloop.rpc.meizhongyiheservice.Customer
;
import
com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderModification
;
import
com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum
;
import
com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse
;
import
com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.model.dto.OrderDbDTO
;
import
com.infoloop.tianting.server.WebSocketServer
;
import
com.infoloop.tianting.server.message.MessageTypeEnum
;
import
com.infoloop.tianting.server.message.NoticeTypeEnum
;
import
com.infoloop.tianting.server.message.SocketMessage
;
import
com.infoloop.tianting.server.message.data.CustomerAlterRoomNoData
;
import
com.infoloop.tianting.server.session.UserSessionKey
;
import
com.infoloop.tianting.server.session.UserTypeEnum
;
import
com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient
;
import
com.infoloop.tianting.service.client.ClientResourceTagServiceRpcClient
;
import
com.infoloop.tianting.service.client.InventoryServiceRpcClient
;
import
com.infoloop.tianting.service.client.MeiZhongYiHeServiceClient
;
import
com.infoloop.tianting.service.client.OperatorServiceRpcClient
;
import
com.infoloop.tianting.service.client.OrderServiceRpcClient
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
static
com
.
infoloop
.
tianting
.
constant
.
ConfigConstants
.
ASYNC_EXECUTOR
;
@Slf4j
@Component
@RequiredArgsConstructor
public
class
HisCustomerRoomNoTask
{
private
final
OperatorServiceRpcClient
operatorServiceRpcClient
;
private
final
ClientResourceTagServiceRpcClient
clientResourceTagServiceRpcClient
;
private
final
InventoryServiceRpcClient
inventoryServiceRpcClient
;
private
final
MeiZhongYiHeServiceClient
meiZhongYiHeServiceClient
;
private
final
OrderServiceRpcClient
orderServiceRpcClient
;
private
final
ClientCustomerServiceRpcClient
clientCustomerServiceRpcClient
;
@Async
(
ASYNC_EXECUTOR
)
public
void
synchronization
(
LoginContextHolder
.
LoginInfo
loginInfo
)
throws
IOException
{
final
var
cOperatorById
=
operatorServiceRpcClient
.
getCOperatorById
(
loginInfo
.
getId
());
final
var
stallIdsList
=
clientResourceTagServiceRpcClient
.
getUserResources
(
cOperatorById
.
getEnterpriseId
(),
cOperatorById
.
getClientId
(),
cOperatorById
.
getId
())
.
getStallIdsList
();
final
var
stalls
=
inventoryServiceRpcClient
.
getStallsByIds
(
cOperatorById
.
getEnterpriseId
(),
stallIdsList
)
.
getClientsList
();
final
var
stallCodes
=
stalls
.
stream
()
.
filter
(
e
->
!
e
.
getIsDelivery
())
.
map
(
SingleClientRpcResponse:
:
getCode
)
.
collect
(
Collectors
.
toList
());
final
var
customersList
=
meiZhongYiHeServiceClient
.
getCustomersByCondition
(
stallCodes
);
final
var
hisCustomerIds
=
customersList
.
stream
().
map
(
Customer:
:
getCustomerId
).
collect
(
Collectors
.
toList
());
final
var
customerMap
=
customersList
.
stream
()
.
collect
(
Collectors
.
toMap
(
Customer:
:
getCustomerId
,
Function
.
identity
(),
(
a
,
b
)
->
a
));
final
var
queryOrderDto
=
OrderDbDTO
.
QueryOrderByConditionDto
.
builder
()
.
shouldFilterStallIds
(
true
)
.
stallIds
(
stallIdsList
)
.
shouldFilterStatues
(
true
)
.
statues
(
List
.
of
(
OrderStatusEnum
.
TO_PREPARE
,
OrderStatusEnum
.
PREPARING
))
.
build
();
final
var
orders
=
orderServiceRpcClient
.
getOrdersByCondition
(
queryOrderDto
);
final
var
clientCustomerMap
=
clientCustomerServiceRpcClient
.
getClientCustomersByHISCustomerIds
(
hisCustomerIds
)
.
getResponsesList
()
.
stream
()
.
collect
(
Collectors
.
toMap
(
SingleClientCustomerRpcResponse:
:
getId
,
Function
.
identity
(),
(
a
,
b
)
->
a
));
final
var
alterRoomNoCustomers
=
orders
.
stream
()
.
map
(
order
->
{
final
var
singleClientCustomerRpcResponse
=
clientCustomerMap
.
get
(
order
.
getCustomerId
());
if
(
singleClientCustomerRpcResponse
==
null
)
{
return
null
;
}
final
var
customer
=
customerMap
.
get
(
singleClientCustomerRpcResponse
.
getHISCustomerId
());
if
(
customer
==
null
)
{
log
.
error
(
"customer is null for HIS customerId: {}"
,
singleClientCustomerRpcResponse
.
getHISCustomerId
());
return
null
;
}
final
var
syncRoomNo
=
customer
.
getCustomerHospitalRecord
().
getRoomNo
();
if
(!
syncRoomNo
.
equals
(
order
.
getRoomNo
()))
{
return
CustomerAlterRoomNoData
.
AlterRoomNoCustomer
.
builder
()
.
orderId
(
order
.
getId
())
.
customerId
(
singleClientCustomerRpcResponse
.
getId
())
.
roomNo
(
order
.
getRoomNo
())
.
alterRoomNo
(
syncRoomNo
)
.
build
();
}
return
null
;
})
.
filter
(
Objects:
:
nonNull
)
.
collect
(
Collectors
.
toList
());
// 记录找不到 HIS 客户 ID 的错误日志
final
var
missingCustomerIds
=
orders
.
stream
()
.
map
(
order
->
clientCustomerMap
.
get
(
order
.
getCustomerId
()))
.
filter
(
Objects:
:
nonNull
)
.
map
(
SingleClientCustomerRpcResponse:
:
getHISCustomerId
)
.
filter
(
hisId
->
!
customerMap
.
containsKey
(
hisId
))
.
collect
(
Collectors
.
toList
());
if
(!
missingCustomerIds
.
isEmpty
())
{
log
.
error
(
"customer is null for HIS customerIds: {}"
,
missingCustomerIds
);
}
if
(
alterRoomNoCustomers
.
isEmpty
())
{
return
;
}
final
var
isUpdated
=
orderServiceRpcClient
.
batchUpdateClientCustomerOrders
(
loginInfo
,
alterRoomNoCustomers
.
stream
()
.
map
(
e
->
ClientCustomerOrderModification
.
newBuilder
()
.
setId
(
e
.
getOrderId
())
.
setShouldUpdateSyncRoomNo
(
true
)
.
setSyncRoomNo
(
e
.
getAlterRoomNo
())
.
build
())
.
collect
(
Collectors
.
toList
()));
if
(!
isUpdated
)
{
log
.
error
(
"OrderServiceRpcClient.batchUpdateClientCustomerOrders error"
);
return
;
}
final
var
affectedCustomers
=
alterRoomNoCustomers
.
stream
()
.
map
(
CustomerAlterRoomNoData
.
AlterRoomNoCustomer
::
getCustomerId
)
.
distinct
()
.
count
();
final
var
data
=
SocketMessage
.<
CustomerAlterRoomNoData
>
builder
()
.
type
(
MessageTypeEnum
.
CUSTOMER
)
.
noticeType
(
NoticeTypeEnum
.
CUSTOMER_ALTER_ROOM_NO
)
.
subject
(
NoticeTypeEnum
.
CUSTOMER_ALTER_ROOM_NO
.
getDescription
())
.
message
(
"有"
+
affectedCustomers
+
" 个客户房间号发生了变更,系统已显示最新房间号。"
)
.
data
(
CustomerAlterRoomNoData
.
builder
().
alterRoomNoCustomers
(
alterRoomNoCustomers
).
build
())
.
build
();
WebSocketServer
.
sendMessageToUser
(
UserSessionKey
.
builder
()
.
userId
(
String
.
valueOf
(
loginInfo
.
getId
()))
.
userType
(
UserTypeEnum
.
CLIENT
)
.
build
(),
data
);
}
}
src/main/java/com/infoloop/tianting/model/dto/OrderDbDTO.java
View file @
ba64223
...
...
@@ -123,6 +123,10 @@ public class OrderDbDTO {
private
Boolean
shouldFilterPayStatus
=
false
;
@Builder
.
Default
private
PayStatusEnum
payStatus
=
PayStatusEnum
.
UNKNOWN_PAY_STATUS
;
@Builder
.
Default
private
Boolean
shouldFilterStatues
=
false
;
@Builder
.
Default
private
List
<
OrderStatusEnum
>
statues
=
new
ArrayList
<>();
}
@Data
...
...
src/main/java/com/infoloop/tianting/server/WebSocketServer.java
View file @
ba64223
...
...
@@ -80,6 +80,14 @@ public class WebSocketServer extends TextWebSocketHandler {
sendMessageToUsers
(
keys
,
socketMessage
);
}
public
static
<
T
>
void
sendMessageByUserTypes
(
List
<
UserTypeEnum
>
userTypes
,
List
<
String
>
authUserIds
,
SocketMessage
<
T
>
socketMessage
)
throws
IOException
{
final
var
keys
=
userSessions
.
keySet
().
stream
()
.
filter
(
userSessionData
->
userTypes
.
contains
(
userSessionData
.
getUserType
()))
.
filter
(
userSessionData
->
authUserIds
.
contains
(
userSessionData
.
getUserId
()))
.
collect
(
Collectors
.
toList
());
sendMessageToUsers
(
keys
,
socketMessage
);
}
public
static
void
closeConnection
(
UserSessionKey
key
)
{
final
var
userData
=
userSessions
.
get
(
key
);
if
(
userData
!=
null
)
{
...
...
src/main/java/com/infoloop/tianting/server/message/MessageTypeEnum.java
View file @
ba64223
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
@Getter
public
enum
MessageTypeEnum
{
ORDER
(
"订单类型消息"
);
ORDER
(
"订单类型消息"
),
CUSTOMER
(
"客户类型消息"
);;
private
final
String
description
;
...
...
src/main/java/com/infoloop/tianting/server/message/NoticeTypeEnum.java
View file @
ba64223
...
...
@@ -5,8 +5,10 @@ import lombok.Getter;
@Getter
public
enum
NoticeTypeEnum
{
ORDER_CREATED
(
"下单成功"
,
MessageTypeEnum
.
ORDER
),
ORDER_PAYMENT_SUCCESS
(
"支付成功"
,
MessageTypeEnum
.
ORDER
);
ORDER_PAYMENT_SUCCESS
(
"支付成功"
,
MessageTypeEnum
.
ORDER
),
CUSTOMER_ALTER_ROOM_NO
(
"客户变更房间号"
,
MessageTypeEnum
.
CUSTOMER
),
;
private
final
String
description
;
private
final
MessageTypeEnum
messageType
;
...
...
src/main/java/com/infoloop/tianting/server/message/data/CustomerAlterRoomNoData.java
0 → 100644
View file @
ba64223
package
com
.
infoloop
.
tianting
.
server
.
message
.
data
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Builder
public
class
CustomerAlterRoomNoData
{
private
List
<
AlterRoomNoCustomer
>
alterRoomNoCustomers
;
@Data
@Builder
public
static
class
AlterRoomNoCustomer
{
private
int
orderId
;
private
int
customerId
;
private
String
roomNo
;
private
String
alterRoomNo
;
}
}
src/main/java/com/infoloop/tianting/service/ClientCustomerService.java
View file @
ba64223
...
...
@@ -9,6 +9,7 @@ import com.infoloop.tianting.model.dto.ClientLabelDTO.BatchDeleteCustomerLabelRe
import
com.infoloop.tianting.model.dto.ClientLabelDTO.BatchDeleteCustomerLabelRefResponseDto
;
import
com.infoloop.tianting.model.dto.ClientLabelDTO.CustomerLabelRefDetailDto
;
import
java.io.IOException
;
import
java.util.List
;
public
interface
ClientCustomerService
{
...
...
@@ -36,4 +37,6 @@ public interface ClientCustomerService {
TodayOrderDto
getTodayOrderStatisticForHis
(
String
token
);
ClientCustomerDto
getClientCustomerByHISCustomerNo
(
String
hisCustomerNo
);
void
synchronizationHisClientCustomer
()
throws
IOException
;
}
...
...
src/main/java/com/infoloop/tianting/service/client/ClientCustomerServiceRpcClient.java
View file @
ba64223
...
...
@@ -2,7 +2,11 @@ package com.infoloop.tianting.service.client;
import
com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerLabelRefsRpcRequest
;
import
com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerLabelRefsRpcResponse
;
import
com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerOperationRecordsRpcRequest
;
import
com.infoloop.tianting.clientcustomerservice.BatchUpdateClientCustomersRpcRequest
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerLabelRefCreation
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerModification
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerOperationRecordCreation
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerServiceRpcGrpc
;
import
com.infoloop.tianting.clientcustomerservice.DeleteClientCustomerLabelRefsByIdsRpcRequest
;
import
com.infoloop.tianting.clientcustomerservice.DeleteClientCustomerLabelRefsRpcResponse
;
...
...
@@ -24,6 +28,7 @@ import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcReq
import
com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcResponse
;
import
com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcRequest
;
import
com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcResponse
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.model.dto.ClientLabelDTO.BatchCreateCustomerLabelRefDto
;
import
com.infoloop.tianting.model.dto.ClientLabelDTO.BatchDeleteCustomerLabelRefRequestDto
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -145,4 +150,24 @@ public class ClientCustomerServiceRpcClient {
.
build
();
return
clientCustomerServiceRpcBlockingStub
.
deleteClientCustomerLabelRefsByIds
(
request
);
}
public
boolean
batchUpdateClientCustomers
(
LoginContextHolder
.
LoginInfo
loginInfo
,
List
<
ClientCustomerModification
>
modifications
)
{
final
var
request
=
BatchUpdateClientCustomersRpcRequest
.
newBuilder
()
.
setEnterpriseId
(
loginInfo
.
getEnterpriseId
())
.
setUpdatedBy
(
loginInfo
.
getId
())
.
setUpdateSource
(
loginInfo
.
getLoginSource
().
getValue
())
.
addAllModifications
(
modifications
)
.
build
();
return
clientCustomerServiceRpcBlockingStub
.
batchUpdateClientCustomers
(
request
).
getIsUpdated
();
}
public
boolean
batchCreateClientCustomerOperationRecords
(
LoginContextHolder
.
LoginInfo
loginInfo
,
List
<
ClientCustomerOperationRecordCreation
>
creations
)
{
final
var
request
=
BatchCreateClientCustomerOperationRecordsRpcRequest
.
newBuilder
()
.
setEnterpriseId
(
loginInfo
.
getEnterpriseId
())
.
setCreatedBy
(
loginInfo
.
getId
())
.
setCreationSource
(
loginInfo
.
getLoginSource
().
getValue
())
.
addAllCreations
(
creations
)
.
build
();
return
clientCustomerServiceRpcBlockingStub
.
batchCreateClientCustomerOperationRecords
(
request
).
getIsCreated
();
}
}
...
...
src/main/java/com/infoloop/tianting/service/client/ClientResourceTagServiceRpcClient.java
0 → 100644
View file @
ba64223
package
com
.
infoloop
.
tianting
.
service
.
client
;
import
com.infoloop.tianting.clientresourcetagservice.ClientResourceTagServiceRpcGrpc
;
import
com.infoloop.tianting.clientresourcetagservice.ResourceOperatorIdsGetByStallIdsRequest
;
import
com.infoloop.tianting.clientresourcetagservice.SingleResourceLabelEntityRefsResponse
;
import
com.infoloop.tianting.clientresourcetagservice.UserTagsAndResourcesGetRequest
;
import
com.infoloop.tianting.clientresourcetagservice.UserTagsAndResourcesGetResponse
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
public
class
ClientResourceTagServiceRpcClient
{
private
final
ClientResourceTagServiceRpcGrpc
.
ClientResourceTagServiceRpcBlockingStub
clientResourceTagServiceRpcBlockingStub
;
public
List
<
SingleResourceLabelEntityRefsResponse
>
getOperatorIdsByStallIds
(
List
<
Integer
>
stallIds
)
{
return
clientResourceTagServiceRpcBlockingStub
.
getOperatorIdsByStallIds
(
ResourceOperatorIdsGetByStallIdsRequest
.
newBuilder
()
.
addAllStallIds
(
stallIds
)
.
build
()).
getLabelEntityRefsList
();
}
public
UserTagsAndResourcesGetResponse
getUserResources
(
int
enterpriseId
,
int
clientId
,
int
operatorId
)
{
return
clientResourceTagServiceRpcBlockingStub
.
getUserResources
(
UserTagsAndResourcesGetRequest
.
newBuilder
()
.
setEnterpriseId
(
enterpriseId
)
.
setUserId
(
operatorId
)
.
setClientId
(
clientId
)
.
build
());
}
}
src/main/java/com/infoloop/tianting/service/client/MeiZhongYiHeServiceClient.java
View file @
ba64223
...
...
@@ -6,6 +6,7 @@ import com.infoloop.rpc.meizhongyiheservice.GetCustomerAllergiesByCustomerIdsRpc
import
com.infoloop.rpc.meizhongyiheservice.GetCustomerDetailByIdRpcRequest
;
import
com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcRequest
;
import
com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcResponse
;
import
com.infoloop.rpc.meizhongyiheservice.GetCustomersByConditionRpcRequest
;
import
com.infoloop.rpc.meizhongyiheservice.MeiZhongYiHeServiceRpcGrpc
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -44,4 +45,11 @@ public class MeiZhongYiHeServiceClient {
}
return
customer
.
getCustomer
();
}
public
List
<
Customer
>
getCustomersByCondition
(
List
<
String
>
stallCodes
)
{
final
var
request
=
GetCustomersByConditionRpcRequest
.
newBuilder
()
.
addAllDeptCode
(
stallCodes
)
.
build
();
return
meiZhongYiHeServiceRpcBlockingStub
.
getCustomersByCondition
(
request
).
getCustomersList
();
}
}
...
...
src/main/java/com/infoloop/tianting/service/client/OperatorServiceRpcClient.java
View file @
ba64223
...
...
@@ -21,7 +21,7 @@ public class OperatorServiceRpcClient {
return
cOperatorServiceProtoRpcBlockingStub
.
getCOperatorByMobileOrEmail
(
request
).
getResponse
();
}
public
SingleCOperatorRpcResponse
getCOperatorById
(
Integer
id
)
{
public
SingleCOperatorRpcResponse
getCOperatorById
(
int
id
)
{
final
var
request
=
GetCOperatorByIdRpcRequest
.
newBuilder
().
setId
(
id
).
build
();
return
cOperatorServiceProtoRpcBlockingStub
.
getCOperatorById
(
request
).
getResponse
();
}
...
...
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
View file @
ba64223
...
...
@@ -9,6 +9,7 @@ import com.infoloop.tianting.clientcustomerorderservice.BatchCreateOrderOperatio
import
com.infoloop.tianting.clientcustomerorderservice.BatchSaveSkuSellQuantitiesRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchUpdateClientCustomerOrderDetailsRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchUpdateClientCustomerOrderDetailsRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchUpdateClientCustomerOrdersRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderCreation
;
import
com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderDetailCreation
;
import
com.infoloop.tianting.clientcustomerorderservice.ClientCustomerOrderDetailModification
;
...
...
@@ -43,6 +44,7 @@ import com.infoloop.tianting.clientcustomerorderservice.SkuSellQuantity;
import
com.infoloop.tianting.clientcustomerorderservice.SkuSellQuantityModification
;
import
com.infoloop.tianting.clientcustomerorderservice.UpdateClientCustomerOrderRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.UpdateClientCustomerOrderRpcResponse
;
import
com.infoloop.tianting.clientresourcetagservice.SingleResourceLabelEntityRefsResponse
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.exception.ClientEndExceptions
;
import
com.infoloop.tianting.exception.ErrorCodeEnum
;
...
...
@@ -102,6 +104,7 @@ public class OrderServiceRpcClient {
private
final
MenuServiceRpcClient
menuServiceRpcClient
;
private
final
SkuServiceRpcClient
skuServiceRpcClient
;
private
final
OperatorServiceRpcClient
operatorServiceRpcClient
;
private
final
ClientResourceTagServiceRpcClient
clientResourceTagServiceRpcClient
;
private
final
RedissonClient
redissonClient
;
private
final
DelayedQueue
<
AutoCancelParam
>
delayedQueue
;
...
...
@@ -119,8 +122,7 @@ public class OrderServiceRpcClient {
GetClientCustomerOrdersByCustomerIdRpcRequest
.
newBuilder
().
setCustomerId
(
customerId
).
build
()).
getResponsesList
();
}
public
List
<
SingleClientCustomerOrderRpcResponse
>
getOrdersByCondition
(
QueryOrderByConditionDto
queryOrderDto
)
{
public
List
<
SingleClientCustomerOrderRpcResponse
>
getOrdersByCondition
(
QueryOrderByConditionDto
queryOrderDto
)
{
final
var
request
=
QueryClientCustomerOrdersByConditionRpcRequest
.
newBuilder
()
.
setEnterpriseId
(
queryOrderDto
.
getEnterpriseId
())
.
setShouldFilterOpenIds
(
queryOrderDto
.
getShouldFilterOpenId
())
...
...
@@ -147,6 +149,8 @@ public class OrderServiceRpcClient {
.
addAllOpenIds
(
List
.
of
(
queryOrderDto
.
getOpenId
()))
.
setShouldFilterPayStatus
(
queryOrderDto
.
getShouldFilterPayStatus
())
.
setPayStatus
(
queryOrderDto
.
getPayStatus
())
.
setShouldFilterStatues
(
queryOrderDto
.
getShouldFilterStatues
())
.
addAllStatues
(
queryOrderDto
.
getStatues
())
.
build
();
return
orderServiceRpcBlockingStub
.
queryClientCustomerOrdersByCondition
(
request
).
getResponsesList
();
}
...
...
@@ -601,6 +605,7 @@ public class OrderServiceRpcClient {
if
(
orderResponse
.
getIsCreated
())
{
// 用餐时间为当天,并且非在线支付餐单,发送消息给客户端
if
(
createOrderDto
.
getMealTime
().
toLocalDate
().
equals
(
LocalDate
.
now
())
&&
menuById
.
getResponse
().
getOrderRuleJson
().
getModeOfPayment
()
!=
ModeOfPaymentEnum
.
ONLINE
)
{
final
var
userIds
=
clientResourceTagServiceRpcClient
.
getOperatorIdsByStallIds
(
List
.
of
(
createOrderDto
.
getStallId
())).
stream
().
map
(
SingleResourceLabelEntityRefsResponse:
:
getEntityId
).
distinct
().
map
(
String:
:
valueOf
).
collect
(
Collectors
.
toList
());
final
var
orderCreateSuccessData
=
OrderCreateSuccessData
.
builder
()
.
orderId
(
orderResponse
.
getId
())
.
build
();
...
...
@@ -612,7 +617,7 @@ public class OrderServiceRpcClient {
.
data
(
orderCreateSuccessData
)
.
build
();
try
{
WebSocketServer
.
sendMessageByUserTypes
(
List
.
of
(
UserTypeEnum
.
CLIENT
,
UserTypeEnum
.
KDS
),
data
);
WebSocketServer
.
sendMessageByUserTypes
(
List
.
of
(
UserTypeEnum
.
CLIENT
,
UserTypeEnum
.
KDS
),
userIds
,
data
);
}
catch
(
IOException
e
)
{
log
.
error
(
"Failed to send message to user"
,
e
);
}
...
...
@@ -636,6 +641,15 @@ public class OrderServiceRpcClient {
return
CreateOrderResponse
.
builder
().
id
(
orderResponse
.
getId
()).
isCreated
(
true
).
build
();
}
public
boolean
batchUpdateClientCustomerOrders
(
LoginContextHolder
.
LoginInfo
loginInfo
,
List
<
ClientCustomerOrderModification
>
modifications
)
{
return
orderServiceRpcBlockingStub
.
batchUpdateClientCustomerOrders
(
BatchUpdateClientCustomerOrdersRpcRequest
.
newBuilder
()
.
setEnterpriseId
(
loginInfo
.
getEnterpriseId
())
.
setUpdatedBy
(
loginInfo
.
getId
())
.
setUpdateSource
(
OrderSourceEnum
.
forNumber
(
loginInfo
.
getLoginSource
().
getValue
()))
.
addAllModifications
(
modifications
)
.
build
()).
getIsUpdated
();
}
public
List
<
SingleSkuSellQuantityRpcResponse
>
querySkuSellQuantitiesByStall
(
int
enterpriseId
,
int
stallId
)
{
return
orderServiceRpcBlockingStub
.
querySkuSellQuantitiesByStall
(
QuerySkuSellQuantitiesByStallRpcRequest
.
newBuilder
()
...
...
src/main/java/com/infoloop/tianting/service/impl/ClientCustomerServiceImpl.java
View file @
ba64223
...
...
@@ -3,6 +3,7 @@ package com.infoloop.tianting.service.impl;
import
com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse
;
import
com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.logic.async.HisCustomerRoomNoTask
;
import
com.infoloop.tianting.menuservice.SingleClientCustomerMenuRefRpcResponse
;
import
com.infoloop.tianting.model.dto.ClientCustomerDbDTO.ClientCustomerDto
;
import
com.infoloop.tianting.model.dto.ClientCustomerDbDTO.CurrentClientCustomerDto
;
...
...
@@ -29,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.io.IOException
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
...
...
@@ -45,6 +47,7 @@ public class ClientCustomerServiceImpl implements ClientCustomerService {
private
final
ClientCustomerServiceHttpClient
clientCustomerServiceHttpClient
;
private
final
OrderServiceRpcClient
orderServiceRpcClient
;
private
final
MenuServiceRpcClient
menuServiceRpcClient
;
private
final
HisCustomerRoomNoTask
hisCustomerRoomNoTask
;
@Override
public
ClientCustomerDto
getClientCustomerByHISCustomerId
(
String
hisCustomerId
)
{
...
...
@@ -575,4 +578,9 @@ public class ClientCustomerServiceImpl implements ClientCustomerService {
.
build
();
}
@Override
public
void
synchronizationHisClientCustomer
()
throws
IOException
{
hisCustomerRoomNoTask
.
synchronization
(
LoginContextHolder
.
getLoginInfo
());
}
}
...
...
src/main/proto/ClientCustomerOrderService.proto
View file @
ba64223
...
...
@@ -138,6 +138,7 @@ message SingleClientCustomerOrderRpcResponse {
bool
isRead
=
33
;
bool
isConfirm
=
34
;
bool
isAllocation
=
35
;
string
syncRoomNo
=
36
;
}
message
GetClientCustomerOrderByIdRpcRequest
{
...
...
@@ -243,6 +244,8 @@ message QueryClientCustomerOrdersByConditionRpcRequest {
bool
isConfirm
=
45
;
bool
shouldFilterIsAllocation
=
46
;
bool
isAllocation
=
47
;
bool
shouldFilterStatues
=
48
;
repeated
OrderStatusEnum
statues
=
49
;
}
message
QueryClientCustomerOrdersByConditionRpcResponse
{
...
...
@@ -370,6 +373,8 @@ message ClientCustomerOrderModification {
bool
isConfirm
=
51
;
bool
shouldUpdateIsAllocation
=
52
;
bool
isAllocation
=
53
;
bool
shouldUpdateSyncRoomNo
=
54
;
string
syncRoomNo
=
55
;
}
message
UpdateClientCustomerOrderRpcRequest
{
...
...
src/main/proto/ClientCustomerService.proto
View file @
ba64223
...
...
@@ -40,6 +40,7 @@ service ClientCustomerServiceRpc {
rpc
GetClientCustomerHospitalRecordByCustomerId
(
GetClientCustomerHospitalRecordByCustomerIdRpcRequest
)
returns
(
GetClientCustomerHospitalRecordByCustomerIdRpcResponse
)
{}
//根据客户IDS查询住院记录
rpc
GetClientCustomerHospitalRecordsByCustomerIds
(
GetClientCustomerHospitalRecordsByCustomerIdsRpcRequest
)
returns
(
GetClientCustomerHospitalRecordsByCustomerIdsRpcResponse
)
{}
rpc
GetClientCustomerHospitalRecordsByHISCustomerIds
(
GetClientCustomerHospitalRecordsByHISCustomerIdsRpcRequest
)
returns
(
GetClientCustomerHospitalRecordsByHISCustomerIdsRpcResponse
)
{}
rpc
QueryClientCustomerHospitalRecordsByCondition
(
QueryClientCustomerHospitalRecordsByConditionRpcRequest
)
returns
(
QueryClientCustomerHospitalRecordsByConditionRpcResponse
)
{}
rpc
CreateClientCustomerHospitalRecord
(
CreateClientCustomerHospitalRecordRpcRequest
)
returns
(
CreateClientCustomerHospitalRecordRpcResponse
)
{}
rpc
BatchCreateClientCustomerHospitalRecords
(
BatchCreateClientCustomerHospitalRecordsRpcRequest
)
returns
(
BatchCreateClientCustomerHospitalRecordsRpcResponse
)
{}
...
...
@@ -385,6 +386,16 @@ message GetClientCustomerHospitalRecordsByCustomerIdsRpcResponse {
repeated
SingleClientCustomerHospitalRecordRpcResponse
responses
=
1
;
}
message
GetClientCustomerHospitalRecordsByHISCustomerIdsRpcRequest
{
repeated
string
HISCustomerIds
=
1
;
int32
enterpriseId
=
2
;
bool
includeDeleted
=
3
;
}
message
GetClientCustomerHospitalRecordsByHISCustomerIdsRpcResponse
{
repeated
SingleClientCustomerHospitalRecordRpcResponse
responses
=
1
;
}
message
QueryClientCustomerHospitalRecordsByConditionRpcRequest
{
int32
enterpriseId
=
1
;
bool
shouldFilterClientIds
=
2
;
...
...
src/main/resources/application.properties
View file @
ba64223
...
...
@@ -58,7 +58,7 @@ grpc.meal-service.port=3017
grpc.delivery-
service.url
=
47.101.193.136
grpc.delivery-
service.port
=
3017
grpc.operator-
service.url
=
47.101.193.136
grpc.operator-
service.url
=
115.190.92.112
grpc.operator-
service.port
=
3031
grpc.woperator-
service.url
=
47.101.193.136
...
...
@@ -67,6 +67,9 @@ grpc.woperator-service.port=3028
grpc.enterprise-resource-
service.url
=
47.101.193.136
grpc.enterprise-resource-
service.port
=
3026
grpc.client-resource-
service.url
=
47.101.193.136
grpc.client-resource-
service.port
=
3019
grpc.meizhongyihe-
service.url
=
47.101.193.136
grpc.meizhongyihe-
service.port
=
3040
...
...
Please
register
or
login
to post a comment