Электронная почта Java: Как я могу отправить электронную почту перед сохранением и возвращением объекта? - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю учетную запись, а затем отправляю письмо с паролем.Прямо сейчас он сначала отправляет электронное письмо, а затем сохраняет пользователя.Как я могу изменить порядок, потому что после возвращения я не могу использовать функцию электронной почты.

Как я могу обойти это?Должен ли я создать другую функцию для этих двух?

public WorkDetail setWorkerData(PatchWorkerRequest request, User user, WorkDetail workDetail) {

        if (request.getName() != null) {
            user.setName(request.getName());
        }

        if (request.getIdCode() != null) {
            user.setIdCode(request.getIdCode());
        }

        if (request.getEmail() != null) {
            user.setEmail(request.getEmail());
        }

        if (request.getPhone() != null) {
            user.setPhone(request.getPhone());
        }

        if (request.getStatus() != null) {
            user.setStatus(request.getStatus());
        }

        // Work details

        if (request.getJobRelation() != null) {
            workDetail.setJobRelation(request.getJobRelation());
        }

        if (request.getSalary() != null) {
            workDetail.setSalary(request.getSalary());
        }

        if (request.getDistricts() != null) {
            workDetail.setDistricts(request.getDistricts());
        }

        if (request.getCompetences() != null) {
            workDetail.setCompetences(request.getCompetences());
        }

        workDetail = workDetailRepository.save(workDetail);
        user.setWorkDetail(workDetail);
        workDetail.setUser(user);


        return workDetailRepository.save(workDetail);
    }

    public WorkDetail createWorker(PatchWorkerRequest request) {
        WorkDetail workDetail = new WorkDetail();
        User user = new User();
        String generatedPassword = userService.generatePassword(8);
        user.setPassword(passwordEncoder.encode(generatedPassword));
        emailService.sendMail("SYDA", new String[]{request.getEmail()},
                "SYDA: teile loodi kasutaja",
                "Teile loodi SYDA süsteemi kasutaja. Teie parool on: " + generatedPassword +
                        "\nSisse saate logida kasutades emaili: " + request.getEmail());
        return this.setWorkerData(request, user, workDetail);
    }

1 Ответ

0 голосов
/ 27 февраля 2019

Вместо

emailService.sendMail("SYDA", new String[]{request.getEmail()},
            "SYDA: teile loodi kasutaja",
            "Teile loodi SYDA süsteemi kasutaja. Teie parool on: " + generatedPassword +
                    "\nSisse saate logida kasutades emaili: " + request.getEmail());
return this.setWorkerData(request, user, workDetail);

запись

WorkDetail workDetailSaved = this.setWorkerData(request, user, workDetail);
emailService.sendMail("SYDA", new String[]{request.getEmail()},
            "SYDA: teile loodi kasutaja",
            "Teile loodi SYDA süsteemi kasutaja. Teie parool on: " + generatedPassword +
                    "\nSisse saate logida kasutades emaili: " + request.getEmail());
return workDetailSaved;

(как предложено Stultuske)


Кстати: я бы полностью переписал «setWorkerData (request, user, workDetail)»метод и переименуйте его в «buildWorkDetail (request, user)», который создает только экземпляр WorkDetail.Также я бы удалил часть «save» оттуда и сделал бы это после создания WorkDetail.

Пример:

public WorkDetail createWorker(PatchWorkerRequest request) {
    User user = buildUser(request); // builds a new User-instance from the request
    String generatedPassword = userService.generatePassword(8);
    user.setPassword(passwordEncoder.encode(generatedPassword));

    WorkDetail workDetail = buildWorkDetail(request, user); // builds a new WorkDetail-instance from the request
    workDetail.setUser(user);
    workDetailRepository.save(workDetail);
    user.setWorkDetail(workDetail);

    emailService.sendMail("SYDA", new String[]{request.getEmail()},
                "...",
                "...);
    return workDetail;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...