loan_system.sql 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. -- 创建数据库
  2. CREATE DATABASE IF NOT EXISTS `loan_system` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. USE `loan_system`;
  4. -- 1. roles 表(角色表)
  5. CREATE TABLE `roles` (
  6. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  7. `role_name` VARCHAR(64) UNIQUE,
  8. `description` VARCHAR(255),
  9. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  10. );
  11. -- 2. users 表(用户表)
  12. CREATE TABLE `users` (
  13. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  14. `openid` VARCHAR(128),
  15. `username` VARCHAR(64) UNIQUE,
  16. `password_hash` VARCHAR(255),
  17. `real_name` VARCHAR(100),
  18. `sex` VARCHAR(10),
  19. `mobile` CHAR(11),
  20. `role` VARCHAR(255),
  21. `ext_role_type` VARCHAR(50),
  22. `dept` VARCHAR(100),
  23. `status` TINYINT,
  24. `created_time` DATETIME,
  25. `updated_time` DATETIME,
  26. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  27. INDEX `idx_mobile` (`mobile`)
  28. );
  29. -- 3. customers 表(客户表)
  30. CREATE TABLE `customers` (
  31. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  32. `openid` VARCHAR(128),
  33. `name` VARCHAR(100),
  34. `sex` VARCHAR(10),
  35. `id_number` CHAR(18),
  36. `mobile` CHAR(11),
  37. `register_source` VARCHAR(50),
  38. `bank_account` VARCHAR(64),
  39. `face_auth` BOOLEAN,
  40. `create_time` DATETIME,
  41. `update_time` DATETIME,
  42. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  43. INDEX `idx_id_number` (`id_number`),
  44. INDEX `idx_mobile` (`mobile`)
  45. );
  46. -- 4. customers_other 表(其他客户表)
  47. CREATE TABLE `customers_other` (
  48. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  49. `name` VARCHAR(100),
  50. `id_number` CHAR(18),
  51. `mobile` CHAR(11),
  52. `create_time` DATETIME,
  53. `update_time` DATETIME,
  54. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  55. );
  56. -- 5. collateral 表(押品表)
  57. CREATE TABLE `collateral` (
  58. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  59. `case_id` BIGINT,
  60. `collateral_type` VARCHAR(30),
  61. `owner_customer_id` BIGINT,
  62. `allocated_amount` DECIMAL(18,2),
  63. `address` VARCHAR(500),
  64. `eval_price` DECIMAL(18,2),
  65. `is_involved_in_litigation` BOOLEAN,
  66. `staus` VARCHAR(20),
  67. `create_time` DATETIME,
  68. `update_time` DATETIME,
  69. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  70. );
  71. -- 6. loan_case 表(业务单表)
  72. CREATE TABLE `loan_case` (
  73. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  74. `case_no` VARCHAR(50) UNIQUE,
  75. `customer_id` BIGINT,
  76. `business_type` VARCHAR(20),
  77. `business_attrs` VARCHAR(200),
  78. `channel_name` BIGINT,
  79. `remark_id` VARCHAR(20),
  80. `custom1_id` BIGINT,
  81. `custom2_id` BIGINT,
  82. `requested_amount` DECIMAL(18,2),
  83. `total_loan_amount` DECIMAL(18,2),
  84. `create_time` DATETIME,
  85. `update_time` DATETIME,
  86. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  87. );
  88. -- 8. documents 表(附件表)
  89. CREATE TABLE `documents` (
  90. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  91. `case_id` BIGINT,
  92. `owner_id` BIGINT,
  93. `type_id` BIGINT,
  94. `doc_type` VARCHAR(50),
  95. `file_path` VARCHAR(500),
  96. `file_name` VARCHAR(255),
  97. `file_size` BIGINT,
  98. `is_current` BOOLEAN,
  99. `create_time` DATETIME,
  100. `update_time` DATETIME,
  101. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  102. INDEX `idx_owner_id` (`owner_id`)
  103. );
  104. -- 9. approval_record 表(审批记录表)
  105. CREATE TABLE `approval_record` (
  106. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  107. `case_id` BIGINT,
  108. `step_name` VARCHAR(100),
  109. `approver_id` BIGINT,
  110. `decision` VARCHAR(20),
  111. `comments` TEXT,
  112. `create_time` DATETIME,
  113. `update_time` DATETIME,
  114. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  115. INDEX `idx_case_id` (`case_id`)
  116. );
  117. -- 10. contract 表(合同表)
  118. CREATE TABLE `contract` (
  119. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  120. `business_attr` VARCHAR(200),
  121. `case_id` BIGINT,
  122. `contract_no` VARCHAR(50) UNIQUE,
  123. `contract_name` VARCHAR(50),
  124. `contract_version` INT,
  125. `contract_amount` DECIMAL(15,2),
  126. `interest_rate` DECIMAL(5,4),
  127. `loan_period` INT,
  128. `content` TEXT,
  129. `signed_by_customer` BOOLEAN,
  130. `sifned_id` BIGINT,
  131. `signed_time` DATETIME,
  132. `create_time` DATETIME,
  133. `update_time` DATETIME,
  134. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  135. INDEX `idx_case_id` (`case_id`)
  136. );
  137. -- 11. disbursement 表(出款表)
  138. CREATE TABLE `disbursement` (
  139. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  140. `case_id` BIGINT,
  141. `payout_approve_user_id` BIGINT,
  142. `payout_operator_user_id` BIGINT,
  143. `apply_by` BIGINT,
  144. `apply_at` DATETIME,
  145. `disbursement_type` VARCHAR(10),
  146. `planned_amount` DECIMAL(18,2),
  147. `planned_location` VARCHAR(255),
  148. `disbursement_status` VARCHAR(30),
  149. `contract_id` BIGINT,
  150. `payout_time` DATETIME,
  151. `create_time` DATETIME,
  152. `update_time` DATETIME,
  153. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  154. INDEX `idx_case_id` (`case_id`),
  155. INDEX `idx_disbursement_status` (`disbursement_status`)
  156. );
  157. -- disbursement_record 表(出款记录表)
  158. CREATE TABLE `disbursement_record` (
  159. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  160. `disbursement_id` BIGINT,
  161. `amount` DECIMAL(18,2),
  162. `create_time` DATETIME,
  163. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  164. );
  165. -- 12. repayment 表(回款表)
  166. CREATE TABLE `repayment` (
  167. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  168. `case_id` BIGINT,
  169. `contract_id` BIGINT,
  170. `repay_by_customer_id` BIGINT,
  171. `repayment_plan_user_id` BIGINT,
  172. `repayment_operator_user_id` BIGINT,
  173. `repayment_type` VARCHAR(10),
  174. `repay_amount` DECIMAL(18,2),
  175. `repay_at` DATETIME,
  176. `repay_bank` VARCHAR(2000),
  177. `repay_record_id` BIGINT,
  178. `confirmed_by` BIGINT,
  179. `confirmed_at` DATETIME,
  180. `interest` DECIMAL(18,2),
  181. `is_cleared` BOOLEAN,
  182. `create_time` DATETIME,
  183. `update_time` DATETIME,
  184. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  185. INDEX `idx_case_id` (`case_id`),
  186. INDEX `idx_repay_at` (`repay_at`),
  187. INDEX `idx_is_cleared` (`is_cleared`)
  188. );
  189. -- repayment_record 表(回款记录表)
  190. CREATE TABLE `repayment_record` (
  191. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  192. `repayment_id` BIGINT,
  193. `amount` DECIMAL(18,2),
  194. `create_time` DATETIME,
  195. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  196. );
  197. -- 14. biz_recommender 表(推荐人表)
  198. CREATE TABLE `biz_recommender` (
  199. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  200. `recommender_code` VARCHAR(50) UNIQUE,
  201. `recommender_name` VARCHAR(100),
  202. `recommender_type` VARCHAR(50),
  203. `phone` VARCHAR(20),
  204. `channel` VARCHAR(50),
  205. `id_card` VARCHAR(20),
  206. `bank_account` VARCHAR(50),
  207. `commission_rate` DECIMAL(5,4),
  208. `company` VARCHAR(50),
  209. `remark` TEXT,
  210. `create_time` DATETIME,
  211. `update_time` DATETIME,
  212. `create_user_id` BIGINT,
  213. `update_user_id` BIGINT,
  214. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  215. );
  216. -- 15. sys_message 表(消息表)
  217. CREATE TABLE `sys_message` (
  218. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  219. `user_id` BIGINT,
  220. `message_title` VARCHAR(200),
  221. `message_content` TEXT,
  222. `message_type` VARCHAR(50),
  223. `read_status` TINYINT,
  224. `related_id` BIGINT,
  225. `related_type` VARCHAR(50),
  226. `create_time` DATETIME,
  227. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  228. );
  229. -- 16. stat_business_snapshot 表(业务统计快照表)
  230. CREATE TABLE `stat_business_snapshot` (
  231. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  232. `stat_date` DATE,
  233. `channel` VARCHAR(50),
  234. `biz_type` VARCHAR(50),
  235. `application_count` INT,
  236. `total_loan_amount` DECIMAL(15,2),
  237. `user_id` BIGINT,
  238. `create_time` DATETIME,
  239. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  240. );
  241. -- 17. stat_fund_efficiency 表(资金效率统计表)
  242. CREATE TABLE `stat_fund_efficiency` (
  243. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  244. `stat_month` VARCHAR(7),
  245. `daily_loan_balance` DECIMAL(15,2),
  246. `actual_days` INT,
  247. `interest_income` DECIMAL(15,2),
  248. `create_time` DATETIME,
  249. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  250. );
  251. -- 18. dict_business_type 表(业务类型字典)
  252. CREATE TABLE `dict_business_type` (
  253. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  254. `code` VARCHAR(50) UNIQUE,
  255. `name` VARCHAR(100),
  256. `enabled` BOOLEAN,
  257. `sort_order` INT,
  258. `created_at` DATETIME,
  259. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  260. INDEX `idx_enabled` (`enabled`)
  261. );
  262. -- 19. dict_channel 表(渠道字典)
  263. CREATE TABLE `dict_channel` (
  264. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  265. `code` VARCHAR(50) UNIQUE,
  266. `name` VARCHAR(100),
  267. `enabled` BOOLEAN,
  268. `sort_order` INT,
  269. `created_at` DATETIME,
  270. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  271. INDEX `idx_enabled` (`enabled`)
  272. );
  273. -- 20. dict_attribute 表(业务属性字典)
  274. CREATE TABLE `dict_attribute` (
  275. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  276. `code` VARCHAR(50) UNIQUE,
  277. `name` VARCHAR(100),
  278. `enabled` BOOLEAN,
  279. `sort_order` INT,
  280. `created_at` DATETIME,
  281. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  282. INDEX `idx_enabled` (`enabled`)
  283. );
  284. -- 21. dict_location 表(位置字典)
  285. CREATE TABLE `dict_location` (
  286. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  287. `code` VARCHAR(50) UNIQUE,
  288. `name` VARCHAR(100),
  289. `enabled` BOOLEAN,
  290. `sort_order` INT,
  291. `created_at` DATETIME,
  292. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  293. INDEX `idx_enabled` (`enabled`)
  294. );
  295. -- 22. dict_message 表(消息类型字典)
  296. CREATE TABLE `dict_message` (
  297. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  298. `code` INT UNIQUE,
  299. `name` VARCHAR(100),
  300. `enabled` BOOLEAN,
  301. `sort_order` INT,
  302. `created_at` DATETIME,
  303. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  304. INDEX `idx_enabled` (`enabled`)
  305. );
  306. -- 23. dict_type 表(资料类型表)
  307. CREATE TABLE `dict_type` (
  308. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  309. `code` INT UNIQUE,
  310. `name` VARCHAR(100),
  311. `enabled` BOOLEAN,
  312. `sort_order` INT,
  313. `created_at` DATETIME,
  314. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  315. INDEX `idx_enabled` (`enabled`)
  316. );
  317. -- 25. dict_step 表(环节类型)
  318. CREATE TABLE `dict_step` (
  319. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  320. `code` INT UNIQUE,
  321. `name` VARCHAR(50),
  322. `is_parent` BIGINT,
  323. `enabled` BOOLEAN,
  324. `sort_order` INT,
  325. `created_at` DATETIME,
  326. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除',
  327. INDEX `idx_enabled` (`enabled`)
  328. );
  329. -- 26. steps 表
  330. CREATE TABLE `steps` (
  331. `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  332. `step_name` VARCHAR(50),
  333. `case_id` BIGINT,
  334. `status` VARCHAR(50),
  335. `user_id1` BIGINT,
  336. `user_id2` BIGINT,
  337. `begin_time` DATETIME,
  338. `parent_id` BIGINT,
  339. `pre_id` BIGINT,
  340. `next_id` BIGINT,
  341. `create_time` DATETIME,
  342. `update_time` DATETIME,
  343. `is_delete` TINYINT(1) DEFAULT 0 COMMENT '是否删除'
  344. );