From 0dbbb6c7aaf48b919aeb419409320000683b869e Mon Sep 17 00:00:00 2001 From: Nam Nguyen Date: Wed, 20 Dec 2023 00:38:44 +0700 Subject: [PATCH] feat: init user bank accounts (#678) --- .../20231201075923-init_user_bank_account.sql | 36 ++++++++++ migrations/seed/banks.sql | 65 +++++++++++++++++++ pkg/model/banks.go | 12 ++++ pkg/model/user_bank_accounts.go | 11 ++++ 4 files changed, 124 insertions(+) create mode 100644 migrations/schemas/20231201075923-init_user_bank_account.sql create mode 100644 migrations/seed/banks.sql create mode 100644 pkg/model/banks.go create mode 100644 pkg/model/user_bank_accounts.go diff --git a/migrations/schemas/20231201075923-init_user_bank_account.sql b/migrations/schemas/20231201075923-init_user_bank_account.sql new file mode 100644 index 000000000..d48b8c90a --- /dev/null +++ b/migrations/schemas/20231201075923-init_user_bank_account.sql @@ -0,0 +1,36 @@ +-- +migrate Up +CREATE TABLE IF NOT EXISTS "banks" ( + id UUID PRIMARY KEY DEFAULT (uuid()), + deleted_at TIMESTAMP(6), + created_at TIMESTAMP(6) DEFAULT (NOW()), + updated_at TIMESTAMP(6) DEFAULT (NOW()), + + "name" TEXT DEFAULT NULL, + "code" TEXT DEFAULT NULL, + "bin" TEXT DEFAULT NULL, + "short_name" TEXT DEFAULT NULL, + "logo" TEXT DEFAULT NULL, + "swift_code" TEXT DEFAULT NULL +); + +CREATE TABLE IF NOT EXISTS "user_bank_accounts" ( + id UUID PRIMARY KEY DEFAULT (uuid()), + deleted_at TIMESTAMP(6), + created_at TIMESTAMP(6) DEFAULT (NOW()), + updated_at TIMESTAMP(6) DEFAULT (NOW()), + + "discord_account_id" UUID, + "employee_id" UUID NULL, + "bank_id" UUID, + "account_number" TEXT DEFAULT NULL, + "branch" TEXT DEFAULT NULL +); + +ALTER TABLE "user_bank_accounts" + ADD FOREIGN KEY ("discord_account_id") REFERENCES "discord_accounts" ("id"); + +ALTER TABLE "user_bank_accounts" + ADD FOREIGN KEY ("employee_id") REFERENCES "employees" ("id"); +-- +migrate Down +DROP TABLE IF EXISTS "user_bank_accounts"; +DROP TABLE IF EXISTS "banks"; diff --git a/migrations/seed/banks.sql b/migrations/seed/banks.sql new file mode 100644 index 000000000..5a9cbb2cf --- /dev/null +++ b/migrations/seed/banks.sql @@ -0,0 +1,65 @@ +INSERT INTO banks ("name", "code", "bin", "short_name","logo", "swift_code") VALUES +('Ngân hàng TMCP Công thương Việt Nam','ICB','970415','VietinBank','https://api.vietqr.io/img/ICB.png','ICBVVNVX'), +('Ngân hàng TMCP Ngoại Thương Việt Nam','VCB','970436','Vietcombank','https://api.vietqr.io/img/VCB.png','BFTVVNVX'), +('Ngân hàng TMCP Đầu tư và Phát triển Việt Nam','BIDV','970418','BIDV','https://api.vietqr.io/img/BIDV.png','BIDVVNVX'), +('Ngân hàng Nông nghiệp và Phát triển Nông thôn Việt Nam','VBA','970405','Agribank','https://api.vietqr.io/img/VBA.png','VBAAVNVX'), +('Ngân hàng TMCP Phương Đông','OCB','970448','OCB','https://api.vietqr.io/img/OCB.png','ORCOVNVX'), +('Ngân hàng TMCP Quân đội','MB','970422','MBBank','https://api.vietqr.io/img/MB.png','MSCBVNVX'), +('Ngân hàng TMCP Kỹ thương Việt Nam','TCB','970407','Techcombank','https://api.vietqr.io/img/TCB.png','VTCBVNVX'), +('Ngân hàng TMCP Á Châu','ACB','970416','ACB','https://api.vietqr.io/img/ACB.png','ASCBVNVX'), +('Ngân hàng TMCP Việt Nam Thịnh Vượng','VPB','970432','VPBank','https://api.vietqr.io/img/VPB.png','VPBKVNVX'), +('Ngân hàng TMCP Tiên Phong','TPB','970423','TPBank','https://api.vietqr.io/img/TPB.png','TPBVVNVX'), +('Ngân hàng TMCP Sài Gòn Thương Tín','STB','970403','Sacombank','https://api.vietqr.io/img/STB.png','SGTTVNVX'), +('Ngân hàng TMCP Phát triển Thành phố Hồ Chí Minh','HDB','970437','HDBank','https://api.vietqr.io/img/HDB.png','HDBCVNVX'), +('Ngân hàng TMCP Bản Việt','VCCB','970454','VietCapitalBank','https://api.vietqr.io/img/VCCB.png','VCBCVNVX'), +('Ngân hàng TMCP Sài Gòn','SCB','970429','SCB','https://api.vietqr.io/img/SCB.png','SACLVNVX'), +('Ngân hàng TMCP Quốc tế Việt Nam','VIB','970441','VIB','https://api.vietqr.io/img/VIB.png','VNIBVNVX'), +('Ngân hàng TMCP Sài Gòn - Hà Nội','SHB','970443','SHB','https://api.vietqr.io/img/SHB.png','SHBAVNVX'), +('Ngân hàng TMCP Xuất Nhập khẩu Việt Nam','EIB','970431','Eximbank','https://api.vietqr.io/img/EIB.png','EBVIVNVX'), +('Ngân hàng TMCP Hàng Hải','MSB','970426','MSB','https://api.vietqr.io/img/MSB.png','MCOBVNVX'), +('TMCP Việt Nam Thịnh Vượng - Ngân hàng số CAKE by VPBank','CAKE','546034','CAKE','https://api.vietqr.io/img/CAKE.png',NULL), +('TMCP Việt Nam Thịnh Vượng - Ngân hàng số Ubank by VPBank','Ubank','546035','Ubank','https://api.vietqr.io/img/UBANK.png',NULL), +('Ngân hàng số Timo by Ban Viet Bank (Timo by Ban Viet Bank)','TIMO','963388','Timo','https://vietqr.net/portal-service/resources/icons/TIMO.png',NULL), +('Tổng Công ty Dịch vụ số Viettel - Chi nhánh tập đoàn công nghiệp viễn thông Quân Đội','VTLMONEY','971005','ViettelMoney','https://api.vietqr.io/img/VIETTELMONEY.png',NULL), +('VNPT Money','VNPTMONEY','971011','VNPTMoney','https://api.vietqr.io/img/VNPTMONEY.png',NULL), +('Ngân hàng TMCP Sài Gòn Công Thương','SGICB','970400','SaigonBank','https://api.vietqr.io/img/SGICB.png','SBITVNVX'), +('Ngân hàng TMCP Bắc Á','BAB','970409','BacABank','https://api.vietqr.io/img/BAB.png','NASCVNVX'), +('Ngân hàng TMCP Đại Chúng Việt Nam','PVCB','970412','PVcomBank','https://api.vietqr.io/img/PVCB.png','WBVNVNVX'), +('Ngân hàng Thương mại TNHH MTV Đại Dương','Oceanbank','970414','Oceanbank','https://api.vietqr.io/img/OCEANBANK.png','OCBKUS3M'), +('Ngân hàng TMCP Quốc Dân','NCB','970419','NCB','https://api.vietqr.io/img/NCB.png','NVBAVNVX'), +('Ngân hàng TNHH MTV Shinhan Việt Nam','SHBVN','970424','ShinhanBank','https://api.vietqr.io/img/SHBVN.png','SHBKVNVX'), +('Ngân hàng TMCP An Bình','ABB','970425','ABBANK','https://api.vietqr.io/img/ABB.png','ABBKVNVX'), +('Ngân hàng TMCP Việt Á','VAB','970427','VietABank','https://api.vietqr.io/img/VAB.png','VNACVNVX'), +('Ngân hàng TMCP Nam Á','NAB','970428','NamABank','https://api.vietqr.io/img/NAB.png','NAMAVNVX'), +('Ngân hàng TMCP Xăng dầu Petrolimex','PGB','970430','PGBank','https://api.vietqr.io/img/PGB.png','PGBLVNVX'), +('Ngân hàng TMCP Việt Nam Thương Tín','VIETBANK','970433','VietBank','https://api.vietqr.io/img/VIETBANK.png','VNTTVNVX'), +('Ngân hàng TMCP Bảo Việt','BVB','970438','BaoVietBank','https://api.vietqr.io/img/BVB.png','BVBVVNVX'), +('Ngân hàng TMCP Đông Nam Á','SEAB','970440','SeABank','https://api.vietqr.io/img/SEAB.png','SEAVVNVX'), +('Ngân hàng Hợp tác xã Việt Nam','COOPBANK','970446','COOPBANK','https://api.vietqr.io/img/COOPBANK.png',NULL), +('Ngân hàng TMCP Bưu Điện Liên Việt','LPB','970449','LienVietPostBank','https://api.vietqr.io/img/LPB.png','LVBKVNVX'), +('Ngân hàng TMCP Kiên Long','KLB','970452','KienLongBank','https://api.vietqr.io/img/KLB.png','KLBKVNVX'), +('Ngân hàng Đại chúng TNHH Kasikornbank','KBank','668888','KBank','https://api.vietqr.io/img/KBANK.png','KASIVNVX'), +('Ngân hàng United Overseas - Chi nhánh TP. Hồ Chí Minh','UOB','970458','UnitedOverseas','https://api.vietqr.io/img/UOB.png',NULL), +('Ngân hàng TNHH MTV Standard Chartered Bank Việt Nam','SCVN','970410','StandardChartered','https://api.vietqr.io/img/SCVN.png','SCBLVNVX'), +('Ngân hàng TNHH MTV Public Việt Nam','PBVN','970439','PublicBank','https://api.vietqr.io/img/PBVN.png','VIDPVNVX'), +('Ngân hàng Nonghyup - Chi nhánh Hà Nội','NHB HN','801011','Nonghyup','https://api.vietqr.io/img/NHB.png',NULL), +('Ngân hàng TNHH Indovina','IVB','970434','IndovinaBank','https://api.vietqr.io/img/IVB.png',NULL), +('Ngân hàng Công nghiệp Hàn Quốc - Chi nhánh TP. Hồ Chí Minh','IBK - HCM','970456','IBKHCM','https://api.vietqr.io/img/IBK.png',NULL), +('Ngân hàng Công nghiệp Hàn Quốc - Chi nhánh Hà Nội','IBK - HN','970455','IBKHN','https://api.vietqr.io/img/IBK.png',NULL), +('Ngân hàng Liên doanh Việt - Nga','VRB','970421','VRB','https://api.vietqr.io/img/VRB.png',NULL), +('Ngân hàng TNHH MTV Woori Việt Nam','WVN','970457','Woori','https://api.vietqr.io/img/WVN.png',NULL), +('Ngân hàng Kookmin - Chi nhánh Hà Nội','KBHN','970462','KookminHN','https://api.vietqr.io/img/KBHN.png',NULL), +('Ngân hàng Kookmin - Chi nhánh Thành phố Hồ Chí Minh','KBHCM','970463','KookminHCM','https://api.vietqr.io/img/KBHCM.png',NULL), +('Ngân hàng TNHH MTV HSBC (Việt Nam)','HSBC','458761','HSBC','https://api.vietqr.io/img/HSBC.png','HSBCVNVX'), +('Ngân hàng TNHH MTV Hong Leong Việt Nam','HLBVN','970442','HongLeong','https://api.vietqr.io/img/HLBVN.png','HLBBVNVX'), +('Ngân hàng Thương mại TNHH MTV Dầu Khí Toàn Cầu','GPB','970408','GPBank','https://api.vietqr.io/img/GPB.png','GBNKVNVX'), +('Ngân hàng TMCP Đông Á','DOB','970406','DongABank','https://api.vietqr.io/img/DOB.png','EACBVNVX'), +('DBS Bank Ltd - Chi nhánh Thành phố Hồ Chí Minh','DBS','796500','DBSBank','https://api.vietqr.io/img/DBS.png','DBSSVNVX'), +('Ngân hàng TNHH MTV CIMB Việt Nam','CIMB','422589','CIMB','https://api.vietqr.io/img/CIMB.png','CIBBVNVN'), +('Ngân hàng Thương mại TNHH MTV Xây dựng Việt Nam','CBB','970444','CBBank','https://api.vietqr.io/img/CBB.png','GTBAVNVX'), +('Ngân hàng Citibank, N.A. - Chi nhánh Hà Nội','CITIBANK','533948','Citibank','https://api.vietqr.io/img/CITIBANK.png',NULL), +('Ngân hàng KEB Hana – Chi nhánh Thành phố Hồ Chí Minh','KEBHANAHCM','970466','KEBHanaHCM','https://api.vietqr.io/img/KEBHANAHCM.png',NULL), +('Ngân hàng KEB Hana – Chi nhánh Hà Nội','KEBHANAHN','970467','KEBHANAHN','https://api.vietqr.io/img/KEBHANAHN.png',NULL), +('Công ty Tài chính TNHH MTV Mirae Asset (Việt Nam) ','MAFC','977777','MAFC','https://api.vietqr.io/img/MAFC.png',NULL), +('Ngân hàng Chính sách Xã hội','VBSP','999888','VBSP','https://api.vietqr.io/img/VBSP.png',NULL); + \ No newline at end of file diff --git a/pkg/model/banks.go b/pkg/model/banks.go new file mode 100644 index 000000000..cd211d292 --- /dev/null +++ b/pkg/model/banks.go @@ -0,0 +1,12 @@ +package model + +type Bank struct { + BaseModel + + Name string + Code string + Bin string + ShortName string + Logo string + SwiftCode string +} diff --git a/pkg/model/user_bank_accounts.go b/pkg/model/user_bank_accounts.go new file mode 100644 index 000000000..ac4bce3b7 --- /dev/null +++ b/pkg/model/user_bank_accounts.go @@ -0,0 +1,11 @@ +package model + +type UserBankAccount struct { + BaseModel + + EmployerID UUID + DiscordAccountID UUID + BankID UUID + AccountNumber string + Branch string +}