zhuyifan

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

......@@ -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);
}
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()) {
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(dinerResponse.getId())
.setDinerId(dinerId)
.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
......