数据库业务表设计之账户,资金篇

1,337 阅读32分钟

详情了解开源项目flyray-tage

曾经一直困惑,这个余额的问题,就是怎么确保余额是真实的,不被篡改呢?这里用了签名算法。
在新增或者更新accountBalance字段的时候,都会同步更新checkSum字段,如下:
merchantAccount.setAccountBalance(merchantAccount.getAccountBalance().add(new BigDecimal(intoAccountRequest.getIntoAccAmt())));
merchantAccount.setCheckSum(MD5.sign(merchantAccount.getAccountBalance().toString(), balanceSaltValue, "utf-8"));

然后在每次进行涉及到余额操作(比如冻结,解冻,转账等)的时候,进行余额的判断,来保证余额的安全,防止被非法篡改:
if (!MD5.sign(merchantAccount.getAccountBalance().toString(), balanceSaltValue, "utf-8").equals(merchantAccount.getCheckSum())) {..}

下面是主要的表结构设计

CREATE DATABASE ;
USE `firstsnow_auth`;

DROP TABLE IF EXISTS `customer_base`;
CREATE TABLE `customer_base` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` varchar(32) NOT NULL COMMENT '用户编号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_type` varchar(6) NOT NULL COMMENT '客户类型    CUST00:平台  ( CUST01:商户  CUST02:用户):普通客户默认为空',
  `username` varchar(60) DEFAULT NULL COMMENT '登陆注册名称',
  `password` varchar(255) NOT NULL COMMENT '登陆密码',
  `pay_password` varchar(255) DEFAULT NULL COMMENT '支付密码',
  `password_error_count` int(11) DEFAULT NULL COMMENT '登录密码错误次数',
  `pay_password_error_count` int(11) DEFAULT NULL COMMENT '支付密码错误次数',
  `password_status` varchar(10) DEFAULT NULL COMMENT '登录密码状态  00:正常   01:未设置   02:锁定',
  `pay_password_status` varchar(10) DEFAULT NULL COMMENT '支付密码状态    00:正常   01:未设置   02:锁定',
  `personal_id` varchar(32) DEFAULT NULL COMMENT '个人客户编号',
  `merchant_id` varchar(32) DEFAULT NULL COMMENT '商户客户编号',
  `status` varchar(6) DEFAULT NULL COMMENT '账户状态 00:正常,01:客户冻结',
  `authentication_status` varchar(6) DEFAULT NULL COMMENT '认证状态(同步个人客户基础信息表中认证状态)  00:未认证  01:无需认证  02:认证成功  03:认证失败',
  `register_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
  `register_ip` varchar(46) DEFAULT NULL COMMENT '注册IP',
  `login_time` timestamp NULL DEFAULT NULL COMMENT '上次登录时间',
  `login_ip` varchar(46) DEFAULT NULL COMMENT '上次登录IP',
  `last_login_role` varchar(6) DEFAULT NULL COMMENT '最后登录角色(默认为空)  01:个人客户     02 :商户客户',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `password_salt` varchar(20) DEFAULT NULL COMMENT '登录密码盐值',
  `pay_password_salt` varchar(20) DEFAULT NULL COMMENT '支付密码盐值',
  `role_type` varchar(2) DEFAULT NULL COMMENT '供业务拓展使用自定义',
  PRIMARY KEY (`id`,`customer_id`) USING BTREE,
  UNIQUE KEY `customer_base_customerid` (`customer_id`) USING BTREE,
  UNIQUE KEY `customer_base_merchantid` (`merchant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户基础信息';


DROP TABLE IF EXISTS `customer_base_auths`;
CREATE TABLE `customer_base_auths` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_id` varchar(32) NOT NULL COMMENT '用户编号',
  `customer_type` varchar(6) DEFAULT NULL COMMENT '客户类型    CUST00:平台   CUST01:商户  CUST02:用户',
  `auth_type` varchar(6) NOT NULL COMMENT '授权类型  00:登录授权  01:支付授权(预留)',
  `auth_method` varchar(20) DEFAULT NULL COMMENT '授权方式  phone:手机号  email:邮箱   username:用户名  weixin:微信  qq:QQ  weibo:微博',
  `isThird` varchar(6) DEFAULT NULL COMMENT '是否第三方  00:站内    01:第三方',
  `identifier` varchar(32) DEFAULT NULL COMMENT '识别码',
  `credential` varchar(60) NOT NULL COMMENT '凭据',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户授权信息';


DROP TABLE IF EXISTS `customer_message_rel`;
CREATE TABLE `customer_message_rel` (
  `id` varchar(32) NOT NULL COMMENT '序号',
  `customer_id` varchar(32) DEFAULT NULL COMMENT '用户编号',
  `message_id` varchar(32) DEFAULT NULL COMMENT '消息编号',
  `isRead` varchar(2) DEFAULT NULL COMMENT '是否已读  00:未读  01:已读',
  `isDelete` varchar(2) DEFAULT NULL COMMENT '是否删除  00:正常  01:删除',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户消息关联表';


DROP TABLE IF EXISTS `customer_push_msg`;
CREATE TABLE `customer_push_msg` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `customer_no` varchar(32) DEFAULT NULL COMMENT '个人或商户编号(客户类型为平台时字段为空)',
  `trade_type` varchar(6) DEFAULT NULL COMMENT '客户类型    CUST00:平台   CUST01:商户  CUST02:用户',
  `push_tag` varchar(40) DEFAULT NULL COMMENT '消息推送tag',
  `push_alias` varchar(40) DEFAULT NULL COMMENT '消息推送alias',
  `push_registration_id` varchar(40) DEFAULT NULL COMMENT '消息推送RegistrationID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户消息推送参数表';


DROP TABLE IF EXISTS `freeze_journal`;
CREATE TABLE `freeze_journal` (
  `journal_id` varchar(32) NOT NULL COMMENT '流水号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_type` varchar(6) NOT NULL COMMENT '客户类型    CUST00:平台   CUST01:商户  CUST02:用户',
  `customer_no` varchar(32) DEFAULT NULL COMMENT '个人或商户编号',
  `trade_type` varchar(2) NOT NULL COMMENT '交易类型(支付:01,退款:02,提现:03,充值:04)',
  `order_no` varchar(32) NOT NULL COMMENT '订单号',
  `freeze_balance` decimal(18,2) NOT NULL COMMENT '冻结金额',
  `status` varchar(6) NOT NULL COMMENT '冻结状态 1:已冻结  2:部分解冻  3:已解冻',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`journal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='冻结流水表';



DROP TABLE IF EXISTS `merchant_account`;
CREATE TABLE `merchant_account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account_id` varchar(32) NOT NULL COMMENT '账户编号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_id` varchar(32) DEFAULT NULL COMMENT '客户编号',
  `merchant_id` varchar(32) DEFAULT NULL COMMENT '商户编号',
  `merchant_type` varchar(6) NOT NULL COMMENT '商户类型    CUST00:平台   CUST01:商户  ',
  `account_type` varchar(10) NOT NULL COMMENT '账户类型  ACC001:余额账户,ACC002:红包账户,ACC003:积分账户,ACC004:手续费账户 见枚举类AccountType',
  `ccy` varchar(6) DEFAULT NULL COMMENT '币种  CNY:人民币',
  `account_balance` decimal(18,2) DEFAULT NULL COMMENT '账户余额',
  `freeze_balance` decimal(18,2) DEFAULT NULL COMMENT '冻结金额',
  `check_sum` varchar(40) DEFAULT NULL COMMENT '校验码(余额加密值)',
  `status` varchar(2) DEFAULT NULL COMMENT '账户状态 00:正常,01:冻结',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商户账户信息';


DROP TABLE IF EXISTS `merchant_account_journal`;
CREATE TABLE `merchant_account_journal` (
  `journal_id` varchar(32) NOT NULL COMMENT '流水号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `customer_id` varchar(32) DEFAULT NULL COMMENT '客户编号',
  `merchant_name` varchar(64) DEFAULT NULL COMMENT '商户名称',
  `merchant_id` varchar(32) DEFAULT NULL COMMENT '商户编号',
  `from_account_name` varchar(100) DEFAULT NULL COMMENT '来向账号名称',
  `from_account` varchar(32) DEFAULT NULL COMMENT '账户ID',
  `account_type` varchar(10) DEFAULT NULL COMMENT '账户类型    ACC001:余额账户',
  `order_no` varchar(32) DEFAULT NULL COMMENT '订单号',
  `in_out_flag` varchar(2) DEFAULT NULL COMMENT '来往标志  1:入账   2:出账 ',
  `trade_amt` decimal(18,2) DEFAULT NULL COMMENT '交易金额',
  `to_account` varchar(32) DEFAULT NULL COMMENT '去向账号',
  `to_account_name` varchar(100) DEFAULT NULL COMMENT '去向账号名称',
  `trade_type` varchar(2) DEFAULT NULL COMMENT '交易类型(支付:01,退款:02,提现:03,充值:04)',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`journal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商户账户流水(充、转、提、退、冻结流水)';


DROP TABLE IF EXISTS `merchant_base`;
CREATE TABLE `merchant_base` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `merchant_id` varchar(32) NOT NULL COMMENT '商户编号',
  `merchant_name` varchar(60) DEFAULT NULL COMMENT '商户名称',
  `merchant_type` varchar(10) DEFAULT NULL COMMENT '商户类型:见枚举类型 merchantType',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_id` varchar(32) DEFAULT NULL COMMENT '客户编号',
  `third_no` varchar(32) DEFAULT NULL COMMENT '第三方商户编号',
  `parent_mer_id` varchar(32) DEFAULT NULL COMMENT '父级商户编号',
  `merchant_level` varchar(4) DEFAULT NULL COMMENT '商户级别  00:普通商户  01:子商户 ',
  `company_name` varchar(100) DEFAULT NULL COMMENT '企业名称',
  `business_scope` text COMMENT '经营范围',
  `business_no` varchar(60) DEFAULT NULL COMMENT '工商注册号',
  `legal_person_name` varchar(32) DEFAULT NULL COMMENT '法人姓名',
  `legal_person_cred_type` varchar(6) DEFAULT NULL COMMENT '法人证件类型  0-身份证;1-户口本;2-护照;3-军官证;4-士兵证;5-港澳居民往来内地通行证;6-台湾通报往来内地通行证;7-临时身份证;8-外国人居留证;9-警官证;x-其他证件 ',
  `legal_person_cred_no` varchar(32) DEFAULT NULL COMMENT '法人证件号码',
  `business_licence` text COMMENT '营业执照',
  `phone` varchar(11) DEFAULT NULL COMMENT '联系电话',
  `mobile` varchar(32) DEFAULT NULL COMMENT '企业座机',
  `fax` varchar(32) DEFAULT NULL COMMENT '企业传真',
  `http_address` text COMMENT '企业网址',
  `registered_capital` decimal(18,2) DEFAULT NULL COMMENT '注册资金',
  `company_address` text COMMENT '企业地址',
  `authentication_status` varchar(6) DEFAULT NULL COMMENT '认证状态  00:未认证  01:无需认证  02:认证成功  03:认证失败',
  `status` varchar(2) DEFAULT NULL COMMENT '账户状态 00:正常,01:冻结',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `owner` varchar(60) DEFAULT NULL COMMENT '归属人(存后台管理系统登录人员id)指谁发展的客户',
  PRIMARY KEY (`id`,`merchant_id`),
  UNIQUE KEY `Key_merchant_name` (`merchant_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商户客户基础信息';


DROP TABLE IF EXISTS `merchant_base_ext`;
CREATE TABLE `merchant_base_ext` (
  `merchant_id` varchar(32) NOT NULL COMMENT '商户编号',
  `interview` int(11) DEFAULT NULL COMMENT '邀请面试次数',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',
  `zip_code` varchar(8) DEFAULT NULL COMMENT '邮编',
  `spare_address` varchar(32) DEFAULT NULL COMMENT '商户备用地址',
  `signing_date` date DEFAULT NULL COMMENT '签约日期',
  `release_date` date DEFAULT NULL COMMENT '解约日期',
  `wechat_no` varchar(32) DEFAULT NULL COMMENT '联系人微信号',
  `province` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '省',
  `city` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '市',
  `county` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '县',
  PRIMARY KEY (`merchant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商户基础信息扩展表';


DROP TABLE IF EXISTS `merchant_bind_card`;
CREATE TABLE `merchant_bind_card` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `platform_id` varchar(60) COLLATE utf8_bin NOT NULL COMMENT '平台号',
  `merchant_id` varchar(60) COLLATE utf8_bin NOT NULL COMMENT '商户ID',
  `merchant_type` tinyint(2) NOT NULL COMMENT '0:个人 1:企业',
  `id_card_no` varchar(60) COLLATE utf8_bin DEFAULT NULL COMMENT '身份证号',
  `id_card_front_img` text COLLATE utf8_bin COMMENT '身份证正面照片',
  `id_card_back_img` text COLLATE utf8_bin COMMENT '身份证反面照片',
  `cardholder_name` varchar(60) COLLATE utf8_bin DEFAULT NULL COMMENT '持卡人姓名',
  `beneficiary_bank_name` varchar(60) COLLATE utf8_bin DEFAULT NULL COMMENT '收款银行名称',
  `beneficiary_bank_card_no` varchar(60) COLLATE utf8_bin DEFAULT NULL COMMENT '收款人卡号',
  `encrypt_bank_card_no` varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT '加密银行卡号',
  `status` tinyint(2) DEFAULT NULL COMMENT '状态  0:待验证  1:已绑定  2:解绑',
  `beneficiary_bank_branch_name` varchar(60) COLLATE utf8_bin DEFAULT NULL COMMENT '收款银行支行名称',
  `beneficiary_branch_no` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '支行编号',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `role_type` tinyint(4) DEFAULT NULL COMMENT '为了区分不同角色的商户',
  `account_permits_img` varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT '开户许可证图片(merchant_type 为1时必输)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `t_merchant_bind_card_id` (`merchant_id`),
  UNIQUE KEY `t_beneficairy_bank_card_no` (`beneficiary_bank_card_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


DROP TABLE IF EXISTS `message_info`;
CREATE TABLE `message_info` (
  `message_id` varchar(32) NOT NULL COMMENT '消息编号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `message_type` varchar(2) DEFAULT NULL COMMENT '消息类型  00:系统消息  01:会员消息  02:商户消息',
  `message_title` varchar(32) DEFAULT NULL COMMENT '消息标题',
  `message_content` text COMMENT '消息内容',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`message_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='消息表';


DROP TABLE IF EXISTS `personal_account`;
CREATE TABLE `personal_account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account_id` varchar(32) NOT NULL COMMENT '账户编号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `personal_id` varchar(32) NOT NULL COMMENT '个人信息编号',
  `account_type` varchar(10) NOT NULL COMMENT '账户类型  ACC001:余额账户,ACC002:红包账户,ACC003:积分账户,ACC004:手续费账户 见枚举类AccountType',
  `ccy` varchar(6) DEFAULT NULL COMMENT '币种  CNY:人民币',
  `account_balance` decimal(18,2) DEFAULT NULL COMMENT '账户余额',
  `freeze_balance` decimal(18,2) DEFAULT NULL COMMENT '冻结金额',
  `check_sum` varchar(40) DEFAULT NULL COMMENT '校验码(余额加密值)',
  `status` varchar(2) DEFAULT NULL COMMENT '账户状态 00:正常,01:冻结',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人账户信息';


DROP TABLE IF EXISTS `personal_account_journal`;
CREATE TABLE `personal_account_journal` (
  `journal_id` varchar(32) NOT NULL COMMENT '流水号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `personal_id` varchar(32) NOT NULL COMMENT '个人信息编号',
  `account_id` varchar(32) NOT NULL COMMENT '账户编号',
  `account_type` varchar(10) NOT NULL COMMENT '账户类型    ACC001:余额账户',
  `order_no` varchar(32) DEFAULT NULL COMMENT '订单号',
  `in_out_flag` varchar(2) DEFAULT NULL COMMENT '来往标志  1:来账   2:往账',
  `trade_amt` decimal(18,2) DEFAULT NULL COMMENT '交易金额',
  `trade_type` varchar(2) DEFAULT NULL COMMENT '交易类型(支付:01,退款:02,提现:03,充值:04)',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`journal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人账户流水(充、转、提、退、冻结流水)';


DROP TABLE IF EXISTS `personal_base`;
CREATE TABLE `personal_base` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `personal_id` varchar(32) NOT NULL COMMENT '个人客户编号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_id` varchar(32) NOT NULL COMMENT '用户编号',
  `third_no` varchar(32) DEFAULT NULL COMMENT '第三方会员编号',
  `phone` varchar(11) DEFAULT NULL COMMENT '手机号',
  `avatar` text COMMENT '头像',
  `real_name` varchar(20) DEFAULT NULL COMMENT '用户名称',
  `id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
  `nick_name` varchar(32) DEFAULT NULL COMMENT '用户昵称',
  `sex` varchar(1) DEFAULT NULL COMMENT '性别 1:男 2:女',
  `birthday` varchar(10) DEFAULT NULL COMMENT '生日',
  `address` varchar(256) DEFAULT NULL COMMENT '居住地',
  `id_positive` text COMMENT '身份证正面',
  `id_negative` text COMMENT '身份证反面',
  `authentication_status` varchar(6) DEFAULT NULL COMMENT '认证状态  00:未认证  01:无需认证  02:认证成功  03:认证失败',
  `status` varchar(2) DEFAULT NULL COMMENT '账户状态 00:正常,01:冻结',
  `remark` text COMMENT '备注',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `owner` bigint(20) DEFAULT NULL COMMENT '归属人(存后台管理系统登录人员id)指谁发展的客户',
  `personal_type` varchar(6) DEFAULT NULL COMMENT '个人客户类型  00:注册用户  01:运营添加用户',
  PRIMARY KEY (`id`,`customer_id`,`personal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人客户基础信息';


DROP TABLE IF EXISTS `personal_base_ext`;
CREATE TABLE `personal_base_ext` (
  `personal_id` varchar(32) NOT NULL COMMENT '个人客户编号',
  `personal_level` int(11) DEFAULT NULL COMMENT '客户等级',
  `industry` varchar(256) DEFAULT NULL COMMENT '行业',
  `industry_description` varchar(256) DEFAULT NULL COMMENT '行业描述',
  `job` varchar(256) DEFAULT NULL COMMENT '职务',
  `provinces` varchar(64) DEFAULT NULL COMMENT '所在省市',
  `email` varchar(32) DEFAULT NULL COMMENT '电子邮件',
  `zip_code` varchar(8) DEFAULT NULL COMMENT '邮编',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `attention_industry` text COMMENT '关注行业',
  `attention_jobs` text COMMENT '关注职位',
  `self_tag` text COMMENT '标签',
  `deviceId` varchar(60) DEFAULT NULL COMMENT '设备ID',
  `deviceType` varchar(1) DEFAULT NULL COMMENT '设备类型',
  PRIMARY KEY (`personal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人基础信息扩展表';


DROP TABLE IF EXISTS `personal_base_tracking`;
CREATE TABLE `personal_base_tracking` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `ticker_personal_id` varchar(32) NOT NULL COMMENT '跟踪人ID',
  `personal_id` varchar(32) NOT NULL COMMENT '被跟踪人ID',
  `remark` text COMMENT '备注',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人客户跟踪表';

DROP TABLE IF EXISTS `personal_billing`;
CREATE TABLE `personal_billing` (
  `bill_id` varchar(32) NOT NULL COMMENT '账单编号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `personal_id` varchar(32) DEFAULT NULL COMMENT '个人信息编号',
  `account_journal_id` varchar(32) DEFAULT NULL COMMENT '账务流水号',
  `order_no` varchar(32) DEFAULT NULL COMMENT '订单号',
  `bill_type` varchar(6) DEFAULT NULL COMMENT '账单类型    饮食,服装,美容,生活用品,保险,理财',
  `in_out_flag` varchar(4) DEFAULT NULL COMMENT '来往标志  1:入账   2:出账',
  `trade_amt` decimal(18,2) DEFAULT NULL COMMENT '交易金额',
  `seller_id` varchar(32) DEFAULT NULL COMMENT '资金来源编号',
  `seller_type` varchar(4) DEFAULT NULL COMMENT '客户类型    CUST00:平台   CUST01:商户  CUST02:用户   CUST03:第三方',
  `produce_info` varchar(256) DEFAULT NULL COMMENT '商品说明',
  `pay_way` varchar(6) DEFAULT NULL COMMENT '付款方式  ALIPAY:支付宝 \nWECHAT:微信',
  `remark` text COMMENT '备注',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `trade_type` varchar(30) DEFAULT NULL COMMENT '交易类型(支付:01,退款:02,提现:03,充值:04)',
  `status` varchar(10) DEFAULT NULL COMMENT '账单状态(付款成功 00 ,充值成功 01 ,退款申请成功02,退款成功03, 提现申请成功04 ,提现处理成功 05 ,退款失败06, 提现失败07 )',
  PRIMARY KEY (`bill_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人账单';


DROP TABLE IF EXISTS `personal_bind_card`;
CREATE TABLE `personal_bind_card` (
  `id` varchar(32) NOT NULL COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `personal_id` varchar(32) DEFAULT NULL COMMENT '个人客户编号',
  `bind_card_no` varchar(32) DEFAULT NULL COMMENT '银行卡号  隐藏中间数位的银行卡号',
  `bind_encrypt_card_no` varchar(256) DEFAULT NULL COMMENT '加密银行卡号',
  `cardholder_name` varchar(32) DEFAULT NULL COMMENT '持卡人姓名',
  `bank_no` varchar(20) DEFAULT NULL COMMENT '银行编号',
  `bank_name` varchar(256) DEFAULT NULL COMMENT '银行名称',
  `subbranch_no` varchar(20) DEFAULT NULL COMMENT '支行编号',
  `subbranch_name` varchar(256) DEFAULT NULL COMMENT '支行信息',
  `status` varchar(2) DEFAULT NULL COMMENT '状态  00:待验证  01:绑定  02:解绑 ',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户绑卡表';


DROP TABLE IF EXISTS `personal_certification_info`;
CREATE TABLE `personal_certification_info` (
  `id` varchar(32) NOT NULL,
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `personal_id` varchar(32) DEFAULT NULL COMMENT '个人客户编号',
  `bank_card_no` varchar(32) DEFAULT NULL COMMENT '银行卡号',
  `bind_encrypt_card_no` varchar(256) DEFAULT NULL COMMENT '加密的银行卡号',
  `cardholder_name` varchar(32) DEFAULT NULL COMMENT '持卡人',
  `bank_no` varchar(20) DEFAULT NULL COMMENT '银行编号',
  `bank_name` varchar(256) DEFAULT NULL COMMENT '银行名称',
  `subbranch_no` varchar(20) DEFAULT NULL COMMENT '支行编号',
  `subbranch_name` varchar(256) DEFAULT NULL COMMENT '支行信息',
  `auth_id` varchar(64) DEFAULT NULL COMMENT '第三方认证id',
  `auth_type` varchar(2) DEFAULT NULL COMMENT '实名认证类型 00代表银行卡四要素实名人 01代表泰华电子实名认证',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户实名认证信息表';


DROP TABLE IF EXISTS `personal_coupon_relation`;
CREATE TABLE `personal_coupon_relation` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `personal_id` varchar(32) DEFAULT NULL COMMENT '个人客户编号',
  `merchant_id` varchar(32) DEFAULT NULL COMMENT '商户客户编号',
  `coupon_serial_no` varchar(30) DEFAULT NULL COMMENT '红包流水号',
  `coupon_id` varchar(30) DEFAULT NULL COMMENT '红包ID',
  `use_status` varchar(2) DEFAULT NULL COMMENT '使用状态 00:未使用,01:使用中,02:已使用',
  `recieve_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '领取时间',
  `effective_status` varchar(2) DEFAULT NULL COMMENT '有效状态 00:有效 01:失效',
  `scene_id` varchar(255) DEFAULT NULL COMMENT '红包使用场景ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=430 DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `personal_distribution_relation`;
CREATE TABLE `personal_distribution_relation` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `personal_id` varchar(32) NOT NULL COMMENT '用户编号',
  `parent_per_id` varchar(32) DEFAULT NULL COMMENT '父级编号',
  `parent_level` int(11) DEFAULT NULL COMMENT '父级级别',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人分销关系';


DROP TABLE IF EXISTS `platform_accout_config`;
CREATE TABLE `platform_accout_config` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `customer_type` varchar(6) NOT NULL COMMENT '客户类型    CUST00:平台   CUST01:商户  CUST02:用户',
  `account_type` varchar(6) NOT NULL COMMENT '账户类型  ACC001:余额账户,',
  `account_alias` varchar(32) DEFAULT NULL COMMENT '账户别名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='平台所支持账户配置';

insert  into `platform_accout_config`(`id`,`platform_id`,`customer_type`,`account_type`,`account_alias`) values (1,'14193960608149504','CUST01','ACC001','余额账户'),(2,'14644251517857792','CUST01','ACC001','余额账户'),(3,'14376521810391040','CUST01','ACC011','火钻账户'),(4,'14376521810391040','CUST01','ACC001','余额账户'),(5,'15806527374438400','CUST01','ACC001','余额账户'),(6,'15806527374438400','CUST01','ACC001','余额账户'),(7,'14376521810391040','CUST01','ACC001','余额账户'),(8,'14376521810391040','CUST01','ACC011','火钻账户'),(9,'17501260918894592','CUST01','ACC001','余额账户'),(10,'17501260918894592','CUST01','ACC006','总交易金额账户'),(11,'17501260918894592','CUST01','ACC005','已结算账户'),(12,'13608825924956160','CUST01','ACC001','余额账户'),(13,'13608825924956160','CUST01','ACC006','总交易金额账户');


DROP TABLE IF EXISTS `platform_base`;
CREATE TABLE `platform_base` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `platform_name` varchar(100) DEFAULT NULL COMMENT '平台名称',
  `platform_login_name` varchar(100) NOT NULL COMMENT '平台登录名称',
  `platform_level` varchar(2) DEFAULT '02' COMMENT '平台级别  01:一级平台(顶级) 02:二级平台(默认)',
  `platform_logo` mediumblob COMMENT '平台logo',
  `platform_introduction` text COMMENT '平台简介',
  `authentication_status` varchar(6) DEFAULT NULL COMMENT '认证状态  00:未认证  01:无需认证  02:认证成功  03:认证失败',
  `operator_id` int(11) DEFAULT NULL COMMENT '最后操作人编号',
  `operator_name` varchar(256) DEFAULT NULL COMMENT '最后操作人名称',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`,`platform_login_name`),
  UNIQUE KEY `Key_platform_name` (`platform_name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='平台基础信息';

insert  into `platform_base`(`id`,`platform_id`,`platform_name`,`platform_login_name`,`platform_level`,`platform_logo`,`platform_introduction`,`authentication_status`,`operator_id`,`operator_name`,`create_time`,`update_time`) values (1,'13608825924956160','flyray集团','admin','01','data:image/png;base64,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','开源平台','00',1112,NULL,'2018-07-20 17:46:56','2019-01-31 10:08:22');


DROP TABLE IF EXISTS `platform_base_extend`;
CREATE TABLE `platform_base_extend` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `company_name` varchar(100) DEFAULT NULL COMMENT '企业名称',
  `business_scope` text COMMENT '经营范围',
  `business_no` varchar(60) DEFAULT NULL COMMENT '工商注册号',
  `legal_person_name` varchar(32) DEFAULT NULL COMMENT '法人姓名',
  `legal_person_cred_type` varchar(6) DEFAULT NULL COMMENT '法人证件类型  0-身份证;1-户口本;2-护照;3-军官证;4-士兵证;5-港澳居民往来内地通行证;6-台湾通报往来内地通行证;7-临时身份证;8-外国人居留证;9-警官证;x-其他证件 ',
  `legal_person_cred_no` varchar(32) DEFAULT NULL COMMENT '法人证件号码',
  `business_licence` text COMMENT '营业执照',
  `phone` varchar(11) DEFAULT NULL COMMENT '联系电话',
  `mobile` varchar(32) DEFAULT NULL COMMENT '企业座机',
  `fax` varchar(32) DEFAULT NULL COMMENT '企业传真',
  `http_address` text COMMENT '企业网址',
  `registered_capital` decimal(18,2) DEFAULT NULL COMMENT '注册资金',
  `company_address` text COMMENT '企业地址',
  `operator_id` int(11) DEFAULT NULL COMMENT '最后操作人编号',
  `operator_name` varchar(256) DEFAULT NULL COMMENT '最后操作人名称',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台扩展信息';


DROP TABLE IF EXISTS `platform_blockchain`;
CREATE TABLE `platform_blockchain` (
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `block_hight` int(11) DEFAULT NULL COMMENT '区块高度',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '生成时间',
  `previousHash` varchar(255) DEFAULT NULL COMMENT '上一个区块hash',
  `hash` varchar(255) DEFAULT NULL COMMENT '区块hash',
  `reward_amout` decimal(18,2) DEFAULT NULL COMMENT '区块奖励数量',
  `amout` decimal(18,2) DEFAULT NULL COMMENT '区块交易金额'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `platform_callback_url`;
CREATE TABLE `platform_callback_url` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `callback_type` varchar(6) DEFAULT NULL COMMENT '回调类型   00:支付回调  01:退款回调  02:消息通知',
  `callback_url` text COMMENT '回调地址',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台回调地址配置';


DROP TABLE IF EXISTS `platform_coin_accout`;
CREATE TABLE `platform_coin_accout` (
  `platform_id` bigint(11) DEFAULT NULL COMMENT '平台编号',
  `platform_type` varchar(255) DEFAULT NULL COMMENT '平台类型:1 顶级平台 2 普通平台',
  `address` varchar(255) DEFAULT NULL COMMENT '平台合约地址',
  `account_type` varchar(10) DEFAULT NULL COMMENT '平台账号类型:1平台总量 2手续费',
  `account_balance` decimal(18,2) DEFAULT NULL COMMENT '账户余额',
  `freeze_balance` decimal(18,2) DEFAULT NULL COMMENT '冻结金额',
  `check_sum` varchar(40) DEFAULT NULL COMMENT '校验码(余额加密值)',
  `status` varchar(2) DEFAULT NULL COMMENT '账户状态 00:正常,01:冻结',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `platform_coin_accout_journal`;
CREATE TABLE `platform_coin_accout_journal` (
  `journal_id` bigint(11) DEFAULT NULL COMMENT '交易流水id',
  `platform_id` bigint(11) DEFAULT NULL COMMENT '交易所属平台',
  `address` varchar(255) DEFAULT NULL COMMENT '交易地址',
  `trade_type` varchar(10) DEFAULT NULL COMMENT '交易类型:奖励、转账、手续费、',
  `in_out_flag` varchar(10) DEFAULT NULL COMMENT '来往标志  1:来账   2:往账',
  `amount` decimal(18,2) DEFAULT NULL COMMENT '交易金额',
  `customer_type` varchar(11) DEFAULT NULL COMMENT '客户类型 平台客户 普通客户'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `platform_coin_config`;
CREATE TABLE `platform_coin_config` (
  `platform_id` bigint(11) DEFAULT NULL COMMENT '平台编号',
  `platform_type` varchar(10) DEFAULT NULL COMMENT '1:顶级平台 2:普通平台',
  `name` varchar(20) DEFAULT NULL COMMENT '平台代币名称',
  `symbol` varchar(20) DEFAULT NULL COMMENT '代币的简称',
  `sum` bigint(11) DEFAULT NULL COMMENT '平台币总量'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `platform_coin_customer`;
CREATE TABLE `platform_coin_customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `real_name` varchar(5) DEFAULT NULL COMMENT '真实姓名',
  `id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
  `address` text COMMENT '地址',
  `private_key` text COMMENT '私钥',
  `balance` decimal(18,2) DEFAULT NULL COMMENT '余额',
  `freeze_balance` decimal(18,2) DEFAULT NULL COMMENT '冻结金额',
  `check_sum` varchar(40) DEFAULT NULL COMMENT '校验码(余额加密值)',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台唯一用户表';


DROP TABLE IF EXISTS `platform_coin_transaction_from`;
CREATE TABLE `platform_coin_transaction_from` (
  `platform_id` bigint(11) DEFAULT NULL COMMENT '平台编号',
  `from_address` varchar(255) DEFAULT NULL COMMENT '出账地址',
  `amount` decimal(18,2) DEFAULT NULL COMMENT '交易金额',
  `transaction_type` varchar(10) DEFAULT NULL COMMENT '1:奖励 2:转账 3:手续费',
  `serial_number` bigint(11) DEFAULT NULL COMMENT '各自平台的交易排序编号',
  `hash` varchar(255) DEFAULT NULL COMMENT '交易hash',
  `block_hash` varchar(255) DEFAULT NULL COMMENT '交易所属区块hash',
  `sign` varchar(255) DEFAULT NULL COMMENT '交易签名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `platform_coin_transaction_from`(`platform_id`,`from_address`,`amount`,`transaction_type`,`serial_number`,`hash`,`block_hash`,`sign`) values (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);


DROP TABLE IF EXISTS `platform_coin_transaction_to`;
CREATE TABLE `platform_coin_transaction_to` (
  `platform_id` bigint(11) DEFAULT NULL COMMENT '平台编号',
  `to_address` varchar(255) DEFAULT NULL COMMENT '入账地址',
  `amount` decimal(18,4) DEFAULT NULL COMMENT '交易金额',
  `hash` bigint(11) DEFAULT NULL COMMENT '交易hash',
  `transaction_type` varchar(11) NOT NULL COMMENT '1:奖励 2:转账 3:手续费',
  PRIMARY KEY (`transaction_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `platform_function`;
CREATE TABLE `platform_function` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `code` varchar(20) NOT NULL COMMENT '代码',
  `name` varchar(20) NOT NULL COMMENT '名称',
  `icon` varchar(32) DEFAULT NULL COMMENT '图标',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台功能';


DROP TABLE IF EXISTS `platform_function_config`;
CREATE TABLE `platform_function_config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `code` varchar(20) NOT NULL COMMENT '功能代码',
  `channel` varchar(20) DEFAULT NULL COMMENT '01 app 02小程序 03PC',
  `level` varchar(2) DEFAULT NULL COMMENT '级别',
  `isShow` varchar(2) DEFAULT NULL COMMENT '是否展示 0开 1关',
  `p_code` varchar(20) DEFAULT NULL COMMENT '父级菜单',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台功能配置';


DROP TABLE IF EXISTS `platform_safety_config`;
CREATE TABLE `platform_safety_config` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `platform_id` varchar(32) NOT NULL COMMENT '平台编号',
  `app_id` varchar(256) NOT NULL COMMENT '平台编号密文',
  `app_key` text COMMENT '密钥(盐值):在首次登录或者首次获取tiken的时候用到',
  `public_key` text COMMENT '公钥',
  `private_key` text COMMENT '私钥',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台安全配置信息';


DROP TABLE IF EXISTS `refund_order`;
CREATE TABLE `refund_order` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `pay_order_no` varchar(32) NOT NULL COMMENT '支付订单号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `merchant_id` varchar(60) DEFAULT NULL COMMENT '商户账号',
  `refund_order_no` varchar(32) DEFAULT NULL COMMENT '退款订单号',
  `refund_amt` decimal(18,2) DEFAULT NULL COMMENT '退款金额',
  `refund_fee` decimal(18,2) DEFAULT NULL COMMENT '退款手续费',
  `refund_time` datetime DEFAULT NULL COMMENT '退款时间',
  `refund_reason` text COMMENT '退款原因',
  `refund_method` varchar(10) DEFAULT NULL COMMENT '退款方式(跟支付方式对应)',
  `refund_status` varchar(10) DEFAULT NULL COMMENT '退款状态(00退款成功 01退款失败 02退款处理中)',
  PRIMARY KEY (`id`,`pay_order_no`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='退款订单表';


DROP TABLE IF EXISTS `refund_serial`;
CREATE TABLE `refund_serial` (
  `serial_no` varchar(32) NOT NULL COMMENT '退款流水号',
  `refund_order_no` varchar(32) NOT NULL COMMENT '退款订单号',
  `platform_id` varchar(32) DEFAULT NULL COMMENT '平台编号',
  `merchant_id` varchar(60) DEFAULT NULL COMMENT '商户账号',
  `pay_channel_no` varchar(32) DEFAULT NULL COMMENT '支付渠道号',
  `pay_company_no` varchar(32) DEFAULT NULL COMMENT '支付公司编号',
  `refund_amt` decimal(18,2) DEFAULT NULL COMMENT '退款金额',
  `refund_fee` decimal(18,2) DEFAULT NULL COMMENT '退款手续费',
  `refund_status` varchar(10) DEFAULT NULL COMMENT '退款状态(00退款成功 01退款失败 02退款处理中)',
  PRIMARY KEY (`serial_no`,`refund_order_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='退款流水表';


DROP TABLE IF EXISTS `scene_info`;
CREATE TABLE `scene_info` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `scene_code` varchar(20) NOT NULL COMMENT '场景编号',
  `scene_name` varchar(30) NOT NULL COMMENT '场景名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='场景';

insert  into `scene_info`(`id`,`scene_code`,`scene_name`) values (1,'SC0001','点餐'),(2,'SC0002','拼团'),(3,'SC0003','竞拍'),(4,'SC0004','每日秒杀'),(5,'SC0005','小程序商城'),(6,'SC0006','火钻充值'),(9,'SC0007','爱算');


DROP TABLE IF EXISTS `scene_pay_method_config`;
CREATE TABLE `scene_pay_method_config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `scene_code` varchar(20) NOT NULL COMMENT '场景编号',
  `method_code` varchar(2) NOT NULL COMMENT '支付方式编号 1微信 2支付宝 3火源 4火钻 5余额 6原力值 7医保卡',
  `method` varchar(20) NOT NULL COMMENT '支付方式代码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='场景支付方式配置';

insert  into `scene_pay_method_config`(`id`,`scene_code`,`method_code`,`method`) values (1,'SC0001','2','ALIPAY'),(2,'SC0001','1','WECHAT'),(3,'SC0001','4','FIREDRILL'),(4,'SC0006','1','WECHAT'),(5,'SC0005','4','FIREDRILL'),(6,'SC0005','1','WECHAT');


DROP TABLE IF EXISTS `unfreeze_journal`;
CREATE TABLE `unfreeze_journal` (
  `journal_id` varchar(32) NOT NULL COMMENT '流水号',
  `freeze_id` varchar(32) NOT NULL COMMENT '冻结流水号',
  `order_no` varchar(32) NOT NULL COMMENT '订单号',
  `trade_type` varchar(2) NOT NULL COMMENT '交易类型(支付:01,退款:02,提现:03,充值:04)',
  `unfreeze_balance` decimal(18,2) NOT NULL COMMENT '解冻金额',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`journal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='解冻流水表';