본문 바로가기

카테고리 없음

24.02.15 스토어 클래스 등 만들기, 로그인 화면 없애기

리소스에 있는 application.properties를 .yml로 바꾸고  이런 식으로

spring:
 datasource:
  url: jdbc:postgresql://aws-0-ap-northeast-2.pooler.supabase.com:5432/postgres
  username: postgres.qermofvsrmzsctvcmwhr
  password: akehzkal13!

이제 어제 만든 데이터베이스랑 연결이 완료됬다.

 

package com.teamsparta.hoop.model

import jakarta.persistence.*

@Entity
@Table(name = "store")
data class Store(

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int,

@Column(name = "created_at")
val createdAt: String,

@Column(name = "shop_name")
val shopName: String,

@Column(name = "mall_name")
val mallName: String,

@Column(name = "domain")
val domain: String,

@Column(name = "email")
val email: String,

@Column(name = "phone_number")
val phoneNumber: String,

@Column(name = "business_type")
val businessType: String,

@Column(name = "address")
val address: String,

@Column(name = "sale_number")
val saleNumber: String,

@Column(name = "first_report_date")
val firstReportDate: String,

@Column(name = "situation")
val situation: String,

@Column(name = "total_evaluation")
val totalEvaluation: Int,

@Column(name = "withdrawal_evaluation")
val withdrawalEvaluation: Int,

@Column(name = "business_information_evaluation")
val businessInformationEvaluation: Int,

@Column(name = "approval_evaluation")
val approvalEvaluation: Int,

@Column(name = "terms_evaluation")
val termsEvaluation: Int,

@Column(name = "privacy_evaluation")
val privacyEvaluation: Int,

@Column(name = "main_item")
val mainItem: String,

@Column(name = "withdraw_possible")
val withdrawPossible: String,

@Column(name = "initial_screen")
val initialScreen: String,

@Column(name = "payment")
val payment: String,

@Column(name = "term_compliance")
val termCompliance: String,

@Column(name = "privacy_statement")
val privacyStatement: String,

@Column(name = "request_term_over")
val requestTermOver: String,

@Column(name = "safety_service")
val safetyService: String,

@Column(name = "security_server")
val securityServer: String,

@Column(name = "certification_mark")
val certificationMark: String,

@Column(name = "delivery_date")
val deliveryDate: String,

@Column(name = "refund_delivery_fee")
val refundDeliveryFee: String,

@Column(name = "customer_complaint_board")
val customerComplaintBoard: String,

@Column(name = "cancel_membership")
val cancelMembership: String,

@Column(name = "site_opening")
val siteOpening: String,

@Column(name = "monitoring_date")
val monitoringDate: String
)

 

그리고 어제의 노가다의 산물대로 노가다를 해서 store엔티티를 만든다. 그리고 

 

  • 전체평가’ 필터 조회와 ‘업소상태’ 필터 조회(2개 필터 동시 적용, 각각 1개씩 적용) 상위 10개 리스트 보여주기를 만들어요. 조회 조건은 다음을 참고해 주세요.
    • ‘전체평가’ 필터 조회
      • ‘전체평가’는 0점 ~ 3점 으로 이루어져 있고 점수를 입력하여 해당 업체 리스트만 조회
      • 예) ‘전체평가’가 3점인 경우만 리스트 조회
    • ‘업소상태’ 필터 조회
      • 사이트운영중단, 휴업중, 광고용(홍보용), 등록정보불일치, 사이트폐쇄, 영업중, 확인안됨 상태 중 1개를 선택하여 해당 업체 리스트만 조회
    • ‘모니터링날짜’의 내림차순

이걸 만들어야 하는데, 아마 get 항목을 3개를 만들어야 할거 같다. 즉, total_evaluation필터, situation 필터, 그리고 그 둘다를 하는걸로 말이다.

 

package com.teamsparta.hoop.dto

import com.teamsparta.hoop.model.Store

data class StoreDto(
    val id: Int,
    val shopName: String,
    val mallName: String,
    val domain: String,
    val email: String,
    val phoneNumber: String,
    val businessType: String,
    val address: String,
    val totalEvaluation: Int,
    val situation: String,
    val monitoringDate: String
) {
    constructor(store: Store) : this(
        id = store.id,
        shopName = store.shopName,
        mallName = store.mallName,
        domain = store.domain,
        email = store.email,
        phoneNumber = store.phoneNumber,
        businessType = store.businessType,
        address = store.address,
        totalEvaluation = store.totalEvaluation,
        situation = store.situation,
        monitoringDate = store.monitoringDate
    )
}

 

interface StoreRepository : JpaRepository<Store, Int>

 

interface StoreService {
    fun getStoresByTotalEvaluation(rating: Int): List<StoreDto>
    fun getStoresBySituation(status: String): List<StoreDto>
    fun getStoresByTotalEvaluationAndSituation(rating: Int, status: String): List<StoreDto>
}
package com.teamsparta.hoop.service

import com.teamsparta.hoop.dto.StoreDto
import com.teamsparta.hoop.repository.StoreRepository
import org.springframework.stereotype.Service

@Service
class StoreServiceImpl(private val storeRepository: StoreRepository) : StoreService {

    override fun getStoresByTotalEvaluation(rating: Int): List<StoreDto> {
        return storeRepository.findAll()
            .filter { it.totalEvaluation == rating }
            .sortedByDescending { it.monitoringDate }
            .map { StoreDto(it) }
    }

    override fun getStoresBySituation(status: String): List<StoreDto> {
        return storeRepository.findAll()
            .filter { it.situation == status }
            .sortedByDescending { it.monitoringDate }
            .map { StoreDto(it) }
    }

    override fun getStoresByTotalEvaluationAndSituation(rating: Int, status: String): List<StoreDto> {
        return storeRepository.findAll()
            .filter { it.totalEvaluation == rating && it.situation == status }
            .sortedByDescending { it.monitoringDate }
            .map { StoreDto(it) }
    }
}

이곳에서 모니터링 기준 내림차순이 도입된다.

package com.teamsparta.hoop.controller

import com.teamsparta.hoop.dto.StoreDto
import com.teamsparta.hoop.service.StoreService
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/api/stores")
class StoreController(
    private val storeService: StoreService
) {
    @GetMapping("/rating")
    fun getStoresByTotalEvaluation(
        @RequestParam rating: Int
    ): ResponseEntity<List<StoreDto>> {
        val stores = storeService.getStoresByTotalEvaluation(rating)
        return ResponseEntity.ok(stores)
    }

    @GetMapping("/status")
    fun getStoresBySituation(
        @RequestParam status: String
    ): ResponseEntity<List<StoreDto>> {
        val stores = storeService.getStoresBySituation(status)
        return ResponseEntity.ok(stores)
    }

    @GetMapping("/rating-status")
    fun getStoresByTotalEvaluationAndSituation(
        @RequestParam rating: Int,
        @RequestParam status: String
    ): ResponseEntity<List<StoreDto>> {
        val stores = storeService.getStoresByTotalEvaluationAndSituation(rating, status)
        return ResponseEntity.ok(stores)
    }
}

여기서 get이 총합, 상태, 둘다를 볼수있는 get이 완성된다. 

 

 

 

 

 

시험삼아 돌려봤더니 


오류: cohttp://m.teamsparta.hoop.HoopApplication 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.
public static void main(String[] args)
또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다.

 

라는 오류가 나왔는데, test에 나온걸 돌려서 그런거였다.

 

그래서 다시 돌렸더니, Please sign in 창이 나온다! 인증인가는 어렵다.. 인증인가는 이번 프로젝트에 없는데 저번 과제의 것을 활용했더니 이런 결과가 나왔다.

 

거기에다 새로운 브랜치로 옮기려는데 옮겨지지 않아서 확인해보니, 이상하게도 연결이 저번 과제의 것으로 되어있는게 아닌가?? 그래서검색해서 알아낸 git remote set-url origin https://github.com/jeawonlee0327/hoop.git 를 쓰고 git checkout SW으로 이동했다.

 

@Configuration
class SwaggerConfig {

    @Bean
    fun openAPI(): OpenAPI {
        return OpenAPI()
            .components(Components())
            .info(
                Info()
                    .title("Course API")
                    .description("Course API schema")
                    .version("1.0.0")
            )
    }
}

 

참고로 이것도 집어넣어서 스웨거가 작동되도록 했다.

 

방법을 찾았다!!

@SpringBootApplication
class HoopApplication

fun main(args: Array<String>) {
    runApplication<HoopApplication>(*args)
}

이녀석을
@SpringBootApplication(exclude = [SecurityAutoConfiguration::class])
class HoopApplication

fun main(args: Array<String>) {
    runApplication<HoopApplication>(*args)
}

이러면 해결이 된다!

 

https://hstory0208.tistory.com/entry/Spring-Security-%EA%B8%B0%EB%B3%B8-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%ED%99%94%EB%A9%B4-%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94-%EA%B0%84%EB%8B%A8%ED%95%9C-%EB%B0%A9%EB%B2%95

이글 쓴분 고마워요!!