zhuyifan

fix(service): 修复创建 diner时的逻辑错误

......@@ -67,12 +67,12 @@ public class DinerController {
}
@ApiOperation(value = "根据学校,班级和学号查询就餐人")
@PostMapping("/client/{clientId}/gradeclass/{gradeClassId}/diner")
@PostMapping("/client/{clientId}/gradeclass/{gradeClassId}/diners")
@ResponseStatus(HttpStatus.OK)
public DinerVO getClientClassDiner(@RequestAttribute(INJECTED_CLIENT) final SingleClientRpcResponse client,
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(client, gradeClass, queryUniqueDinerDTO.getStudentNo());
return dinerService.getClientClassDiners(client, gradeClass, queryUniqueDinerDTO.getStudentNo());
}
@ApiOperation(value = "修改就餐人")
......
......@@ -17,7 +17,6 @@ public class DinerDTO {
public static class QueryUniqueDinerDTO {
@ApiModelProperty(value = "学号")
@NotEmpty(message = "学号不能为空")
private String studentNo;
}
......
......@@ -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);
}
......
......@@ -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,7 +74,9 @@ 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.isEmpty()) {
throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.DINER_NOT_FOUND);
}
if (diners.size() != 1) {
throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.DINER_NOT_FOUND);
}
......@@ -98,23 +99,6 @@ public class DinerServiceImpl implements DinerService {
return CreatedResult.<DinerVO>builder().id(dinerId).isCreated(mpAccountDinerRef.getIsCreated()).build();
}
}
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 var mpAccountDinerRefCreation = MpAccountDinerRefCreation.newBuilder()
.setDinerId(dinerResponse.getId())
.setAccountId(loginInfo.getId())
.build();
final var mpAccountDinerRef = mealOrderServiceRpcClient.createMpAccountDinerRef(loginInfo, mpAccountDinerRefCreation);
log.info("createMpAccountDiner dinerId:{} mpAccountDinerRefId:{}", dinerResponse.getId(), mpAccountDinerRef.getId());
}
return CreatedResult.<DinerVO>builder().id(dinerResponse.getId()).isCreated(dinerResponse.getIsCreated()).build();
}
@Override
public List<GradeClassVO> getClientGradeClasses(SingleClientRpcResponse client) {
......@@ -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).getClassId())
.classId(diner.getClassId())
.gradeName(gradeClass.getGradeName())
.className(gradeClass.getClassName())
.studentNo(diner.get(0).getStudentNo())
.name(diner.get(0).getName())
.build();
.studentNo(diner.getStudentNo())
.name(diner.getName())
.build()).toList();
}
}
......
......@@ -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())
......