首页 > 解决方案 > 构建器模式功能无法在 SpringBoot Kotlin 应用程序中工作

问题描述

我有用户类配置文件类并且我想使用构建器模式并传递用户,配置文件类数据但是当使用用户类调用构建器函数时,构建器函数会抛出错误以导入构建器函数的根文件,但它显示了很多导入文件需要为构建器功能导入哪个文件 在此处输入图像描述

FacebookService.kt

package com.nilmani.mychat.service

import com.nilmani.mychat.client.FacebookClient
import com.nilmani.mychat.ezception.InternalServerException
import com.nilmani.mychat.model.InstaUserDetails
import com.nilmani.mychat.model.Profile
import com.nilmani.mychat.model.Role
import com.nilmani.mychat.model.User
import com.nilmani.mychat.model.facebook.FaceBookUser
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.data.mongodb.core.aggregation.MergeOperation.UniqueMergeId.id
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.stereotype.Service
import java.util.*


@Service
class FacebookService {
    @Autowired
    private lateinit var facebookClient: FacebookClient

    @Autowired
    private lateinit var userService: UserService

    @Autowired
    private lateinit var jwtTokenProvider: JwtTokenProvider

    fun loginUser(fbAccessToken: String) :String {
        val faceBookUser = facebookClient.getUser(fbAccessToken)
        return userService.findById(faceBookUser.id)
            .or { Optional.ofNullable(userService.register(convertTo(faceBookUser), Role.FACEBOOK_USER)) }
            .map { user: User ->
                InstaUserDetails(
                    user.id,
                    user.userName,
                    user.password,
                    user.email,
                    user.createdAt,
                    user.updatedAt,
                    user.active,
                    user.userProfile,
                    user.role
                )
            }
            .map { userDetails ->
                UsernamePasswordAuthenticationToken(
                    userDetails, null, userDetails.getAuthorities()
                )
            }
            .map(jwtTokenProvider::generateToken)
            .orElseThrow { InternalServerException("unable to login facebook user id " + faceBookUser?.id) }
    }

    private fun convertTo(faceBookUser: FaceBookUser): User {
        return User.builder(
            id = faceBookUser.id,
            email = faceBookUser.email,
            username = generateUsername(faceBookUser.firstName,faceBookUser.lastName)
                .userProfile(
                    Profile.builder(
                        displayName(java.lang.String.format("%s %s",faceBookUser.firstName,faceBookUser.lastName))
                    )
                        .profilePictureUrl(faceBookUser.picture.pictureData.url)
                        .build()
                )
                .build()

        )
    }

    private fun generateUsername(firstName: String, lastName: String): Any {
        val rand =Random()
        val number = rand.nextInt(999999)
        return String.format("%s.%s.%06d",firstName,lastName,number)

    }

}

我在 convertTo() 遇到问题。我在图片中定义的红色彩色文本中出现错误

convertTo 函数的 Builder() 行下发生错误

return User.builder(
            id = faceBookUser.id,
            email = faceBookUser.email,
            username = generateUsername(faceBookUser.firstName,faceBookUser.lastName)
                .userProfile(
                    Profile.builder(
                        displayName(java.lang.String.format("%s %s",faceBookUser.firstName,faceBookUser.lastName))
                    )
                        .profilePictureUrl(faceBookUser.picture.pictureData.url)
                        .build()
                )
                .build()

标签: kotlin

解决方案


推荐阅读