style: Laravel Pint 코드 포맷팅 적용
- PSR-12 스타일 가이드 준수 - 302개 파일 스타일 이슈 자동 수정 - 코드 로직 변경 없음 (포맷팅만)
This commit is contained in:
@@ -2,16 +2,16 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use App\Models\Tenants\Tenant;
|
||||
use App\Models\Members\UserTenant;
|
||||
use App\Models\Tenants\Tenant;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class TenantService
|
||||
{
|
||||
/**
|
||||
* 한글 자음 배열
|
||||
*/
|
||||
private const INITIALS = ['ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'];
|
||||
private const INITIALS = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
|
||||
|
||||
/**
|
||||
* 대소문자를 구분하지 않는 36진수 문자열로 변경
|
||||
@@ -21,9 +21,6 @@ class TenantService
|
||||
/**
|
||||
* 한글 업체명에서 초성 약어를 추출합니다.
|
||||
* 외부 라이브러리 없이 자체적으로 구현했습니다.
|
||||
*
|
||||
* @param string $tenantName
|
||||
* @return string
|
||||
*/
|
||||
private function getInitials(string $tenantName): string
|
||||
{
|
||||
@@ -42,19 +39,17 @@ private function getInitials(string $tenantName): string
|
||||
// 한글이 아닌 문자는 무시합니다.
|
||||
}
|
||||
|
||||
$koreanInitials = ['ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'];
|
||||
$englishInitials = ['G','KK','N','D','TT','R','M','B','BB','S','SS','O','J','JJ','CH','K','T','P','H'];
|
||||
$koreanInitials = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
|
||||
$englishInitials = ['G', 'KK', 'N', 'D', 'TT', 'R', 'M', 'B', 'BB', 'S', 'SS', 'O', 'J', 'JJ', 'CH', 'K', 'T', 'P', 'H'];
|
||||
$initials = strtr($initials, array_combine($koreanInitials, $englishInitials));
|
||||
|
||||
$initials = str_replace(' ', '', $initials);
|
||||
|
||||
return strtoupper($initials);
|
||||
}
|
||||
|
||||
/**
|
||||
* 10진수 숫자를 4자리 36진수 문자열로 변환합니다.
|
||||
*
|
||||
* @param int $number
|
||||
* @return string
|
||||
*/
|
||||
private function toBase36(int $number): string
|
||||
{
|
||||
@@ -64,7 +59,7 @@ private function toBase36(int $number): string
|
||||
// **수정된 부분: 4자리 고정**
|
||||
for ($i = 0; $i < 4; $i++) {
|
||||
$remainder = $number % $base;
|
||||
$result = $this->base36Chars[$remainder] . $result;
|
||||
$result = $this->base36Chars[$remainder].$result;
|
||||
$number = floor($number / $base);
|
||||
}
|
||||
|
||||
@@ -73,9 +68,6 @@ private function toBase36(int $number): string
|
||||
|
||||
/**
|
||||
* 36진수 문자열을 10진수 숫자로 변환합니다.
|
||||
*
|
||||
* @param string $base36String
|
||||
* @return int
|
||||
*/
|
||||
private function fromBase36(string $base36String): int
|
||||
{
|
||||
@@ -99,9 +91,6 @@ private function fromBase36(string $base36String): int
|
||||
|
||||
/**
|
||||
* 한글 업체명 기반으로 순환형 테넌트 코드를 생성합니다.
|
||||
*
|
||||
* @param string $tenantName
|
||||
* @return string
|
||||
*/
|
||||
public function generateTenantCode(string $tenantName): string
|
||||
{
|
||||
@@ -138,41 +127,40 @@ public function generateTenantCode(string $tenantName): string
|
||||
$formattedSequence = $this->toBase36($nextSequence);
|
||||
|
||||
// 5. 초성 약어와 순번을 조합하여 최종 코드 생성
|
||||
$code = $initials . $formattedSequence;
|
||||
$code = $initials.$formattedSequence;
|
||||
|
||||
return $code;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 테넌트 목록 조회 (페이징)
|
||||
*
|
||||
* @param array $params [page, size, search 등]
|
||||
* @param array $params [page, size, search 등]
|
||||
*/
|
||||
public static function getTenants(array $params = [])
|
||||
{
|
||||
$tenantId = $params['tenant_id'] ?? app('tenant_id');
|
||||
|
||||
if (!$tenantId) {
|
||||
if (! $tenantId) {
|
||||
// 현재 사용자 기본 테넌트 조회
|
||||
$apiUser = app('api_user');
|
||||
$userTenant = UserTenant::where('user_id', $apiUser)
|
||||
->where('is_default', 1)
|
||||
->first();
|
||||
|
||||
if (!$userTenant) {
|
||||
if (! $userTenant) {
|
||||
return ['error' => '활성(기본) 테넌트를 찾을 수 없습니다.', 'code' => 404];
|
||||
}
|
||||
$tenantId = $userTenant->tenant_id;
|
||||
}
|
||||
|
||||
$pageNo = isset($params['page']) ? (int)$params['page'] : 1;
|
||||
$pageSize = isset($params['size']) ? (int)$params['size'] : 10;
|
||||
$pageNo = isset($params['page']) ? (int) $params['page'] : 1;
|
||||
$pageSize = isset($params['size']) ? (int) $params['size'] : 10;
|
||||
|
||||
$query = Tenant::query();
|
||||
|
||||
// (옵션) 간단 검색 예시: 회사명/코드
|
||||
if (!empty($params['q'])) {
|
||||
if (! empty($params['q'])) {
|
||||
$q = trim($params['q']);
|
||||
$query->where(function ($qq) use ($q) {
|
||||
$qq->where('company_name', 'like', "%{$q}%")
|
||||
@@ -182,8 +170,8 @@ public static function getTenants(array $params = [])
|
||||
}
|
||||
|
||||
// (옵션) 정렬
|
||||
if (!empty($params['sort']) && in_array($params['sort'], ['company_name','code','created_at','updated_at'])) {
|
||||
$dir = (!empty($params['dir']) && in_array(strtolower($params['dir']), ['asc','desc'])) ? $params['dir'] : 'desc';
|
||||
if (! empty($params['sort']) && in_array($params['sort'], ['company_name', 'code', 'created_at', 'updated_at'])) {
|
||||
$dir = (! empty($params['dir']) && in_array(strtolower($params['dir']), ['asc', 'desc'])) ? $params['dir'] : 'desc';
|
||||
$query->orderBy($params['sort'], $dir);
|
||||
} else {
|
||||
$query->orderByDesc('id');
|
||||
@@ -199,21 +187,21 @@ public static function getTenants(array $params = [])
|
||||
* - params.tenant_id 가 있으면 해당 테넌트
|
||||
* - 없으면 현재 사용자 기본(is_default=1) 테넌트
|
||||
*
|
||||
* @param array $params [tenant_id]
|
||||
* @param array $params [tenant_id]
|
||||
*/
|
||||
public static function getTenant(array $params = [])
|
||||
{
|
||||
|
||||
$tenantId = $params['tenant_id'] ?? app('tenant_id');
|
||||
|
||||
if (!$tenantId) {
|
||||
if (! $tenantId) {
|
||||
// 현재 사용자 기본 테넌트 조회
|
||||
$apiUser = app('api_user');
|
||||
$userTenant = UserTenant::where('user_id', $apiUser)
|
||||
->where('is_default', 1)
|
||||
->first();
|
||||
|
||||
if (!$userTenant) {
|
||||
if (! $userTenant) {
|
||||
return ['error' => '활성(기본) 테넌트를 찾을 수 없습니다.', 'code' => 404];
|
||||
}
|
||||
$tenantId = $userTenant->tenant_id;
|
||||
@@ -221,7 +209,7 @@ public static function getTenant(array $params = [])
|
||||
|
||||
// 필요한 컬럼만 선택 (원하면 조정)
|
||||
$query = Tenant::query()
|
||||
->select('id','company_name','code','email','phone','address','business_num','corp_reg_no','ceo_name','homepage','fax','logo','admin_memo','options','created_at','updated_at')
|
||||
->select('id', 'company_name', 'code', 'email', 'phone', 'address', 'business_num', 'corp_reg_no', 'ceo_name', 'homepage', 'fax', 'logo', 'admin_memo', 'options', 'created_at', 'updated_at')
|
||||
->where('id', $tenantId);
|
||||
|
||||
return $query->first();
|
||||
@@ -229,28 +217,25 @@ public static function getTenant(array $params = [])
|
||||
|
||||
/**
|
||||
* 테넌트 등록
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public static function storeTenants(array $params = [])
|
||||
{
|
||||
|
||||
$validator = Validator::make($params, [
|
||||
'company_name' => 'required|string|max:255',
|
||||
'email' => 'nullable|email|max:100',
|
||||
'phone' => 'nullable|string|max:30',
|
||||
'address' => 'nullable|string|max:255',
|
||||
'email' => 'nullable|email|max:100',
|
||||
'phone' => 'nullable|string|max:30',
|
||||
'address' => 'nullable|string|max:255',
|
||||
'business_num' => 'nullable|string|max:30',
|
||||
'corp_reg_no' => 'nullable|string|max:30',
|
||||
'ceo_name' => 'nullable|string|max:100',
|
||||
'homepage' => 'nullable|string|max:255',
|
||||
'fax' => 'nullable|string|max:50',
|
||||
'logo' => 'nullable|string|max:255',
|
||||
'admin_memo' => 'nullable|string',
|
||||
'options' => 'nullable', // JSON 문자열 저장이라면 'nullable|json'
|
||||
'corp_reg_no' => 'nullable|string|max:30',
|
||||
'ceo_name' => 'nullable|string|max:100',
|
||||
'homepage' => 'nullable|string|max:255',
|
||||
'fax' => 'nullable|string|max:50',
|
||||
'logo' => 'nullable|string|max:255',
|
||||
'admin_memo' => 'nullable|string',
|
||||
'options' => 'nullable', // JSON 문자열 저장이라면 'nullable|json'
|
||||
]);
|
||||
|
||||
|
||||
if ($validator->fails()) {
|
||||
return ['error' => $validator->errors()->first(), 'code' => 400];
|
||||
}
|
||||
@@ -275,15 +260,14 @@ public static function storeTenants(array $params = [])
|
||||
->where('is_default', 1)
|
||||
->update(['is_default' => 0]);
|
||||
|
||||
|
||||
// 성성된 테넌트를 나의 테넌트로 셋팅
|
||||
$apiUser = app('api_user');
|
||||
UserTenant::create([
|
||||
'user_id' => $apiUser,
|
||||
'tenant_id' => $tenant->id,
|
||||
'is_active' => 0,
|
||||
'user_id' => $apiUser,
|
||||
'tenant_id' => $tenant->id,
|
||||
'is_active' => 0,
|
||||
'is_default' => 1,
|
||||
'joined_at' => now(),
|
||||
'joined_at' => now(),
|
||||
]);
|
||||
|
||||
// 생성된 리소스를 그대로 반환 (목록 카드용 요약 원하면 컬럼 제한)
|
||||
@@ -292,32 +276,30 @@ public static function storeTenants(array $params = [])
|
||||
|
||||
/**
|
||||
* 테넌트 수정
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public static function updateTenant(array $params = [])
|
||||
{
|
||||
|
||||
$validator = Validator::make($params, [
|
||||
'company_name' => 'sometimes|string|max:255',
|
||||
'email' => 'sometimes|nullable|email|max:100',
|
||||
'phone' => 'sometimes|nullable|string|max:30',
|
||||
'address' => 'sometimes|nullable|string|max:255',
|
||||
'email' => 'sometimes|nullable|email|max:100',
|
||||
'phone' => 'sometimes|nullable|string|max:30',
|
||||
'address' => 'sometimes|nullable|string|max:255',
|
||||
'business_num' => 'sometimes|nullable|string|max:30',
|
||||
'corp_reg_no' => 'sometimes|nullable|string|max:30',
|
||||
'ceo_name' => 'sometimes|nullable|string|max:100',
|
||||
'homepage' => 'sometimes|nullable|string|max:255',
|
||||
'fax' => 'sometimes|nullable|string|max:50',
|
||||
'logo' => 'sometimes|nullable|string|max:255',
|
||||
'admin_memo' => 'sometimes|nullable|string',
|
||||
'options' => 'sometimes|nullable', // JSON 문자열이면 'sometimes|nullable|json'
|
||||
'corp_reg_no' => 'sometimes|nullable|string|max:30',
|
||||
'ceo_name' => 'sometimes|nullable|string|max:100',
|
||||
'homepage' => 'sometimes|nullable|string|max:255',
|
||||
'fax' => 'sometimes|nullable|string|max:50',
|
||||
'logo' => 'sometimes|nullable|string|max:255',
|
||||
'admin_memo' => 'sometimes|nullable|string',
|
||||
'options' => 'sometimes|nullable', // JSON 문자열이면 'sometimes|nullable|json'
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return ['error' => $validator->errors()->first(), 'code' => 400];
|
||||
}
|
||||
|
||||
$payload = $validator->validated();
|
||||
$payload = $validator->validated();
|
||||
$tenantId = app('tenant_id') ?? null;
|
||||
unset($payload['tenant_id']);
|
||||
|
||||
@@ -326,7 +308,7 @@ public static function updateTenant(array $params = [])
|
||||
}
|
||||
|
||||
$tenant = Tenant::find($tenantId);
|
||||
if (!$tenant) {
|
||||
if (! $tenant) {
|
||||
return ['error' => '테넌트를 찾을 수 없습니다.', 'code' => 404];
|
||||
}
|
||||
|
||||
@@ -338,17 +320,17 @@ public static function updateTenant(array $params = [])
|
||||
/**
|
||||
* 테넌트 삭제(탈퇴) — 소프트 삭제 가정
|
||||
*
|
||||
* @param int $tenant_id
|
||||
* @param int $tenant_id
|
||||
*/
|
||||
public static function destroyTenant(array $params = [])
|
||||
{
|
||||
$tenantId = $params['tenant_id'] ?? app('tenant_id');
|
||||
if (!$tenantId) {
|
||||
if (! $tenantId) {
|
||||
return ['error' => 'tenant_id가 필요합니다.', 'code' => 400];
|
||||
}
|
||||
|
||||
$tenant = Tenant::find($tenantId);
|
||||
if (!$tenant) {
|
||||
if (! $tenant) {
|
||||
return ['error' => '테넌트를 찾을 수 없습니다.', 'code' => 404];
|
||||
}
|
||||
|
||||
@@ -360,7 +342,7 @@ public static function destroyTenant(array $params = [])
|
||||
/**
|
||||
* 테넌트 복구 (소프트 삭제된 레코드 대상)
|
||||
*
|
||||
* @param array $params [tenant_id:int]
|
||||
* @param array $params [tenant_id:int]
|
||||
*/
|
||||
public static function restoreTenant(array $params = [])
|
||||
{
|
||||
@@ -368,7 +350,7 @@ public static function restoreTenant(array $params = [])
|
||||
|
||||
// 소프트 삭제 포함 조회
|
||||
$tenant = Tenant::withTrashed()->find($tenantId);
|
||||
if (!$tenant) {
|
||||
if (! $tenant) {
|
||||
return ['error' => '테넌트를 찾을 수 없습니다.', 'code' => 404];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user