database_extension.sql 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656
  1. -- ============================================================================
  2. -- DATABASE EXTENSION FOR ESIMLAO PROJECT
  3. -- Based on infigate.vn website features and existing LAOS_ESIM schema
  4. -- Oracle Database SQL Script
  5. -- Created: 2025-12-29
  6. -- ============================================================================
  7. -- ============================================================================
  8. -- I. EXTEND EXISTING CUSTOMER_INFO TABLE FOR GMAIL LOGIN
  9. -- ============================================================================
  10. -- Add new columns to existing CUSTOMER_INFO table for authentication
  11. ALTER TABLE LAOS_ESIM.CUSTOMER_INFO ADD (
  12. GOOGLE_ID VARCHAR2(200),
  13. AVATAR_URL VARCHAR2(1000),
  14. PASSWORD_HASH VARCHAR2(500),
  15. STATUS NUMBER(1) DEFAULT 1,
  16. IS_VERIFIED NUMBER(1) DEFAULT 0,
  17. LAST_LOGIN_DATE DATE
  18. );
  19. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.GOOGLE_ID IS 'ID tu Google OAuth khi dang nhap bang Gmail';
  20. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.AVATAR_URL IS 'Duong dan anh dai dien tu Google';
  21. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.PASSWORD_HASH IS 'Mat khau ma hoa (neu dang nhap bang password)';
  22. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.STATUS IS 'Trang thai tai khoan: 0=Khoa, 1=Hoat dong';
  23. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.IS_VERIFIED IS 'Da xac thuc email: 0=Chua, 1=Da xac thuc';
  24. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.LAST_LOGIN_DATE IS 'Thoi gian dang nhap gan nhat';
  25. -- Add comments for existing columns (if not already added)
  26. COMMENT ON TABLE LAOS_ESIM.CUSTOMER_INFO IS 'Bang thong tin khach hang va tai khoan dang nhap';
  27. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.ID IS 'ID tu dong tang cua khach hang';
  28. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.SUR_NAME IS 'Ho cua khach hang';
  29. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.LAST_NAME IS 'Ten cua khach hang';
  30. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.EMAIL IS 'Dia chi email (dung de dang nhap)';
  31. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.PHONE_NUMBER IS 'So dien thoai lien he';
  32. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.CREATED_DATE IS 'Ngay tao tai khoan';
  33. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.LAST_UPDATE IS 'Ngay cap nhat gan nhat';
  34. -- Create unique index on EMAIL for login
  35. CREATE UNIQUE INDEX LAOS_ESIM.CUSTOMER_INFO_EMAIL_UQ ON LAOS_ESIM.CUSTOMER_INFO(EMAIL);
  36. -- ============================================================================
  37. -- II. OTP VERIFICATION TABLE
  38. -- ============================================================================
  39. CREATE TABLE LAOS_ESIM.OTP_VERIFICATION (
  40. ID NUMBER(10) NOT NULL,
  41. CUSTOMER_ID NUMBER(10),
  42. USER_EMAIL VARCHAR2(200) NOT NULL,
  43. OTP_CODE VARCHAR2(10) NOT NULL,
  44. OTP_TYPE NUMBER(2) DEFAULT 1,
  45. EXPIRED_AT DATE NOT NULL,
  46. IS_USED NUMBER(1) DEFAULT 0,
  47. ATTEMPT_COUNT NUMBER(2) DEFAULT 0,
  48. CREATED_DATE DATE DEFAULT SYSDATE,
  49. CONSTRAINT OTP_VERIFICATION_PK PRIMARY KEY (ID)
  50. );
  51. COMMENT ON TABLE LAOS_ESIM.OTP_VERIFICATION IS 'Bang luu ma OTP xac thuc dang nhap';
  52. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.ID IS 'ID tu dong tang';
  53. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.CUSTOMER_ID IS 'ID khach hang (CUSTOMER_INFO.ID)';
  54. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.USER_EMAIL IS 'Email can xac thuc';
  55. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.OTP_CODE IS 'Ma OTP 6 so';
  56. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.OTP_TYPE IS 'Loai OTP: 1=Dang nhap, 2=Dat lai mat khau, 3=Xac thuc email';
  57. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.EXPIRED_AT IS 'Thoi gian het han OTP';
  58. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.IS_USED IS 'Da su dung: 0=Chua, 1=Da dung';
  59. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.ATTEMPT_COUNT IS 'So lan thu sai';
  60. COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.CREATED_DATE IS 'Ngay tao OTP';
  61. CREATE SEQUENCE LAOS_ESIM.OTP_VERIFICATION_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  62. CREATE INDEX LAOS_ESIM.OTP_EMAIL_IDX ON LAOS_ESIM.OTP_VERIFICATION(USER_EMAIL, IS_USED);
  63. -- ============================================================================
  64. -- III. TOKEN MANAGEMENT TABLE
  65. -- ============================================================================
  66. CREATE TABLE LAOS_ESIM.USER_TOKEN (
  67. ID NUMBER(10) NOT NULL,
  68. CUSTOMER_ID NUMBER(10) NOT NULL,
  69. ACCESS_TOKEN VARCHAR2(500) NOT NULL,
  70. REFRESH_TOKEN VARCHAR2(500),
  71. TOKEN_TYPE VARCHAR2(50) DEFAULT 'Bearer',
  72. DEVICE_INFO VARCHAR2(500),
  73. IP_ADDRESS VARCHAR2(50),
  74. EXPIRED_AT DATE NOT NULL,
  75. REFRESH_EXPIRED_AT DATE,
  76. IS_REVOKED NUMBER(1) DEFAULT 0,
  77. CREATED_DATE DATE DEFAULT SYSDATE,
  78. LAST_USED DATE,
  79. CONSTRAINT USER_TOKEN_PK PRIMARY KEY (ID)
  80. );
  81. COMMENT ON TABLE LAOS_ESIM.USER_TOKEN IS 'Bang quan ly token xac thuc API';
  82. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.ID IS 'ID tu dong tang';
  83. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.CUSTOMER_ID IS 'ID khach hang (CUSTOMER_INFO.ID)';
  84. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.ACCESS_TOKEN IS 'Access token JWT';
  85. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.REFRESH_TOKEN IS 'Refresh token de lam moi access token';
  86. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.TOKEN_TYPE IS 'Loai token (Bearer)';
  87. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.DEVICE_INFO IS 'Thong tin thiet bi dang nhap';
  88. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.IP_ADDRESS IS 'Dia chi IP khi dang nhap';
  89. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.EXPIRED_AT IS 'Thoi gian het han access token';
  90. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.REFRESH_EXPIRED_AT IS 'Thoi gian het han refresh token';
  91. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.IS_REVOKED IS 'Token bi thu hoi: 0=Khong, 1=Da thu hoi';
  92. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.CREATED_DATE IS 'Ngay tao token';
  93. COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.LAST_USED IS 'Thoi gian su dung gan nhat';
  94. CREATE SEQUENCE LAOS_ESIM.USER_TOKEN_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  95. CREATE INDEX LAOS_ESIM.USER_TOKEN_CUSTOMER_IDX ON LAOS_ESIM.USER_TOKEN(CUSTOMER_ID);
  96. CREATE INDEX LAOS_ESIM.USER_TOKEN_ACCESS_IDX ON LAOS_ESIM.USER_TOKEN(ACCESS_TOKEN);
  97. -- ============================================================================
  98. -- IV. MESSAGE QUEUE TABLE (For scanning and sending messages)
  99. -- ============================================================================
  100. CREATE TABLE LAOS_ESIM.MESSAGE_QUEUE (
  101. ID NUMBER(10) NOT NULL,
  102. MESSAGE_TYPE NUMBER(2) DEFAULT 1,
  103. RECIPIENT VARCHAR2(200) NOT NULL,
  104. SUBJECT NVARCHAR2(500),
  105. CONTENT CLOB,
  106. TEMPLATE_CODE VARCHAR2(50),
  107. TEMPLATE_DATA CLOB,
  108. PRIORITY NUMBER(1) DEFAULT 5,
  109. STATUS NUMBER(2) DEFAULT 0,
  110. SCHEDULED_AT DATE,
  111. PROCESSED_AT DATE,
  112. RETRY_COUNT NUMBER(2) DEFAULT 0,
  113. MAX_RETRY NUMBER(2) DEFAULT 3,
  114. ERROR_MESSAGE VARCHAR2(2000),
  115. CREATED_BY NUMBER(10),
  116. CREATED_DATE DATE DEFAULT SYSDATE,
  117. CONSTRAINT MESSAGE_QUEUE_PK PRIMARY KEY (ID)
  118. );
  119. COMMENT ON TABLE LAOS_ESIM.MESSAGE_QUEUE IS 'Bang luu tin nhan cho xu ly gui (email/SMS)';
  120. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.ID IS 'ID tu dong tang';
  121. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.MESSAGE_TYPE IS 'Loai tin nhan: 1=Email, 2=SMS, 3=Push Notification';
  122. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.RECIPIENT IS 'Dia chi nhan (email/so dien thoai)';
  123. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.SUBJECT IS 'Tieu de tin nhan/email';
  124. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.CONTENT IS 'Noi dung tin nhan';
  125. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.TEMPLATE_CODE IS 'Ma mau tin nhan';
  126. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.TEMPLATE_DATA IS 'Du lieu thay the vao mau (JSON)';
  127. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.PRIORITY IS 'Do uu tien: 1=Cao nhat, 10=Thap nhat';
  128. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.STATUS IS 'Trang thai: 0=Cho xu ly, 1=Dang xu ly, 2=Thanh cong, 3=That bai';
  129. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.SCHEDULED_AT IS 'Thoi gian dat lich gui';
  130. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.PROCESSED_AT IS 'Thoi gian da xu ly';
  131. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.RETRY_COUNT IS 'So lan thu lai';
  132. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.MAX_RETRY IS 'So lan thu lai toi da';
  133. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.ERROR_MESSAGE IS 'Thong bao loi khi gui that bai';
  134. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.CREATED_BY IS 'ID nguoi tao';
  135. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.CREATED_DATE IS 'Ngay tao';
  136. CREATE SEQUENCE LAOS_ESIM.MESSAGE_QUEUE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  137. CREATE INDEX LAOS_ESIM.MESSAGE_QUEUE_STATUS_IDX ON LAOS_ESIM.MESSAGE_QUEUE(STATUS, PRIORITY, SCHEDULED_AT);
  138. -- ============================================================================
  139. -- V. MESSAGE TEMPLATE TABLE
  140. -- ============================================================================
  141. CREATE TABLE LAOS_ESIM.MESSAGE_TEMPLATE (
  142. ID NUMBER(10) NOT NULL,
  143. TEMPLATE_CODE VARCHAR2(50) NOT NULL,
  144. TEMPLATE_NAME NVARCHAR2(200) NOT NULL,
  145. MESSAGE_TYPE NUMBER(2) DEFAULT 1,
  146. SUBJECT NVARCHAR2(500),
  147. CONTENT CLOB,
  148. VARIABLES VARCHAR2(1000),
  149. STATUS NUMBER(1) DEFAULT 1,
  150. CREATED_DATE DATE DEFAULT SYSDATE,
  151. LAST_UPDATE DATE,
  152. CONSTRAINT MESSAGE_TEMPLATE_PK PRIMARY KEY (ID)
  153. );
  154. COMMENT ON TABLE LAOS_ESIM.MESSAGE_TEMPLATE IS 'Bang mau tin nhan email/SMS';
  155. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.ID IS 'ID tu dong tang';
  156. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.TEMPLATE_CODE IS 'Ma mau tin nhan (unique)';
  157. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.TEMPLATE_NAME IS 'Ten mau tin nhan';
  158. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.MESSAGE_TYPE IS 'Loai: 1=Email, 2=SMS';
  159. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.SUBJECT IS 'Tieu de email';
  160. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.CONTENT IS 'Noi dung mau';
  161. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.VARIABLES IS 'Danh sach bien (VD: {{name}},{{email}})';
  162. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.STATUS IS 'Trang thai: 0=An, 1=Hien';
  163. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.CREATED_DATE IS 'Ngay tao';
  164. COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.LAST_UPDATE IS 'Ngay cap nhat';
  165. CREATE SEQUENCE LAOS_ESIM.MESSAGE_TEMPLATE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  166. CREATE UNIQUE INDEX LAOS_ESIM.MESSAGE_TEMPLATE_CODE_UQ ON LAOS_ESIM.MESSAGE_TEMPLATE(TEMPLATE_CODE);
  167. -- ============================================================================
  168. -- VI. CMS TABLES (Banner, Content, Articles - Based on infigate.vn)
  169. -- ============================================================================
  170. -- BANNER: Homepage banners/sliders
  171. CREATE TABLE LAOS_ESIM.BANNER (
  172. ID NUMBER(10) NOT NULL,
  173. TITLE NVARCHAR2(500),
  174. SUBTITLE NVARCHAR2(1000),
  175. IMAGE_URL VARCHAR2(1000) NOT NULL,
  176. IMAGE_MOBILE_URL VARCHAR2(1000),
  177. LINK_URL VARCHAR2(1000),
  178. LINK_TARGET VARCHAR2(20) DEFAULT '_self',
  179. POSITION VARCHAR2(50) DEFAULT 'HOME',
  180. DISPLAY_ORDER NUMBER(5) DEFAULT 1,
  181. STATUS NUMBER(1) DEFAULT 1,
  182. START_DATE DATE,
  183. END_DATE DATE,
  184. CREATED_BY NUMBER(10),
  185. CREATED_DATE DATE DEFAULT SYSDATE,
  186. LAST_UPDATE DATE,
  187. CONSTRAINT BANNER_PK PRIMARY KEY (ID)
  188. );
  189. COMMENT ON TABLE LAOS_ESIM.BANNER IS 'Bang quan ly banner/slider trang web';
  190. COMMENT ON COLUMN LAOS_ESIM.BANNER.ID IS 'ID tu dong tang';
  191. COMMENT ON COLUMN LAOS_ESIM.BANNER.TITLE IS 'Tieu de banner';
  192. COMMENT ON COLUMN LAOS_ESIM.BANNER.SUBTITLE IS 'Mo ta ngan';
  193. COMMENT ON COLUMN LAOS_ESIM.BANNER.IMAGE_URL IS 'Duong dan anh banner (desktop)';
  194. COMMENT ON COLUMN LAOS_ESIM.BANNER.IMAGE_MOBILE_URL IS 'Duong dan anh banner (mobile)';
  195. COMMENT ON COLUMN LAOS_ESIM.BANNER.LINK_URL IS 'URL khi click vao banner';
  196. COMMENT ON COLUMN LAOS_ESIM.BANNER.LINK_TARGET IS 'Mo tab: _self hoac _blank';
  197. COMMENT ON COLUMN LAOS_ESIM.BANNER.POSITION IS 'Vi tri: HOME, PRODUCT, SUPPORT, etc.';
  198. COMMENT ON COLUMN LAOS_ESIM.BANNER.DISPLAY_ORDER IS 'Thu tu hien thi';
  199. COMMENT ON COLUMN LAOS_ESIM.BANNER.STATUS IS 'Trang thai: 0=An, 1=Hien';
  200. COMMENT ON COLUMN LAOS_ESIM.BANNER.START_DATE IS 'Ngay bat dau hien thi';
  201. COMMENT ON COLUMN LAOS_ESIM.BANNER.END_DATE IS 'Ngay ket thuc hien thi';
  202. COMMENT ON COLUMN LAOS_ESIM.BANNER.CREATED_BY IS 'ID nguoi tao';
  203. COMMENT ON COLUMN LAOS_ESIM.BANNER.CREATED_DATE IS 'Ngay tao';
  204. COMMENT ON COLUMN LAOS_ESIM.BANNER.LAST_UPDATE IS 'Ngay cap nhat';
  205. CREATE SEQUENCE LAOS_ESIM.BANNER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  206. -- CMS_CONTENT: Static pages (About us, Terms, Policies, etc.)
  207. CREATE TABLE LAOS_ESIM.CMS_CONTENT (
  208. ID NUMBER(10) NOT NULL,
  209. PAGE_CODE VARCHAR2(100) NOT NULL,
  210. PAGE_TITLE NVARCHAR2(500) NOT NULL,
  211. PAGE_SLUG VARCHAR2(200) NOT NULL,
  212. META_DESCRIPTION NVARCHAR2(500),
  213. META_KEYWORDS NVARCHAR2(500),
  214. CONTENT CLOB,
  215. PAGE_TYPE VARCHAR2(50) DEFAULT 'STATIC',
  216. STATUS NUMBER(1) DEFAULT 1,
  217. LANGUAGE VARCHAR2(10) DEFAULT 'vi',
  218. CREATED_BY NUMBER(10),
  219. CREATED_DATE DATE DEFAULT SYSDATE,
  220. LAST_UPDATE DATE,
  221. UPDATED_BY NUMBER(10),
  222. CONSTRAINT CMS_CONTENT_PK PRIMARY KEY (ID)
  223. );
  224. COMMENT ON TABLE LAOS_ESIM.CMS_CONTENT IS 'Bang noi dung cac trang tinh (Gioi thieu, Chinh sach...)';
  225. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.ID IS 'ID tu dong tang';
  226. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_CODE IS 'Ma trang (VD: ABOUT_US, TERMS, PRIVACY)';
  227. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_TITLE IS 'Tieu de trang';
  228. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_SLUG IS 'URL-friendly slug';
  229. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.META_DESCRIPTION IS 'Mo ta SEO';
  230. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.META_KEYWORDS IS 'Tu khoa SEO';
  231. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.CONTENT IS 'Noi dung HTML';
  232. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_TYPE IS 'Loai trang: STATIC, POLICY, GUIDE';
  233. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.STATUS IS 'Trang thai: 0=An, 1=Hien';
  234. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.LANGUAGE IS 'Ngon ngu: vi, en, lo';
  235. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.CREATED_BY IS 'ID nguoi tao';
  236. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.CREATED_DATE IS 'Ngay tao';
  237. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.LAST_UPDATE IS 'Ngay cap nhat';
  238. COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.UPDATED_BY IS 'ID nguoi cap nhat';
  239. CREATE SEQUENCE LAOS_ESIM.CMS_CONTENT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  240. CREATE UNIQUE INDEX LAOS_ESIM.CMS_CONTENT_CODE_LANG_UQ ON LAOS_ESIM.CMS_CONTENT(PAGE_CODE, LANGUAGE);
  241. CREATE UNIQUE INDEX LAOS_ESIM.CMS_CONTENT_SLUG_UQ ON LAOS_ESIM.CMS_CONTENT(PAGE_SLUG, LANGUAGE);
  242. -- ============================================================================
  243. -- VII. ARTICLE/BLOG TABLES
  244. -- ============================================================================
  245. -- ARTICLE_CATEGORY: Blog/Library categories
  246. CREATE TABLE LAOS_ESIM.ARTICLE_CATEGORY (
  247. ID NUMBER(10) NOT NULL,
  248. CATEGORY_NAME NVARCHAR2(200) NOT NULL,
  249. CATEGORY_SLUG VARCHAR2(200) NOT NULL,
  250. DESCRIPTION NVARCHAR2(1000),
  251. ICON_URL VARCHAR2(500),
  252. PARENT_ID NUMBER(10),
  253. DISPLAY_ORDER NUMBER(5) DEFAULT 1,
  254. STATUS NUMBER(1) DEFAULT 1,
  255. CREATED_DATE DATE DEFAULT SYSDATE,
  256. LAST_UPDATE DATE,
  257. CONSTRAINT ARTICLE_CATEGORY_PK PRIMARY KEY (ID),
  258. CONSTRAINT ARTICLE_CATEGORY_PARENT_FK FOREIGN KEY (PARENT_ID) REFERENCES LAOS_ESIM.ARTICLE_CATEGORY(ID)
  259. );
  260. COMMENT ON TABLE LAOS_ESIM.ARTICLE_CATEGORY IS 'Bang danh muc bai viet (Cam nang, Huong dan)';
  261. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.ID IS 'ID tu dong tang';
  262. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.CATEGORY_NAME IS 'Ten danh muc';
  263. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.CATEGORY_SLUG IS 'URL slug cua danh muc';
  264. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.DESCRIPTION IS 'Mo ta danh muc';
  265. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.ICON_URL IS 'Duong dan icon';
  266. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.PARENT_ID IS 'ID danh muc cha (null = goc)';
  267. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.DISPLAY_ORDER IS 'Thu tu hien thi';
  268. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.STATUS IS 'Trang thai: 0=An, 1=Hien';
  269. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.CREATED_DATE IS 'Ngay tao';
  270. COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.LAST_UPDATE IS 'Ngay cap nhat';
  271. CREATE SEQUENCE LAOS_ESIM.ARTICLE_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  272. -- ARTICLE: Blog posts/Library articles
  273. CREATE TABLE LAOS_ESIM.ARTICLE (
  274. ID NUMBER(10) NOT NULL,
  275. CATEGORY_ID NUMBER(10),
  276. TITLE NVARCHAR2(500) NOT NULL,
  277. SLUG VARCHAR2(500) NOT NULL,
  278. SUMMARY NVARCHAR2(2000),
  279. CONTENT CLOB,
  280. THUMBNAIL_URL VARCHAR2(1000),
  281. COVER_IMAGE_URL VARCHAR2(1000),
  282. META_DESCRIPTION NVARCHAR2(500),
  283. META_KEYWORDS NVARCHAR2(500),
  284. AUTHOR_ID NUMBER(10),
  285. VIEW_COUNT NUMBER(10) DEFAULT 0,
  286. IS_FEATURED NUMBER(1) DEFAULT 0,
  287. IS_PINNED NUMBER(1) DEFAULT 0,
  288. STATUS NUMBER(1) DEFAULT 0,
  289. PUBLISHED_DATE DATE,
  290. LANGUAGE VARCHAR2(10) DEFAULT 'vi',
  291. CREATED_BY NUMBER(10),
  292. CREATED_DATE DATE DEFAULT SYSDATE,
  293. LAST_UPDATE DATE,
  294. UPDATED_BY NUMBER(10),
  295. CONSTRAINT ARTICLE_PK PRIMARY KEY (ID),
  296. CONSTRAINT ARTICLE_CATEGORY_FK FOREIGN KEY (CATEGORY_ID) REFERENCES LAOS_ESIM.ARTICLE_CATEGORY(ID)
  297. );
  298. COMMENT ON TABLE LAOS_ESIM.ARTICLE IS 'Bang bai viet (Cam nang du lich, Huong dan)';
  299. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.ID IS 'ID tu dong tang';
  300. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CATEGORY_ID IS 'ID danh muc bai viet';
  301. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.TITLE IS 'Tieu de bai viet';
  302. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.SLUG IS 'URL-friendly slug';
  303. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.SUMMARY IS 'Tom tat noi dung';
  304. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CONTENT IS 'Noi dung HTML day du';
  305. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.THUMBNAIL_URL IS 'Anh thu nho';
  306. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.COVER_IMAGE_URL IS 'Anh bia bai viet';
  307. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.META_DESCRIPTION IS 'Mo ta SEO';
  308. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.META_KEYWORDS IS 'Tu khoa SEO';
  309. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.AUTHOR_ID IS 'ID tac gia';
  310. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.VIEW_COUNT IS 'So luot xem';
  311. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.IS_FEATURED IS 'Bai viet noi bat: 0=Khong, 1=Co';
  312. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.IS_PINNED IS 'Ghim len dau: 0=Khong, 1=Co';
  313. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.STATUS IS 'Trang thai: 0=Nhap, 1=Xuat ban, 2=An';
  314. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.PUBLISHED_DATE IS 'Ngay xuat ban';
  315. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.LANGUAGE IS 'Ngon ngu: vi, en, lo';
  316. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CREATED_BY IS 'ID nguoi tao';
  317. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CREATED_DATE IS 'Ngay tao';
  318. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.LAST_UPDATE IS 'Ngay cap nhat';
  319. COMMENT ON COLUMN LAOS_ESIM.ARTICLE.UPDATED_BY IS 'ID nguoi cap nhat';
  320. CREATE SEQUENCE LAOS_ESIM.ARTICLE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  321. CREATE UNIQUE INDEX LAOS_ESIM.ARTICLE_SLUG_LANG_UQ ON LAOS_ESIM.ARTICLE(SLUG, LANGUAGE);
  322. CREATE INDEX LAOS_ESIM.ARTICLE_CATEGORY_IDX ON LAOS_ESIM.ARTICLE(CATEGORY_ID);
  323. CREATE INDEX LAOS_ESIM.ARTICLE_STATUS_IDX ON LAOS_ESIM.ARTICLE(STATUS, PUBLISHED_DATE);
  324. -- ============================================================================
  325. -- VIII. SUPPORT CENTER TABLES (Based on infigate.vn support structure)
  326. -- ============================================================================
  327. -- FAQ_CATEGORY: FAQ categories
  328. CREATE TABLE LAOS_ESIM.FAQ_CATEGORY (
  329. ID NUMBER(10) NOT NULL,
  330. CATEGORY_NAME NVARCHAR2(200) NOT NULL,
  331. CATEGORY_SLUG VARCHAR2(200) NOT NULL,
  332. DESCRIPTION NVARCHAR2(1000),
  333. ICON_URL VARCHAR2(500),
  334. DISPLAY_ORDER NUMBER(5) DEFAULT 1,
  335. STATUS NUMBER(1) DEFAULT 1,
  336. LANGUAGE VARCHAR2(10) DEFAULT 'vi',
  337. CREATED_DATE DATE DEFAULT SYSDATE,
  338. LAST_UPDATE DATE,
  339. CONSTRAINT FAQ_CATEGORY_PK PRIMARY KEY (ID)
  340. );
  341. COMMENT ON TABLE LAOS_ESIM.FAQ_CATEGORY IS 'Bang danh muc FAQ (Gioi thieu, Cai dat, Su dung, Su co)';
  342. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.ID IS 'ID tu dong tang';
  343. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.CATEGORY_NAME IS 'Ten danh muc (VD: Gioi thieu co ban, Cai dat & kich hoat)';
  344. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.CATEGORY_SLUG IS 'URL slug cua danh muc';
  345. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.DESCRIPTION IS 'Mo ta danh muc';
  346. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.ICON_URL IS 'Duong dan icon danh muc';
  347. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.DISPLAY_ORDER IS 'Thu tu hien thi';
  348. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.STATUS IS 'Trang thai: 0=An, 1=Hien';
  349. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.LANGUAGE IS 'Ngon ngu: vi, en, lo';
  350. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.CREATED_DATE IS 'Ngay tao';
  351. COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.LAST_UPDATE IS 'Ngay cap nhat';
  352. CREATE SEQUENCE LAOS_ESIM.FAQ_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  353. -- FAQ: Frequently Asked Questions
  354. CREATE TABLE LAOS_ESIM.FAQ (
  355. ID NUMBER(10) NOT NULL,
  356. CATEGORY_ID NUMBER(10),
  357. QUESTION NVARCHAR2(1000) NOT NULL,
  358. ANSWER CLOB,
  359. DISPLAY_ORDER NUMBER(5) DEFAULT 1,
  360. VIEW_COUNT NUMBER(10) DEFAULT 0,
  361. IS_FEATURED NUMBER(1) DEFAULT 0,
  362. STATUS NUMBER(1) DEFAULT 1,
  363. LANGUAGE VARCHAR2(10) DEFAULT 'vi',
  364. CREATED_BY NUMBER(10),
  365. CREATED_DATE DATE DEFAULT SYSDATE,
  366. LAST_UPDATE DATE,
  367. CONSTRAINT FAQ_PK PRIMARY KEY (ID),
  368. CONSTRAINT FAQ_CATEGORY_FK FOREIGN KEY (CATEGORY_ID) REFERENCES LAOS_ESIM.FAQ_CATEGORY(ID)
  369. );
  370. COMMENT ON TABLE LAOS_ESIM.FAQ IS 'Bang cau hoi thuong gap';
  371. COMMENT ON COLUMN LAOS_ESIM.FAQ.ID IS 'ID tu dong tang';
  372. COMMENT ON COLUMN LAOS_ESIM.FAQ.CATEGORY_ID IS 'ID danh muc FAQ';
  373. COMMENT ON COLUMN LAOS_ESIM.FAQ.QUESTION IS 'Cau hoi';
  374. COMMENT ON COLUMN LAOS_ESIM.FAQ.ANSWER IS 'Cau tra loi (HTML)';
  375. COMMENT ON COLUMN LAOS_ESIM.FAQ.DISPLAY_ORDER IS 'Thu tu hien thi';
  376. COMMENT ON COLUMN LAOS_ESIM.FAQ.VIEW_COUNT IS 'So luot xem';
  377. COMMENT ON COLUMN LAOS_ESIM.FAQ.IS_FEATURED IS 'Noi bat trang chu: 0=Khong, 1=Co';
  378. COMMENT ON COLUMN LAOS_ESIM.FAQ.STATUS IS 'Trang thai: 0=An, 1=Hien';
  379. COMMENT ON COLUMN LAOS_ESIM.FAQ.LANGUAGE IS 'Ngon ngu: vi, en, lo';
  380. COMMENT ON COLUMN LAOS_ESIM.FAQ.CREATED_BY IS 'ID nguoi tao';
  381. COMMENT ON COLUMN LAOS_ESIM.FAQ.CREATED_DATE IS 'Ngay tao';
  382. COMMENT ON COLUMN LAOS_ESIM.FAQ.LAST_UPDATE IS 'Ngay cap nhat';
  383. CREATE SEQUENCE LAOS_ESIM.FAQ_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  384. CREATE INDEX LAOS_ESIM.FAQ_CATEGORY_IDX ON LAOS_ESIM.FAQ(CATEGORY_ID);
  385. -- ============================================================================
  386. -- IX. CONTACT & CUSTOMER REVIEW TABLES
  387. -- ============================================================================
  388. -- CONTACT_FORM: Contact form submissions
  389. CREATE TABLE LAOS_ESIM.CONTACT_FORM (
  390. ID NUMBER(10) NOT NULL,
  391. FULL_NAME NVARCHAR2(200) NOT NULL,
  392. EMAIL VARCHAR2(200) NOT NULL,
  393. PHONE_NUMBER VARCHAR2(20),
  394. SUBJECT NVARCHAR2(500),
  395. MESSAGE CLOB NOT NULL,
  396. STATUS NUMBER(2) DEFAULT 0,
  397. ASSIGNED_TO NUMBER(10),
  398. ADMIN_NOTES NVARCHAR2(2000),
  399. REPLIED_AT DATE,
  400. IP_ADDRESS VARCHAR2(50),
  401. CREATED_DATE DATE DEFAULT SYSDATE,
  402. CONSTRAINT CONTACT_FORM_PK PRIMARY KEY (ID)
  403. );
  404. COMMENT ON TABLE LAOS_ESIM.CONTACT_FORM IS 'Bang luu form lien he tu khach hang';
  405. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.ID IS 'ID tu dong tang';
  406. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.FULL_NAME IS 'Ho ten khach hang';
  407. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.EMAIL IS 'Email lien he';
  408. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.PHONE_NUMBER IS 'So dien thoai';
  409. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.SUBJECT IS 'Chu de lien he';
  410. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.MESSAGE IS 'Noi dung tin nhan';
  411. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.STATUS IS 'Trang thai: 0=Moi, 1=Dang xu ly, 2=Da tra loi, 3=Dong';
  412. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.ASSIGNED_TO IS 'ID nhan vien xu ly';
  413. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.ADMIN_NOTES IS 'Ghi chu cua admin';
  414. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.REPLIED_AT IS 'Thoi gian tra loi';
  415. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.IP_ADDRESS IS 'Dia chi IP gui form';
  416. COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.CREATED_DATE IS 'Ngay gui';
  417. CREATE SEQUENCE LAOS_ESIM.CONTACT_FORM_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  418. -- CUSTOMER_REVIEW: Customer testimonials (Khach hang noi ve chung toi)
  419. CREATE TABLE LAOS_ESIM.CUSTOMER_REVIEW (
  420. ID NUMBER(10) NOT NULL,
  421. CUSTOMER_NAME NVARCHAR2(200) NOT NULL,
  422. AVATAR_URL VARCHAR2(500),
  423. RATING NUMBER(1) DEFAULT 5,
  424. REVIEW_CONTENT NVARCHAR2(2000) NOT NULL,
  425. DESTINATION NVARCHAR2(200),
  426. DISPLAY_ORDER NUMBER(5) DEFAULT 1,
  427. IS_FEATURED NUMBER(1) DEFAULT 0,
  428. STATUS NUMBER(1) DEFAULT 0,
  429. CREATED_DATE DATE DEFAULT SYSDATE,
  430. APPROVED_DATE DATE,
  431. APPROVED_BY NUMBER(10),
  432. CONSTRAINT CUSTOMER_REVIEW_PK PRIMARY KEY (ID)
  433. );
  434. COMMENT ON TABLE LAOS_ESIM.CUSTOMER_REVIEW IS 'Bang danh gia cua khach hang (Testimonials)';
  435. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.ID IS 'ID tu dong tang';
  436. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.CUSTOMER_NAME IS 'Ten khach hang';
  437. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.AVATAR_URL IS 'Anh dai dien khach hang';
  438. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.RATING IS 'Diem danh gia 1-5 sao';
  439. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.REVIEW_CONTENT IS 'Noi dung danh gia';
  440. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.DESTINATION IS 'Diem den du lich (VD: Thai Lan, Han Quoc)';
  441. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.DISPLAY_ORDER IS 'Thu tu hien thi';
  442. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.IS_FEATURED IS 'Hien thi trang chu: 0=Khong, 1=Co';
  443. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.STATUS IS 'Trang thai: 0=Cho duyet, 1=Da duyet, 2=Tu choi';
  444. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.CREATED_DATE IS 'Ngay tao';
  445. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.APPROVED_DATE IS 'Ngay duyet';
  446. COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.APPROVED_BY IS 'ID nguoi duyet';
  447. CREATE SEQUENCE LAOS_ESIM.CUSTOMER_REVIEW_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  448. -- ============================================================================
  449. -- X. ADMIN USER TABLE
  450. -- ============================================================================
  451. CREATE TABLE LAOS_ESIM.ADMIN_USER (
  452. ID NUMBER(10) NOT NULL,
  453. USERNAME VARCHAR2(100) NOT NULL,
  454. PASSWORD_HASH VARCHAR2(500) NOT NULL,
  455. EMAIL VARCHAR2(200) NOT NULL,
  456. FULL_NAME NVARCHAR2(200),
  457. AVATAR_URL VARCHAR2(500),
  458. ROLE VARCHAR2(50) DEFAULT 'EDITOR',
  459. STATUS NUMBER(1) DEFAULT 1,
  460. LAST_LOGIN_DATE DATE,
  461. CREATED_DATE DATE DEFAULT SYSDATE,
  462. LAST_UPDATE DATE,
  463. CONSTRAINT ADMIN_USER_PK PRIMARY KEY (ID)
  464. );
  465. COMMENT ON TABLE LAOS_ESIM.ADMIN_USER IS 'Bang quan ly user admin/CMS';
  466. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.ID IS 'ID tu dong tang';
  467. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.USERNAME IS 'Ten dang nhap';
  468. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.PASSWORD_HASH IS 'Mat khau ma hoa';
  469. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.EMAIL IS 'Email admin';
  470. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.FULL_NAME IS 'Ho va ten';
  471. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.AVATAR_URL IS 'Anh dai dien';
  472. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.ROLE IS 'Vai tro: SUPER_ADMIN, ADMIN, EDITOR, VIEWER';
  473. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.STATUS IS 'Trang thai: 0=Khoa, 1=Hoat dong';
  474. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.LAST_LOGIN_DATE IS 'Thoi gian dang nhap gan nhat';
  475. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.CREATED_DATE IS 'Ngay tao';
  476. COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.LAST_UPDATE IS 'Ngay cap nhat';
  477. CREATE SEQUENCE LAOS_ESIM.ADMIN_USER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  478. CREATE UNIQUE INDEX LAOS_ESIM.ADMIN_USER_USERNAME_UQ ON LAOS_ESIM.ADMIN_USER(USERNAME);
  479. CREATE UNIQUE INDEX LAOS_ESIM.ADMIN_USER_EMAIL_UQ ON LAOS_ESIM.ADMIN_USER(EMAIL);
  480. -- ============================================================================
  481. -- XI. SYSTEM CONFIGURATION TABLE
  482. -- ============================================================================
  483. CREATE TABLE LAOS_ESIM.SYSTEM_CONFIG (
  484. ID NUMBER(10) NOT NULL,
  485. CONFIG_KEY VARCHAR2(100) NOT NULL,
  486. CONFIG_VALUE NVARCHAR2(2000),
  487. CONFIG_TYPE VARCHAR2(50) DEFAULT 'STRING',
  488. DESCRIPTION NVARCHAR2(500),
  489. IS_EDITABLE NUMBER(1) DEFAULT 1,
  490. CREATED_DATE DATE DEFAULT SYSDATE,
  491. LAST_UPDATE DATE,
  492. CONSTRAINT SYSTEM_CONFIG_PK PRIMARY KEY (ID)
  493. );
  494. COMMENT ON TABLE LAOS_ESIM.SYSTEM_CONFIG IS 'Bang cau hinh he thong';
  495. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.ID IS 'ID tu dong tang';
  496. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CONFIG_KEY IS 'Khoa cau hinh (VD: SITE_NAME, HOTLINE)';
  497. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CONFIG_VALUE IS 'Gia tri cau hinh';
  498. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CONFIG_TYPE IS 'Loai du lieu: STRING, NUMBER, BOOLEAN, JSON';
  499. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.DESCRIPTION IS 'Mo ta cau hinh';
  500. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.IS_EDITABLE IS 'Cho phep sua: 0=Khong, 1=Co';
  501. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CREATED_DATE IS 'Ngay tao';
  502. COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.LAST_UPDATE IS 'Ngay cap nhat';
  503. CREATE SEQUENCE LAOS_ESIM.SYSTEM_CONFIG_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
  504. CREATE UNIQUE INDEX LAOS_ESIM.SYSTEM_CONFIG_KEY_UQ ON LAOS_ESIM.SYSTEM_CONFIG(CONFIG_KEY);
  505. -- ============================================================================
  506. -- XII. INSERT DEFAULT DATA
  507. -- ============================================================================
  508. -- Insert default FAQ categories (based on infigate.vn support-center)
  509. INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE)
  510. VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Giới thiệu cơ bản', 'gioi-thieu-co-ban', N'Các thông tin cơ bản về eSIM', 1, 1, 'vi');
  511. INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE)
  512. VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Cài đặt & kích hoạt eSIM', 'cai-dat-kich-hoat-esim', N'Hướng dẫn cài đặt và kích hoạt eSIM trên thiết bị', 2, 1, 'vi');
  513. INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE)
  514. VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Cách sử dụng eSIM', 'cach-su-dung-esim', N'Hướng dẫn sử dụng eSIM hiệu quả', 3, 1, 'vi');
  515. INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE)
  516. VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Các sự cố phổ biến', 'cac-su-co-pho-bien', N'Xử lý các sự cố thường gặp khi sử dụng eSIM', 4, 1, 'vi');
  517. -- Insert default system config
  518. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  519. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'SITE_NAME', 'EsimLao', 'STRING', N'Tên website', 1);
  520. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  521. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'HOTLINE', '1900 9272', 'STRING', N'Số hotline hỗ trợ', 1);
  522. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  523. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'SUPPORT_EMAIL', 'support@esimlao.com', 'STRING', N'Email hỗ trợ', 1);
  524. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  525. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'COMPANY_ADDRESS', N'Vientiane, Lao PDR', 'STRING', N'Địa chỉ công ty', 1);
  526. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  527. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'OTP_EXPIRE_MINUTES', '5', 'NUMBER', N'Thời gian hết hạn OTP (phút)', 1);
  528. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  529. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'TOKEN_EXPIRE_HOURS', '24', 'NUMBER', N'Thời gian hết hạn access token (giờ)', 1);
  530. INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE)
  531. VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'REFRESH_TOKEN_EXPIRE_DAYS', '30', 'NUMBER', N'Thời gian hết hạn refresh token (ngày)', 1);
  532. -- Insert default CMS content pages
  533. INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT)
  534. VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'ABOUT_US', N'Về chúng tôi', 'about-us', N'Thông tin về EsimLao', 'STATIC', 1, 'vi', NULL);
  535. INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT)
  536. VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'TERMS_OF_SERVICE', N'Điều khoản dịch vụ', 'terms-and-services', N'Điều khoản sử dụng dịch vụ', 'POLICY', 1, 'vi', NULL);
  537. INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT)
  538. VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'PRIVACY_POLICY', N'Chính sách bảo mật', 'privacy-policy', N'Chính sách bảo mật thông tin', 'POLICY', 1, 'vi', NULL);
  539. INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT)
  540. VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'PAYMENT_POLICY', N'Chính sách thanh toán', 'payment-policy', N'Chính sách thanh toán', 'POLICY', 1, 'vi', NULL);
  541. INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT)
  542. VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'DELIVERY_POLICY', N'Chính sách giao hàng', 'delivery-policy', N'Chính sách giao hàng', 'POLICY', 1, 'vi', NULL);
  543. INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT)
  544. VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'REFUND_POLICY', N'Chính sách đổi trả và hoàn tiền', 'refund-policy', N'Chính sách đổi trả và hoàn tiền', 'POLICY', 1, 'vi', NULL);
  545. -- Insert default admin user (password: Admin@123 - should be hashed in production)
  546. INSERT INTO LAOS_ESIM.ADMIN_USER (ID, USERNAME, PASSWORD_HASH, EMAIL, FULL_NAME, ROLE, STATUS)
  547. VALUES (LAOS_ESIM.ADMIN_USER_SEQ.NEXTVAL, 'admin', 'CHANGE_THIS_TO_HASHED_PASSWORD', 'admin@esimlao.com', 'Administrator', 'SUPER_ADMIN', 1);
  548. COMMIT;
  549. -- ============================================================================
  550. -- END OF SCRIPT
  551. -- ============================================================================