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-03 13:54:47 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
074567a976efe93020c4e5b339a01ae2a1564686
074567a9
1 parent
ce26a066
fix
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
49 additions
and
57 deletions
src/main/java/com/infoloop/tianting/constant/CommonConstants.java
src/main/java/com/infoloop/tianting/context/LoginContextHolder.java
src/main/java/com/infoloop/tianting/controller/OrderController.java
src/main/java/com/infoloop/tianting/enums/LoginSourceEnum.java
src/main/java/com/infoloop/tianting/intercepter/LoginInterceptor.java
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
src/main/java/com/infoloop/tianting/service/impl/LoginServiceImpl.java
src/main/java/com/infoloop/tianting/service/impl/OrderServiceImpl.java
src/main/java/com/infoloop/tianting/constant/CommonConstants.java
View file @
074567a
...
...
@@ -56,4 +56,6 @@ public interface CommonConstants {
String
LOGIN_SOURCE
=
"loginSource"
;
String
OPEN_ID
=
"openId"
;
}
...
...
src/main/java/com/infoloop/tianting/context/LoginContextHolder.java
View file @
074567a
...
...
@@ -37,6 +37,10 @@ public class LoginContextHolder {
return
CONTEXT_HOLDER
.
get
().
getEnterpriseId
();
}
public
static
String
getOpenId
()
{
return
CONTEXT_HOLDER
.
get
().
getOpenId
();
}
public
static
void
clear
()
{
CONTEXT_HOLDER
.
remove
();
}
...
...
@@ -54,7 +58,8 @@ public class LoginContextHolder {
private
String
name
;
private
String
openid
;
@Builder
.
Default
private
String
openId
=
""
;
}
...
...
src/main/java/com/infoloop/tianting/controller/OrderController.java
View file @
074567a
...
...
@@ -65,7 +65,7 @@ public class OrderController {
return
orderService
.
getOrderDetailsByOrderId
(
orderId
);
}
@ApiOperation
(
value
=
"创建订单"
)
@ApiOperation
(
value
=
"
小程序
创建订单"
)
@PostMapping
(
"/orders"
)
@ResponseStatus
(
HttpStatus
.
OK
)
@RepeatSubmit
(
prefix
=
"createOrder"
,
isLockByLoginUser
=
false
)
...
...
src/main/java/com/infoloop/tianting/enums/LoginSourceEnum.java
View file @
074567a
package
com
.
infoloop
.
tianting
.
enums
;
import
com.infoloop.tianting.exception.BaseEnum
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
@Getter
@AllArgsConstructor
public
enum
LoginSourceEnum
{
CUSTOMER
(
1
,
"
小程序
住院客户"
),
MINI_PROGRAM
(
2
,
"
小程序非住院
客户"
),
CUSTOMER
(
1
,
"住院客户"
),
MINI_PROGRAM
(
2
,
"
阳光厅
客户"
),
OPERATOR
(
3
,
"院区端"
),
KDS
(
4
,
"KDS"
),
;
...
...
src/main/java/com/infoloop/tianting/intercepter/LoginInterceptor.java
View file @
074567a
...
...
@@ -12,15 +12,12 @@ 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
;
import
org.apache.tomcat.jni.Error
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.method.HandlerMethod
;
...
...
@@ -71,6 +68,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
final
var
enterpriseId
=
Convert
.
toInt
(
StpUtil
.
getExtra
(
CommonConstants
.
ENTERPRISE_ID
));
final
var
loginSource
=
Convert
.
toInt
(
StpUtil
.
getExtra
(
CommonConstants
.
LOGIN_SOURCE
));
if
(
loginSource
.
equals
(
LoginSourceEnum
.
CUSTOMER
.
getValue
()))
{
final
var
openId
=
Convert
.
toStr
(
StpUtil
.
getExtra
(
CommonConstants
.
OPEN_ID
));
final
var
loginId
=
StpUtil
.
getLoginIdAsInt
();
final
var
customer
=
clientCustomerServiceRpcClient
.
getClientCustomerById
(
enterpriseId
,
loginId
);
if
(
customer
==
null
)
{
...
...
@@ -78,7 +76,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
VALIDATE_FAILED
));
return
false
;
}
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
customer
.
getResponse
().
getName
());
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
customer
.
getResponse
().
getName
())
.
openId
(
openId
)
;
return
true
;
}
else
if
(
loginSource
.
equals
(
LoginSourceEnum
.
OPERATOR
.
getValue
())){
final
var
loginId
=
StpUtil
.
getLoginIdAsInt
();
...
...
@@ -101,7 +99,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
return
true
;
}
else
{
final
var
loginId
=
StpUtil
.
getLoginIdAsString
();
builder
.
open
i
d
(
loginId
).
enterpriseId
(
enterpriseId
);
builder
.
open
I
d
(
loginId
).
enterpriseId
(
enterpriseId
);
return
true
;
}
}
...
...
src/main/java/com/infoloop/tianting/service/client/OrderServiceRpcClient.java
View file @
074567a
...
...
@@ -545,6 +545,7 @@ public class OrderServiceRpcClient {
.
setRoomNo
(
createOrderDto
.
getRoomNo
())
.
setShouldCreateTableCode
(
createOrderDto
.
getOrderType
().
equals
(
OrderTypeEnum
.
DINE_IN
.
getValue
())
||
!
createOrderDto
.
getTableCode
().
isEmpty
())
.
setTableCode
(
createOrderDto
.
getTableCode
())
.
setShouldCreateOnlinePay
(
true
)
.
setOnlinePay
(
createOrderDto
.
getOnlinePay
())
.
setShouldCreatePayStatus
(
createOrderDto
.
getOnlinePay
())
.
setPayStatus
(
PayStatusEnum
.
TO_PAY
)
...
...
@@ -581,7 +582,6 @@ public class OrderServiceRpcClient {
if
((
skuSellQuantityRpcResponse
.
getTodaySellQuantity
()
+
orderDetail
.
getCount
())
>
skuSellQuantityRpcResponse
.
getMaxSellQuantity
())
{
log
.
error
(
"skuSellQuantityRpcResponse stock no enough; stallId:{}, skuId:{}, count:{}"
,
createOrderDto
.
getStallId
(),
orderDetail
.
getSkuId
(),
orderDetail
.
getCount
());
skuStockMap
.
put
(
skuMap
.
get
(
orderDetail
.
getSkuId
()).
getName
(),
skuSellQuantityRpcResponse
.
getMaxSellQuantity
()
-
skuSellQuantityRpcResponse
.
getTodaySellQuantity
());
continue
;
}
}
if
(!
soldOutSkus
.
isEmpty
())
{
...
...
src/main/java/com/infoloop/tianting/service/impl/LoginServiceImpl.java
View file @
074567a
...
...
@@ -3,6 +3,7 @@ package com.infoloop.tianting.service.impl;
import
cn.dev33.satoken.stp.SaLoginModel
;
import
cn.dev33.satoken.stp.SaTokenInfo
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.hutool.crypto.SecureUtil
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerHospitalRecordHospitalStatusEnum
;
import
com.infoloop.tianting.constant.CommonConstants
;
import
com.infoloop.tianting.exception.ClientEndExceptions
;
...
...
@@ -32,70 +33,59 @@ public class LoginServiceImpl implements LoginService {
public
SaTokenInfo
login
(
LoginDto
loginDto
)
{
if
(
loginDto
.
isShouldLoginWithOpenCode
())
{
final
var
wxUserOpenIdDto
=
wxMiniProgramHttpClient
.
getUserOpenIdByCode
(
loginDto
.
getOpenCode
());
StpUtil
.
login
(
wxUserOpenIdDto
.
getOpenid
(),
SaLoginModel
.
create
()
.
setExtra
(
CommonConstants
.
ENTERPRISE_ID
,
loginDto
.
getEnterpriseId
())
.
setExtra
(
CommonConstants
.
LOGIN_SOURCE
,
loginDto
.
getLoginSourceEnum
().
getValue
())
.
build
());
StpUtil
.
login
(
wxUserOpenIdDto
.
getOpenid
(),
SaLoginModel
.
create
()
.
setExtra
(
CommonConstants
.
ENTERPRISE_ID
,
loginDto
.
getEnterpriseId
())
.
setExtra
(
CommonConstants
.
LOGIN_SOURCE
,
loginDto
.
getLoginSourceEnum
().
getValue
())
.
build
());
return
StpUtil
.
getTokenInfo
();
}
else
if
(
loginDto
.
isShouldLoginWithHisCustomerId
())
{
var
customer
=
clientCustomerServiceRpcClient
.
getClientCustomerByHISCustomerId
(
loginDto
.
getHisCustomerId
())
.
getResponse
();
var
customer
=
clientCustomerServiceRpcClient
.
getClientCustomerByHISCustomerId
(
loginDto
.
getHisCustomerId
()).
getResponse
();
if
(
customer
.
getId
()
==
0
)
{
// 根据hisCustomerId拿不到用户的话再去根据合同号去his查一次,即认为是月子中心客户
customer
=
clientCustomerServiceRpcClient
.
getClientCustomerByContactNo
(
loginDto
.
getHisCustomerId
())
.
getResponse
();
customer
=
clientCustomerServiceRpcClient
.
getClientCustomerByContactNo
(
loginDto
.
getHisCustomerId
()).
getResponse
();
if
(
customer
.
getId
()
==
0
)
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
VALIDATE_FAILED
.
name
());
}
else
{
var
record
=
clientCustomerServiceRpcClient
.
getClientCustomerHospitalRecordsByCustomerId
(
customer
.
getEnterpriseId
(),
customer
.
getId
());
if
(!
record
.
hasResponse
()
||
record
.
getResponse
().
getHospitalStatus
()
!=
ClientCustomerHospitalRecordHospitalStatusEnum
.
CURRENT
)
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
VALIDATE_FAILED
.
name
());
var
record
=
clientCustomerServiceRpcClient
.
getClientCustomerHospitalRecordsByCustomerId
(
customer
.
getEnterpriseId
(),
customer
.
getId
());
if
(!
record
.
hasResponse
()
||
record
.
getResponse
().
getHospitalStatus
()
!=
ClientCustomerHospitalRecordHospitalStatusEnum
.
CURRENT
)
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
VALIDATE_FAILED
.
name
());
}
}
}
else
{
var
record
=
clientCustomerServiceRpcClient
.
getClientCustomerHospitalRecordsByCustomerId
(
customer
.
getEnterpriseId
(),
customer
.
getId
());
if
(!
record
.
hasResponse
()
||
record
.
getResponse
().
getHospitalStatus
()
!=
ClientCustomerHospitalRecordHospitalStatusEnum
.
CURRENT
)
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
VALIDATE_FAILED
.
name
());
}
}
StpUtil
.
login
(
customer
.
getId
(),
SaLoginModel
.
create
(
)
.
setExtra
(
CommonConstants
.
ENTERPRISE_ID
,
customer
.
getEnterpriseId
())
.
setExtra
(
CommonConstants
.
LOGIN_SOURCE
,
loginDto
.
getLoginSourceEnum
().
getValue
())
.
build
());
final
var
wxUserOpenIdDto
=
wxMiniProgramHttpClient
.
getUserOpenIdByCode
(
loginDto
.
getOpenCode
());
StpUtil
.
login
(
customer
.
getId
(),
SaLoginModel
.
create
()
.
setExtra
(
CommonConstants
.
ENTERPRISE_ID
,
customer
.
getEnterpriseId
()
)
.
setExtra
(
CommonConstants
.
LOGIN_SOURCE
,
loginDto
.
getLoginSourceEnum
().
getValue
())
.
setExtra
(
CommonConstants
.
OPEN_ID
,
wxUserOpenIdDto
.
getOpenid
())
.
build
());
return
StpUtil
.
getTokenInfo
();
}
else
if
(
loginDto
.
isShouldLoginWithOperatorPhone
())
{
final
var
operator
=
operatorServiceRpcClient
.
getCOperatorByMobileOrEmail
(
loginDto
.
getOperatorPhone
());
final
var
operator
=
operatorServiceRpcClient
.
getCOperatorByMobileOrEmail
(
loginDto
.
getOperatorPhone
());
if
(
operator
.
getId
()
==
0
)
{
throw
ClientEndExceptions
.
AuthenticationFailure
.
build
(
ErrorCodeEnum
.
UNAUTHORIZED
.
name
());
}
StpUtil
.
login
(
operator
.
getId
(),
SaLoginModel
.
create
()
if
(!
operator
.
getPassword
().
equals
(
SecureUtil
.
sha1
(
loginDto
.
getPassword
())))
{
throw
ClientEndExceptions
.
AuthenticationFailure
.
build
(
ErrorCodeEnum
.
VALIDATE_FAILED
.
name
());
}
StpUtil
.
login
(
operator
.
getId
(),
SaLoginModel
.
create
()
.
setExtra
(
CommonConstants
.
ENTERPRISE_ID
,
operator
.
getEnterpriseId
())
.
setExtra
(
CommonConstants
.
LOGIN_SOURCE
,
loginDto
.
getLoginSourceEnum
().
getValue
())
.
build
());
return
StpUtil
.
getTokenInfo
();
}
else
{
final
var
operator
=
wOperatorServiceRpcClient
.
getWOperatorByEmail
(
loginDto
.
getEmail
()).
getResponse
();
final
var
operator
=
wOperatorServiceRpcClient
.
getWOperatorByEmail
(
loginDto
.
getEmail
()).
getResponse
();
if
(
operator
.
getId
()
==
0
)
{
throw
ClientEndExceptions
.
AuthenticationFailure
.
build
(
ErrorCodeEnum
.
UNAUTHORIZED
.
name
());
}
// if (!operator.getPassword().equals(loginDto.getPassword())) {
// throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.VALIDATE_FAILED.name());
// }
StpUtil
.
login
(
operator
.
getId
(),
SaLoginModel
.
create
()
if
(!
operator
.
getPassword
().
equals
(
SecureUtil
.
sha1
(
loginDto
.
getPassword
())))
{
throw
ClientEndExceptions
.
AuthenticationFailure
.
build
(
ErrorCodeEnum
.
VALIDATE_FAILED
.
name
());
}
StpUtil
.
login
(
operator
.
getId
(),
SaLoginModel
.
create
()
.
setExtra
(
CommonConstants
.
ENTERPRISE_ID
,
operator
.
getEnterpriseId
())
.
setExtra
(
CommonConstants
.
LOGIN_SOURCE
,
loginDto
.
getLoginSourceEnum
().
getValue
())
.
build
());
...
...
src/main/java/com/infoloop/tianting/service/impl/OrderServiceImpl.java
View file @
074567a
...
...
@@ -92,8 +92,8 @@ public class OrderServiceImpl implements OrderService {
final
var
record
=
clientCustomerServiceRpcClient
.
getClientCustomerHospitalRecordsByCustomerId
(
customer
.
getEnterpriseId
(),
customer
.
getId
()).
getResponse
();
CreateOrderDto
createOrderDto
=
new
CreateOrderDto
();
createOrderDto
.
setShouldCreateCustomerId
(
true
);
createOrderDto
.
setShouldCreateOpenId
(
fals
e
);
createOrderDto
.
setOpenId
(
""
);
createOrderDto
.
setShouldCreateOpenId
(
tru
e
);
createOrderDto
.
setOpenId
(
operatorLoginInfo
.
getOpenId
()
);
createOrderDto
.
setTableCode
(
operatorCreateOrderDto
.
getTableCode
());
createOrderDto
.
setCustomerId
(
operatorCreateOrderDto
.
getCustomerId
());
createOrderDto
.
setStallId
(
operatorCreateOrderDto
.
getStallId
());
...
...
@@ -156,13 +156,11 @@ public class OrderServiceImpl implements OrderService {
.
doctors
(
Stream
.
of
(
doctors
,
dietDoctors
).
flatMap
(
List:
:
stream
).
collect
(
Collectors
.
toList
()))
.
build
();
createOrderDto
.
setCustomerNoticeJson
(
customerNotice
);
createOrderDto
.
setUpdatedBy
(
operatorLoginInfo
.
getId
());
createOrderDto
.
setUpdateSource
(
OrderSourceEnum
.
STALL
.
getNumber
());
List
<
CreateOrderDetailDto
>
orderDetailDtoList
=
new
ArrayList
<>();
final
var
menuDetails
=
menuServiceRpcClient
.
queryMenuDetailsByMenuId
(
menu
.
getEnterpriseId
(),
operatorCreateOrderDto
.
getMenuId
()).
getResponsesList
();
final
var
skuIds
=
menuDetails
.
stream
()
final
var
skuIds
=
menuDetails
.
stream
()
.
map
(
SingleMenuDetailRpcResponse:
:
getSkuId
)
.
collect
(
Collectors
.
toList
());
final
var
rpcSkus
=
skuServiceRpcClient
.
getDishSkusByIds
(
skuIds
).
getResponseList
();
...
...
Please
register
or
login
to post a comment