# 共通リスト重複機能メモ ###### tags: `メモ` `処理プロセス` 参考: [Github](https://github.com/imejin-dev/form-sales-bot/pull/280/files) ### プロセス まず、CSVをアップロード POST api/v1/companies/import_csv > Controller CSVをエンコード、配列に変換。そしてforeachで回す。 以下項目を使い1つずつインスタンス生成。最後にsave!する。 - company_name(会社名) - address(住所) - url(企業URL) - category(カテゴリー) - num_employees(従業員数) - founded_in(設立年) - tel(電話番号) - fax(Fax) この項目は文字列でCSVの内容をそのまま保存している。 なので電話番号が`00000000000`でも`000-0000-0000`でも内容そのまま保存される。その他項目も同様。 そして保存時に、`after_create`で重複チェックを行う。 > company_name (会社名) 以下への変換後に既存データからlike検索。 結果が存在すれば重複とみなす。 1. ローマ字小文字 2. ローマ字大文字 3. カタカナ 4. ひらがな > url(企業URL) Domainを抽出し、like検索。 結果が存在すれば重複とみなす。 ### SQL ```bash: companies" WHERE "companies"."is_duplicate" = $1 AND "companies"."id" != $2 AND (company_name like '%%' or 2020-11-10T00:29:27.912042+00:00 app[web.1]: company_name like '%%' or 2020-11-10T00:29:27.912043+00:00 app[web.1]: company_name like '%%' or 2020-11-10T00:29:27.912043+00:00 app[web.1]: company_name like '%%' or 2020-11-10T00:29:27.912044+00:00 app[web.1]: url like '%www.mizuku.co%' or 2020-11-10T00:29:27.912044+00:00 app[web.1]: address like 'u' or 2020-11-10T00:29:27.912045+00:00 app[web.1]: tel like '059-332-6600' or 2020-11-10T00:29:27.912045+00:00 app[web.1]: fax like NULL) [["is_duplicate", false], ["id", 29]] ``` ```sequence ユーザー->ブラウザ: 共通リスト作成\nCSVをアップロード\n ブラウザ->サーバー: POST api/v1/companies/import_csv サーバー-->ブラウザ: :hashからPayment情報を検索して返す\n ブラウザ-->ユーザー: Payment情報を元に、\n金額等を表示 ユーザー->ブラウザ: カード情報(番号、有効期限、CVC)\nを入力して決済実行 ブラウザ->ブラウザ: カード情報を元にPayjpAPIを叩いて\n決済tokenを取得 ブラウザ->サーバー: post api/v1/payment/:token サーバー->サーバー: tokenを使って決済 ブラウザ->ユーザー: 決済エラーが発生しなければ、\n決済完了ページに遷移 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up