git -C '/home/opc/rocketa.git' show c8c5ba6 -- app/Http/Controllers/Admin/Media.phpcommit c8c5ba61b1fb4c40e219ffbcf4e593c54f7d4ac6
Author: Satoshi Ujihara <satoshi_ujihara@fivegate.jp>
Date: Thu Dec 18 12:00:15 2025 +0900
メディア会員登録フロー変更
diff --git a/app/Http/Controllers/Admin/Media.php b/app/Http/Controllers/Admin/Media.php
index 90619eb..b048f3e 100644
--- a/app/Http/Controllers/Admin/Media.php
+++ b/app/Http/Controllers/Admin/Media.php
@@ -5,12 +5,16 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
+use Illuminate\Support\Str;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Shared\File;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Admin\Traits\Common;
-
+use Illuminate\Support\Facades\Mail;
+use App\Mail\inviteMedia;
+use App\Mail\approveMediaUser;
+use App\Mail\approveMedia;
use App\Models\Api\ApiAdJoinMediaDatas;
use App\Models\La\MediaCompanyDatas;
use App\Models\La\MediaDatas;
@@ -18,12 +22,14 @@ use App\Models\La\AdJoinMediaDatas;
use App\Models\La\MediaAccounts;
use App\Models\La\MediaBillAggregateDatas;
use App\Models\La\MediaBillDatas;
-
-
+use App\Models\La\LoginToken;
+use App\Http\Controllers\Admin\Traits\ImageManage;
use App\Rules\TrackingLink;
+use Carbon\Carbon;
class Media extends Controller
{
+ use ImageManage;
use Common;
/**
@@ -52,7 +58,19 @@ class Media extends Controller
return $items;
}
+ public function downloadBankInfo(Request $request)
+ {
+ $media_company_data = MediaCompanyDatas::select('bank_copy_url')
+ ->where('id', $request->company_id)
+ ->first();
+ // $filename = basename(parse_url($media_company_data->bank_copy_url, PHP_URL_PATH));
+ header('Content-Type: application/octet-stream');
+ header('Content-Disposition: attachment; filename="' . $request->filename . '"');
+ header('Content-Transfer-Encoding: binary');
+ readfile("https://".$media_company_data->bank_copy_url);
+ exit;
+ }
public function companyDetail(Request $request)
{
@@ -81,7 +99,8 @@ class Media extends Controller
'media_company_datas.bank_branch_name',
'media_company_datas.bank_account_type',
'media_company_datas.bank_account_number',
- 'media_company_datas.bank_account_holder_kana'
+ 'media_company_datas.bank_account_holder_kana',
+ 'media_company_datas.bank_copy_url'
)
->leftJoin('media_datas', 'media_company_datas.id', '=', 'media_datas.company_id')
->where('media_company_datas.id', $request->company_id)
@@ -91,9 +110,19 @@ class Media extends Controller
return redirect()->away('/admin/media/company/list');
}
+ $bank_copy_file = [];
+ if($media_company_data->bank_copy_url) {
+ $ext = '.' . pathinfo($media_company_data->bank_copy_url, PATHINFO_EXTENSION);
+ $tmp_ymdhis = substr( pathinfo($media_company_data->bank_copy_url, PATHINFO_FILENAME), -14);
+ $bank_copy_file["time"] = Carbon::createFromFormat('YmdHis', $tmp_ymdhis)->format('Y-m-d H:i:s');
+ $bank_copy_file["name"] = "partner_bank_info" . $media_company_data->id . "_".$tmp_ymdhis . $ext;
+ }
+
return view('admin.media.company.detail')
->with('items', $this->getFormItemDatas())
- ->with('media_company_data', $media_company_data);
+ ->with('media_company_data', $media_company_data)
+ ->with('bank_copy_file', $bank_copy_file);
+
}
public function companyList(Request $request)
@@ -192,10 +221,10 @@ class Media extends Controller
private function companyRegistGetDefaultValue()
{
$datas = [
- 'status' => 1,
+ 'status' => null,
'corporate_name' => null,
'corporate_name_kana' => null,
- 'category' => 1,
+ 'category' => 99,
'remarks' => null,
'representative_name' => null,
'representative_name_kana' => null,
@@ -260,35 +289,68 @@ class Media extends Controller
public function companyRegistConfirm(Request $request)
{
- $rules = [
- 'corporate_name' => ['required'],
- 'corporate_name_kana' => ['required'],
- 'representative_name' => ['required'],
- 'representative_name_kana' => ['required'],
- 'rep_mail_address' => ['required', 'email'],
- 'phone_number' => ['required'],
- 'postal_code' => ['required'],
- 'corporate_address' => ['required'],
- 'mail_address' => ['required', 'email'],
- 'password' => ['required', 'between:8,40', 'regex:/^[0-9a-zA-Z-_!.]+$/'],
- 'registration_number' => ['required', 'regex:/^[0-9]+$/'],
- 'bank_name' => ['required'],
- 'bank_branch_name' => ['required'],
- 'bank_account_number' => ['required'],
- 'bank_account_holder_kana' => ['required'],
- ];
+ if ($request->has('action') && $request->input('action') == 'confirm') {
+ if($request->input('status')!=0) {
+ $rules = [
+ 'corporate_name' => ['required'],
+ // 'corporate_name_kana' => ['required'],
+ 'representative_name' => ['required'],
+ // 'representative_name_kana' => ['required'],
+ 'rep_mail_address' => ['required', 'email'],
+ // 'phone_number' => ['required'],
+ // 'postal_code' => ['required'],
+ 'corporate_address' => ['required'],
+ 'mail_address' => ['required', 'email'],
+ 'password' => ['required', 'between:8,40', 'regex:/^[0-9a-zA-Z-_!.]+$/'],
+ 'registration_number' => ['required', 'regex:/^[0-9]+$/'],
+ 'bank_name' => ['required'],
+ 'bank_branch_name' => ['required'],
+ 'bank_account_number' => ['required'],
+ 'bank_account_holder_kana' => ['required'],
+ 'bank_copy' => 'nullable|file|mimetypes:image/png,image/jpeg,application/pdf|max:10240',
+ ];
+ } else {
+ $rules = [
+ 'corporate_name' => ['required'],
+ 'mail_address' => ['required', 'email'],
+ // 'password' => ['required', 'between:8,40', 'regex:/^[0-9a-zA-Z-_!.]+$/'],
+ 'bank_copy' => 'nullable|file|mimetypes:image/png,image/jpeg,application/pdf|max:10240',
+ ];
+ }
+ $request->validate($rules);
+ }
- $request->validate($rules);
+
+
if ($request->has('action')) {
// 確認画面
if ($request->input('action') == 'confirm') {
+ // 画像処理
+ if ($request->hasFile('bank_copy')) {
+ $path = $request->file('bank_copy')->store('public/media/material/bank_copy/'.date('Ymd'));
+ $request['bank_copy_file_name'] = $request->file('bank_copy')->getClientOriginalName();
+ $request['bank_copy_file_ext'] = $request->file('bank_copy')->getClientOriginalExtension();
+ $request['temp_bank_copy_url'] = str_replace('public/', '', $path);
+ // $request['disp_bank_copy_url'] = str_replace('public/', '', $path);
+ $request['temp_bank_copy_content_type'] = $request->bank_copy->getClientMimeType();
+
+ // if ($request['bank_copy_url']) {
+ // $request['delete_bank_copy_path'] = $request['delete_bank_copy_path'];
+ // }
+ } elseif ($request['bank_copy_url']) {
+ // $request['thumbnail_url'] = $request['bank_copy_url'];
+ // $request['disp_bank_copy_url'] = 'https://'.$request['bank_copy_url'];
+ }
+
return view('admin.media.company.regist')
->with('items', $this->getFormItemDatas())
->with('datas', $request->all());
// データ登録
} elseif ($request->input('action') == 'regist') {
+
+
$media_company_id = null;
$edit_data = $this->companyRegistGetDefaultValue();
@@ -326,6 +388,7 @@ class Media extends Controller
'media_company_id' => $media_company_id,
'name' => $request->input('corporate_name'),
'email' => $request->input('mail_address'),
+ 'status' => $request->input('status'),
'password' => \Hash::make($request->input('password')),
];
$media_account_data = MediaAccounts::updateOrCreate(
@@ -333,6 +396,50 @@ class Media extends Controller
$media_account_update_data
);
+
+ // サムネイルをS3へアップロード
+ if ($request->has('temp_bank_copy_url')) {
+ $image = public_path()."/".$request->input('temp_bank_copy_url');
+ $extension = \File::extension($image);
+
+ $content_type = $request->input('temp_bank_copy_content_type');
+
+ $destinationPath = 'bank_copy';
+ $image_name = $media_company_id.'_'.date('YmdHis') . "." .$request->input('bank_copy_file_ext');
+
+ $bank_copy_url = $this->uploadImage($image, $destinationPath, $image_name, $extension, $content_type);
+ MediaCompanyDatas::where('id', $media_company_id)
+ ->update(['bank_copy_url'=> $bank_copy_url]);
+
+ // if ($request['delete_thumbnail_path']) {
+ // $this->deleteImage($request['delete_thumbnail_path']);
+ // }
+ } elseif ($request->has('thumbnail_url')) {
+ $thumbnail_url = $request->input('thumbnail_url');
+ }
+
+ if ($request->input('status')==0) {
+
+ // Mail::to(['ujihara@aixinc.io', 'soumu@fivegate.jp',$media_account_data->mail_address])
+ $token = Str::random(60).$media_account_data->id;
+ LoginToken::create([
+ 'user_id' => $media_account_data->id,
+ 'token' => hash('sha256', $token), // 保存はハッシュ化
+ 'expires_at' => now()->addMinutes(60*24*7),
+ ]);
+
+ $media_account_update_data['password'] = $request->input('password');
+ $media_account_update_data['token'] = $token;
+ Mail::to([$media_account_update_data['email']])
+ ->send(new inviteMedia($media_account_update_data));
+ }
+ //メディア会員を承認したとき
+ if (isset($update_media_company_data) && $update_media_company_data->status == 0 && $request->status == 1) {
+ $media_account_update_data['representative_name'] = $request->input('representative_name');
+ Mail::to([$media_account_update_data['email']])
+ ->send(new approveMediaUser($media_account_update_data));
+ }
+
return redirect()->away('/admin/media/company/detail/'.$media_company_id);
}
@@ -404,6 +511,7 @@ class Media extends Controller
'media_datas.name',
'media_datas.category',
'media_datas.type',
+ 'media_datas.status',
'media_company_datas.corporate_name'
)
->join('media_company_datas', 'media_datas.company_id', '=', 'media_company_datas.id');
@@ -586,6 +694,7 @@ class Media extends Controller
'monthly_uu' => 1,
'description' => null,
'memo' => null,
+ 'status' => 0,
];
$company_datas = MediaCompanyDatas::select('id', 'corporate_name')->get();
@@ -646,9 +755,6 @@ class Media extends Controller
'company_id' => ['required', 'numeric'],
'name' => ['required'],
'domain' => ['required'],
- 'domain' => ['required'],
- 'domain' => ['required'],
- 'domain' => ['required'],
// 'api_url' => ['required', 'url'],
'api_url' => ['required', new TrackingLink],
'api_url_test' => ['nullable', new TrackingLink]
@@ -690,7 +796,17 @@ class Media extends Controller
$media_id = $new_media_data->id;
}
-
+ //メディアを承認したとき
+ if ($update_media_data->status == 0 && $request->input('status') == 1) {
+ $media_company_data = MediaCompanyDatas::find($update_media_data->company_id);
+ $media_data_array = [
+ 'media_id' => $request->input('media_id'),
+ 'media_company_name' => $media_company_data->name,
+ 'representative_name' => $media_company_data->representative_name,
+ 'media_name' => $request->input('name'),
+ ];
+ Mail::to([$media_company_data->mail_address])->send(new approveMedia($media_data_array));
+ }
// 新規追加
} else {
$new_media_data = MediaDatas::create($edit_data);