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-05-06 10:49:57 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
311015f12e7fa15e19334b7d34cd302a9b00402d
311015f1
1 parent
840a3e47
fix(service): 修复创建 diner时的逻辑错误
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
45 additions
and
62 deletions
src/main/java/com/infoloop/tianting/controller/DinerController.java
src/main/java/com/infoloop/tianting/logic/task/AutoCreateMealOrderTask.java
src/main/java/com/infoloop/tianting/model/dto/DinerDTO.java
src/main/java/com/infoloop/tianting/service/DinerService.java
src/main/java/com/infoloop/tianting/service/impl/DinerServiceImpl.java
src/main/java/com/infoloop/tianting/service/impl/MealOrderServiceImpl.java
src/main/java/com/infoloop/tianting/controller/DinerController.java
View file @
311015f
...
...
@@ -67,12 +67,12 @@ public class DinerController {
}
@ApiOperation
(
value
=
"根据学校,班级和学号查询就餐人"
)
@PostMapping
(
"/client/{clientId}/gradeclass/{gradeClassId}/diner"
)
@PostMapping
(
"/client/{clientId}/gradeclass/{gradeClassId}/diner
s
"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
DinerVO
getClientClassDiner
(
@RequestAttribute
(
INJECTED_CLIENT
)
final
SingleClientRpcResponse
client
,
@RequestAttribute
(
INJECTED_GRADE_CLASS
)
final
SingleGradeClassRpcResponse
gradeClass
,
@RequestBody
@Valid
final
DinerDTO
.
QueryUniqueDinerDTO
queryUniqueDinerDTO
)
{
return
dinerService
.
getClientClassDiner
(
client
,
gradeClass
,
queryUniqueDinerDTO
.
getStudentNo
());
public
List
<
DinerVO
>
getClientClassDiners
(
@RequestAttribute
(
INJECTED_CLIENT
)
final
SingleClientRpcResponse
client
,
@RequestAttribute
(
INJECTED_GRADE_CLASS
)
final
SingleGradeClassRpcResponse
gradeClass
,
@RequestBody
@Valid
final
DinerDTO
.
QueryUniqueDinerDTO
queryUniqueDinerDTO
)
{
return
dinerService
.
getClientClassDiner
s
(
client
,
gradeClass
,
queryUniqueDinerDTO
.
getStudentNo
());
}
@ApiOperation
(
value
=
"修改就餐人"
)
...
...
src/main/java/com/infoloop/tianting/logic/task/AutoCreateMealOrderTask.java
View file @
311015f
...
...
@@ -137,11 +137,11 @@ public class AutoCreateMealOrderTask {
final
var
client
=
clientMap
.
get
(
diner
.
getClientId
());
final
var
gradeClass
=
classMap
.
get
(
diner
.
getClassId
());
final
var
mpAccountDinerRef
=
mpAccountDinerRefMap
.
get
(
diner
.
getId
());
if
(
menu
==
null
||
client
==
null
||
gradeClass
==
null
||
mpAccountDinerRef
==
null
)
return
null
;
if
(
menu
==
null
||
client
==
null
||
gradeClass
==
null
)
return
null
;
return
MealOrderCreation
.
newBuilder
()
.
setClientId
(
diner
.
getClientId
())
.
setMenuId
(
menu
.
getId
())
.
setAccountId
(
mpAccountDinerRef
.
getAccountId
())
.
setAccountId
(
mpAccountDinerRef
==
null
?
0
:
mpAccountDinerRef
.
getAccountId
())
.
setOrderMethod
(
MealOrderOrderMethodEnum
.
MEAL_ORDER_METHOD_SYSTEM
)
.
setDinerId
(
diner
.
getId
())
.
setDinerName
(
diner
.
getName
())
...
...
@@ -161,10 +161,13 @@ public class AutoCreateMealOrderTask {
private
List
<
MenuSchedule
>
buildNextWeekMeals
(
ZonedDateTime
nextWeekStart
)
{
return
IntStream
.
range
(
0
,
5
)
.
mapToObj
(
i
->
MenuSchedule
.
newBuilder
()
.
setDate
(
nextWeekStart
.
plusDays
(
i
).
format
(
DateUtil
.
YYYY_MM_DD_LEFT_SYMBOL
))
.
setMenu
(
"A"
)
.
build
())
.
mapToObj
(
i
->
{
final
var
date
=
nextWeekStart
.
plusDays
(
i
);
return
MenuSchedule
.
newBuilder
()
.
setDate
(
date
.
format
(
DateUtil
.
YYYY_MM_DD_LEFT_SYMBOL
))
.
setMenu
(
"A"
)
.
build
();
})
.
toList
();
}
}
...
...
src/main/java/com/infoloop/tianting/model/dto/DinerDTO.java
View file @
311015f
...
...
@@ -17,7 +17,6 @@ public class DinerDTO {
public
static
class
QueryUniqueDinerDTO
{
@ApiModelProperty
(
value
=
"学号"
)
@NotEmpty
(
message
=
"学号不能为空"
)
private
String
studentNo
;
}
...
...
src/main/java/com/infoloop/tianting/service/DinerService.java
View file @
311015f
...
...
@@ -22,5 +22,5 @@ public interface DinerService {
void
deleteMpAccountDiner
(
SingleDinerRpcResponse
diner
);
DinerVO
getClientClassDiner
(
SingleClientRpcResponse
client
,
SingleGradeClassRpcResponse
gradeClass
,
String
studentNo
);
List
<
DinerVO
>
getClientClassDiners
(
SingleClientRpcResponse
client
,
SingleGradeClassRpcResponse
gradeClass
,
String
studentNo
);
}
...
...
src/main/java/com/infoloop/tianting/service/impl/DinerServiceImpl.java
View file @
311015f
...
...
@@ -4,7 +4,6 @@ import com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.exception.ClientEndExceptions
;
import
com.infoloop.tianting.exception.ErrorCodeEnum
;
import
com.infoloop.tianting.mealorderservice.DinerCreation
;
import
com.infoloop.tianting.mealorderservice.DinerModification
;
import
com.infoloop.tianting.mealorderservice.MpAccountDinerRefCreation
;
import
com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse
;
...
...
@@ -75,45 +74,30 @@ public class DinerServiceImpl implements DinerService {
}
final
var
singleClientRpcResponse
=
clientsByCodes
.
get
(
0
);
final
var
diners
=
mealOrderServiceRpcClient
.
queryDinersByCondition
(
loginInfo
.
getEnterpriseId
(),
List
.
of
(
singleClientRpcResponse
.
getId
()),
List
.
of
(
createDinerDTO
.
getClassId
()),
createDinerDTO
.
getStudentNo
());
if
(!
diners
.
isEmpty
())
{
if
(
diners
.
size
()
!=
1
)
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_NOT_FOUND
);
}
final
var
diner
=
diners
.
get
(
0
);
if
(!
diner
.
getName
().
equals
(
createDinerDTO
.
getName
()))
{
log
.
info
(
"createMpAccountDiner dinerId:{} name:{}, createName:{}"
,
diner
.
getId
(),
diner
.
getName
(),
createDinerDTO
.
getName
());
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_NAME_STUDENT_NO_NOT_MISMATCH
);
}
final
int
dinerId
=
diner
.
getId
();
final
var
mpAccountDinerRefs
=
mealOrderServiceRpcClient
.
queryMpAccountDinerRefsByCondition
(
loginInfo
.
getEnterpriseId
(),
List
.
of
(
loginInfo
.
getId
()),
List
.
of
(
dinerId
));
if
(!
mpAccountDinerRefs
.
isEmpty
())
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_ALREADY_EXISTS
);
}
else
{
final
var
mpAccountDinerRefCreation
=
MpAccountDinerRefCreation
.
newBuilder
()
.
setDinerId
(
dinerId
)
.
setAccountId
(
loginInfo
.
getId
())
.
build
();
final
var
mpAccountDinerRef
=
mealOrderServiceRpcClient
.
createMpAccountDinerRef
(
loginInfo
,
mpAccountDinerRefCreation
);
log
.
info
(
"createMpAccountDiner dinerId:{} mpAccountDinerRefId:{}"
,
dinerId
,
mpAccountDinerRef
.
getId
());
return
CreatedResult
.<
DinerVO
>
builder
().
id
(
dinerId
).
isCreated
(
mpAccountDinerRef
.
getIsCreated
()).
build
();
}
if
(
diners
.
isEmpty
())
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_NOT_FOUND
);
}
if
(
diners
.
size
()
!=
1
)
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_NOT_FOUND
);
}
final
var
diner
=
diners
.
get
(
0
);
if
(!
diner
.
getName
().
equals
(
createDinerDTO
.
getName
()))
{
log
.
info
(
"createMpAccountDiner dinerId:{} name:{}, createName:{}"
,
diner
.
getId
(),
diner
.
getName
(),
createDinerDTO
.
getName
());
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_NAME_STUDENT_NO_NOT_MISMATCH
);
}
final
var
dinerCreation
=
DinerCreation
.
newBuilder
()
.
setClientId
(
singleClientRpcResponse
.
getId
())
.
setClassId
(
createDinerDTO
.
getClassId
())
.
setStudentNo
(
createDinerDTO
.
getStudentNo
())
.
setName
(
createDinerDTO
.
getName
())
.
build
();
final
var
dinerResponse
=
mealOrderServiceRpcClient
.
createDiner
(
loginInfo
,
dinerCreation
);
if
(
dinerResponse
.
getIsCreated
())
{
final
int
dinerId
=
diner
.
getId
();
final
var
mpAccountDinerRefs
=
mealOrderServiceRpcClient
.
queryMpAccountDinerRefsByCondition
(
loginInfo
.
getEnterpriseId
(),
List
.
of
(
loginInfo
.
getId
()),
List
.
of
(
dinerId
));
if
(!
mpAccountDinerRefs
.
isEmpty
())
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
DINER_ALREADY_EXISTS
);
}
else
{
final
var
mpAccountDinerRefCreation
=
MpAccountDinerRefCreation
.
newBuilder
()
.
setDinerId
(
diner
Response
.
getId
()
)
.
setDinerId
(
diner
Id
)
.
setAccountId
(
loginInfo
.
getId
())
.
build
();
final
var
mpAccountDinerRef
=
mealOrderServiceRpcClient
.
createMpAccountDinerRef
(
loginInfo
,
mpAccountDinerRefCreation
);
log
.
info
(
"createMpAccountDiner dinerId:{} mpAccountDinerRefId:{}"
,
dinerResponse
.
getId
(),
mpAccountDinerRef
.
getId
());
log
.
info
(
"createMpAccountDiner dinerId:{} mpAccountDinerRefId:{}"
,
dinerId
,
mpAccountDinerRef
.
getId
());
return
CreatedResult
.<
DinerVO
>
builder
().
id
(
dinerId
).
isCreated
(
mpAccountDinerRef
.
getIsCreated
()).
build
();
}
return
CreatedResult
.<
DinerVO
>
builder
().
id
(
dinerResponse
.
getId
()).
isCreated
(
dinerResponse
.
getIsCreated
()).
build
();
}
@Override
...
...
@@ -164,23 +148,20 @@ public class DinerServiceImpl implements DinerService {
}
@Override
public
DinerVO
getClientClassDiner
(
SingleClientRpcResponse
client
,
SingleGradeClassRpcResponse
gradeClass
,
String
studentNo
)
{
public
List
<
DinerVO
>
getClientClassDiners
(
SingleClientRpcResponse
client
,
SingleGradeClassRpcResponse
gradeClass
,
String
studentNo
)
{
final
var
loginInfo
=
LoginContextHolder
.
getLoginInfo
();
final
var
diner
=
mealOrderServiceRpcClient
.
queryDinersByCondition
(
loginInfo
.
getEnterpriseId
(),
List
.
of
(
client
.
getId
()),
List
.
of
(
gradeClass
.
getId
()),
studentNo
);
if
(
diner
.
size
()
!=
1
)
{
return
null
;
}
return
DinerVO
.
builder
()
.
id
(
diner
.
get
(
0
).
getId
())
.
enterpriseId
(
diner
.
get
(
0
).
getEnterpriseId
())
.
clientId
(
diner
.
get
(
0
).
getClientId
())
final
var
diners
=
mealOrderServiceRpcClient
.
queryDinersByCondition
(
loginInfo
.
getEnterpriseId
(),
List
.
of
(
client
.
getId
()),
List
.
of
(
gradeClass
.
getId
()),
studentNo
);
return
diners
.
stream
().
map
(
diner
->
DinerVO
.
builder
()
.
id
(
diner
.
getId
())
.
enterpriseId
(
diner
.
getEnterpriseId
())
.
clientId
(
diner
.
getClientId
())
.
clientCode
(
client
.
getCode
())
.
clientName
(
client
.
getName
())
.
classId
(
diner
.
get
(
0
).
get
ClassId
())
.
classId
(
diner
.
getClassId
())
.
gradeName
(
gradeClass
.
getGradeName
())
.
className
(
gradeClass
.
getClassName
())
.
studentNo
(
diner
.
get
(
0
).
get
StudentNo
())
.
name
(
diner
.
get
(
0
).
get
Name
())
.
build
();
.
studentNo
(
diner
.
getStudentNo
())
.
name
(
diner
.
getName
())
.
build
()
).
toList
()
;
}
}
...
...
src/main/java/com/infoloop/tianting/service/impl/MealOrderServiceImpl.java
View file @
311015f
...
...
@@ -95,7 +95,7 @@ public class MealOrderServiceImpl implements MealOrderService {
}
final
var
latestMealMenuRecords
=
mealOrderServiceRpcClient
.
queryLatestMealMenuRecordsByClientIds
(
loginInfo
.
getEnterpriseId
(),
Collections
.
singletonList
(
dinerById
.
getClientId
()));
if
(
latestMealMenuRecords
.
isEmpty
())
{
throw
ClientEndExceptions
.
IncorrectRequestValue
.
build
(
ErrorCodeEnum
.
MEAL_MENU_NOT_FOUND
);
//
throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.MEAL_MENU_NOT_FOUND);
}
final
var
reserveDinerMealOrders
=
mealOrderServiceRpcClient
.
queryReserveMealOrdersByDinerIds
(
loginInfo
.
getEnterpriseId
(),
Collections
.
singletonList
(
createMealOrderDTO
.
getDinerId
()));
if
(!
reserveDinerMealOrders
.
isEmpty
())
{
...
...
@@ -103,7 +103,7 @@ public class MealOrderServiceImpl implements MealOrderService {
}
final
var
mealOrder
=
mealOrderServiceRpcClient
.
createMealOrder
(
loginInfo
,
MealOrderCreation
.
newBuilder
()
.
setClientId
(
dinerById
.
getClientId
())
.
setMenuId
(
latestMealMenuRecords
.
get
(
0
).
getId
())
.
setMenuId
(
latestMealMenuRecords
.
isEmpty
()
?
0
:
latestMealMenuRecords
.
get
(
0
).
getId
())
.
setAccountId
(
loginInfo
.
getId
())
.
setOrderMethod
(
MealOrderOrderMethodEnum
.
MEAL_ORDER_METHOD_MICRO
)
.
setDinerId
(
createMealOrderDTO
.
getDinerId
())
...
...
Please
register
or
login
to post a comment