Prechádzať zdrojové kódy

fix(admin): 회사정보 은행코드 오류 수정 (tossBanks 정의 누락)

- getBanks() 은행/증권사 코드 맵 추가 (blog TossTrait 참고)
- index에 banks 전달 → 은행 select 정상 표시
- store 저장 시 미존재 코드 방어

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
admin@web.or.kr 2 dní pred
rodič
commit
5a6c5cc648

+ 28 - 3
app/Http/Controllers/Admin/Config/Setting/CompanyController.php

@@ -9,10 +9,12 @@ use App\Models\Config;
 class CompanyController extends Controller
 {
     private Config $configModel;
+    private array $tossBanks;
 
     public function __construct(Config $config)
     {
         $this->configModel = $config;
+        $this->tossBanks = $this->getBanks();
     }
 
     /**
@@ -23,7 +25,8 @@ class CompanyController extends Controller
     public function index()
     {
         return view('admin.config.setting.company', [
-            'config' => $this->configModel->getAllMeta()
+            'config' => $this->configModel->getAllMeta(),
+            'banks' => $this->tossBanks
         ]);
     }
 
@@ -75,8 +78,8 @@ class CompanyController extends Controller
 
         $posts = $this->validate($request, $rules, [], $attributes);
     
-        if ($posts['company_bank_code']) {
-            $posts['company_bank_name'] = $this->tossBanks[$posts['company_bank_code']];
+        if (!empty($posts['company_bank_code'])) {
+            $posts['company_bank_name'] = $this->tossBanks[$posts['company_bank_code']] ?? '';
         }
 
         $this->configModel->save($posts, $attributes);
@@ -84,4 +87,26 @@ class CompanyController extends Controller
         $message = '회사 정보가 저장되었습니다.';
         return redirect()->route('admin.config.setting.company.index')->with('message', $message);
     }
+
+    /**
+     * 토스 은행/증권사 코드 정보
+     */
+    private function getBanks(): array
+    {
+        return [
+            '39' => '경남은행', '34' => '광주은행', 'S8' => '교보증권', '12' => '단위농협(지역농축협)',
+            'SE' => '대신증권', 'SK' => '메리츠증권', 'S5' => '미래에셋증권', 'SM' => '부국증권',
+            '32' => '부산은행', 'S3' => '삼성증권', '45' => '새마을금고', '64' => '산림조합',
+            'SN' => '신영증권', 'S2' => '신한금융투자', '88' => '신한은행', '48' => '신협',
+            '27' => '씨티은행', '20' => '우리은행', '71' => '우체국예금보험', 'S0' => '유안타증권',
+            'SJ' => '유진투자증권', '50' => '저축은행중앙회', '37' => '전북은행', '35' => '제주은행',
+            '90' => '카카오뱅크', '288' => '카카오페이증권', '89' => '케이뱅크', '92' => '토스뱅크',
+            'ST' => '토스증권', 'SR' => '펀드온라인코리아(한국포스증권)', 'SH' => '하나금융투자', '81' => '하나은행',
+            'S9' => '하이투자증권', 'S6' => '한국투자증권', 'SG' => '한화투자증권', 'SA' => '현대차증권',
+            '54' => '홍콩상하이은행', 'SI' => 'DB금융투자', '31' => 'DGB대구은행', '03' => 'IBK기업은행',
+            '06' => 'KB국민은행', 'S4' => 'KB증권', '02' => 'KDB산업은행', 'SP' => 'KTB투자증권(다올투자증권)',
+            'SO' => 'LIG투자증권', '11' => 'NH농협은행', 'SL' => 'NH투자증권', '23' => 'SC제일은행',
+            '07' => 'Sh수협은행', 'SD' => 'SK증권'
+        ];
+    }
 }

+ 2 - 0
resources/views/admin/config/setting/company.blade.php

@@ -98,9 +98,11 @@
                     <div class="col-sm">
                         <select name="company_bank_code" id="companyBankCode" class="form-select">
                             <option value="">선택하세요.</option>
+                            @isset($banks)
                             @foreach($banks as $i => $k)
                             <option value="{{ $i }}" @if(($config->company_bank_code ?? old('company_bank_code')) == $i) selected @endif>{{ $k }}</option>
                             @endforeach
+                            @endisset
                         </select>
                     </div>
                     <label for="companyBankOwner" class="col-auto col-form-label">예금주</label>