feat: project skeleton + DB migrations V1-V12 + ga-common framework

- Gradle multi-module: ga-common, ga-core, ga-api, ga-batch, ga-admin
- Flyway V1-V12: org/product/rule/receive/ledger/settle/batch/code/menu/system + seed
- ga-common (complete):
  - model: ApiResponse, PageResponse, SearchParam, TreeNode
  - exception: ErrorCode, BizException, GlobalExceptionHandler
  - annotation + aop: @RequirePermission, @DataChangeLog, ApiLog
  - auth + security: JWT, SecurityConfig
  - mybatis: BaseMapper, EncryptTypeHandler, JsonTypeHandler, AuditInterceptor
  - code (Redis cached) / menu (RBAC tree) / file / system / notification
  - excel: SXSSF+Cursor export, SAX+batch import (1M/700K rows)
  - util: Date/Money/Mask/Encrypt/Security
This commit is contained in:
GA Pro
2026-05-09 21:29:18 +09:00
parent c716f5eb70
commit cef4e48e27
100 changed files with 4914 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
// ga-api: REST API (실행 모듈)
apply plugin: 'org.springframework.boot'
bootJar {
enabled = true
archiveFileName = 'ga-api.jar'
mainClass = 'com.ga.api.GaApiApplication'
}
jar.enabled = false
dependencies {
implementation project(':ga-core')
}
@@ -0,0 +1,15 @@
package com.ga.api;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* GA 수수료 정산 API 서버.
* 컴포넌트 스캔: com.ga 패키지 (common/core/api 모두 포함)
*/
@SpringBootApplication(scanBasePackages = {"com.ga"})
public class GaApiApplication {
public static void main(String[] args) {
SpringApplication.run(GaApiApplication.class, args);
}
}
+56
View File
@@ -0,0 +1,56 @@
spring:
application:
name: ga-api
profiles:
active: local
datasource:
url: jdbc:postgresql://localhost:5432/ga
username: ga
password: ga
driver-class-name: org.postgresql.Driver
flyway:
enabled: true
locations: classpath:db/migration
baseline-on-migrate: true
data:
redis:
host: localhost
port: 6379
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
server:
port: 8080
servlet:
encoding:
charset: UTF-8
force: true
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath*:mapper/**/*.xml
type-aliases-package: com.ga.core.vo,com.ga.common.model
pagehelper:
helper-dialect: postgresql
reasonable: true
support-methods-arguments: true
springdoc:
swagger-ui:
path: /swagger-ui.html
ga:
jwt:
secret: ${JWT_SECRET:change-me-please-this-must-be-at-least-256-bits-long-secret-key}
access-token-expire: 7200000
refresh-token-expire: 604800000
encrypt:
key: ${ENCRYPT_KEY:0123456789abcdef0123456789abcdef}
logging:
level:
com.ga: DEBUG
org.mybatis: INFO